@voidzero-dev/vite-plus-core 0.1.21-alpha.2 → 0.1.21-alpha.4

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.
Files changed (48) hide show
  1. package/LICENSE +0 -29
  2. package/dist/rolldown/cli.mjs +6 -6
  3. package/dist/rolldown/config.mjs +2 -2
  4. package/dist/rolldown/experimental-index.mjs +8 -8
  5. package/dist/rolldown/index.mjs +4 -4
  6. package/dist/rolldown/parallel-plugin-worker.mjs +2 -2
  7. package/dist/rolldown/parse-ast-index.mjs +1 -1
  8. package/dist/rolldown/plugins-index.mjs +2 -2
  9. package/dist/rolldown/shared/{bindingify-input-options-BFomq0CL.mjs → bindingify-input-options-wZdDRbfo.mjs} +27 -5
  10. package/dist/rolldown/shared/{constructors-CqLClvFc.mjs → constructors-D6i2Tbyl.mjs} +1 -1
  11. package/dist/rolldown/shared/define-config-5HJ1b9vG.d.mts +2 -2
  12. package/dist/rolldown/shared/{error-D4ASW9r2.mjs → error-BrnLyQ-g.mjs} +1 -1
  13. package/dist/rolldown/shared/{load-config-nKXo7Yxg.mjs → load-config-BZFgt8GH.mjs} +1 -1
  14. package/dist/rolldown/shared/{normalize-string-or-regex-WerlQkgD.mjs → normalize-string-or-regex-dAjLOSbp.mjs} +3 -1
  15. package/dist/rolldown/shared/{parse-C-X7ajBy.mjs → parse-DFts7Hyl.mjs} +1 -1
  16. package/dist/rolldown/shared/{resolve-tsconfig-CxJB93yb.mjs → resolve-tsconfig-DCdBlPeK.mjs} +2 -2
  17. package/dist/rolldown/shared/{rolldown-DNviFDiu.mjs → rolldown-Cs2eRf4R.mjs} +1 -1
  18. package/dist/rolldown/shared/{rolldown-build-DdPwBoAu.mjs → rolldown-build-CNhzgsn2.mjs} +6 -4
  19. package/dist/rolldown/shared/{watch-BWGrirtv.mjs → watch-De_8Tgeq.mjs} +4 -4
  20. package/dist/rolldown/utils-index.mjs +2 -2
  21. package/dist/tsdown/{build-CgGnBlCD-CmgnJdWt.js → build-5FURNVr0-BYnPlyxS.js} +88 -71
  22. package/dist/tsdown/{debug-CLlnG64L-Bga2f95T.js → debug-CLlnG64L-DgUic6dq.js} +2 -2
  23. package/dist/tsdown/{detect-DN3DXXYt-CQvReX03.js → detect-DN3DXXYt-C8fBJ-Pz.js} +1 -1
  24. package/dist/tsdown/dist-Cv2Z0Bi_.js +1012 -0
  25. package/dist/tsdown/{dist-dEREUhS4.js → dist-DTzJRoOQ.js} +4898 -4741
  26. package/dist/tsdown/{filename-DQnUJlio-CkHYanGh.js → filename-DQnUJlio-D7-CzKqs.js} +1 -1
  27. package/dist/tsdown/index-types.d.ts +259 -92
  28. package/dist/tsdown/index.js +4 -4
  29. package/dist/tsdown/{main-BQC8aVfq.js → main-D7FQqhAT.js} +4 -4
  30. package/dist/tsdown/npm_cjs_chunk_range.cjs +20 -7
  31. package/dist/tsdown/npm_cjs_chunk_semver.cjs +15 -15
  32. package/dist/tsdown/npm_entry_semver_ranges_min-version.cjs +1 -1
  33. package/dist/tsdown/run.js +7 -7
  34. package/dist/tsdown/{tsc-ILrjzsA_.js → tsc-Dr9kCkDm.js} +2 -2
  35. package/dist/tsdown/{tsc-context-BBIdwth6.js → tsc-context-CANQEB9U.js} +1 -1
  36. package/dist/vite/client/client.mjs +7 -7
  37. package/dist/vite/node/chunks/build.js +19 -19
  38. package/dist/vite/node/chunks/logger.js +1 -1
  39. package/dist/vite/node/chunks/node.js +75 -49
  40. package/dist/vite/node/chunks/postcss-import.js +10 -10
  41. package/dist/vite/node/index.d.ts +2 -2
  42. package/dist/vite/node/module-runner.js +14 -3
  43. package/package.json +19 -15
  44. package/dist/tsdown/dist-DJhmrSLH.js +0 -739
  45. package/dist/tsdown/dist-D_AJtdxQ.js +0 -848
  46. package/dist/tsdown/npm_cjs_chunk_lt.cjs +0 -28
  47. package/dist/tsdown/npm_entry_semver_functions_lt.cjs +0 -4
  48. /package/dist/rolldown/shared/{binding-Cf9ARhL0.mjs → binding-ESkOU1xr.mjs} +0 -0
@@ -1,6 +1,5 @@
1
1
  import * as Rolldown from "@voidzero-dev/vite-plus-core/rolldown";
2
2
  import { BuildOptions, ChecksOptions, ExternalOption, InputOptions, InternalModuleFormat, MinifyOptions, ModuleFormat, ModuleTypes, OutputAsset, OutputChunk, OutputOptions, Plugin, RolldownPlugin, TreeshakingOptions } from "@voidzero-dev/vite-plus-core/rolldown";
3
- import * as _$_tsdown_css0 from "@tsdown/css";
4
3
  import { StartOptions } from "@vitejs/devtools/cli-commands";
5
4
  import { ExeExtensionOptions } from "@tsdown/exe";
