rolldown 1.2.0 → 1.2.2

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 (44) hide show
  1. package/THIRD-PARTY-LICENSE +33 -0
  2. package/dist/cli.d.mts +1 -1
  3. package/dist/cli.mjs +9 -10
  4. package/dist/config.d.mts +1 -1
  5. package/dist/config.mjs +2 -2
  6. package/dist/experimental-default-runtime.mjs +116 -0
  7. package/dist/experimental-index.d.mts +10 -4
  8. package/dist/experimental-index.mjs +32 -16
  9. package/dist/experimental-runtime-base.mjs +95 -0
  10. package/dist/experimental-runtime.d.ts +177 -0
  11. package/dist/experimental-runtime.mjs +257 -0
  12. package/dist/filter-index.d.mts +1 -1
  13. package/dist/filter-index.mjs +1 -3
  14. package/dist/index.d.mts +3 -3
  15. package/dist/index.mjs +4 -4
  16. package/dist/parallel-plugin-worker.d.mts +1 -1
  17. package/dist/parallel-plugin-worker.mjs +3 -3
  18. package/dist/parallel-plugin.d.mts +1 -1
  19. package/dist/parse-ast-index.d.mts +1 -1
  20. package/dist/parse-ast-index.mjs +2 -2
  21. package/dist/plugins-index.d.mts +3 -3
  22. package/dist/plugins-index.mjs +2 -2
  23. package/dist/shared/{binding-Dbbi0RbO.d.mts → binding-CVtkJvyl.d.mts} +11 -0
  24. package/dist/shared/{binding-Dby9rwGk.mjs → binding-DwUQWZOo.mjs} +124 -50
  25. package/dist/shared/{bindingify-input-options-_ppP73I9.mjs → bindingify-input-options-BHixd47T.mjs} +448 -268
  26. package/dist/shared/{constructors-CSWbNgBZ.d.mts → constructors-ALilxAii.d.mts} +2 -2
  27. package/dist/shared/{constructors-CuGa75s-.mjs → constructors-COwFYQna.mjs} +10 -6
  28. package/dist/shared/{rolldown-build-CdF8HAHX.mjs → create-bundler-option-LuUKlAT7.mjs} +72 -179
  29. package/dist/shared/{define-config-B-IDOhDz.d.mts → define-config-DSMNXceb.d.mts} +85 -22
  30. package/dist/shared/{error-DFGNOCle.mjs → error-nLggAzpQ.mjs} +1 -1
  31. package/dist/shared/{load-config-C6UyiS41.mjs → load-config-cRWJAHTc.mjs} +2 -2
  32. package/dist/shared/{logs-ZGEh6uhb.mjs → logs-DmYCAKcW.mjs} +8 -1
  33. package/dist/shared/{misc-CoQm4NHO.mjs → misc-DOSKtd97.mjs} +9 -1
  34. package/dist/shared/{normalize-string-or-regex-SiXbePVH.mjs → normalize-string-or-regex-Cj-DgIV1.mjs} +2 -2
  35. package/dist/shared/{parse-BFj5G_7i.mjs → parse-C17W7W5g.mjs} +2 -2
  36. package/dist/shared/{prompt--dNycKSZ.mjs → prompt-CH6TK0bC.mjs} +2 -6
  37. package/dist/shared/{resolve-tsconfig-2TXRF_zr.mjs → resolve-tsconfig-CE3HNSOK.mjs} +2 -2
  38. package/dist/shared/rolldown-D23fYgSS.mjs +178 -0
  39. package/dist/shared/{transform-Cs2bUDRH.d.mts → transform-WmU_cI8e.d.mts} +1 -1
  40. package/dist/shared/{watch-WnrlHRS0.mjs → watch-DcgK_L55.mjs} +16 -13
  41. package/dist/utils-index.d.mts +3 -3
  42. package/dist/utils-index.mjs +6 -8
  43. package/package.json +32 -25
  44. package/dist/shared/rolldown-951h_1lf.mjs +0 -40
@@ -1,5 +1,5 @@
1
1
  import { a as RolldownLog, i as RolldownError, n as LogLevelOption, o as RolldownLogWithString, r as LogOrStringHandler, t as LogLevel } from "./logging-xuHO4mAy.mjs";
2
- import { A as BindingWatcherBundler, B as PreRenderedChunk, F as MinifyOptions$1, P as JsxOptions, W as TransformOptions$1, c as BindingHookResolveIdExtraArgs, d as BindingMagicString, f as BindingPluginContextResolveOptions, g as BindingTransformHookExtraArgs, j as ExternalMemoryStatus, m as BindingRenderedChunk, t as BindingBuiltinPluginName, z as ParserOptions } from "./binding-Dbbi0RbO.mjs";
2
+ import { A as BindingWatcherBundler, B as PreRenderedChunk, F as MinifyOptions$1, P as JsxOptions, W as TransformOptions$1, c as BindingHookResolveIdExtraArgs, d as BindingMagicString, f as BindingPluginContextResolveOptions, g as BindingTransformHookExtraArgs, j as ExternalMemoryStatus, m as BindingRenderedChunk, t as BindingBuiltinPluginName, z as ParserOptions } from "./binding-CVtkJvyl.mjs";
3
3
  import { TopLevelFilterExpression } from "@rolldown/pluginutils";
4
4
  import { Program } from "@oxc-project/types";
5
5
  //#region src/types/misc.d.ts
@@ -330,9 +330,9 @@ type ManualChunksFunction = (moduleId: string, meta: {
330
330
  }) => string | NullValue;
331
331
  /** @inline */
332
332
  type GlobalsFunction = (name: string) => string;
