@rollipop/rolldown 1.0.25 → 1.0.27

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 (45) hide show
  1. package/THIRD-PARTY-LICENSE +33 -0
  2. package/dist/cli.d.mts +1 -1
  3. package/dist/cli.mjs +17 -14
  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-CuB3cgML.mjs +679 -0
  24. package/dist/shared/{binding-CyCKfYSu.d.mts → binding-We_IfeZk.d.mts} +11 -0
  25. package/dist/shared/{bindingify-input-options-CkSiXecU.mjs → bindingify-input-options-Cp0kpzhL.mjs} +453 -283
  26. package/dist/shared/{constructors-CEYV9FDo.mjs → constructors-CUnQrTUN.mjs} +10 -6
  27. package/dist/shared/{constructors-B1v9buY3.d.mts → constructors-dwVL6FXl.d.mts} +2 -2
  28. package/dist/shared/{rolldown-build-Cy0C2jvD.mjs → create-bundler-option-CAx_5u9x.mjs} +72 -179
  29. package/dist/shared/{define-config-JSiTCvYA.d.mts → define-config-D7NdzfP7.d.mts} +86 -27
  30. package/dist/shared/{error-pMeQY3Ie.mjs → error-BdMRRSIe.mjs} +1 -1
  31. package/dist/shared/{load-config-BAsjK_il.mjs → load-config-Bh1CAJT7.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-CSHtENP1.mjs → normalize-string-or-regex-Bp8lvaXp.mjs} +2 -2
  35. package/dist/shared/{parse-BEeauYyL.mjs → parse-Be-cJD0d.mjs} +2 -2
  36. package/dist/shared/{prompt--dNycKSZ.mjs → prompt-CH6TK0bC.mjs} +2 -6
  37. package/dist/shared/{resolve-tsconfig-upebNbwm.mjs → resolve-tsconfig-CzlObluk.mjs} +2 -2
  38. package/dist/shared/rolldown-BTyqb0Av.mjs +178 -0
  39. package/dist/shared/{transform-DJLP9UUk.d.mts → transform-CsZGbS4Q.d.mts} +1 -1
  40. package/dist/shared/{watch-BLrLOBAp.mjs → watch-BA13XFgy.mjs} +17 -14
  41. package/dist/utils-index.d.mts +3 -3
  42. package/dist/utils-index.mjs +16 -16
  43. package/package.json +26 -16
  44. package/dist/shared/binding-DnitnDvS.mjs +0 -594
  45. package/dist/shared/rolldown-DHWEkE2v.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 { B as OxcReactCompilerOptions, H as ParserOptions, I as JsxOptions$1, J as TransformOptions$1, L as MinifyOptions$1, M as BindingWatcherBundler, N as ExternalMemoryStatus, U as PreRenderedChunk, W as ReactRefreshOptions$1, c as BindingHookResolveIdExtraArgs, d as BindingMagicString, f as BindingPluginContextResolveOptions, m as BindingRenderedChunk, t as BindingBuiltinPluginName, v as BindingTransformHookExtraArgs } from "./binding-CyCKfYSu.mjs";