6
5
  import * as _$_arethetypeswrong_core0 from "@arethetypeswrong/core";
@@ -8,10 +7,11 @@ import { CheckPackageOptions } from "@arethetypeswrong/core";
8
7
  import * as _$publint from "publint";
9
8
  import { Options } from "publint";
10
9
  import * as _$publint_utils0 from "publint/utils";
10
+ import { CssOptions } from "@tsdown/css";
11
11
  import { IsolatedDeclarationsOptions } from "@voidzero-dev/vite-plus-core/rolldown/experimental";
12
12
  import { Options as UnusedOptions } from "unplugin-unused";
13
13
 
14
- //#region ../../node_modules/.pnpm/tsdown@0.21.10_@arethetypeswrong+core@0.18.2_@tsdown+css@0.21.10_@tsdown+exe@0.21.10_@t_1dda983e987248a6524e731dd43b2076/node_modules/tsdown/dist/index-DraNj4FA.d.mts
14
+ //#region ../../node_modules/.pnpm/tsdown@0.22.0_@arethetypeswrong+core@0.18.2_@tsdown+css@0.22.0_@tsdown+exe@0.22.0_@type_65ddfddc5f00cd757c3739c1cdd4e920/node_modules/tsdown/dist/index-CTZ4qxd_.d.mts
15
15
  //#region src/utils/types.d.ts
16
16
  type Overwrite<T, U> = Omit<T, keyof U> & U;
17
17
  type Awaitable<T> = T | Promise<T>;
@@ -37,7 +37,9 @@ interface Logger {
37
37
  clearScreen: (type: LogType) => void;
38
38
  }
39
39
  declare const globalLogger: Logger; //#endregion
