@hypernym/bundler 0.31.2 → 0.31.3

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.
package/dist/bin/index.js CHANGED
@@ -9,7 +9,7 @@ import { build as build$1 } from "../build/index.js";
9
9
 
10
10
  //#region src/bin/meta.ts
11
11
  const name = `Hyperbundler`;
12
- const version = `0.31.2`;
12
+ const version = `0.31.3`;
13
13
 
14
14
  //#endregion
15
15
  //#region src/utils/logger.ts
@@ -103,20 +103,20 @@ const externals = [
103
103
 
104
104
  //#endregion
105
105
  //#region src/bin/loader.ts
106
- async function getTSConfigPath(cwd$1, filePath = "tsconfig.json") {
107
- const tsconfigPath = resolve(cwd$1, filePath);
106
+ async function getTSConfigPath(cwd, filePath = "tsconfig.json") {
107
+ const tsconfigPath = resolve(cwd, filePath);
108
108
  if (await exists(tsconfigPath)) return tsconfigPath;
109
109
  }
110
110
  async function loadConfig(filePath, defaults) {
111
- const cwd$1 = defaults.cwd;
111
+ const cwd = defaults.cwd;
112
112
  const result = await build({
113
- input: resolve(cwd$1, filePath),
113
+ input: resolve(cwd, filePath),
114
114
  write: false,
115
115
  external: (id) => !(isAbsolute(id) || /^(\.|@\/|~\/)/.test(id)),
116
116
  tsconfig: defaults.tsconfig,
117
117
  output: { format: "esm" }
118
118
  });
119
- const tempConfig = resolve(cwd$1, "node_modules/.hypernym/bundler/config.js");
119
+ const tempConfig = resolve(cwd, "node_modules/.hypernym/bundler/config.js");
120
120
  await write(tempConfig, result.output[0].code);
121
121
  const config = (await import(tempConfig)).default;
122
122
  return {
@@ -162,14 +162,14 @@ async function createConfigLoader(args) {
162
162
  async function createBuilder(config) {
163
163
  const { options, path: configPath } = config;
164
164
  const { hooks } = options;
165
- const cl$1 = console.log;
165
+ const cl = console.log;
166
166
  await hooks?.["bundle:start"]?.(options);
167
- cl$1();
167
+ cl();
168
168
  logger.info(dim(`v${version}`));
169
- cl$1("Config", dim(configPath));
170
- cl$1();
171
- cl$1("Processing specified entries...");
172
- cl$1();
169
+ cl("Config", dim(configPath));
170
+ cl();
171
+ cl("Processing specified entries...");
172
+ cl();
173
173
  await build$1(options).then((stats) => {
174
174
  const entriesLength = options.entries.length;
175
175
  const totalEntries = `${entriesLength} ${entriesLength > 1 ? "entries" : "entry"}`;
@@ -177,12 +177,12 @@ async function createBuilder(config) {
177
177
  const totalFiles = `${stats.files.length} file${filesLength > 1 ? "s" : ""}`;
178
178
  const buildTime = formatMs(stats.buildTime);
179
179
  const buildSize = formatBytes(stats.size);
180
- cl$1();
181
- cl$1("Stats:", dim(`${totalEntries}, ${totalFiles}, ${buildSize}, ${buildTime}`));
182
- cl$1();
183
- cl$1("All entries successfully processed.");
184
- cl$1("Bundle is optimized and ready for production.");
185
- cl$1();
180
+ cl();
181
+ cl("Stats:", dim(`${totalEntries}, ${totalFiles}, ${buildSize}, ${buildTime}`));
182
+ cl();
183
+ cl("All entries successfully processed.");
184
+ cl("Bundle is optimized and ready for production.");
185
+ cl();
186
186
  }).catch(error);
187
187
  await hooks?.["bundle:end"]?.(options);
188
188
  }
@@ -101,7 +101,7 @@ function parseOutputPath(path) {
101
101
  //#endregion
102
102
  //#region src/bin/build.ts
103
103
  function logEntryStats(stats) {
104
- const cl$1 = console.log;
104
+ const cl = console.log;
105
105
  const base = parse(stats.path).base;
106
106
  const path = stats.path.replace(base, "");
107
107
  let format = stats.format;
@@ -109,8 +109,8 @@ function logEntryStats(stats) {
109
109
  if (format === "es" || format === "module") format = "esm";
110
110
  const output = dim(path) + base;
111
111
  const outputLength = output.length + 2;
112
- cl$1(dim("+"), format.padEnd(5), output.padEnd(outputLength), dim(`[${formatBytes(stats.size)}, ${formatMs(stats.buildTime)}]`));
113
- if (stats.logs) for (const log of stats.logs) cl$1("!", log.level.padEnd(5), output.padEnd(outputLength), dim(log.log.message));
112
+ cl(dim("+"), format.padEnd(5), output.padEnd(outputLength), dim(`[${formatBytes(stats.size)}, ${formatMs(stats.buildTime)}]`));
113
+ if (stats.logs) for (const log of stats.logs) cl("!", log.level.padEnd(5), output.padEnd(outputLength), dim(log.log.message));
114
114
  }
115
115
  async function build(options) {
116
116
  const { cwd: cwdir = cwd(), outDir = "dist", entries, externals, tsconfig, hooks, minify } = options;
package/dist/index.d.ts CHANGED
@@ -11,232 +11,232 @@ interface BuildLogs {
11
11
  }
12
12
  interface BuildEntryStats {
13
13
  /**
14
- * The root path of the project.
15
- */
14
+ * The root path of the project.
15
+ */
16
16
  cwd: string;
17
17
  /**
18
- * Module output path.
19
- */
18
+ * Module output path.
19
+ */
20
20
  path: string;
21
21
  /**
22
- * Module size.
23
- */
22
+ * Module size.
23
+ */
24
24
  size: number;
25
25
  /**
26
- * Build time of individual module.
27
- */
26
+ * Build time of individual module.
27
+ */
28
28
  buildTime: number;
29
29
  /**
30
- * Module format.
31
- */
30
+ * Module format.
31
+ */
32
32
  format: string;
33
33
  /**
34
- * List of warnings from build plugins.
35
- */
34
+ * List of warnings from build plugins.
35
+ */
36
36
  logs: BuildLogs[];
37
37
  }
38
38
  interface BuildStats {
39
39
  /**
40
- * The root path of the project.
41
- */
40
+ * The root path of the project.
41
+ */
42
42
  cwd: string;
43
43
  /**
44
- * Final bundle size.
45
- */
44
+ * Final bundle size.
45
+ */
46
46
  size: number;
47
47
  /**
48
- * Total bundle build time.
49
- */
48
+ * Total bundle build time.
49
+ */
50
50
  buildTime: number;
51
51
  /**
52
- * List of generated bundle modules.
53
- */
52
+ * List of generated bundle modules.
53
+ */
54
54
  files: BuildEntryStats[];
55
55
  }
56
56
  type PickEntryChunkOptions = 'input' | 'name' | 'globals' | 'extend' | 'minify';
57
57
  type PickEntryDtsOptions = 'dts' | 'dtsPlugin';
58
58
  interface BuildEntryOptions extends EntryBase, Partial<Pick<EntryChunk, PickEntryChunkOptions>>, Partial<Pick<EntryDts, PickEntryDtsOptions>> {
59
59
  /**
60
- * Specifies the path to the processed file.
61
- *
62
- * @default undefined
63
- */
60
+ * Specifies the path to the processed file.
61
+ *
62
+ * @default undefined
63
+ */
64
64
  output?: string;
65
65
  }
66
66
  //#endregion
67
67
  //#region src/types/entries.d.ts
68
68
  interface EntryBase {
69
69
  /**
70
- * Specifies the format of the generated module.
71
- *
72
- * - `'es'`, `'esm'` and `'module'` are the same format, all stand for ES module.
73
- * - `'cjs'` and `'commonjs'` are the same format, all stand for CommonJS module.
74
- * - `'iife'` stands for [Immediately Invoked Function Expression](https://developer.mozilla.org/en-US/docs/Glossary/IIFE).
75
- * - `'umd'` stands for [Universal Module Definition](https://github.com/umdjs/umd).
76
- *
77
- * @default 'esm'
78
- */
70
+ * Specifies the format of the generated module.
71
+ *
72
+ * - `'es'`, `'esm'` and `'module'` are the same format, all stand for ES module.
73
+ * - `'cjs'` and `'commonjs'` are the same format, all stand for CommonJS module.
74
+ * - `'iife'` stands for [Immediately Invoked Function Expression](https://developer.mozilla.org/en-US/docs/Glossary/IIFE).
75
+ * - `'umd'` stands for [Universal Module Definition](https://github.com/umdjs/umd).
76
+ *
77
+ * @default 'esm'
78
+ */
79
79
  format?: OutputOptions['format'];
80
80
  /**
81
- * Specifies the module IDs or regular expressions that match module IDs to be treated as external and excluded from the bundle.
82
- *
83
- * The IDs and regular expressions provided in this option are applied globally across all entries.
84
- *
85
- * Alternatively, externals can be defined individually for each entry using the `entry.externals` property.
86
- *
87
- * @default undefined
88
- */
81
+ * Specifies the module IDs or regular expressions that match module IDs to be treated as external and excluded from the bundle.
82
+ *
83
+ * The IDs and regular expressions provided in this option are applied globally across all entries.
84
+ *
85
+ * Alternatively, externals can be defined individually for each entry using the `entry.externals` property.
86
+ *
87
+ * @default undefined
88
+ */
89
89
  externals?: (string | RegExp)[];
90
90
  /**
91
- * Maps external module IDs to paths.
92
- *
93
- * @default undefined
94
- */
91
+ * Maps external module IDs to paths.
92
+ *
93
+ * @default undefined
94
+ */
95
95
  paths?: {
96
96
  find: string | RegExp;
97
97
  replacement: string | ((path: string, match: RegExpExecArray | null) => string);
98
98
  }[];
99
99
  /**
100
- * Specifies the string to be inserted at the beginning of the module.
101
- *
102
- * @default undefined
103
- */
100
+ * Specifies the string to be inserted at the beginning of the module.
101
+ *
102
+ * @default undefined
103
+ */
104
104
  banner?: OutputOptions['banner'];
105
105
  /**
106
- * Specifies the string to be inserted at the beginning of the module after minification
107
- *
108
- * @default undefined
109
- */
106
+ * Specifies the string to be inserted at the beginning of the module after minification
107
+ *
108
+ * @default undefined
109
+ */
110
110
  postBanner?: OutputOptions['postBanner'];
111
111
  /**
112
- * Specifies the string to be inserted at the end of the module.
113
- *
114
- * @default undefined
115
- */
112
+ * Specifies the string to be inserted at the end of the module.
113
+ *
114
+ * @default undefined
115
+ */
116
116
  footer?: OutputOptions['footer'];
117
117
  /**
118
- * Specifies the string to be inserted at the end of the module after minification.
119
- *
120
- * @default undefined
121
- */
118
+ * Specifies the string to be inserted at the end of the module after minification.
119
+ *
120
+ * @default undefined
121
+ */
122
122
  postFooter?: OutputOptions['postFooter'];
123
123
  /**
124
- * Specifies the code at the beginning that goes inside any _format-specific_ wrapper.
125
- *
126
- * @default undefined
127
- */
124
+ * Specifies the code at the beginning that goes inside any _format-specific_ wrapper.
125
+ *
126
+ * @default undefined
127
+ */
128
128
  intro?: OutputOptions['intro'];
129
129
  /**
130
- * Specifies the code at the end that goes inside any _format-specific_ wrapper.
131
- *
132
- * @default undefined
133
- */
130
+ * Specifies the code at the end that goes inside any _format-specific_ wrapper.
131
+ *
132
+ * @default undefined
133
+ */
134
134
  outro?: OutputOptions['outro'];
135
135
  /**
136
- * Intercepts log messages. If not supplied, logs are printed to the console.
137
- *
138
- * @default undefined
139
- */
136
+ * Intercepts log messages. If not supplied, logs are printed to the console.
137
+ *
138
+ * @default undefined
139
+ */
140
140
  onLog?: (level: LogLevel, log: RollupLog, defaultHandler: LogOrStringHandler, buildLogs: BuildLogs[]) => void;
141
141
  /**
142
- * Specifies Rolldown `resolve` options.
143
- *
144
- * @default undefined
145
- */
142
+ * Specifies Rolldown `resolve` options.
143
+ *
144
+ * @default undefined
145
+ */
146
146
  resolve?: InputOptions['resolve'];
147
147
  /**
148
- * Specifies Rolldown `define` options.
149
- *
150
- * @default undefined
151
- */
148
+ * Specifies Rolldown `define` options.
149
+ *
150
+ * @default undefined
151
+ */
152
152
  define?: NonNullable<InputOptions['transform']>['define'];
153
153
  /**
154
- * Specifies Rolldown `inject` options.
155
- *
156
- * @default undefined
157
- */
154
+ * Specifies Rolldown `inject` options.
155
+ *
156
+ * @default undefined
157
+ */
158
158
  inject?: NonNullable<InputOptions['transform']>['inject'];
159
159
  /**
160
- * Specifies Rolldown plugins.
161
- *
162
- * @default undefined
163
- */
160
+ * Specifies Rolldown plugins.
161
+ *
162
+ * @default undefined
163
+ */
164
164
  plugins?: RolldownPluginOption;
165
165
  /**
166
- * Specifies the path to the `tsconfig` file.
167
- *
168
- * By default, if the file `tsconfig.json` exists in the project root, it will be used as the default config file.
169
- *
170
- * @default undefined
171
- */
166
+ * Specifies the path to the `tsconfig` file.
167
+ *
168
+ * By default, if the file `tsconfig.json` exists in the project root, it will be used as the default config file.
169
+ *
170
+ * @default undefined
171
+ */
172
172
  tsconfig?: InputOptions['tsconfig'];
173
173
  }
174
174
  interface EntryChunk extends EntryBase {
175
175
  /**
176
- * Specifies the path to the build source.
177
- *
178
- * @example
179
- *
180
- * ```ts
181
- * export default defineConfig({
182
- * entries: [
183
- * { input: './src/index.ts' }, // outputs './dist/index.js'
184
- * ]
185
- * })
186
- * ```
187
- */
176
+ * Specifies the path to the build source.
177
+ *
178
+ * @example
179
+ *
180
+ * ```ts
181
+ * export default defineConfig({
182
+ * entries: [
183
+ * { input: './src/index.ts' }, // outputs './dist/index.js'
184
+ * ]
185
+ * })
186
+ * ```
187
+ */
188
188
  input: string;
189
189
  /**
190
- * Specifies the path to the processed file.
191
- *
192
- * @example
193
- *
194
- * ```ts
195
- * export default defineConfig({
196
- * entries: [
197
- * {
198
- * input: './src/index.ts',
199
- * output: './out/index.js', // outputs './out/index.js'
200
- * },
201
- * ]
202
- * })
203
- * ```
204
- *
205
- * @default undefined
206
- */
190
+ * Specifies the path to the processed file.
191
+ *
192
+ * @example
193
+ *
194
+ * ```ts
195
+ * export default defineConfig({
196
+ * entries: [
197
+ * {
198
+ * input: './src/index.ts',
199
+ * output: './out/index.js', // outputs './out/index.js'
200
+ * },
201
+ * ]
202
+ * })
203
+ * ```
204
+ *
205
+ * @default undefined
206
+ */
207
207
  output?: string;
208
208
  /**
209
- * Specifies the global variable name that representing exported bundle.
210
- *
211
- * Intended for `umd/iife` formats.
212
- *
213
- * @default undefined
214
- */
209
+ * Specifies the global variable name that representing exported bundle.
210
+ *
211
+ * Intended for `umd/iife` formats.
212
+ *
213
+ * @default undefined
214
+ */
215
215
  name?: OutputOptions['name'];
216
216
  /**
217
- * Specifies global _module ID_ and _variable name_ pairs necessary for external imports.
218
- *
219
- * Intended for `umd/iife` formats.
220
- *
221
- * @default undefined
222
- */
217
+ * Specifies global _module ID_ and _variable name_ pairs necessary for external imports.
218
+ *
219
+ * Intended for `umd/iife` formats.
220
+ *
221
+ * @default undefined
222
+ */
223
223
  globals?: OutputOptions['globals'];
224
224
  /**
225
- * Specifies whether to extend the global variable defined by the `name` option.
226
- *
227
- * Intended for `umd/iife` formats.
228
- */
225
+ * Specifies whether to extend the global variable defined by the `name` option.
226
+ *
227
+ * Intended for `umd/iife` formats.
228
+ */
229
229
  extend?: OutputOptions['extend'];
230
230
  /**
231
- * Controls code minification.
232
- *
233
- * - `true`: Enable full minification including code compression and dead code elimination.
234
- * - `false`: Disable minification (default).
235
- * - `'dce-only'`: Only perform dead code elimination without code compression.
236
- * - `MinifyOptions`: Fine-grained control over minification settings.
237
- *
238
- * @default undefined
239
- */
231
+ * Controls code minification.
232
+ *
233
+ * - `true`: Enable full minification including code compression and dead code elimination.
234
+ * - `false`: Disable minification (default).
235
+ * - `'dce-only'`: Only perform dead code elimination without code compression.
236
+ * - `MinifyOptions`: Fine-grained control over minification settings.
237
+ *
238
+ * @default undefined
239
+ */
240
240
  minify?: OutputOptions['minify'];
241
241
  dts?: never;
242
242
  dtsPlugin?: never;
@@ -247,41 +247,41 @@ interface EntryChunk extends EntryBase {
247
247
  }
248
248
  interface EntryDts extends EntryBase {
249
249
  /**
250
- * Specifies the path to the TypeScript `declaration` build source.
251
- *
252
- * @example
253
- *
254
- * ```ts
255
- * export default defineConfig({
256
- * entries: [
257
- * { dts: './src/types.ts' }, // outputs './dist/types.d.ts'
258
- * ]
259
- * })
260
- * ```
261
- */
250
+ * Specifies the path to the TypeScript `declaration` build source.
251
+ *
252
+ * @example
253
+ *
254
+ * ```ts
255
+ * export default defineConfig({
256
+ * entries: [
257
+ * { dts: './src/types.ts' }, // outputs './dist/types.d.ts'
258
+ * ]
259
+ * })
260
+ * ```
261
+ */
262
262
  dts: string;
263
263
  /**
264
- * Specifies the path to the processed file.
265
- *
266
- * @example
267
- *
268
- * ```ts
269
- * export default defineConfig({
270
- * entries: [
271
- * {
272
- * dts: './src/types.ts',
273
- * output: './out/types.d.ts', // outputs './out/types.d.ts'
274
- * },
275
- * ]
276
- * })
277
- * ```
278
- *
279
- * @default undefined
280
- */
264
+ * Specifies the path to the processed file.
265
+ *
266
+ * @example
267
+ *
268
+ * ```ts
269
+ * export default defineConfig({
270
+ * entries: [
271
+ * {
272
+ * dts: './src/types.ts',
273
+ * output: './out/types.d.ts', // outputs './out/types.d.ts'
274
+ * },
275
+ * ]
276
+ * })
277
+ * ```
278
+ *
279
+ * @default undefined
280
+ */
281
281
  output?: string;
282
282
  /**
283
- * Specifies options for the `rolldown-plugin-dts` plugin.
284
- */
283
+ * Specifies options for the `rolldown-plugin-dts` plugin.
284
+ */
285
285
  dtsPlugin?: Options$1;
286
286
  input?: never;
287
287
  name?: never;
@@ -295,53 +295,53 @@ interface EntryDts extends EntryBase {
295
295
  }
296
296
  interface EntryCopy {
297
297
  /**
298
- * Copies either a single `file` or an entire `directory` structure from the source to the destination, including all subdirectories and files.
299
- *
300
- * This is especially useful for transferring assets that don't require any transformation, just a straightforward copy-paste operation.
301
- *
302
- * @example
303
- *
304
- * ```ts
305
- * export default defineConfig({
306
- * entries: [
307
- * {
308
- * // copies a single file
309
- * copy: './src/path/file.ts', // outputs './dist/path/file.ts'
310
- * },
311
- * {
312
- * // copies a single file
313
- * copy: './src/path/file.ts',
314
- * output: './dist/subdir/custom-file-name.ts',
315
- * },
316
- * {
317
- * // copies the entire directory
318
- * input: './src/path/srcdir',
319
- * output: './dist/outdir',
320
- * },
321
- * ]
322
- * })
323
- * ```
324
- *
325
- * @default undefined
326
- */
298
+ * Copies either a single `file` or an entire `directory` structure from the source to the destination, including all subdirectories and files.
299
+ *
300
+ * This is especially useful for transferring assets that don't require any transformation, just a straightforward copy-paste operation.
301
+ *
302
+ * @example
303
+ *
304
+ * ```ts
305
+ * export default defineConfig({
306
+ * entries: [
307
+ * {
308
+ * // copies a single file
309
+ * copy: './src/path/file.ts', // outputs './dist/path/file.ts'
310
+ * },
311
+ * {
312
+ * // copies a single file
313
+ * copy: './src/path/file.ts',
314
+ * output: './dist/subdir/custom-file-name.ts',
315
+ * },
316
+ * {
317
+ * // copies the entire directory
318
+ * input: './src/path/srcdir',
319
+ * output: './dist/outdir',
320
+ * },
321
+ * ]
322
+ * })
323
+ * ```
324
+ *
325
+ * @default undefined
326
+ */
327
327
  copy: string;
328
328
  /**
329
- * Specifies the path to the destination file or directory.
330
- */
329
+ * Specifies the path to the destination file or directory.
330
+ */
331
331
  output?: string;
332
332
  /**
333
- * Copy directories recursively.
334
- *
335
- * @default true
336
- */
333
+ * Copy directories recursively.
334
+ *
335
+ * @default true
336
+ */
337
337
  recursive?: boolean;
338
338
  /**
339
- * Filters copied `files/directories`.
340
- *
341
- * Returns `true` to copy the item, `false` to ignore it.
342
- *
343
- * @default undefined
344
- */
339
+ * Filters copied `files/directories`.
340
+ *
341
+ * Returns `true` to copy the item, `false` to ignore it.
342
+ *
343
+ * @default undefined
344
+ */
345
345
  filter?(source: string, destination: string): boolean;
346
346
  input?: never;
347
347
  name?: never;
@@ -354,29 +354,29 @@ interface EntryCopy {
354
354
  }
355
355
  interface EntryTemplate {
356
356
  /**
357
- * Specifies the content of the `template` file.
358
- *
359
- * Provides the ability to dynamically inject template content during the build phase.
360
- *
361
- * @example
362
- *
363
- * ```ts
364
- * import { name, version } from './package.json'
365
- *
366
- * export default defineConfig({
367
- * entries: [
368
- * {
369
- * template: `// Package ${name} v${version} ...`,
370
- * output: './dist/template.ts',
371
- * },
372
- * ]
373
- * })
374
- * ```
375
- */
357
+ * Specifies the content of the `template` file.
358
+ *
359
+ * Provides the ability to dynamically inject template content during the build phase.
360
+ *
361
+ * @example
362
+ *
363
+ * ```ts
364
+ * import { name, version } from './package.json'
365
+ *
366
+ * export default defineConfig({
367
+ * entries: [
368
+ * {
369
+ * template: `// Package ${name} v${version} ...`,
370
+ * output: './dist/template.ts',
371
+ * },
372
+ * ]
373
+ * })
374
+ * ```
375
+ */
376
376
  template: string;
377
377
  /**
378
- * Specifies the path to the destination file.
379
- */
378
+ * Specifies the path to the destination file.
379
+ */
380
380
  output: string;
381
381
  input?: never;
382
382
  name?: never;
@@ -394,249 +394,249 @@ type EntryOptions = EntryChunk | EntryDts | EntryCopy | EntryTemplate;
394
394
  //#region src/types/options.d.ts
395
395
  interface Options {
396
396
  /**
397
- * Specifies the bundle's entry points.
398
- *
399
- * It allows you to manually set all build entries and adjust options for each one individually.
400
- *
401
- * @example
402
- *
403
- * ```ts
404
- * export default defineConfig({
405
- * entries: [
406
- * { input: './src/index.ts' }, // outputs './dist/index.js'
407
- * { dts: './src/types.ts' }, // outputs './dist/types.d.ts'
408
- * // ...
409
- * ]
410
- * })
411
- * ```
412
- */
397
+ * Specifies the bundle's entry points.
398
+ *
399
+ * It allows you to manually set all build entries and adjust options for each one individually.
400
+ *
401
+ * @example
402
+ *
403
+ * ```ts
404
+ * export default defineConfig({
405
+ * entries: [
406
+ * { input: './src/index.ts' }, // outputs './dist/index.js'
407
+ * { dts: './src/types.ts' }, // outputs './dist/types.d.ts'
408
+ * // ...
409
+ * ]
410
+ * })
411
+ * ```
412
+ */
413
413
  entries: EntryOptions[];
414
414
  /**
415
- * Specifies the output directory for production bundle.
416
- *
417
- * @example
418
- *
419
- * ```ts
420
- * export default defineConfig({
421
- * outDir: './output',
422
- * })
423
- * ```
424
- *
425
- * @default 'dist'
426
- */
415
+ * Specifies the output directory for production bundle.
416
+ *
417
+ * @example
418
+ *
419
+ * ```ts
420
+ * export default defineConfig({
421
+ * outDir: './output',
422
+ * })
423
+ * ```
424
+ *
425
+ * @default 'dist'
426
+ */
427
427
  outDir?: string;
428
428
  /**
429
- * Specifies the module IDs, or regular expressions to match module IDs,
430
- * that should remain external to the bundle.
431
- *
432
- * IDs and regexps from this option are applied globally to all entries.
433
- *
434
- * Also, it is possible to define externals individually per entry (`entry.externals`).
435
- *
436
- * @example
437
- *
438
- * ```ts
439
- * export default defineConfig({
440
- * externals: ['id-1', 'id-2', /regexp/],
441
- * })
442
- * ```
443
- *
444
- * @default [/^node:/,/^@types/,/^@rollup/,/^@rolldown/,/^@hypernym/,/^rollup/,/^rolldown/,...pkg.dependencies]
445
- */
429
+ * Specifies the module IDs, or regular expressions to match module IDs,
430
+ * that should remain external to the bundle.
431
+ *
432
+ * IDs and regexps from this option are applied globally to all entries.
433
+ *
434
+ * Also, it is possible to define externals individually per entry (`entry.externals`).
435
+ *
436
+ * @example
437
+ *
438
+ * ```ts
439
+ * export default defineConfig({
440
+ * externals: ['id-1', 'id-2', /regexp/],
441
+ * })
442
+ * ```
443
+ *
444
+ * @default [/^node:/,/^@types/,/^@rollup/,/^@rolldown/,/^@hypernym/,/^rollup/,/^rolldown/,...pkg.dependencies]
445
+ */
446
446
  externals?: (string | RegExp)[];
447
447
  /**
448
- * Provides a powerful hooking system to further expand bundling mode.
449
- *
450
- * @example
451
- *
452
- * ```ts
453
- * export default defineConfig({
454
- * hooks: {
455
- * 'build:end': async (options, buildStats) => {
456
- * // ...
457
- * }
458
- * }
459
- * })
460
- * ```
461
- *
462
- * @default undefined
463
- */
448
+ * Provides a powerful hooking system to further expand bundling mode.
449
+ *
450
+ * @example
451
+ *
452
+ * ```ts
453
+ * export default defineConfig({
454
+ * hooks: {
455
+ * 'build:end': async (options, buildStats) => {
456
+ * // ...
457
+ * }
458
+ * }
459
+ * })
460
+ * ```
461
+ *
462
+ * @default undefined
463
+ */
464
464
  hooks?: HooksOptions;
465
465
  /**
466
- * Controls code minification for all `chunk` entries.
467
- *
468
- * - `true`: Enable full minification including code compression and dead code elimination.
469
- * - `false`: Disable minification (default).
470
- * - `'dce-only'`: Only perform dead code elimination without code compression.
471
- * - `MinifyOptions`: Fine-grained control over minification settings.
472
- *
473
- * @example
474
- *
475
- * ```ts
476
- * export default defineConfig({
477
- * minify: true,
478
- * })
479
- * ```
480
- *
481
- * It can also be set per entry.
482
- *
483
- * ```ts
484
- * export default defineConfig({
485
- * entries: [
486
- * {
487
- * input: './src/index.ts',
488
- * minify: true,
489
- * },
490
- * ],
491
- * })
492
- * ```
493
- *
494
- * @default undefined
495
- */
466
+ * Controls code minification for all `chunk` entries.
467
+ *
468
+ * - `true`: Enable full minification including code compression and dead code elimination.
469
+ * - `false`: Disable minification (default).
470
+ * - `'dce-only'`: Only perform dead code elimination without code compression.
471
+ * - `MinifyOptions`: Fine-grained control over minification settings.
472
+ *
473
+ * @example
474
+ *
475
+ * ```ts
476
+ * export default defineConfig({
477
+ * minify: true,
478
+ * })
479
+ * ```
480
+ *
481
+ * It can also be set per entry.
482
+ *
483
+ * ```ts
484
+ * export default defineConfig({
485
+ * entries: [
486
+ * {
487
+ * input: './src/index.ts',
488
+ * minify: true,
489
+ * },
490
+ * ],
491
+ * })
492
+ * ```
493
+ *
494
+ * @default undefined
495
+ */
496
496
  minify?: OutputOptions['minify'];
497
497
  /**
498
- * Specifies the path to the project root (current working directory).
499
- *
500
- * @example
501
- *
502
- * ```ts
503
- * export default defineConfig({
504
- * cwd: './dir',
505
- * })
506
- * ```
507
- *
508
- * @default undefined
509
- */
498
+ * Specifies the path to the project root (current working directory).
499
+ *
500
+ * @example
501
+ *
502
+ * ```ts
503
+ * export default defineConfig({
504
+ * cwd: './dir',
505
+ * })
506
+ * ```
507
+ *
508
+ * @default undefined
509
+ */
510
510
  cwd?: string;
511
511
  /**
512
- * Specifies the path to the `tsconfig` file.
513
- *
514
- * By default, if the file `tsconfig.json` exists in the project root, it will be used as the default config file.
515
- *
516
- * @example
517
- *
518
- * ```ts
519
- * export default defineConfig({
520
- * tsconfig: './path/to/tsconfig.json',
521
- * })
522
- * ```
523
- *
524
- * @default undefined
525
- */
512
+ * Specifies the path to the `tsconfig` file.
513
+ *
514
+ * By default, if the file `tsconfig.json` exists in the project root, it will be used as the default config file.
515
+ *
516
+ * @example
517
+ *
518
+ * ```ts
519
+ * export default defineConfig({
520
+ * tsconfig: './path/to/tsconfig.json',
521
+ * })
522
+ * ```
523
+ *
524
+ * @default undefined
525
+ */
526
526
  tsconfig?: string;
527
527
  }
528
528
  //#endregion
529
529
  //#region src/types/hooks.d.ts
530
530
  interface HooksOptions {
531
531
  /**
532
- * Called at the beginning of bundling.
533
- *
534
- * @example
535
- *
536
- * ```ts
537
- * export default defineConfig({
538
- * hooks: {
539
- * 'bundle:start': async (options) => {
540
- * // ...
541
- * }
542
- * }
543
- * })
544
- * ```
545
- *
546
- * @default undefined
547
- */
532
+ * Called at the beginning of bundling.
533
+ *
534
+ * @example
535
+ *
536
+ * ```ts
537
+ * export default defineConfig({
538
+ * hooks: {
539
+ * 'bundle:start': async (options) => {
540
+ * // ...
541
+ * }
542
+ * }
543
+ * })
544
+ * ```
545
+ *
546
+ * @default undefined
547
+ */
548
548
  'bundle:start'?: (options: Options) => void | Promise<void>;
549
549
  /**
550
- * Called at the beginning of building.
551
- *
552
- * @example
553
- *
554
- * ```ts
555
- * export default defineConfig({
556
- * hooks: {
557
- * 'build:start': async (options, stats) => {
558
- * // ...
559
- * }
560
- * }
561
- * })
562
- * ```
563
- *
564
- * @default undefined
565
- */
550
+ * Called at the beginning of building.
551
+ *
552
+ * @example
553
+ *
554
+ * ```ts
555
+ * export default defineConfig({
556
+ * hooks: {
557
+ * 'build:start': async (options, stats) => {
558
+ * // ...
559
+ * }
560
+ * }
561
+ * })
562
+ * ```
563
+ *
564
+ * @default undefined
565
+ */
566
566
  'build:start'?: (options: Options, stats: BuildStats) => void | Promise<void>;
567
567
  /**
568
- * Called on each entry just before the build process.
569
- *
570
- * Provides the ability to customize entry options before they are passed to the next phase.
571
- *
572
- * @example
573
- *
574
- * ```ts
575
- * export default defineConfig({
576
- * hooks: {
577
- * 'build:entry:start': async (entry, stats) => {
578
- * // ...
579
- * }
580
- * }
581
- * })
582
- * ```
583
- *
584
- * @default undefined
585
- */
568
+ * Called on each entry just before the build process.
569
+ *
570
+ * Provides the ability to customize entry options before they are passed to the next phase.
571
+ *
572
+ * @example
573
+ *
574
+ * ```ts
575
+ * export default defineConfig({
576
+ * hooks: {
577
+ * 'build:entry:start': async (entry, stats) => {
578
+ * // ...
579
+ * }
580
+ * }
581
+ * })
582
+ * ```
583
+ *
584
+ * @default undefined
585
+ */
586
586
  'build:entry:start'?: (entry: BuildEntryOptions, stats: BuildEntryStats) => void | Promise<void>;
587
587
  /**
588
- * Called on each entry right after the build process is completed.
589
- *
590
- * @example
591
- *
592
- * ```ts
593
- * export default defineConfig({
594
- * hooks: {
595
- * 'build:entry:end': async (entry, stats) => {
596
- * // ...
597
- * }
598
- * }
599
- * })
600
- * ```
601
- *
602
- * @default undefined
603
- */
588
+ * Called on each entry right after the build process is completed.
589
+ *
590
+ * @example
591
+ *
592
+ * ```ts
593
+ * export default defineConfig({
594
+ * hooks: {
595
+ * 'build:entry:end': async (entry, stats) => {
596
+ * // ...
597
+ * }
598
+ * }
599
+ * })
600
+ * ```
601
+ *
602
+ * @default undefined
603
+ */
604
604
  'build:entry:end'?: (entry: BuildEntryOptions, stats: BuildEntryStats) => void | Promise<void>;
605
605
  /**
606
- * Called right after building is complete.
607
- *
608
- * @example
609
- *
610
- * ```ts
611
- * export default defineConfig({
612
- * hooks: {
613
- * 'build:end': async (options, stats) => {
614
- * // ...
615
- * }
616
- * }
617
- * })
618
- * ```
619
- *
620
- * @default undefined
621
- */
606
+ * Called right after building is complete.
607
+ *
608
+ * @example
609
+ *
610
+ * ```ts
611
+ * export default defineConfig({
612
+ * hooks: {
613
+ * 'build:end': async (options, stats) => {
614
+ * // ...
615
+ * }
616
+ * }
617
+ * })
618
+ * ```
619
+ *
620
+ * @default undefined
621
+ */
622
622
  'build:end'?: (options: Options, stats: BuildStats) => void | Promise<void>;
623
623
  /**
624
- * Called right after bundling is complete.
625
- *
626
- * @example
627
- *
628
- * ```ts
629
- * export default defineConfig({
630
- * hooks: {
631
- * 'bundle:end': async (options) => {
632
- * // ...
633
- * }
634
- * }
635
- * })
636
- * ```
637
- *
638
- * @default undefined
639
- */
624
+ * Called right after bundling is complete.
625
+ *
626
+ * @example
627
+ *
628
+ * ```ts
629
+ * export default defineConfig({
630
+ * hooks: {
631
+ * 'bundle:end': async (options) => {
632
+ * // ...
633
+ * }
634
+ * }
635
+ * })
636
+ * ```
637
+ *
638
+ * @default undefined
639
+ */
640
640
  'bundle:end'?: (options: Options) => void | Promise<void>;
641
641
  }
642
642
  //#endregion
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hypernym/bundler",
3
- "version": "0.31.2",
3
+ "version": "0.31.3",
4
4
  "author": "Hypernym Studio",
5
5
  "description": "ESM & TS module bundler.",
6
6
  "license": "MIT",
@@ -58,16 +58,16 @@
58
58
  "@hypernym/args": "^0.3.4",
59
59
  "@hypernym/colors": "^1.0.6",
60
60
  "@hypernym/utils": "^3.4.7",
61
- "rolldown": "^1.0.0-beta.60",
62
- "rolldown-plugin-dts": "^0.21.2"
61
+ "rolldown": "^1.0.0-rc.2",
62
+ "rolldown-plugin-dts": "^0.21.9"
63
63
  },
64
64
  "devDependencies": {
65
65
  "@hypernym/eslint-config": "^3.6.7",
66
66
  "@hypernym/prettier-config": "^3.2.11",
67
67
  "@hypernym/tsconfig": "^2.6.5",
68
- "@types/node": "^24.10.9",
68
+ "@types/node": "^24.10.10",
69
69
  "eslint": "^9.39.2",
70
- "prettier": "^3.8.0",
70
+ "prettier": "^3.8.1",
71
71
  "typescript": "^5.9.3"
72
72
  },
73
73
  "scripts": {