2
+ import { B as OxcReactCompilerOptions, H as ParserOptions, I as JsxOptions$1, J as TransformOptions$1, L as MinifyOptions$1, M as BindingWatcherBundler, N as ExternalMemoryStatus, U as PreRenderedChunk, W as ReactRefreshOptions$1, c as BindingHookResolveIdExtraArgs, d as BindingMagicString, f as BindingPluginContextResolveOptions, m as BindingRenderedChunk, t as BindingBuiltinPluginName, v as BindingTransformHookExtraArgs } from "./binding-We_IfeZk.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;
@@ -998,8 +998,11 @@ interface OutputOptions {
998
998
  * Built-in module tag names computed by rolldown.
999
999
  *
1000
1000
  * - `'$initial'` — the module is statically imported by at least one user-defined entry point, or is part of its static dependency chain.
1001
+ *
1002
+ * @category Code Splitting
1001
1003
  */
1002
1004
  type BuiltinModuleTag = "$initial";
1005
+ /** @category Code Splitting */
1003
1006
  type CodeSplittingGroup = {
1004
1007
  /**
1005
1008
  * 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.
@@ -1197,10 +1200,14 @@ type CodeSplittingGroup = {
1197
1200
  * Alias for {@linkcode CodeSplittingGroup}. Use this type for the `codeSplitting.groups` option.
1198
1201
  *
1199
1202
  * @deprecated Please use {@linkcode CodeSplittingGroup} instead.
1203
+ *
1204
+ * @category Code Splitting
1200
1205
  */
1201
1206
  type AdvancedChunksGroup = CodeSplittingGroup;
1202
1207
  /**
1203
1208
  * Configuration options for advanced code splitting.
1209
+ *
1210
+ * @category Code Splitting
1204
1211
  */
1205
1212
  type CodeSplittingOptions = {
1206
1213
  /**
@@ -1236,6 +1243,8 @@ type CodeSplittingOptions = {
1236
1243
  * Alias for {@linkcode CodeSplittingOptions}. Use this type for the `codeSplitting` option.
1237
1244
  *
1238
1245
  * @deprecated Please use {@linkcode CodeSplittingOptions} instead.
1246
+ *
1247
+ * @category Code Splitting
1239
1248
  */
1240
1249
  type AdvancedChunksOptions = CodeSplittingOptions;
1241
1250
  //#endregion
@@ -1278,8 +1287,6 @@ declare function build(options: BuildOptions[]): Promise<RolldownOutput[]>;
1278
1287
  */
1279
1288
  declare class RolldownBuild {
1280
1289
  #private;
1281
- /** @internal */
1282
- static asyncRuntimeShutdown: boolean;
1283
1290
  /** @hidden should not be used directly */
1284
1291
  constructor(inputOptions: InputOptions);
1285
1292
  /**
@@ -2013,6 +2020,9 @@ interface HookFilter {
2013
2020
  * If the value is a string, it is treated as a glob pattern.
2014
2021
  * The string type is not available for {@linkcode Plugin.resolveId | resolveId} hook.
2015
2022
  *
2023
+ * If the value is a regular expression, it is tested after the `id`'s path separators are normalized to forward slashes (`/`).
2024
+ * This keeps the filter portable across operating systems without requiring the regular expression to match both `/` and `\`.
2025
+ *
2016
2026
  * @example
2017
2027
  * Include all `id`s that contain `node_modules` in the path.
2018
2028
  * ```js
@@ -2580,14 +2590,14 @@ interface OutputBundle {
2580
2590
  //#region src/types/sourcemap.d.ts
2581
2591
  /** @category Plugin APIs */
2582
2592
  interface ExistingRawSourceMap {
2583
- file?: string | null;
2593
+ file?: string | null | undefined;
2584
2594
  mappings: string;
2585
- names?: string[];
2586
- sources?: (string | null)[];
2587
- sourcesContent?: (string | null | undefined)[];
2588
- sourceRoot?: string;
2589
- version?: number;
2590
- x_google_ignoreList?: number[];
2595
+ names?: string[] | undefined;
2596
+ sources?: (string | null)[] | undefined;
2597
+ sourcesContent?: (string | null | undefined)[] | undefined;
2598
+ sourceRoot?: string | undefined;
2599
+ version?: number | undefined;
2600
+ x_google_ignoreList?: number[] | undefined;
2591
2601
  }
2592
2602
  /** @inline @category Plugin APIs */
2593
2603
  type SourceMapInput = ExistingRawSourceMap | string | null;
@@ -2631,7 +2641,7 @@ declare class BuiltinPlugin {
2631
2641
  //#endregion
2632
2642
  //#region src/constants/plugin.d.ts
2633
2643
  declare const ENUMERATED_INPUT_PLUGIN_HOOK_NAMES: readonly ["options", "buildStart", "resolveId", "load", "transform", "moduleParsed", "buildEnd", "onLog", "resolveDynamicImport", "closeBundle", "closeWatcher", "watchChange", "transformCacheHit"];
2634
- declare const ENUMERATED_OUTPUT_PLUGIN_HOOK_NAMES: readonly ["augmentChunkHash", "outputOptions", "renderChunk", "renderStart", "renderError", "writeBundle", "generateBundle"];
2644
+ declare const ENUMERATED_OUTPUT_PLUGIN_HOOK_NAMES: readonly ["augmentChunkHash", "outputOptions", "renderChunk", "renderStart", "renderError", "writeBundle", "generateBundle", "resolveFileUrl"];
2635
2645
  declare const ENUMERATED_PLUGIN_HOOK_NAMES: [...typeof ENUMERATED_INPUT_PLUGIN_HOOK_NAMES, ...typeof ENUMERATED_OUTPUT_PLUGIN_HOOK_NAMES, "footer", "banner", "intro", "outro"];
2636
2646
  /**
2637
2647
  * Names of all defined hooks. It's like
@@ -2807,6 +2817,45 @@ interface SourceDescription extends SpecifiedModuleOptions, Partial<PartialNull<
2807
2817
  map?: SourceMapInput;
2808
2818
  moduleType?: ModuleType;
2809
2819
  }
2820
+ /**
2821
+ * Argument passed to the {@linkcode FunctionPluginHooks.resolveFileUrl | resolveFileUrl} hook.
2822
+ *
2823
+ * @category Plugin APIs
2824
+ */
2825
+ interface ResolveFileUrlArgs {
2826
+ /**
2827
+ * The preliminary filename of the chunk containing the reference with hash placeholders.
2828
+ * Similar to {@linkcode RenderedChunk.fileName | chunk.fileName}.
2829
+ */
2830
+ chunkId: string;
2831
+ /** The filename of the emitted file, relative to the output directory. */
2832
+ fileName: string;
2833
+ /** The rendered output format. */
2834
+ format: InternalModuleFormat;
2835
+ /**
2836
+ * The id of the original module this file was referenced by
2837
+ * using the `import.meta.ROLLDOWN_FILE_URL_*` reference.
2838
+ */
2839
+ moduleId: string;
2840
+ /** The reference id of this file. */
2841
+ referenceId: string;
2842
+ /**
2843
+ * The path of the emitted file, relative to the chunk the file is referenced from.
2844
+ *
2845
+ * This path will contain no leading `./`, but may contain a leading `../`.
2846
+ */
2847
+ relativePath: string;
2848
+ /**
2849
+ * The `urlId` of an `import.meta.ROLLDOWN_FILE_URL_<referenceId>_<urlId>` reference,
2850
+ * or `undefined` when the reference has no `urlId`.
2851
+ *
2852
+ * This is a rolldown-specific extension: the Rollup-compatible
2853
+ * `import.meta.ROLLUP_FILE_URL_<referenceId>` form never carries a `urlId`.
2854
+ *
2855
+ * @experimental This API may change in minor versions.
2856
+ */
2857
+ urlId?: string | undefined;
2858
+ }
2810
2859
  /** @inline */
2811
2860
  interface ResolveIdExtraOptions {
2812
2861
  /**
@@ -3041,6 +3090,12 @@ interface FunctionPluginHooks {
3041
3090
  * @group Output Generation Hooks
3042
3091
  */
3043
3092
  [DEFINED_HOOK_NAMES.augmentChunkHash]: (this: PluginContext, chunk: RenderedChunk) => string | void;
3093
+ /**
3094
+ *
3095
+ *
3096
+ * @group Output Generation Hooks
3097
+ */
3098
+ [DEFINED_HOOK_NAMES.resolveFileUrl]: (this: PluginContext, args: ResolveFileUrlArgs) => string | NullValue;
3044
3099
  /**
3045
3100
  * Called when Rolldown encounters an error during
3046
3101
  * {@linkcode RolldownBuild.generate | bundle.generate()} or
@@ -3137,10 +3192,10 @@ type ObjectHookMeta = {
3137
3192
  type ObjectHook<T, O = {}> = T | ({
3138
3193
  handler: T;
3139
3194
  } & ObjectHookMeta & O);
3140
- type SyncPluginHooks = DefinedHookNames["augmentChunkHash" | "onLog" | "outputOptions"];
3195
+ type SyncPluginHooks = DefinedHookNames["augmentChunkHash" | "onLog" | "outputOptions" | "resolveFileUrl"];
3141
3196
  /** @category Plugin APIs */
3142
3197
  type AsyncPluginHooks = Exclude<keyof FunctionPluginHooks, SyncPluginHooks>;
3143
- type FirstPluginHooks = DefinedHookNames["load" | "resolveDynamicImport" | "resolveId"];
3198
+ type FirstPluginHooks = DefinedHookNames["load" | "resolveDynamicImport" | "resolveFileUrl" | "resolveId"];
3144
3199
  type SequentialPluginHooks = DefinedHookNames["augmentChunkHash" | "generateBundle" | "onLog" | "options" | "outputOptions" | "renderChunk" | "transform" | "transformCacheHit"];
3145
3200
  interface AddonHooks {
3146
3201
  /**
@@ -3172,7 +3227,7 @@ interface AddonHooks {
3172
3227
  */
3173
3228
  [DEFINED_HOOK_NAMES.outro]: AddonHook;
3174
3229
  }
3175
- type OutputPluginHooks = DefinedHookNames["augmentChunkHash" | "generateBundle" | "outputOptions" | "renderChunk" | "renderError" | "renderStart" | "writeBundle"];
3230
+ type OutputPluginHooks = DefinedHookNames["augmentChunkHash" | "generateBundle" | "outputOptions" | "renderChunk" | "renderError" | "renderStart" | "resolveFileUrl" | "writeBundle"];
3176
3231
  /** @internal */
3177
3232
  type ParallelPluginHooks = Exclude<keyof FunctionPluginHooks | keyof AddonHooks, FirstPluginHooks | SequentialPluginHooks>;
3178
3233
  /** @category Plugin APIs */
@@ -3347,10 +3402,6 @@ interface WatcherOptions {
3347
3402
  * File watcher options for configuring how file changes are detected.
3348
3403
  */
3349
3404
  watcher?: WatcherFileWatcherOptions;
3350
- /**
3351
- * @deprecated Use {@linkcode watcher} instead.
3352
- */
3353
- notify?: WatcherFileWatcherOptions;
3354
3405
  /**
3355
3406
  * Filter to limit the file-watching to certain files.
3356
3407
  *
@@ -3411,6 +3462,13 @@ type DevModeOptions = boolean | {
3411
3462
  host?: string;
3412
3463
  port?: number;
3413
3464
  implement?: string;
3465
+ /**
3466
+ * Prevent Rolldown from prepending its common dev runtime to {@link implement}.
3467
+ * @deprecated Common runtime injection will be disabled by default in the future.
3468
+ * Include the common runtime in {@link implement} instead.
3469
+ * @default false
3470
+ */
3471
+ skipCommonRuntimeInjection?: boolean;
3414
3472
  lazy?: boolean;
3415
3473
  };
3416
3474
  type OptimizationOptions = {
@@ -3531,7 +3589,7 @@ interface InputOptions {
3531
3589
  * ```
3532
3590
  * > [!WARNING]
3533
3591
  * > `resolve.alias` will not call [`resolveId`](/reference/Interface.Plugin#resolveid) hooks of other plugin.
3534
- * > If you want to call `resolveId` hooks of other plugin, use `viteAliasPlugin` from `rolldown/experimental` instead.
3592
+ * > If you want to call `resolveId` hooks of other plugin, use `viteAliasPlugin` from `@rollipop/rolldown/experimental` instead.
3535
3593
  * > You could find more discussion in [this issue](https://github.com/rolldown/rolldown/issues/3615)
3536
3594
  */
3537
3595
  alias?: Record<string, string[] | string | false>;
@@ -3828,7 +3886,8 @@ interface InputOptions {
3828
3886
  fileName?: string;
3829
3887
  };
3830
3888
  /**
3831
- * Enable on-demand wrapping of modules.
3889
+ * Under `output.strictExecutionOrder`, derive a conservative wrapping plan from predicted
3890
+ * chunk execution hazards instead of wrapping every eligible module.
3832
3891
  * @default false
3833
3892
  * @hidden not ready for public usage yet
3834
3893
  */
@@ -4030,4 +4089,4 @@ declare function defineConfig(config: RolldownOptions[]): RolldownOptions[];
4030
4089
  declare function defineConfig(config: RolldownOptionsFunction): RolldownOptionsFunction;
4031
4090
  declare function defineConfig(config: ConfigExport): ConfigExport;
4032
4091
  //#endregion
4033
- 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 };
4092
+ 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-DnitnDvS.mjs";
1
+ import { t as require_binding } from "./binding-CuB3cgML.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-DHWEkE2v.mjs";
1
+ import { t as rolldown } from "./rolldown-BTyqb0Av.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-DnitnDvS.mjs";
2
- import { c as logPluginError, n as error } from "./logs-ZGEh6uhb.mjs";
1
+ import { n as __toESM, t as require_binding } from "./binding-CuB3cgML.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-DnitnDvS.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-CuB3cgML.mjs";
2
+ //#region ../../node_modules/.pnpm/oxc-parser@0.143.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-DnitnDvS.mjs";
2
- import { a as bindingifySourcemap, n as normalizeBindingError } from "./error-pMeQY3Ie.mjs";
1
+ import { n as __toESM, t as require_binding } from "./binding-CuB3cgML.mjs";
2
+ import { a as bindingifySourcemap, n as normalizeBindingError } from "./error-BdMRRSIe.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-CuB3cgML.mjs";
2
+ import { f as __decorate, h as PlainObjectLike, m as lazyProp, u as transformToRollupOutput } from "./bindingify-input-options-Cp0kpzhL.mjs";
3
+ import { l as PluginDriver, s as validateOption, t as createBundlerOptions } from "./create-bundler-option-CAx_5u9x.mjs";
4
+ import { i as unwrapBindingResult } from "./error-BdMRRSIe.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 '@rollipop/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 '@rollipop/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 { H as ParserOptions$1, L as MinifyOptions$1, R as MinifyResult$1, V as ParseResult$1, Y as TsconfigCache$1, a as BindingEnhancedTransformOptions, o as BindingEnhancedTransformResult, q as SourceMap, x as BindingTsconfigResult } from "./binding-CyCKfYSu.mjs";
2
+ import { H as ParserOptions$1, L as MinifyOptions$1, R as MinifyResult$1, V as ParseResult$1, Y as TsconfigCache$1, a as BindingEnhancedTransformOptions, o as BindingEnhancedTransformResult, q as SourceMap, x as BindingTsconfigResult } from "./binding-We_IfeZk.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-DnitnDvS.mjs";
2
- import { o as logMultipleWatcherOption } from "./logs-ZGEh6uhb.mjs";
3
- import { v as LOG_LEVEL_WARN } from "./bindingify-input-options-CkSiXecU.mjs";
4
- import { t as arraify } from "./misc-CoQm4NHO.mjs";
5
- import { n as createBundlerOptions, u as PluginDriver } from "./rolldown-build-Cy0C2jvD.mjs";
6
- import { t as aggregateBindingErrorsIntoJsError } from "./error-pMeQY3Ie.mjs";
1
+ import { n as __toESM, t as require_binding } from "./binding-CuB3cgML.mjs";
2
+ import { s as logMultipleWatcherOption } from "./logs-DmYCAKcW.mjs";
3
+ import { C as LOG_LEVEL_WARN } from "./bindingify-input-options-Cp0kpzhL.mjs";
4
+ import { t as arraify } from "./misc-DOSKtd97.mjs";
5
+ import { l as PluginDriver, t as createBundlerOptions } from "./create-bundler-option-CAx_5u9x.mjs";
6
+ import { t as aggregateBindingErrorsIntoJsError } from "./error-BdMRRSIe.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);
@@ -324,7 +327,7 @@ function warnMultiplePollingOptions(bundlerOptions) {
324
327
  let found = false;
325
328
  for (const option of bundlerOptions) {
326
329
  const watch = option.inputOptions.watch;
327
- const watcher = watch && typeof watch === "object" ? watch.watcher ?? watch.notify : void 0;
330
+ const watcher = watch && typeof watch === "object" ? watch.watcher : void 0;
328
331
  if (watcher && (watcher.usePolling != null || watcher.pollInterval != null)) {
329
332
  if (found) {
330
333
  option.onLog(LOG_LEVEL_WARN, logMultipleWatcherOption());
@@ -1,8 +1,8 @@
1
- import { b as BindingTsconfigRawOptions, y as BindingTsconfigCompilerOptions } from "./shared/binding-CyCKfYSu.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-DJLP9UUk.mjs";
1
+ import { b as BindingTsconfigRawOptions, y as BindingTsconfigCompilerOptions } from "./shared/binding-We_IfeZk.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-CsZGbS4Q.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.143.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;