333
- /** @category Plugin APIs */
333
+ /** @category Code Splitting */
334
334
  type CodeSplittingNameFunction = (moduleId: string, ctx: ChunkingContext) => string | NullValue;
335
- /** @inline */
335
+ /** @inline @category Code Splitting */
336
336
  type CodeSplittingTestFunction = (id: string) => boolean | undefined | void;
337
337
  type MinifyOptions = Omit<MinifyOptions$1, "module" | "sourcemap">;
338
338
  interface CommentsOptions {
@@ -349,7 +349,7 @@ interface CommentsOptions {
349
349
  */
350
350
  jsdoc?: boolean;
351
351
  }
352
- /** @inline */
352
+ /** @inline @category Code Splitting */
353
353
  interface ChunkingContext {
354
354
  getModuleInfo(moduleId: string): ModuleInfo | null;
355
355
  }
@@ -967,12 +967,12 @@ interface OutputOptions {
967
967
  */
968
968
  keepNames?: boolean;
969
969
  /**
970
- * Lets modules be executed in the order they are declared.
970
+ * Preserve source module execution order across generated chunks.
971
971
  *
972
- * This is done by injecting runtime helpers to ensure that modules are executed in the order they are imported. External modules won't be affected.
972
+ * When enabled, Rolldown wraps ESM modules so their bodies run in source order regardless of chunk placement. Interop wrappers for CommonJS and require-of-ESM modules are unchanged, and external modules are not affected. `experimental.onDemandWrapping` replaces wrap-all with a conservative plan derived from predicted chunk execution hazards.
973
973
  *
974
974
  * > [!WARNING]
975
- * > Enabling this option may negatively increase bundle size. It is recommended to use this option only when absolutely necessary.
975
+ * > Enabling this option increases bundle size because wrapped modules need runtime init helpers.
976
976
  * @default false
977
977
  */
978
978
  strictExecutionOrder?: boolean;
@@ -993,8 +993,11 @@ interface OutputOptions {
993
993
  * Built-in module tag names computed by rolldown.
994
994
  *
995
995
  * - `'$initial'` — the module is statically imported by at least one user-defined entry point, or is part of its static dependency chain.
996
+ *
997
+ * @category Code Splitting
996
998
  */
997
999
  type BuiltinModuleTag = "$initial";
1000
+ /** @category Code Splitting */
998
1001
  type CodeSplittingGroup = {
999
1002
  /**
1000
1003
  * Name of the group. It will be also used as the name of the chunk and replace the `[name]` placeholder in the {@linkcode OutputOptions.chunkFileNames | output.chunkFileNames} option.
@@ -1192,10 +1195,14 @@ type CodeSplittingGroup = {
1192
1195
  * Alias for {@linkcode CodeSplittingGroup}. Use this type for the `codeSplitting.groups` option.
1193
1196
  *
1194
1197
  * @deprecated Please use {@linkcode CodeSplittingGroup} instead.
1198
+ *
1199
+ * @category Code Splitting
1195
1200
  */
1196
1201
  type AdvancedChunksGroup = CodeSplittingGroup;
1197
1202
  /**
1198
1203
  * Configuration options for advanced code splitting.
1204
+ *
1205
+ * @category Code Splitting
1199
1206
  */
1200
1207
  type CodeSplittingOptions = {
1201
1208
  /**
@@ -1231,6 +1238,8 @@ type CodeSplittingOptions = {
1231
1238
  * Alias for {@linkcode CodeSplittingOptions}. Use this type for the `codeSplitting` option.
1232
1239
  *
1233
1240
  * @deprecated Please use {@linkcode CodeSplittingOptions} instead.
1241
+ *
1242
+ * @category Code Splitting
1234
1243
  */
1235
1244
  type AdvancedChunksOptions = CodeSplittingOptions;
1236
1245
  //#endregion
@@ -1273,8 +1282,6 @@ declare function build(options: BuildOptions[]): Promise<RolldownOutput[]>;
1273
1282
  */
1274
1283
  declare class RolldownBuild {
1275
1284
  #private;
1276
- /** @internal */
1277
- static asyncRuntimeShutdown: boolean;
1278
1285
  /** @hidden should not be used directly */
1279
1286
  constructor(inputOptions: InputOptions);
1280
1287
  /**
@@ -1988,6 +1995,9 @@ interface HookFilter {
1988
1995
  * If the value is a string, it is treated as a glob pattern.
1989
1996
  * The string type is not available for {@linkcode Plugin.resolveId | resolveId} hook.
1990
1997
  *
1998
+ * If the value is a regular expression, it is tested after the `id`'s path separators are normalized to forward slashes (`/`).
1999
+ * This keeps the filter portable across operating systems without requiring the regular expression to match both `/` and `\`.
2000
+ *
1991
2001
  * @example
1992
2002
  * Include all `id`s that contain `node_modules` in the path.
1993
2003
  * ```js
@@ -2555,14 +2565,14 @@ interface OutputBundle {
2555
2565
  //#region src/types/sourcemap.d.ts
2556
2566
  /** @category Plugin APIs */
2557
2567
  interface ExistingRawSourceMap {
2558
- file?: string | null;
2568
+ file?: string | null | undefined;
2559
2569
  mappings: string;
2560
- names?: string[];
2561
- sources?: (string | null)[];
2562
- sourcesContent?: (string | null | undefined)[];
2563
- sourceRoot?: string;
2564
- version?: number;
2565
- x_google_ignoreList?: number[];
2570
+ names?: string[] | undefined;
2571
+ sources?: (string | null)[] | undefined;
2572
+ sourcesContent?: (string | null | undefined)[] | undefined;
2573
+ sourceRoot?: string | undefined;
2574
+ version?: number | undefined;
2575
+ x_google_ignoreList?: number[] | undefined;
2566
2576
  }
2567
2577
  /** @inline @category Plugin APIs */
2568
2578
  type SourceMapInput = ExistingRawSourceMap | string | null;
@@ -2606,7 +2616,7 @@ declare class BuiltinPlugin {
2606
2616
  //#endregion
2607
2617
  //#region src/constants/plugin.d.ts
2608
2618
  declare const ENUMERATED_INPUT_PLUGIN_HOOK_NAMES: readonly ["options", "buildStart", "resolveId", "load", "transform", "moduleParsed", "buildEnd", "onLog", "resolveDynamicImport", "closeBundle", "closeWatcher", "watchChange"];
2609
- declare const ENUMERATED_OUTPUT_PLUGIN_HOOK_NAMES: readonly ["augmentChunkHash", "outputOptions", "renderChunk", "renderStart", "renderError", "writeBundle", "generateBundle"];
2619
+ declare const ENUMERATED_OUTPUT_PLUGIN_HOOK_NAMES: readonly ["augmentChunkHash", "outputOptions", "renderChunk", "renderStart", "renderError", "writeBundle", "generateBundle", "resolveFileUrl"];
2610
2620
  declare const ENUMERATED_PLUGIN_HOOK_NAMES: [...typeof ENUMERATED_INPUT_PLUGIN_HOOK_NAMES, ...typeof ENUMERATED_OUTPUT_PLUGIN_HOOK_NAMES, "footer", "banner", "intro", "outro"];
2611
2621
  /**
2612
2622
  * Names of all defined hooks. It's like
@@ -2782,6 +2792,45 @@ interface SourceDescription extends SpecifiedModuleOptions, Partial<PartialNull<
2782
2792
  map?: SourceMapInput;
2783
2793
  moduleType?: ModuleType;
2784
2794
  }
2795
+ /**
2796
+ * Argument passed to the {@linkcode FunctionPluginHooks.resolveFileUrl | resolveFileUrl} hook.
2797
+ *
2798
+ * @category Plugin APIs
2799
+ */
2800
+ interface ResolveFileUrlArgs {
2801
+ /**
2802
+ * The preliminary filename of the chunk containing the reference with hash placeholders.
2803
+ * Similar to {@linkcode RenderedChunk.fileName | chunk.fileName}.
2804
+ */
2805
+ chunkId: string;
2806
+ /** The filename of the emitted file, relative to the output directory. */
2807
+ fileName: string;
2808
+ /** The rendered output format. */
2809
+ format: InternalModuleFormat;
2810
+ /**
2811
+ * The id of the original module this file was referenced by
2812
+ * using the `import.meta.ROLLDOWN_FILE_URL_*` reference.
2813
+ */
2814
+ moduleId: string;
2815
+ /** The reference id of this file. */
2816
+ referenceId: string;
2817
+ /**
2818
+ * The path of the emitted file, relative to the chunk the file is referenced from.
2819
+ *
2820
+ * This path will contain no leading `./`, but may contain a leading `../`.
2821
+ */
2822
+ relativePath: string;
2823
+ /**
2824
+ * The `urlId` of an `import.meta.ROLLDOWN_FILE_URL_<referenceId>_<urlId>` reference,
2825
+ * or `undefined` when the reference has no `urlId`.
2826
+ *
2827
+ * This is a rolldown-specific extension: the Rollup-compatible
2828
+ * `import.meta.ROLLUP_FILE_URL_<referenceId>` form never carries a `urlId`.
2829
+ *
2830
+ * @experimental This API may change in minor versions.
2831
+ */
2832
+ urlId?: string | undefined;
2833
+ }
2785
2834
  /** @inline */
2786
2835
  interface ResolveIdExtraOptions {
2787
2836
  /**
@@ -3016,6 +3065,12 @@ interface FunctionPluginHooks {
3016
3065
  * @group Output Generation Hooks
3017
3066
  */
3018
3067
  [DEFINED_HOOK_NAMES.augmentChunkHash]: (this: PluginContext, chunk: RenderedChunk) => string | void;
3068
+ /**
3069
+ *
3070
+ *
3071
+ * @group Output Generation Hooks
3072
+ */
3073
+ [DEFINED_HOOK_NAMES.resolveFileUrl]: (this: PluginContext, args: ResolveFileUrlArgs) => string | NullValue;
3019
3074
  /**
3020
3075
  * Called when Rolldown encounters an error during
3021
3076
  * {@linkcode RolldownBuild.generate | bundle.generate()} or
@@ -3111,10 +3166,10 @@ type ObjectHookMeta = {
3111
3166
  type ObjectHook<T, O = {}> = T | ({
3112
3167
  handler: T;
3113
3168
  } & ObjectHookMeta & O);
3114
- type SyncPluginHooks = DefinedHookNames["augmentChunkHash" | "onLog" | "outputOptions"];
3169
+ type SyncPluginHooks = DefinedHookNames["augmentChunkHash" | "onLog" | "outputOptions" | "resolveFileUrl"];
3115
3170
  /** @category Plugin APIs */
3116
3171
  type AsyncPluginHooks = Exclude<keyof FunctionPluginHooks, SyncPluginHooks>;
3117
- type FirstPluginHooks = DefinedHookNames["load" | "resolveDynamicImport" | "resolveId"];
3172
+ type FirstPluginHooks = DefinedHookNames["load" | "resolveDynamicImport" | "resolveFileUrl" | "resolveId"];
3118
3173
  type SequentialPluginHooks = DefinedHookNames["augmentChunkHash" | "generateBundle" | "onLog" | "options" | "outputOptions" | "renderChunk" | "transform"];
3119
3174
  interface AddonHooks {
3120
3175
  /**
@@ -3146,7 +3201,7 @@ interface AddonHooks {
3146
3201
  */
3147
3202
  [DEFINED_HOOK_NAMES.outro]: AddonHook;
3148
3203
  }
3149
- type OutputPluginHooks = DefinedHookNames["augmentChunkHash" | "generateBundle" | "outputOptions" | "renderChunk" | "renderError" | "renderStart" | "writeBundle"];
3204
+ type OutputPluginHooks = DefinedHookNames["augmentChunkHash" | "generateBundle" | "outputOptions" | "renderChunk" | "renderError" | "renderStart" | "resolveFileUrl" | "writeBundle"];
3150
3205
  /** @internal */
3151
3206
  type ParallelPluginHooks = Exclude<keyof FunctionPluginHooks | keyof AddonHooks, FirstPluginHooks | SequentialPluginHooks>;
3152
3207
  /** @category Plugin APIs */
@@ -3385,6 +3440,13 @@ type DevModeOptions = boolean | {
3385
3440
  host?: string;
3386
3441
  port?: number;
3387
3442
  implement?: string;
3443
+ /**
3444
+ * Prevent Rolldown from prepending its common dev runtime to {@link implement}.
3445
+ * @deprecated Common runtime injection will be disabled by default in the future.
3446
+ * Include the common runtime in {@link implement} instead.
3447
+ * @default false
3448
+ */
3449
+ skipCommonRuntimeInjection?: boolean;
3388
3450
  lazy?: boolean;
3389
3451
  };
3390
3452
  type OptimizationOptions = {
@@ -3802,7 +3864,8 @@ interface InputOptions {
3802
3864
  fileName?: string;
3803
3865
  };
3804
3866
  /**
3805
- * Enable on-demand wrapping of modules.
3867
+ * Under `output.strictExecutionOrder`, derive a conservative wrapping plan from predicted
3868
+ * chunk execution hazards instead of wrapping every eligible module.
3806
3869
  * @default false
3807
3870
  * @hidden not ready for public usage yet
3808
3871
  */
@@ -4000,4 +4063,4 @@ declare function defineConfig(config: RolldownOptions[]): RolldownOptions[];
4000
4063
  declare function defineConfig(config: RolldownOptionsFunction): RolldownOptionsFunction;
4001
4064
  declare function defineConfig(config: ConfigExport): ConfigExport;
4002
4065
  //#endregion
4003
- export { MinimalPluginContext as $, SourcemapIgnoreListOption as $t, RolldownPlugin as A, ChunkingContext as At, SourceMapInput as B, OutputOptions as Bt, ParallelPluginHooks as C, BuildOptions as Ct, ResolveIdExtraOptions as D, AdvancedChunksOptions as Dt, PluginMeta as E, AdvancedChunksGroup as Et, BuiltinPlugin as F, GeneratedCodeOptions as Ft, EmittedChunk as G, OutputAsset as Gt, TreeshakingOptions as H, MaybePromise as Ht, RUNTIME_MODULE_ID as I, GeneratedCodePreset as It, GetModuleInfo as J, RenderedModule as Jt, EmittedFile as K, OutputChunk as Kt, VERSION as L, GlobalsFunction as Lt, SourceDescription as M, CodeSplittingNameFunction as Mt, TransformResult as N, CodeSplittingOptions as Nt, ResolveIdResult as O, BuiltinModuleTag as Ot, withFilter as P, CommentsOptions as Pt, defineParallelPlugin as Q, ModuleInfo as Qt, BundleError as R, MinifyOptions as Rt, ObjectHook as S, RolldownBuild as St, Plugin as T, AddonFunction as Tt, TransformPluginContext as U, PartialNull as Ut, OutputBundle as V, PreRenderedAsset as Vt, EmittedAsset as W, StringOrRegExp as Wt, PluginContextResolveOptions as X, SourceMap as Xt, PluginContext as Y, RolldownOutput as Yt, DefineParallelPluginResult as Z, freeExternalMemory as Zt, HookFilterExtension as _, RolldownWatcher as _t, ChunkOptimizationOptions as a, RolldownDirectoryEntry as at, ModuleOptions as b, WatchOptions as bt, InputOption as c, InternalModuleFormat as ct, OptimizationOptions as d, TransformOptions as dt, PluginContextMeta as et, WatcherFileWatcherOptions as f, ChecksOptions as ft, FunctionPluginHooks as g, watch as gt, CustomPluginOptions as h, RolldownMagicString as ht, RolldownOptions as i, BufferEncoding as it, RolldownPluginOption as j, CodeSplittingGroup as jt, ResolvedId as k, ChunkFileNamesFunction as kt, InputOptions as l, NormalizedOutputOptions as lt, AsyncPluginHooks as m, WarningHandlerWithDefault as mt, RolldownOptionsFunction as n, HookFilter as nt, ExternalOption as o, RolldownFileStats as ot, WatcherOptions as p, LoggingFunction as pt, EmittedPrebuiltChunk as q, RenderedChunk as qt, defineConfig as r, ModuleTypeFilter as rt, ExternalOptionFunction as s, RolldownFsModule as st, ConfigExport as t, GeneralHookFilter as tt, ModuleTypes as u, NormalizedInputOptions as ut, ImportKind as v, RolldownWatcherEvent as vt, PartialResolvedId as w, build as wt, ModuleType as x, rolldown as xt, LoadResult as y, RolldownWatcherWatcherEventMap as yt, ExistingRawSourceMap as z, ModuleFormat as zt };
4066
+ export { defineParallelPlugin as $, ModuleInfo as $t, ResolvedId as A, ChunkFileNamesFunction as At, ExistingRawSourceMap as B, ModuleFormat as Bt, ParallelPluginHooks as C, RolldownBuild as Ct, ResolveFileUrlArgs as D, AdvancedChunksGroup as Dt, PluginMeta as E, AddonFunction as Et, withFilter as F, CommentsOptions as Ft, EmittedAsset as G, StringOrRegExp as Gt, OutputBundle as H, PreRenderedAsset as Ht, BuiltinPlugin as I, GeneratedCodeOptions as It, EmittedPrebuiltChunk as J, RenderedChunk as Jt, EmittedChunk as K, OutputAsset as Kt, RUNTIME_MODULE_ID as L, GeneratedCodePreset as Lt, RolldownPluginOption as M, CodeSplittingGroup as Mt, SourceDescription as N, CodeSplittingNameFunction as Nt, ResolveIdExtraOptions as O, AdvancedChunksOptions as Ot, TransformResult as P, CodeSplittingOptions as Pt, DefineParallelPluginResult as Q, freeExternalMemory as Qt, VERSION as R, GlobalsFunction as Rt, ObjectHook as S, rolldown as St, Plugin as T, build as Tt, TreeshakingOptions as U, MaybePromise as Ut, SourceMapInput as V, OutputOptions as Vt, TransformPluginContext as W, PartialNull as Wt, PluginContext as X, RolldownOutput as Xt, GetModuleInfo as Y, RenderedModule as Yt, PluginContextResolveOptions as Z, SourceMap as Zt, HookFilterExtension as _, watch as _t, ChunkOptimizationOptions as a, BufferEncoding as at, ModuleOptions as b, RolldownWatcherWatcherEventMap as bt, InputOption as c, RolldownFsModule as ct, OptimizationOptions as d, NormalizedInputOptions as dt, SourcemapIgnoreListOption as en, MinimalPluginContext as et, WatcherFileWatcherOptions as f, TransformOptions as ft, FunctionPluginHooks as g, RolldownMagicString as gt, CustomPluginOptions as h, WarningHandlerWithDefault as ht, RolldownOptions as i, ModuleTypeFilter as it, RolldownPlugin as j, ChunkingContext as jt, ResolveIdResult as k, BuiltinModuleTag as kt, InputOptions as l, InternalModuleFormat as lt, AsyncPluginHooks as m, LoggingFunction as mt, RolldownOptionsFunction as n, GeneralHookFilter as nt, ExternalOption as o, RolldownDirectoryEntry as ot, WatcherOptions as p, ChecksOptions as pt, EmittedFile as q, OutputChunk as qt, defineConfig as r, HookFilter as rt, ExternalOptionFunction as s, RolldownFileStats as st, ConfigExport as t, PluginContextMeta as tt, ModuleTypes as u, NormalizedOutputOptions as ut, ImportKind as v, RolldownWatcher as vt, PartialResolvedId as w, BuildOptions as wt, ModuleType as x, WatchOptions as xt, LoadResult as y, RolldownWatcherEvent as yt, BundleError as z, MinifyOptions as zt };
@@ -1,4 +1,4 @@
1
- import { t as require_binding } from "./binding-Dby9rwGk.mjs";
1
+ import { t as require_binding } from "./binding-DwUQWZOo.mjs";
2
2
  //#region src/types/sourcemap.ts
3
3
  function bindingifySourcemap(map) {
4
4
  if (map == null) return;
@@ -1,9 +1,9 @@
1
- import { t as rolldown } from "./rolldown-951h_1lf.mjs";
1
+ import { t as rolldown } from "./rolldown-D23fYgSS.mjs";
2
2
  import fs from "node:fs";
3
3
  import path from "node:path";
4
4
  import { readdir } from "node:fs/promises";
5
- import { cwd } from "node:process";
6
5
  import { pathToFileURL } from "node:url";
6
+ import { cwd } from "node:process";
7
7
  //#region src/utils/load-config.ts
8
8
  async function bundleTsConfig(configFile, isEsm) {
9
9
  const dirnameVarName = "injected_original_dirname";
@@ -103,6 +103,7 @@ const INPUT_HOOK_IN_OUTPUT_PLUGIN = "INPUT_HOOK_IN_OUTPUT_PLUGIN";
103
103
  const CYCLE_LOADING = "CYCLE_LOADING";
104
104
  const MULTIPLE_WATCHER_OPTION = "MULTIPLE_WATCHER_OPTION";
105
105
  const PARSE_ERROR = "PARSE_ERROR";
106
+ const VALIDATION_ERROR = "VALIDATION_ERROR";
106
107
  function logParseError(message, id, pos) {
107
108
  return {
108
109
  code: PARSE_ERROR,
@@ -111,6 +112,12 @@ function logParseError(message, id, pos) {
111
112
  pos
112
113
  };
113
114
  }
115
+ function logFailedValidation(message) {
116
+ return {
117
+ code: VALIDATION_ERROR,
118
+ message
119
+ };
120
+ }
114
121
  function logInvalidLogPosition(pluginName) {
115
122
  return {
116
123
  code: INVALID_LOG_POSITION,
@@ -182,4 +189,4 @@ function augmentCodeLocation(properties, pos, source, id) {
182
189
  }
183
190
  }
184
191
  //#endregion
185
- export { logInvalidLogPosition as a, logPluginError as c, logInputHookInOutputPlugin as i, locate as l, error as n, logMultipleWatcherOption as o, logCycleLoading as r, logParseError as s, augmentCodeLocation as t, getCodeFrame as u };
192
+ export { logInputHookInOutputPlugin as a, logParseError as c, getCodeFrame as d, logFailedValidation as i, logPluginError as l, error as n, logInvalidLogPosition as o, logCycleLoading as r, logMultipleWatcherOption as s, augmentCodeLocation as t, locate as u };
@@ -17,5 +17,13 @@ function unsupported(info) {
17
17
  throw new Error(`UNSUPPORTED: ${info}`);
18
18
  }
19
19
  function noop(..._args) {}
20
+ const ABSOLUTE_PATH_REGEX = /^(?:\/|(?:[A-Za-z]:)?[/\\|])/;
21
+ /**
22
+ * Whether `name` is a path fragment — an absolute or relative path. Emitted file
23
+ * names, `[name]` substitutions and file-name patterns can be neither.
24
+ */
25
+ function isPathFragment(name) {
26
+ return name[0] === "/" || name[0] === "." && (name[1] === "/" || name[1] === ".") || ABSOLUTE_PATH_REGEX.test(name);
27
+ }
20
28
  //#endregion
21
- export { unreachable as a, unimplemented as i, isPromiseLike as n, unsupported as o, noop as r, arraify as t };
29
+ export { unimplemented as a, noop as i, isPathFragment as n, unreachable as o, isPromiseLike as r, unsupported as s, arraify as t };
@@ -1,5 +1,5 @@
1
- import { n as __toESM, t as require_binding } from "./binding-Dby9rwGk.mjs";
2
- import { c as logPluginError, n as error } from "./logs-ZGEh6uhb.mjs";
1
+ import { n as __toESM, t as require_binding } from "./binding-DwUQWZOo.mjs";
2
+ import { l as logPluginError, n as error } from "./logs-DmYCAKcW.mjs";
3
3
  //#region src/builtin-plugin/utils.ts
4
4
  var import_binding = /* @__PURE__ */ __toESM(require_binding(), 1);
5
5
  var BuiltinPlugin = class {
@@ -1,5 +1,5 @@
1
- import { n as __toESM, t as require_binding } from "./binding-Dby9rwGk.mjs";
2
- //#region ../../node_modules/.pnpm/oxc-parser@0.140.0/node_modules/oxc-parser/src-js/wrap.js
1
+ import { n as __toESM, t as require_binding } from "./binding-DwUQWZOo.mjs";
2
+ //#region ../../node_modules/.pnpm/oxc-parser@0.142.0/node_modules/oxc-parser/src-js/wrap.js
3
3
  var import_binding = /* @__PURE__ */ __toESM(require_binding(), 1);
4
4
  function wrap(result) {
5
5
  let program, module, comments, errors;
@@ -604,9 +604,7 @@ let wD = class extends x {
604
604
  case "right":
605
605
  this.cursor = this.cursor === this.options.length - 1 ? 0 : this.cursor + 1;
606
606
  break;
607
- case "space":
608
- this.toggleValue();
609
- break;
607
+ case "space": this.toggleValue();
610
608
  }
611
609
  });
612
610
  }
@@ -639,9 +637,7 @@ var jD = class extends x {
639
637
  this.cursor = this.cursor === 0 ? this.options.length - 1 : this.cursor - 1;
640
638
  break;
641
639
  case "down":
642
- case "right":
643
- this.cursor = this.cursor === this.options.length - 1 ? 0 : this.cursor + 1;
644
- break;
640
+ case "right": this.cursor = this.cursor === this.options.length - 1 ? 0 : this.cursor + 1;
645
641
  }
646
642
  this.changeValue();
647
643
  });
@@ -1,5 +1,5 @@
1
- import { n as __toESM, t as require_binding } from "./binding-Dby9rwGk.mjs";
2
- import { a as bindingifySourcemap, n as normalizeBindingError } from "./error-DFGNOCle.mjs";
1
+ import { n as __toESM, t as require_binding } from "./binding-DwUQWZOo.mjs";
2
+ import { a as bindingifySourcemap, n as normalizeBindingError } from "./error-nLggAzpQ.mjs";
3
3
  //#region src/utils/minify.ts
4
4
  var import_binding = /* @__PURE__ */ __toESM(require_binding(), 1);
5
5
  /**
@@ -0,0 +1,178 @@
1
+ import { n as __toESM, t as require_binding } from "./binding-DwUQWZOo.mjs";
2
+ import { f as __decorate, h as PlainObjectLike, m as lazyProp, u as transformToRollupOutput } from "./bindingify-input-options-BHixd47T.mjs";
3
+ import { l as PluginDriver, s as validateOption, t as createBundlerOptions } from "./create-bundler-option-LuUKlAT7.mjs";
4
+ import { i as unwrapBindingResult } from "./error-nLggAzpQ.mjs";
5
+ //#region src/types/rolldown-output-impl.ts
6
+ var import_binding = /* @__PURE__ */ __toESM(require_binding(), 1);
7
+ var RolldownOutputImpl = class extends PlainObjectLike {
8
+ bindingOutputs;
9
+ constructor(bindingOutputs) {
10
+ super();
11
+ this.bindingOutputs = bindingOutputs;
12
+ }
13
+ get output() {
14
+ return transformToRollupOutput(this.bindingOutputs).output;
15
+ }
16
+ __rolldown_external_memory_handle__(keepDataAlive) {
17
+ const results = this.output.map((item) => item.__rolldown_external_memory_handle__(keepDataAlive));
18
+ if (!results.every((r) => r.freed)) {
19
+ const reasons = results.filter((r) => !r.freed).map((r) => r.reason).filter(Boolean);
20
+ return {
21
+ freed: false,
22
+ reason: `Failed to free ${reasons.length} item(s): ${reasons.join("; ")}`
23
+ };
24
+ }
25
+ return { freed: true };
26
+ }
27
+ };
28
+ __decorate([lazyProp], RolldownOutputImpl.prototype, "output", null);
29
+ //#endregion
30
+ //#region src/api/rolldown/rolldown-build.ts
31
+ Symbol.asyncDispose ??= Symbol("Symbol.asyncDispose");
32
+ /**
33
+ * The bundle object returned by {@linkcode rolldown} function.
34
+ *
35
+ * @category Programmatic APIs
36
+ */
37
+ var RolldownBuild = class {
38
+ #inputOptions;
39
+ #bundler;
40
+ #stopWorkers;
41
+ #asyncRuntimeReleased = false;
42
+ /** @hidden should not be used directly */
43
+ constructor(inputOptions) {
44
+ this.#inputOptions = inputOptions;
45
+ this.#bundler = new import_binding.BindingBundler();
46
+ (0, import_binding.startAsyncRuntime)();
47
+ }
48
+ /**
49
+ * Whether the bundle has been closed.
50
+ *
51
+ * If the bundle is closed, calling other methods will throw an error.
52
+ */
53
+ get closed() {
54
+ return this.#bundler.closed;
55
+ }
56
+ /**
57
+ * Generate bundles in-memory.
58
+ *
59
+ * If you directly want to write bundles to disk, use the {@linkcode write} method instead.
60
+ *
61
+ * @param outputOptions The output options.
62
+ * @returns The generated bundle.
63
+ * @throws {@linkcode BundleError} When an error occurs during the build.
64
+ */
65
+ async generate(outputOptions = {}) {
66
+ return this.#build(false, outputOptions);
67
+ }
68
+ /**
69
+ * Generate and write bundles to disk.
70
+ *
71
+ * If you want to generate bundles in-memory, use the {@linkcode generate} method instead.
72
+ *
73
+ * @param outputOptions The output options.
74
+ * @returns The generated bundle.
75
+ * @throws {@linkcode BundleError} When an error occurs during the build.
76
+ */
77
+ async write(outputOptions = {}) {
78
+ return this.#build(true, outputOptions);
79
+ }
80
+ /**
81
+ * Close the bundle and free resources.
82
+ *
83
+ * This method should be called even if the {@linkcode generate} method
84
+ * or the {@linkcode write} method threw an error. It should be called
85
+ * even if neither of the methods are called.
86
+ *
87
+ * This method is called automatically when using `using` syntax.
88
+ *
89
+ * @example
90
+ * ```js
91
+ * import { rolldown } from 'rolldown';
92
+ *
93
+ * {
94
+ * using bundle = await rolldown({ input: 'src/main.js' });
95
+ * const output = await bundle.generate({ format: 'esm' });
96
+ * console.log(output);
97
+ * // bundle.close() is called automatically here
98
+ * }
99
+ * ```
100
+ */
101
+ async close() {
102
+ const shouldRelease = !this.#asyncRuntimeReleased;
103
+ this.#asyncRuntimeReleased = true;
104
+ try {
105
+ await this.#stopWorkers?.();
106
+ await this.#bundler.close();
107
+ this.#stopWorkers = void 0;
108
+ } finally {
109
+ if (shouldRelease) (0, import_binding.shutdownAsyncRuntime)();
110
+ }
111
+ }
112
+ /** @hidden documented in close method */
113
+ async [Symbol.asyncDispose]() {
114
+ await this.close();
115
+ }
116
+ /**
117
+ * @experimental
118
+ * @hidden not ready for public usage yet
119
+ */
120
+ get watchFiles() {
121
+ return Promise.resolve(this.#bundler.getWatchFiles());
122
+ }
123
+ async #build(isWrite, outputOptions) {
124
+ validateOption("output", outputOptions);
125
+ await this.#stopWorkers?.();
126
+ const option = await createBundlerOptions(this.#inputOptions, outputOptions, false, true);
127
+ try {
128
+ this.#stopWorkers = option.stopWorkers;
129
+ let output;
130
+ if (isWrite) output = await this.#bundler.write(option.bundlerOptions);
131
+ else output = await this.#bundler.generate(option.bundlerOptions);
132
+ return new RolldownOutputImpl(unwrapBindingResult(output));
133
+ } catch (e) {
134
+ await option.stopWorkers?.();
135
+ throw e;
136
+ }
137
+ }
138
+ };
139
+ //#endregion
140
+ //#region src/api/rolldown/index.ts
141
+ /**
142
+ * The API compatible with Rollup's `rollup` function.
143
+ *
144
+ * Unlike Rollup, the module graph is not built until the methods of the bundle object are called.
145
+ *
146
+ * @param input The input options object.
147
+ * @returns A Promise that resolves to a bundle object.
148
+ *
149
+ * @example
150
+ * ```js
151
+ * import { rolldown } from 'rolldown';
152
+ *
153
+ * let bundle, failed = false;
154
+ * try {
155
+ * bundle = await rolldown({
156
+ * input: 'src/main.js',
157
+ * });
158
+ * await bundle.write({
159
+ * format: 'esm',
160
+ * });
161
+ * } catch (e) {
162
+ * console.error(e);
163
+ * failed = true;
164
+ * }
165
+ * if (bundle) {
166
+ * await bundle.close();
167
+ * }
168
+ * process.exitCode = failed ? 1 : 0;
169
+ * ```
170
+ *
171
+ * @category Programmatic APIs
172
+ */
173
+ const rolldown = async (input) => {
174
+ validateOption("input", input);
175
+ return new RolldownBuild(await PluginDriver.callOptionsHook(input));
176
+ };
177
+ //#endregion
178
+ export { rolldown as t };
@@ -1,5 +1,5 @@
1
1
  import { a as RolldownLog } from "./logging-xuHO4mAy.mjs";
2
- import { F as MinifyOptions$1, G as TsconfigCache$1, I as MinifyResult$1, R as ParseResult$1, U as SourceMap, a as BindingEnhancedTransformOptions, o as BindingEnhancedTransformResult, y as BindingTsconfigResult, z as ParserOptions$1 } from "./binding-Dbbi0RbO.mjs";
2
+ import { F as MinifyOptions$1, G as TsconfigCache$1, I as MinifyResult$1, R as ParseResult$1, U as SourceMap, a as BindingEnhancedTransformOptions, o as BindingEnhancedTransformResult, y as BindingTsconfigResult, z as ParserOptions$1 } from "./binding-CVtkJvyl.mjs";
3
3
  //#region src/utils/resolve-tsconfig.d.ts
4
4
  /**
5
5
  * Cache for tsconfig resolution to avoid redundant file system operations.
@@ -1,9 +1,9 @@
1
- import { n as __toESM, t as require_binding } from "./binding-Dby9rwGk.mjs";
2
- import { o as logMultipleWatcherOption } from "./logs-ZGEh6uhb.mjs";
3
- import { v as LOG_LEVEL_WARN } from "./bindingify-input-options-_ppP73I9.mjs";
4
- import { t as arraify } from "./misc-CoQm4NHO.mjs";
5
- import { n as createBundlerOptions, u as PluginDriver } from "./rolldown-build-CdF8HAHX.mjs";
6
- import { t as aggregateBindingErrorsIntoJsError } from "./error-DFGNOCle.mjs";
1
+ import { n as __toESM, t as require_binding } from "./binding-DwUQWZOo.mjs";
2
+ import { s as logMultipleWatcherOption } from "./logs-DmYCAKcW.mjs";
3
+ import { C as LOG_LEVEL_WARN } from "./bindingify-input-options-BHixd47T.mjs";
4
+ import { t as arraify } from "./misc-DOSKtd97.mjs";
5
+ import { l as PluginDriver, t as createBundlerOptions } from "./create-bundler-option-LuUKlAT7.mjs";
6
+ import { t as aggregateBindingErrorsIntoJsError } from "./error-nLggAzpQ.mjs";
7
7
  //#region ../../node_modules/.pnpm/signal-exit@4.1.0/node_modules/signal-exit/dist/mjs/signals.js
8
8
  /**
9
9
  * This is not the set of all possible signals.
@@ -276,9 +276,7 @@ function createEventCallback(emitter) {
276
276
  case "restart":
277
277
  await emitter.emit("restart");
278
278
  break;
279
- case "close":
280
- await emitter.emit("close");
281
- break;
279
+ case "close": await emitter.emit("close");
282
280
  }
283
281
  };
284
282
  }
@@ -291,6 +289,7 @@ var Watcher = class {
291
289
  this.closed = false;
292
290
  this.inner = inner;
293
291
  this.emitter = emitter;
292
+ (0, import_binding.startAsyncRuntime)();
294
293
  const originClose = emitter.close.bind(emitter);
295
294
  emitter.close = async () => {
296
295
  await this.close();
@@ -302,9 +301,12 @@ var Watcher = class {
302
301
  async close() {
303
302
  if (this.closed) return;
304
303
  this.closed = true;
305
- for (const stop of this.stopWorkers) await stop?.();
306
- await this.inner.close();
307
- (0, import_binding.shutdownAsyncRuntime)();
304
+ try {
305
+ for (const stop of this.stopWorkers) await stop?.();
306
+ await this.inner.close();
307
+ } finally {
308
+ (0, import_binding.shutdownAsyncRuntime)();
309
+ }
308
310
  }
309
311
  async run() {
310
312
  await this.inner.run();
@@ -314,7 +316,8 @@ var Watcher = class {
314
316
  async function createWatcher(emitter, input) {
315
317
  const options = arraify(input);
316
318
  const bundlerOptions = await Promise.all(options.map((option) => arraify(option.output || {}).map(async (output) => {
317
- return createBundlerOptions(await PluginDriver.callOptionsHook(option, true), output, true);
319
+ const inputOptions = await PluginDriver.callOptionsHook(option, true);
320
+ return createBundlerOptions(inputOptions, output, true);
318
321
  })).flat());
319
322
  warnMultiplePollingOptions(bundlerOptions);
320
323
  const callback = createEventCallback(emitter);
@@ -1,8 +1,8 @@
1
- import { _ as BindingTsconfigCompilerOptions, v as BindingTsconfigRawOptions } from "./shared/binding-Dbbi0RbO.mjs";
2
- import { a as MinifyOptions, c as minifySync, d as parse, f as parseSync, i as transformSync, l as ParseResult, n as TransformResult, o as MinifyResult, p as TsconfigCache, r as transform, s as minify, t as TransformOptions, u as ParserOptions } from "./shared/transform-Cs2bUDRH.mjs";
1
+ import { _ as BindingTsconfigCompilerOptions, v as BindingTsconfigRawOptions } from "./shared/binding-CVtkJvyl.mjs";
2
+ import { a as MinifyOptions, c as minifySync, d as parse, f as parseSync, i as transformSync, l as ParseResult, n as TransformResult, o as MinifyResult, p as TsconfigCache, r as transform, s as minify, t as TransformOptions, u as ParserOptions } from "./shared/transform-WmU_cI8e.mjs";
3
3
  import * as ESTree from "@oxc-project/types";
4
4
  import { Program } from "@oxc-project/types";
5
- //#region ../../node_modules/.pnpm/oxc-parser@0.140.0/node_modules/oxc-parser/src-js/generated/visit/visitor.d.ts
5
+ //#region ../../node_modules/.pnpm/oxc-parser@0.142.0/node_modules/oxc-parser/src-js/generated/visit/visitor.d.ts
6
6
  interface VisitorObject$1 {
7
7
  DebuggerStatement?: (node: ESTree.DebuggerStatement) => void;
8
8
  "DebuggerStatement:exit"?: (node: ESTree.DebuggerStatement) => void;