40
- //#region node_modules/.pnpm/pkg-types@2.3.0/node_modules/pkg-types/dist/index.d.mts
40
+ //#region node_modules/.pnpm/pkg-types@2.3.1/node_modules/pkg-types/dist/index.d.mts
41
+ //#endregion
42
+ //#region src/packagejson/types.d.ts
41
43
  interface PackageJson {
42
44
  /**
43
45
  * The name is what your thing is called.
@@ -331,7 +333,8 @@ type PackageJsonFunding = string | {
331
333
  };
332
334
  type PackageJsonExportKey = "." | "import" | "require" | "types" | "node" | "browser" | "default" | (string & {});
333
335
  type PackageJsonExportsObject = { [P in PackageJsonExportKey]?: string | PackageJsonExportsObject | Array<string | PackageJsonExportsObject> };
334
- type PackageJsonExports = string | PackageJsonExportsObject | Array<string | PackageJsonExportsObject>;
336
+ type PackageJsonExports = string | PackageJsonExportsObject | Array<string | PackageJsonExportsObject>; //#endregion
337
+ //#region src/packagejson/utils.d.ts
335
338
  /**
336
339
  * Defines a PackageJson structure.
337
340
  * @param pkg - The `package.json` content as an object. See {@link PackageJson}.
@@ -396,7 +399,7 @@ declare global {
396
399
  }
397
400
  /** @deprecated */
398
401
  //#endregion
399
- //#region ../../node_modules/.pnpm/get-tsconfig@4.13.7/node_modules/get-tsconfig/dist/index.d.cts
402
+ //#region ../../node_modules/.pnpm/get-tsconfig@5.0.0-beta.5/node_modules/get-tsconfig/dist/index.d.mts
400
403
  declare namespace TsConfigJson {
401
404
  namespace CompilerOptions {
402
405
  type JSX = 'preserve' | 'react' | 'react-jsx' | 'react-jsxdev' | 'react-native';
@@ -1145,7 +1148,7 @@ type TsConfigJson = {
1145
1148
  references?: TsConfigJson.References[];
1146
1149
  };
1147
1150
  //#endregion
1148
- //#region ../../node_modules/.pnpm/rolldown-plugin-dts@0.23.2_@typescript+native-preview@7.0.0-dev.20260122.2_oxc-resolver_766394248e9ecd4faca560651c4c5680/node_modules/rolldown-plugin-dts/dist/index.d.mts
1151
+ //#region ../../node_modules/.pnpm/rolldown-plugin-dts@0.25.0_@typescript+native-preview@7.0.0-dev.20260122.2_oxc-resolver_b3cc7660f16ac76b66135f298381de19/node_modules/rolldown-plugin-dts/dist/index.d.mts
1149
1152
  //#region src/options.d.ts
1150
1153
  interface GeneralOptions {
1151
1154
  /**
@@ -1345,7 +1348,7 @@ interface TsgoOptions {
1345
1348
  path?: string;
1346
1349
  }
1347
1350
  //#endregion
1348
- //#region ../../node_modules/.pnpm/tsdown@0.21.10_@arethetypeswrong+core@0.18.2_@tsdown+css@0.21.10_@tsdown+exe@0.21.10_@t_1dda983e987248a6524e731dd43b2076/node_modules/tsdown/dist/types-BZNNnDKc.d.mts
1351
+ //#region ../../node_modules/.pnpm/tsdown@0.22.0_@arethetypeswrong+core@0.18.2_@tsdown+css@0.22.0_@tsdown+exe@0.22.0_@type_65ddfddc5f00cd757c3739c1cdd4e920/node_modules/tsdown/dist/types-CQaSBA5U.d.mts
1349
1352
  //#region src/features/copy.d.ts
1350
1353
  interface CopyEntry {
1351
1354
  /**
@@ -1390,7 +1393,8 @@ type NoExternalFn = (id: string, importer: string | undefined) => boolean | null
1390
1393
  interface DepsConfig {
1391
1394
  /**
1392
1395
  * Mark dependencies as external (not bundled).
1393
- * Accepts strings, regular expressions, or Rolldown's `ExternalOption`.
1396
+ * Accepts strings, regular expressions, or Rolldown's
1397
+ * {@linkcode ExternalOption}.
1394
1398
  */
1395
1399
  neverBundle?: ExternalOption;
1396
1400
  /**
@@ -1408,13 +1412,13 @@ interface DepsConfig {
1408
1412
  */
1409
1413
  onlyBundle?: Arrayable<string | RegExp> | false;
1410
1414
  /**
1411
- * @deprecated Use {@link onlyBundle} instead.
1415
+ * @deprecated Use {@linkcode onlyBundle} instead.
1412
1416
  */
1413
1417
  onlyAllowBundle?: Arrayable<string | RegExp> | false;
1414
1418
  /**
1415
1419
  * Skip bundling all `node_modules` dependencies.
1416
1420
  *
1417
- * **Note:** This option cannot be used together with `alwaysBundle`.
1421
+ * **Note:** This option cannot be used together with {@linkcode alwaysBundle}.
1418
1422
  *
1419
1423
  * @default false
1420
1424
  */
@@ -1463,18 +1467,31 @@ interface ExeOptions extends ExeExtensionOptions {
1463
1467
  */
1464
1468
  interface SeaConfig {
1465
1469
  main?: string;
1466
- /** Optional, if not specified, uses the current Node.js binary */
1470
+ /**
1471
+ * Optional, if not specified, uses the current Node.js binary
1472
+ */
1467
1473
  executable?: string;
1468
1474
  output?: string;
1475
+ /**
1476
+ * @default tsdownConfig.format === 'es' ? 'module' : 'commonjs'
1477
+ */
1469
1478
  mainFormat?: "commonjs" | "module";
1470
- /** @default true */
1479
+ /**
1480
+ * @default true
1481
+ */
1471
1482
  disableExperimentalSEAWarning?: boolean;
1472
- /** @default false */
1483
+ /**
1484
+ * @default false
1485
+ */
1473
1486
  useSnapshot?: boolean;
1474
- /** @default false */
1487
+ /**
1488
+ * @default false
1489
+ */
1475
1490
  useCodeCache?: boolean;
1476
1491
  execArgv?: string[];
1477
- /** @default "env" */
1492
+ /**
1493
+ * @default 'env'
1494
+ */
1478
1495
  execArgvExtension?: "none" | "env" | "cli";
1479
1496
  assets?: Record<string, string>;
1480
1497
  } //#endregion
@@ -1518,7 +1535,9 @@ type PackageType = "module" | "commonjs" | undefined; //#endregion
1518
1535
  interface OutExtensionContext {
1519
1536
  options: InputOptions;
1520
1537
  format: NormalizedFormat;
1521
- /** "type" field in project's package.json */
1538
+ /**
1539
+ * `"type"` field in project's `package.json`.
1540
+ */
1522
1541
  pkgType?: PackageType;
1523
1542
  }
1524
1543
  interface OutExtensionObject {
@@ -1582,6 +1601,10 @@ interface AttwOptions extends CheckPackageOptions {
1582
1601
  * ```ts
1583
1602
  * ignoreRules: ['no-resolution', 'false-cjs']
1584
1603
  * ```
1604
+ *
1605
+ * @default []
1606
+ *
1607
+ * @uniqueItems
1585
1608
  */
1586
1609
  ignoreRules?: ("no-resolution" | "untyped-resolution" | "false-cjs" | "false-esm" | "cjs-resolves-to-esm" | "fallback-condition" | "cjs-only-exports-default" | "named-exports" | "false-export-default" | "missing-export-equals" | "unexpected-module-syntax" | "internal-resolution-error" | (string & {}))[];
1587
1610
  } //#endregion
@@ -1589,17 +1612,42 @@ interface AttwOptions extends CheckPackageOptions {
1589
1612
  interface ExportsOptions {
1590
1613
  /**
1591
1614
  * Generate exports that link to source code during development.
1592
- * - string: add as a custom condition.
1593
- * - true: all conditions point to source files, and add dist exports to `publishConfig`.
1615
+ * - `string`: add as a custom condition.
1616
+ * - `true`: all conditions point to source files, and add `dist` exports to `publishConfig`.
1594
1617
  */
1595
1618
  devExports?: boolean | string;
1596
1619
  /**
1597
- * Exports for package.json file.
1620
+ * Generate `exports` for `package.json` file.
1621
+ *
1622
+ * @example
1623
+ * ```json
1624
+ * {
1625
+ * "exports": {
1626
+ * ".": {
1627
+ * "types": "./dist/index.d.mts",
1628
+ * "import": "./dist/index.mjs"
1629
+ * },
1630
+ * "./package.json": "./package.json"
1631
+ * }
1632
+ * }
1633
+ * ```
1634
+ *
1598
1635
  * @default true
1599
1636
  */
1600
1637
  packageJson?: boolean;
1601
1638
  /**
1602
- * Exports for all files.
1639
+ * Generate `exports` for all files.
1640
+ *
1641
+ * @example
1642
+ * ```json
1643
+ * {
1644
+ * "exports": {
1645
+ * "./*": "./*"
1646
+ * }
1647
+ * }
1648
+ * ```
1649
+ *
1650
+ * @default false
1603
1651
  */
1604
1652
  all?: boolean;
1605
1653
  /**
@@ -1609,7 +1657,9 @@ interface ExportsOptions {
1609
1657
  * **Note:** Do not include file extensions, and paths should be relative to the dist directory.
1610
1658
  *
1611
1659
  * @example
1660
+ * ```ts
1612
1661
  * exclude: ['cli', '**\/*.test', /internal/]
1662
+ * ```
1613
1663
  */
1614
1664
  exclude?: (RegExp | string)[];
1615
1665
  /**
@@ -1626,10 +1676,12 @@ interface ExportsOptions {
1626
1676
  * Use this to add additional exports in the exported package, such as workers or assets.
1627
1677
  *
1628
1678
  * @example
1679
+ * ```ts
1629
1680
  * customExports(exports) {
1630
1681
  * exports['./worker.js'] = './dist/worker.js';
1631
1682
  * return exports;
1632
1683
  * }
1684
+ * ```
1633
1685
  *
1634
1686
  * @example
1635
1687
  * ```jsonc
@@ -1649,7 +1701,7 @@ interface ExportsOptions {
1649
1701
  isPublish: boolean;
1650
1702
  }) => Awaitable<Record<string, any>>);
1651
1703
  /**
1652
- * Generate `inlinedDependencies` field in package.json.
1704
+ * Generate `inlinedDependencies` field in `package.json`.
1653
1705
  * Lists dependencies that are physically inlined into the bundle with their exact versions.
1654
1706
  *
1655
1707
  * @default true
@@ -1669,19 +1721,62 @@ interface ExportsOptions {
1669
1721
  */
1670
1722
  extensions?: boolean;
1671
1723
  /**
1672
- * Auto-generate the `bin` field in package.json.
1673
- *
1674
- * - `true`: Auto-detect entry chunks with shebangs. Uses package name (without scope) as bin name.
1675
- * Errors if multiple shebang entries are found.
1676
- * - `string`: Source file path to use as the bin entry. Bin name defaults to package name (without scope).
1677
- * - `Record<string, string>`: Map of bin command names to source file paths.
1724
+ * Generate the `bin` field in `package.json` for CLI executables.
1725
+ *
1726
+ * Behavior depends on the value:
1727
+ *
1728
+ * - *Unset* (default): Soft auto-detect. Scans entry chunks for shebangs
1729
+ * (e.g. `#!/usr/bin/env node`). If exactly one is found, it is used as
1730
+ * the bin entry. If multiple are found, a warning is shown and no `bin`
1731
+ * field is written. If none are found, nothing happens silently.
1732
+ * - `true`: Strict auto-detect. Same as the default, but throws if
1733
+ * multiple shebang entries are found, and warns if none are found.
1734
+ * Use this when your package is known to ship a CLI and you want to
1735
+ * fail fast on misconfiguration.
1736
+ * - `false`: Disable bin generation entirely, even if shebangs are
1737
+ * present.
1738
+ * - `string`: Use the given source file path (relative to `cwd`) as the
1739
+ * CLI entry. The command name is derived from the package name without
1740
+ * its scope. Warns if the source file does not contain a shebang.
1741
+ * - `Record<string, string>`: Explicitly map command names to source file
1742
+ * paths (relative to `cwd`). Warns for each source file that does not
1743
+ * contain a shebang.
1744
+ *
1745
+ * When {@link ExportsOptions.devExports} is enabled, the `bin` field in
1746
+ * `package.json` points to source files during local development, while
1747
+ * `publishConfig.bin` points to built output paths for publishing.
1678
1748
  *
1679
1749
  * @example
1680
- * bin: true
1750
+ * <caption>Auto-detect a CLI entry from a shebang</caption>
1751
+ *
1752
+ * ```ts
1753
+ * {
1754
+ * bin: true
1755
+ * }
1756
+ * ```
1757
+ *
1681
1758
  * @example
1682
- * bin: './src/cli.ts'
1759
+ * <caption>Single CLI command with an explicit source entry</caption>
1760
+ *
1761
+ * ```ts
1762
+ * {
1763
+ * bin: './src/cli.ts'
1764
+ * }
1765
+ * ```
1766
+ *
1683
1767
  * @example
1684
- * bin: { tool: './src/cli-tool.ts' }
1768
+ * <caption>Multiple named CLI commands</caption>
1769
+ *
1770
+ * ```ts
1771
+ * {
1772
+ * bin: {
1773
+ * tool: './src/cli.ts',
1774
+ * serve: './src/cli-extra.ts',
1775
+ * },
1776
+ * }
1777
+ * ```
1778
+ *
1779
+ * @see {@link https://docs.npmjs.com/cli/v11/configuring-npm/package-json#bin | npm documentation for the `bin` field}
1685
1780
  */
1686
1781
  bin?: boolean | string | Record<string, string>;
1687
1782
  } //#endregion
@@ -1691,8 +1786,8 @@ interface PublintOptions extends Omit<Options, "pack" | "pkgDir"> {
1691
1786
  } //#endregion
1692
1787
  //#region src/features/plugin.d.ts
1693
1788
  /**
1694
- * A tsdown-aware plugin. Extends Rolldown's `Plugin` with tsdown-specific
1695
- * lifecycle hooks.
1789
+ * A tsdown-aware plugin. Extends Rolldown's {@linkcode Plugin} with
1790
+ * tsdown-specific lifecycle hooks.
1696
1791
  *
1697
1792
  * Plugins that only use Rolldown's own lifecycle continue to work unchanged;
1698
1793
  * tsdown detects these optional methods via runtime duck-typing.
@@ -1702,18 +1797,19 @@ interface TsdownPlugin<A = any> extends Plugin<A> {
1702
1797
  * Modify tsdown's user config before it is resolved. Analogous to Vite's
1703
1798
  * [`config`](https://vite.dev/guide/api-plugin.html#config) hook.
1704
1799
  *
1705
- * The hook may mutate `config` in place, or return a partial {@link UserConfig}
1706
- * that will be deep-merged into the current config. Array fields are
1707
- * replaced (not concatenated) during merging — to append plugins, mutate
1708
- * `config.plugins` in place.
1800
+ * The hook may mutate {@linkcode config} in place, or return a partial
1801
+ * {@linkcode UserConfig} that will be deep-merged into the current config.
1802
+ * Array fields are replaced (not concatenated) during merging — to append
1803
+ * plugins, mutate {@linkcode UserConfig.plugins | config.plugins} in place.
1709
1804
  *
1710
- * The second argument is the original {@link InlineConfig} passed to
1711
- * `build()` (typically the CLI flags), useful for distinguishing values
1712
- * that came from the command line vs. the config file.
1805
+ * The second argument is the original {@linkcode InlineConfig} passed to
1806
+ * {@linkcode build | build()} (typically the CLI flags), useful for
1807
+ * distinguishing values that came from the command line vs. the config file.
1713
1808
  *
1714
- * Plugins injected via `fromVite` do not receive this hook, because they
1715
- * are loaded after the tsdownConfig phase. Likewise, new plugins added by
1716
- * another plugin's `tsdownConfig` do not themselves receive this hook
1809
+ * Plugins injected via {@linkcode UserConfig.fromVite | fromVite} do not
1810
+ * receive this hook, because they are loaded after the
1811
+ * {@linkcode tsdownConfig} phase. Likewise, new plugins added by another
1812
+ * plugin's {@linkcode tsdownConfig} do not themselves receive this hook
1717
1813
  * (plugins are snapshotted before dispatch).
1718
1814
  */
1719
1815
  tsdownConfig?: (config: UserConfig, inlineConfig: InlineConfig) => Awaitable<UserConfig | void | null>;
@@ -1722,18 +1818,20 @@ interface TsdownPlugin<A = any> extends Plugin<A> {
1722
1818
  * Vite's [`configResolved`](https://vite.dev/guide/api-plugin.html#configresolved)
1723
1819
  * hook.
1724
1820
  *
1725
- * This hook fires once per produced {@link ResolvedConfig} — i.e. once
1726
- * per output format when `format` is an array. Typical usage is to stash
1727
- * the resolved config for later use in Rolldown hooks. Mutations made to
1728
- * `resolvedConfig` here are not supported.
1821
+ * This hook fires once per produced {@linkcode ResolvedConfig} — i.e. once
1822
+ * per output format when {@linkcode UserConfig.format | format} is an array.
1823
+ * Typical usage is to stash the resolved config for later use in
1824
+ * Rolldown hooks. Mutations made to {@linkcode resolvedConfig} here are
1825
+ * not supported.
1729
1826
  */
1730
1827
  tsdownConfigResolved?: (resolvedConfig: ResolvedConfig) => Awaitable<void>;
1731
1828
  }
1732
1829
  /**
1733
1830
  * A tsdown plugin slot — accepts tsdown plugins, any Rolldown plugin form,
1734
- * `null`/`undefined`/`false`, promises, and nested arrays. Mirrors Rolldown's
1735
- * {@link RolldownPluginOption} but with {@link TsdownPlugin} as the atom so
1736
- * that tsdown-specific hooks are type-checked.
1831
+ * `null`/`undefined`/`false`, {@linkcode Promise | promises}, and
1832
+ * nested arrays. Mirrors Rolldown's {@linkcode RolldownPluginOption} but with
1833
+ * {@linkcode TsdownPlugin} as the atom so that tsdown-specific hooks are
1834
+ * type-checked.
1737
1835
  */
1738
1836
  type TsdownPluginOption<A = any> = Awaitable<TsdownPlugin<A> | RolldownPlugin<A> | {
1739
1837
  name: string;
@@ -1756,7 +1854,7 @@ interface ReportOptions {
1756
1854
  brotli?: boolean;
1757
1855
  /**
1758
1856
  * Skip reporting compressed size for files larger than this size.
1759
- * @default 1_000_000 // 1MB
1857
+ * @default 1_000_000 // 1 MB
1760
1858
  */
1761
1859
  maxCompressSize?: number;
1762
1860
  }
@@ -1806,10 +1904,12 @@ interface Workspace {
1806
1904
  * - `auto`: Automatically detect `package.json` files in the workspace.
1807
1905
  * @default 'auto'
1808
1906
  */
1809
- include?: Arrayable<string> | "auto";
1907
+ include?: "auto" | (string & {}) | string[];
1810
1908
  /**
1811
1909
  * Exclude directories from workspace.
1812
1910
  * Defaults to all `node_modules`, `dist`, `test`, `tests`, `temp`, and `tmp` directories.
1911
+ *
1912
+ * @default ['**\/node_modules/**', '**\/dist/**', '**\/test?(s)/**', '**\/t?(e)mp/**']
1813
1913
  */
1814
1914
  exclude?: Arrayable<string>;
1815
1915
  /**
@@ -1819,7 +1919,10 @@ interface Workspace {
1819
1919
  }
1820
1920
  type CIOption = "ci-only" | "local-only";
1821
1921
  type WithEnabled<T> = boolean | undefined | CIOption | (T & {
1822
- /** @default true */enabled?: boolean | CIOption;
1922
+ /**
1923
+ * @default true
1924
+ */
1925
+ enabled?: boolean | CIOption;
1823
1926
  });
1824
1927
  /**
1825
1928
  * Options for tsdown.
@@ -1835,6 +1938,8 @@ interface UserConfig {
1835
1938
  * "hooks/*": ["./src/hooks/*.ts", "!./src/hooks/index.ts"],
1836
1939
  * }
1837
1940
  * ```
1941
+ *
1942
+ * @default { index: 'src/index.ts'}
1838
1943
  */
1839
1944
  entry?: TsdownInputOption;
1840
1945
  /**
@@ -1842,23 +1947,26 @@ interface UserConfig {
1842
1947
  */
1843
1948
  deps?: DepsConfig;
1844
1949
  /**
1845
- * @deprecated Use `deps.neverBundle` instead.
1950
+ * @deprecated Use {@linkcode DepsConfig.neverBundle | deps.neverBundle} instead.
1846
1951
  */
1847
1952
  external?: ExternalOption;
1848
1953
  /**
1849
- * @deprecated Use `deps.alwaysBundle` instead.
1954
+ * @deprecated Use {@linkcode DepsConfig.alwaysBundle | deps.alwaysBundle} instead.
1850
1955
  */
1851
1956
  noExternal?: Arrayable<string | RegExp> | NoExternalFn;
1852
1957
  /**
1853
- * @deprecated Use `deps.onlyBundle` instead.
1958
+ * @deprecated Use {@linkcode DepsConfig.onlyBundle | deps.onlyBundle} instead.
1854
1959
  */
1855
1960
  inlineOnly?: Arrayable<string | RegExp> | false;
1856
1961
  /**
1857
- * @deprecated Use `deps.skipNodeModulesBundle` instead.
1962
+ * @deprecated Use {@linkcode DepsConfig.skipNodeModulesBundle | deps.skipNodeModulesBundle} instead.
1858
1963
  * @default false
1859
1964
  */
1860
1965
  skipNodeModulesBundle?: boolean;
1861
1966
  alias?: Record<string, string>;
1967
+ /**
1968
+ * @default true
1969
+ */
1862
1970
  tsconfig?: string | boolean;
1863
1971
  /**
1864
1972
  * Specifies the target runtime platform for the build.
@@ -1911,6 +2019,8 @@ interface UserConfig {
1911
2019
  * "NODE_ENV": "production"
1912
2020
  * }
1913
2021
  * ```
2022
+ *
2023
+ * @default {}
1914
2024
  */
1915
2025
  env?: Record<string, any>;
1916
2026
  /**
@@ -1925,7 +2035,9 @@ interface UserConfig {
1925
2035
  */
1926
2036
  envPrefix?: string | string[];
1927
2037
  define?: Record<string, string>;
1928
- /** @default false */
2038
+ /**
2039
+ * @default false
2040
+ */
1929
2041
  shims?: boolean;
1930
2042
  /**
1931
2043
  * Configure tree shaking options.
@@ -1939,36 +2051,70 @@ interface UserConfig {
1939
2051
  * Lets you import or require files like images or fonts.
1940
2052
  * @example
1941
2053
  * ```json
1942
- * { '.jpg': 'asset', '.png': 'base64' }
2054
+ * { ".jpg": "asset", ".png": "base64" }
1943
2055
  * ```
1944
2056
  */
1945
2057
  loader?: ModuleTypes;
1946
2058
  /**
1947
- * If enabled, strips the `node:` protocol prefix from import source.
2059
+ * Remove the `node:` prefix from built-in Node.js module imports.
2060
+ * When enabled, rewrites import sources like `node:fs` to `fs`.
1948
2061
  *
1949
2062
  * @default false
1950
- * @deprecated Use `nodeProtocol: 'strip'` instead.
2063
+ * @deprecated Use {@linkcode nodeProtocol | nodeProtocol: 'strip'} instead.
1951
2064
  *
1952
2065
  * @example
1953
- * // With removeNodeProtocol enabled:
1954
- * import('node:fs'); // becomes import('fs')
2066
+ * <caption>`removeNodeProtocol: true` remove the `node:` prefix</caption>
2067
+ *
2068
+ * ```ts
2069
+ * // Input
2070
+ * import 'node:fs'
2071
+ *
2072
+ * // Output
2073
+ * import 'fs'
2074
+ * ```
1955
2075
  */
1956
2076
  removeNodeProtocol?: boolean;
1957
2077
  /**
1958
- * - If `true`, add `node:` prefix to built-in modules.
1959
- * - If `'strip'`, strips the `node:` protocol prefix from import source.
1960
- * - If `false`, does not modify the import source.
2078
+ * Control whether built-in Node.js module imports use the `node:` protocol.
2079
+ *
2080
+ * - `true`: Add the `node:` prefix to built-in module imports.
2081
+ * - `'strip'`: Remove the `node:` prefix from built-in module imports.
2082
+ * - `false`: Do not transform built-in module imports.
1961
2083
  *
1962
2084
  * @default false
1963
2085
  *
1964
2086
  * @example
1965
- * // With nodeProtocol enabled:
1966
- * import('fs'); // becomes import('node:fs')
1967
- * // With nodeProtocol set to 'strip':
1968
- * import('node:fs'); // becomes import('fs')
1969
- * // With nodeProtocol set to false:
1970
- * import('node:fs'); // remains import('node:fs')
2087
+ * <caption>`nodeProtocol: true` add the `node:` prefix</caption>
1971
2088
  *
2089
+ * ```ts
2090
+ * // Input
2091
+ * import 'fs'
2092
+ *
2093
+ * // Output
2094
+ * import 'node:fs'
2095
+ * ```
2096
+ *
2097
+ * @example
2098
+ * <caption>`nodeProtocol: 'strip'` — remove the `node:` prefix</caption>
2099
+ *
2100
+ * ```ts
2101
+ * // Input
2102
+ * import 'node:fs'
2103
+ *
2104
+ * // Output
2105
+ * import 'fs'
2106
+ * ```
2107
+ *
2108
+ * @example
2109
+ * <caption>`nodeProtocol: false` — do not transform imports</caption>
2110
+ *
2111
+ * ```ts
2112
+ * // Input
2113
+ * import 'node:fs'
2114
+ *
2115
+ * // Output
2116
+ * import 'node:fs'
2117
+ * ```
1972
2118
  */
1973
2119
  nodeProtocol?: "strip" | boolean;
1974
2120
  /**
@@ -1998,11 +2144,13 @@ interface UserConfig {
1998
2144
  * - `iife`: IIFE
1999
2145
  * - `umd`: UMD
2000
2146
  *
2001
- * Defaults to ESM.
2147
+ * @default 'esm'
2002
2148
  */
2003
2149
  format?: Format | Format[] | Partial<Record<Format, Partial<ResolvedConfig>>>;
2004
2150
  globalName?: string;
2005
- /** @default 'dist' */
2151
+ /**
2152
+ * @default 'dist'
2153
+ */
2006
2154
  outDir?: string;
2007
2155
  /**
2008
2156
  * Whether to write the files to disk.
@@ -2014,7 +2162,7 @@ interface UserConfig {
2014
2162
  * Whether to generate source map files.
2015
2163
  *
2016
2164
  * Note that this option will always be `true` if you have
2017
- * [`declarationMap`](https://www.typescriptlang.org/tsconfig/#declarationMap)
2165
+ * {@link https://www.typescriptlang.org/tsconfig/#declarationMap | `declarationMap`}
2018
2166
  * option enabled in your `tsconfig.json`.
2019
2167
  *
2020
2168
  * @default false
@@ -2034,8 +2182,8 @@ interface UserConfig {
2034
2182
  footer?: ChunkAddon;
2035
2183
  banner?: ChunkAddon;
2036
2184
  /**
2037
- * Determines whether unbundle mode is enabled.
2038
- * When set to true, the output files will mirror the input file structure.
2185
+ * Determines whether `unbundle` is enabled.
2186
+ * When set to `true`, the output files will mirror the input file structure.
2039
2187
  * @default false
2040
2188
  */
2041
2189
  unbundle?: boolean;
@@ -2049,7 +2197,7 @@ interface UserConfig {
2049
2197
  */
2050
2198
  root?: string;
2051
2199
  /**
2052
- * @deprecated Use `unbundle` instead.
2200
+ * @deprecated Use {@linkcode unbundle} instead.
2053
2201
  * @default true
2054
2202
  */
2055
2203
  bundle?: boolean;
@@ -2058,12 +2206,15 @@ interface UserConfig {
2058
2206
  * The extension will always be `.cjs` or `.mjs`.
2059
2207
  * Otherwise, it will depend on the package type.
2060
2208
  *
2061
- * Defaults to `true` if `platform` is set to `node`, `false` otherwise.
2209
+ * Defaults to `true` if {@linkcode platform} is set to `node`,
2210
+ * `false` otherwise.
2211
+ *
2212
+ * @default platform === 'node'
2062
2213
  */
2063
2214
  fixedExtension?: boolean;
2064
2215
  /**
2065
2216
  * Custom extensions for output files.
2066
- * `fixedExtension` will be overridden by this option.
2217
+ * {@linkcode fixedExtension} will be overridden by this option.
2067
2218
  */
2068
2219
  outExtensions?: OutExtensionFactory;
2069
2220
  /**
@@ -2083,8 +2234,10 @@ interface UserConfig {
2083
2234
  }) => Awaitable<OutputOptions | void | null>);
2084
2235
  /**
2085
2236
  * The working directory of the config file.
2086
- * - Defaults to `process.cwd()` for root config.
2087
- * - Defaults to the package directory for workspace config.
2237
+ * - Defaults to {@linkcode process.cwd | process.cwd()} for root config.
2238
+ * - Defaults to the package directory for {@linkcode workspace} config.
2239
+ *
2240
+ * @default process.cwd()
2088
2241
  */
2089
2242
  cwd?: string;
2090
2243
  /**
@@ -2123,7 +2276,7 @@ interface UserConfig {
2123
2276
  /**
2124
2277
  * **[experimental]** Enable devtools.
2125
2278
  *
2126
- *DevTools is still under development, and this is for early testers only.
2279
+ * DevTools is still under development, and this is for early testers only.
2127
2280
  *
2128
2281
  * This may slow down the build process significantly.
2129
2282
  *
@@ -2138,7 +2291,7 @@ interface UserConfig {
2138
2291
  * Enables generation of TypeScript declaration files (`.d.ts`).
2139
2292
  *
2140
2293
  * By default, this option is auto-detected based on your project's `package.json`:
2141
- * - If {@link exe} is enabled, declaration file generation is disabled by default.
2294
+ * - If {@linkcode exe} is enabled, declaration file generation is disabled by default.
2142
2295
  * - If the `types` field is present, or if the main `exports` contains a `types` entry, declaration file generation is enabled by default.
2143
2296
  * - Otherwise, declaration file generation is disabled by default.
2144
2297
  */
@@ -2150,7 +2303,7 @@ interface UserConfig {
2150
2303
  */
2151
2304
  unused?: WithEnabled<UnusedOptions>;
2152
2305
  /**
2153
- * Run publint after bundling.
2306
+ * Run `publint` after bundling.
2154
2307
  * Requires `publint` to be installed.
2155
2308
  * @default false
2156
2309
  */
@@ -2179,19 +2332,22 @@ interface UserConfig {
2179
2332
  *
2180
2333
  * This will set the `main`, `module`, `types`, `exports` fields in `package.json`
2181
2334
  * to point to the generated files.
2335
+ *
2336
+ * @default false
2182
2337
  */
2183
2338
  exports?: WithEnabled<ExportsOptions>;
2184
2339
  /**
2185
2340
  * **[experimental]** CSS options.
2186
2341
  * Requires `@tsdown/css` to be installed.
2187
2342
  */
2188
- css?: _$_tsdown_css0.CssOptions;
2343
+ css?: CssOptions;
2189
2344
  /**
2190
- * @deprecated Use `css.inject` instead.
2345
+ * @deprecated Use {@linkcode CssOptions.inject | css.inject} instead.
2191
2346
  */
2192
2347
  injectStyle?: boolean;
2193
2348
  /**
2194
- * @deprecated Alias for `copy`, will be removed in the future.
2349
+ * @alias copy
2350
+ * @deprecated Alias for {@linkcode copy}, will be removed in the future.
2195
2351
  */
2196
2352
  publicDir?: CopyOptions | CopyOptionsFn;
2197
2353
  /**
@@ -2214,6 +2370,8 @@ interface UserConfig {
2214
2370
  *
2215
2371
  * This will bundle the output into a single executable file using Node.js SEA.
2216
2372
  * Note that this is only supported on Node.js 25.7.0 and later, and is not supported in Bun or Deno.
2373
+ *
2374
+ * @default false
2217
2375
  */
2218
2376
  exe?: WithEnabled<ExeOptions>;
2219
2377
  /**
@@ -2231,7 +2389,7 @@ interface InlineConfig extends UserConfig {
2231
2389
  * Config loader to use. It can only be set via CLI or API.
2232
2390
  * @default 'auto'
2233
2391
  */
2234
- configLoader?: "auto" | "native" | "unrun";
2392
+ configLoader?: "auto" | "native" | "tsx" | "unrun";
2235
2393
  /**
2236
2394
  * Filter configs by cwd or name.
2237
2395
  */
@@ -2243,7 +2401,13 @@ type UserConfigFn = (inlineConfig: InlineConfig, context: {
2243
2401
  }) => Awaitable<Arrayable<UserConfig>>;
2244
2402
  type UserConfigExport = Awaitable<Arrayable<UserConfig> | UserConfigFn>;
2245
2403
  type ResolvedConfig = Overwrite<MarkPartial<Omit<UserConfig, "workspace" | "fromVite" | "publicDir" | "bundle" | "injectStyle" | "removeNodeProtocol" | "external" | "noExternal" | "inlineOnly" | "skipNodeModulesBundle" | "logLevel" | "failOnWarn" | "customLogger" | "envFile" | "envPrefix">, "globalName" | "inputOptions" | "outputOptions" | "minify" | "define" | "alias" | "onSuccess" | "outExtensions" | "hooks" | "copy" | "loader" | "name" | "banner" | "footer" | "checks" | "css">, {
2246
- /** Resolved entry map (after glob expansion) */entry: Record<string, string>; /** Original entry config before glob resolution (for watch mode re-globbing) */
2404
+ /**
2405
+ * Resolved entry map (after glob expansion)
2406
+ */
2407
+ entry: Record<string, string>;
2408
+ /**
2409
+ * Original entry config before glob resolution (for watch mode re-globbing)
2410
+ */
2247
2411
  rawEntry?: TsdownInputOption;
2248
2412
  nameLabel: string | undefined;
2249
2413
  format: NormalizedFormat;
@@ -2253,7 +2417,10 @@ type ResolvedConfig = Overwrite<MarkPartial<Omit<UserConfig, "workspace" | "from
2253
2417
  nodeProtocol: "strip" | boolean;
2254
2418
  logger: Logger;
2255
2419
  ignoreWatch: Array<string | RegExp>;
2256
- deps: ResolvedDepsConfig; /** Resolved root directory of input files */
2420
+ deps: ResolvedDepsConfig;
2421
+ /**
2422
+ * Resolved root directory of input files
2423
+ */
2257
2424
  root: string;
2258
2425
  configDeps: Set<string>;
2259
2426
  dts: false | DtsOptions;
@@ -2267,7 +2434,7 @@ type ResolvedConfig = Overwrite<MarkPartial<Omit<UserConfig, "workspace" | "from
2267
2434
  exe: false | ExeOptions;
2268
2435
  }>; //#endregion
2269
2436
  //#endregion
2270
- //#region ../../node_modules/.pnpm/tsdown@0.21.10_@arethetypeswrong+core@0.18.2_@tsdown+css@0.21.10_@tsdown+exe@0.21.10_@t_1dda983e987248a6524e731dd43b2076/node_modules/tsdown/dist/config-CuK0i1Bc.d.mts
2437
+ //#region ../../node_modules/.pnpm/tsdown@0.22.0_@arethetypeswrong+core@0.18.2_@tsdown+css@0.22.0_@tsdown+exe@0.22.0_@type_65ddfddc5f00cd757c3739c1cdd4e920/node_modules/tsdown/dist/config-BWeUm0f3.d.mts
2271
2438
  //#region src/config/options.d.ts
2272
2439
  /**
2273
2440
  * Resolve user config into resolved configs
@@ -2287,7 +2454,7 @@ declare function defineConfig(options: UserConfig[]): UserConfig[];
2287
2454
  declare function defineConfig(options: UserConfigFn): UserConfigFn;
2288
2455
  declare function defineConfig(options: UserConfigExport): UserConfigExport; //#endregion
2289
2456
  //#endregion
2290
- //#region ../../node_modules/.pnpm/tsdown@0.21.10_@arethetypeswrong+core@0.18.2_@tsdown+css@0.21.10_@tsdown+exe@0.21.10_@t_1dda983e987248a6524e731dd43b2076/node_modules/tsdown/dist/index.d.mts
2457
+ //#region ../../node_modules/.pnpm/tsdown@0.22.0_@arethetypeswrong+core@0.18.2_@tsdown+css@0.22.0_@tsdown+exe@0.22.0_@type_65ddfddc5f00cd757c3739c1cdd4e920/node_modules/tsdown/dist/index.d.mts
2291
2458
  //#region src/build.d.ts
2292
2459
  /**
2293
2460
  * Build with tsdown.