@longzai-intelligence-bun/config 0.0.1 → 0.0.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/index.d.ts CHANGED
@@ -1,53 +1,198 @@
1
- //#region src/types.d.ts
1
+ //#region src/types/bun.types.d.ts
2
2
  /**
3
- * bun test 工具配置类型
3
+ * bun test 工具配置类型定义
4
4
  *
5
- * 定义 lzi-bun-cli 的 test 命令在 lzi-dev.config.ts 中的配置结构。
6
- * 字段命名对齐 vitest 的 test.* 配置项,便于心智一致与将来可移植。
5
+ * 扩展 bun:test 原生配置语义,提供项目特定的便捷配置层。
6
+ *
7
+ * 设计对齐 longzai-intelligence-vitest 的类型分层:
8
+ * - 原生字段收进 {@link BunTestConfig}(命名对齐 bun:test 原生 `[test]` 段)
9
+ * - 便捷字段平铺在 {@link BunProjectSpecificOptions}(对齐 vitest ProjectSpecificOptions)
10
+ * - 默认值合并发生在 {@link createBaseBunConfig},而非 defineConfig 工厂层
11
+ *
12
+ * 字段命名差异说明(bun vs vitest,生成的 bunfig.toml 必须合法):
13
+ * - bun 用 `coveragePathIgnorePatterns`(vitest 用 `coverage.exclude`)
14
+ * - bun 用 `coverageThreshold`(vitest 用 `coverage.thresholds`)
15
+ * - bun 的 `coverageThreshold` 不支持 `branches`(vitest 支持)
7
16
  */
8
17
  /**
9
- * bun test 命令配置
18
+ * 覆盖率阈值配置
10
19
  *
11
- * 字段命名对齐 vitest test.* 配置项:
20
+ * buncoverageThreshold 仅支持 lines/functions/statements 三维,
21
+ * 不支持 branches(coverage.md 已确认)。
12
22
  *
13
- * - passWithNoTests vitest test.passWithNoTests
14
- * - include ← vitest test.include
23
+ * 数值范围 0-1(bun 原生语义,如 0.8 表示 80%)。
24
+ */
25
+ type CoverageThreshold = {
26
+ /**
27
+ * 行覆盖率阈值(0-1)
28
+ */
29
+ lines?: number;
30
+ /**
31
+ * 函数覆盖率阈值(0-1)
32
+ */
33
+ functions?: number;
34
+ /**
35
+ * 语句覆盖率阈值(0-1)
36
+ */
37
+ statements?: number;
38
+ };
39
+ /**
40
+ * bun:test 原生测试配置
41
+ *
42
+ * 字段命名与 bunfig.toml `[test]` 段完全对齐,序列化后即为合法 TOML。
43
+ * 参考:https://bun.sh/docs/runtime/bunfig
15
44
  */
16
45
  type BunTestConfig = {
17
46
  /**
18
- * 零测试文件时是否放行 exit 0
47
+ * 预加载脚本,对应 bunfig.toml `preload`
19
48
  *
20
- * 对齐 vitest test.passWithNoTests。
49
+ * 仅在 `bun test` 前执行,用于注入全局 mock、polyfill 等。
50
+ */
51
+ preload?: string[];
52
+ /**
53
+ * 是否启用覆盖率报告,对应 bunfig.toml `coverage`
21
54
  *
22
- * 适配 type-only / facade 包(仅 re-export barrel、无测试源码):
23
- * 这类包在 turbo test 扇出中必须能干净通过,而非因「没有测试」失败。
55
+ * @default false
56
+ */
57
+ coverage?: boolean;
58
+ /**
59
+ * 覆盖率阈值,对应 bunfig.toml `coverageThreshold`
24
60
  *
25
- * - true(默认):放行,打印跳过提示后 exit 0
26
- * - false:报错 exit 1,用于强制要求测试的严格包
61
+ * 支持单数值(应用于三维)或对象(分别设置)。
62
+ * 设置任何阈值都会启用 fail_on_low_coverage 门控。
63
+ */
64
+ coverageThreshold?: number | CoverageThreshold;
65
+ /**
66
+ * 是否排除测试文件,对应 bunfig.toml `coverageSkipTestFiles`
67
+ *
68
+ * @default false
69
+ */
70
+ coverageSkipTestFiles?: boolean;
71
+ /**
72
+ * 覆盖率忽略路径模式,对应 bunfig.toml `coveragePathIgnorePatterns`
73
+ *
74
+ * 豁免策略的核心字段。支持单模式或模式数组。
75
+ */
76
+ coveragePathIgnorePatterns?: string | string[];
77
+ /**
78
+ * 覆盖率报告器类型,对应 bunfig.toml `coverageReporter`
79
+ *
80
+ * @default ['text']
81
+ */
82
+ coverageReporter?: string[];
83
+ /**
84
+ * 覆盖率报告输出目录,对应 bunfig.toml `coverageDir`
27
85
  *
28
- * 默认值在命令实现内用 `?? true` 处理
29
- * (与 dev-tools defineConfig identity 工厂模式一致,不在工厂层合并默认值)
86
+ * 仅对持久化报告器(如 lcov)生效。
87
+ *
88
+ * @default 'coverage'
89
+ */
90
+ coverageDir?: string;
91
+ /**
92
+ * 是否忽略 sourcemap 回溯,对应 bunfig.toml `coverageIgnoreSourcemaps`
93
+ *
94
+ * @default false
95
+ */
96
+ coverageIgnoreSourcemaps?: boolean;
97
+ /**
98
+ * 测试超时时间(毫秒),对应 bunfig.toml `timeout`
99
+ */
100
+ timeout?: number;
101
+ /**
102
+ * 零测试文件时是否放行 exit 0
103
+ *
104
+ * 对齐 vitest 的 passWithNoTests。
105
+ * 适配 type-only / facade 包:这类包在 turbo test 扇出中必须能干净通过。
106
+ *
107
+ * - true(默认):放行,打印跳过提示后 exit 0
108
+ * - false:报错 exit 1
30
109
  *
31
110
  * @default true
32
111
  */
33
112
  passWithNoTests?: boolean;
34
113
  /**
35
- * 测试文件 glob 列表(相对 cwd),用于零测试预检
114
+ * 测试文件匹配模式,对应 bunfig.toml `pathIgnorePatterns` 的反向
36
115
  *
37
- * 对齐 vitest test.include。
116
+ * 这里仅作为「零测试预检」的 glob 来源,不影响 bun test 实际扫描范围。
117
+ */
118
+ include?: string[];
119
+ };
120
+ /**
121
+ * 项目特定的便捷配置选项
122
+ *
123
+ * 这些字段不是 bun 原生,而是 lzi-bun-cli 封装层提供的快捷键,
124
+ * 由 {@link createBaseBunConfig} 映射为对应的 bun 原生字段。
125
+ *
126
+ * 设计对齐 vitest ProjectSpecificOptions:便捷字段平铺顶层,
127
+ * 与原生 test 字段分层,心智清晰。
128
+ */
129
+ type BunProjectSpecificOptions = {
130
+ /**
131
+ * 是否启用覆盖率配置注入,默认 true
38
132
  *
39
- * 命令在调用 bun test 前,先用这些 glob 扫描 cwd 下的测试文件,
40
- * 命中 0 个时按 {@link passWithNoTests} 决策放行或失败。
133
+ * 设为 false 时,即使运行 `lzi-bun-cli test --coverage`,
134
+ * 也不会生成覆盖率相关的 bunfig.toml 段。
41
135
  *
42
- * 默认值(命令实现内处理):src 下与 tests 目录下的点 test.ts / test.tsx 文件
136
+ * @default true
43
137
  */
44
- include?: string[];
138
+ enableCoverage?: boolean;
139
+ /**
140
+ * 覆盖率阈值便捷配置
141
+ *
142
+ * 会被映射到 `test.coverageThreshold`。
143
+ * 用户显式传入的 `test.coverageThreshold` 优先级更高(三层合并最后赢)。
144
+ */
145
+ coverageThresholds?: CoverageThreshold;
146
+ /**
147
+ * 额外的覆盖率忽略路径模式
148
+ *
149
+ * 会被追加到 preset 默认的 `coveragePathIgnorePatterns` 之后。
150
+ * 用于声明端专属豁免(如 migrations 目录)而不覆盖 preset 基座。
151
+ */
152
+ extraCoverageIgnorePatterns?: string[];
153
+ /**
154
+ * 额外的测试文件排除模式(pathIgnorePatterns,非覆盖率)
155
+ *
156
+ * 会被映射到 bun test 的 pathIgnorePatterns。预留位,当前 CLI 未物化。
157
+ */
158
+ extraIgnorePatterns?: string[];
159
+ };
160
+ /**
161
+ * bun 工具配置选项
162
+ *
163
+ * 结合 bun:test 原生配置和项目便捷选项。
164
+ * 用户可以使用 bun 的所有原生配置,同时享受项目约定的默认值。
165
+ */
166
+ type BunConfigOptions = BunProjectSpecificOptions & {
167
+ /**
168
+ * bun:test 原生测试配置,会与默认配置合并
169
+ *
170
+ * 用户在此传入的原生字段优先级最高(最后赢)。
171
+ */
172
+ test?: BunTestConfig;
173
+ };
174
+ /**
175
+ * bun 配置物化结果
176
+ *
177
+ * {@link createBaseBunConfig} 返回的完整合并对象。
178
+ * 序列化后即为合法的 bunfig.toml `[test]` 段内容。
179
+ *
180
+ * 与 {@link BunConfigOptions} 的区别:此处所有字段已合并到最终值,
181
+ * 无 undefined;是「待序列化」的中间态。
182
+ */
183
+ type BunConfigResult = {
184
+ /**
185
+ * 完整合并后的 bun:test 测试配置
186
+ */
187
+ test: BunTestConfig;
45
188
  };
46
189
  /**
47
190
  * lzi-bun-cli 配置
48
191
  *
49
192
  * 定义 lzi-bun.config.ts 配置文件的顶层结构。
50
- * 仅含 lzi-bun-cli 专属域;dev-cli 的发布等配置见 lzi-dev.config.ts。
193
+ *
194
+ * 注意:此类型与 {@link BunConfigResult} 兼容(即 preset 工厂返回的对象可直接作为此类型使用),
195
+ * 因为 {@link BunConfigResult} 是 `{ test: BunTestConfig }` 的超集结构。
51
196
  */
52
197
  type LziBunConfig = {
53
198
  /**
@@ -56,14 +201,469 @@ type LziBunConfig = {
56
201
  test?: BunTestConfig;
57
202
  };
58
203
  //#endregion
204
+ //#region src/core/defaults.constants.d.ts
205
+ /**
206
+ * 默认配置常量
207
+ *
208
+ * 提供 createBaseBunConfig 合并时使用的默认值。
209
+ * 这些常量不直接对外消费,preset 工厂会在其上叠加层级专属阈值与豁免。
210
+ */
211
+ /**
212
+ * 默认的覆盖率忽略路径模式
213
+ *
214
+ * 通用基座:所有 preset 都隐含包含这些模式。
215
+ * 由 createBaseBunConfig 在合并时作为最底层(preset 和用户可覆盖/追加)。
216
+ */
217
+ declare const DEFAULT_COVERAGE_IGNORE_PATTERNS: string[];
218
+ /**
219
+ * 默认的覆盖率报告器
220
+ *
221
+ * text:终端输出,便于本地查看
222
+ * lcov:生成 coverage/lcov.info,可集成 VS Code 覆盖率插件或 CI
223
+ */
224
+ declare const DEFAULT_COVERAGE_REPORTERS: string[];
225
+ /**
226
+ * 默认的覆盖率报告输出目录
227
+ */
228
+ declare const DEFAULT_COVERAGE_DIR = "coverage";
229
+ /**
230
+ * 默认的测试文件匹配模式
231
+ *
232
+ * 用于「零测试预检」的 glob 来源(不影响 bun test 实际扫描范围)。
233
+ */
234
+ declare const DEFAULT_INCLUDE_PATTERNS: string[];
235
+ //#endregion
236
+ //#region src/exemptions/domain/minimal-exemption.patterns.d.ts
237
+ /**
238
+ * 领域层最小豁免模式
239
+ *
240
+ * 适用于核心业务逻辑包(推荐)。仅排除不适合纳入覆盖率统计的代码:
241
+ * 基础设施层细粒度、端口适配器、错误定义、类型与导出。
242
+ *
243
+ * 内容来源:coverage.md「最小豁免(推荐)」全集。
244
+ */
245
+ /**
246
+ * 领域层最小豁免模式覆盖率忽略路径列表
247
+ *
248
+ * 每条 pattern 对应 bunfig.toml coveragePathIgnorePatterns 的一项。
249
+ */
250
+ declare const DOMAIN_MINIMAL_EXEMPTION_PATTERNS: string[];
251
+ //#endregion
252
+ //#region src/exemptions/domain/moderate-exemption.patterns.d.ts
253
+ /**
254
+ * 领域层中等豁免模式
255
+ *
256
+ * 在最小豁免基础上,整体排除基础设施层与应用层映射器/DTO。
257
+ * 适用于业务逻辑较简单、或尚在补充测试的包。
258
+ *
259
+ * 内容来源:coverage.md「中等豁免」全集。
260
+ */
261
+ /**
262
+ * 领域层中等豁免模式覆盖率忽略路径列表
263
+ *
264
+ * minimal 的真超集:minimal ⊂ moderate(由 exemptions.test.ts 锁定)。
265
+ */
266
+ declare const DOMAIN_MODERATE_EXEMPTION_PATTERNS: string[];
267
+ //#endregion
268
+ //#region src/exemptions/server/minimal-exemption.patterns.d.ts
269
+ /**
270
+ * apps/server 最小豁免模式
271
+ *
272
+ * NestJS 应用最小豁免:仅排除框架配置文件 + 通用类型/导出。
273
+ * 端专属豁免详见 platform-exemptions.md。
274
+ *
275
+ * 注意:node_modules / dist / out 由 DEFAULT_COVERAGE_IGNORE_PATTERNS 基座统一提供,此处不重复。
276
+ */
277
+ /**
278
+ * apps/server 最小豁免模式覆盖率忽略路径列表
279
+ */
280
+ declare const SERVER_MINIMAL_EXEMPTION_PATTERNS: string[];
281
+ //#endregion
282
+ //#region src/exemptions/server/moderate-exemption.patterns.d.ts
283
+ /**
284
+ * apps/server 中等豁免模式
285
+ *
286
+ * 在最小豁免基础上,排除 NestJS 全部框架中间件 + 基础设施层 + 数据库迁移。
287
+ * 内容来源:coverage.md「apps/server(中等豁免)」全集。
288
+ *
289
+ * 注意:node_modules / dist / out 由 DEFAULT_COVERAGE_IGNORE_PATTERNS 基座统一提供,此处不重复。
290
+ */
291
+ /**
292
+ * apps/server 中等豁免模式覆盖率忽略路径列表
293
+ *
294
+ * SERVER_MINIMAL_EXEMPTION_PATTERNS 的真超集(由 exemptions.test.ts 锁定)。
295
+ */
296
+ declare const SERVER_MODERATE_EXEMPTION_PATTERNS: string[];
297
+ //#endregion
298
+ //#region src/exemptions/web/minimal-exemption.patterns.d.ts
299
+ /**
300
+ * apps/web / apps/desktop 最小豁免模式
301
+ *
302
+ * UI 应用最小豁免:仅排除通用类型/导出。
303
+ *
304
+ * 注意:node_modules / dist / out 由 DEFAULT_COVERAGE_IGNORE_PATTERNS 基座统一提供,此处不重复。
305
+ */
306
+ /**
307
+ * apps/web / apps/desktop 最小豁免模式覆盖率忽略路径列表
308
+ */
309
+ declare const WEB_MINIMAL_EXEMPTION_PATTERNS: string[];
310
+ //#endregion
311
+ //#region src/exemptions/web/moderate-exemption.patterns.d.ts
312
+ /**
313
+ * apps/web / apps/desktop 中等豁免模式
314
+ *
315
+ * 排除 UI 层(app/components/hooks/providers/i18n/types)+ 样式 + 类型声明。
316
+ * 内容来源:coverage.md「apps/web / apps/desktop(中等豁免)」全集。
317
+ *
318
+ * 注意:node_modules / dist / out 由 DEFAULT_COVERAGE_IGNORE_PATTERNS 基座统一提供,此处不重复。
319
+ */
320
+ /**
321
+ * apps/web / apps/desktop 中等豁免模式覆盖率忽略路径列表
322
+ *
323
+ * WEB_MINIMAL_EXEMPTION_PATTERNS 的真超集(由 exemptions.test.ts 锁定)。
324
+ */
325
+ declare const WEB_MODERATE_EXEMPTION_PATTERNS: string[];
326
+ //#endregion
327
+ //#region src/thresholds/index.d.ts
328
+ /**
329
+ * Domain 层覆盖率阈值
330
+ *
331
+ * 核心业务逻辑层(DDD domain 层),要求最高覆盖率。
332
+ * 对应 coverage.md「DDD 分层 - domain 层 >= 90%」。
333
+ */
334
+ declare const DOMAIN_COVERAGE_THRESHOLDS: CoverageThreshold;
335
+ /**
336
+ * Implementation 层覆盖率阈值
337
+ *
338
+ * domains 下的 implementation 包(domains/{name}/implementation),DDD 分层中 application 层标准。
339
+ * 对应 coverage.md「domains 下 implementation 包 >= 80%」。
340
+ */
341
+ declare const IMPLEMENTATION_COVERAGE_THRESHOLDS: CoverageThreshold;
342
+ /**
343
+ * packages/core 覆盖率阈值
344
+ *
345
+ * 核心工具库,要求较高覆盖率。
346
+ * 对应 coverage.md「packages/core >= 85%」。
347
+ */
348
+ declare const PACKAGE_CORE_COVERAGE_THRESHOLDS: CoverageThreshold;
349
+ /**
350
+ * packages/shared 覆盖率阈值
351
+ *
352
+ * 共享工具库。
353
+ * 对应 coverage.md「packages/shared >= 80%」。
354
+ */
355
+ declare const PACKAGE_SHARED_COVERAGE_THRESHOLDS: CoverageThreshold;
356
+ /**
357
+ * packages/sdk 覆盖率阈值
358
+ *
359
+ * SDK 包。
360
+ * 对应 coverage.md「packages/sdk >= 80%」。
361
+ */
362
+ declare const PACKAGE_SDK_COVERAGE_THRESHOLDS: CoverageThreshold;
363
+ /**
364
+ * apps/server 覆盖率阈值
365
+ *
366
+ * 服务端应用(NestJS),DDD 分层中 infrastructure 层标准。
367
+ * 对应 coverage.md「apps/server >= 70%」。
368
+ */
369
+ declare const SERVER_COVERAGE_THRESHOLDS: CoverageThreshold;
370
+ /**
371
+ * apps/web 覆盖率阈值
372
+ *
373
+ * Web 前端应用。
374
+ * 对应 coverage.md「apps/web >= 60%」。
375
+ */
376
+ declare const WEB_COVERAGE_THRESHOLDS: CoverageThreshold;
377
+ /**
378
+ * apps/desktop 覆盖率阈值
379
+ *
380
+ * 桌面端应用(Electron)。
381
+ * 对应 coverage.md「apps/desktop >= 60%」。
382
+ */
383
+ declare const DESKTOP_COVERAGE_THRESHOLDS: CoverageThreshold;
384
+ /**
385
+ * apps/cli 覆盖率阈值
386
+ *
387
+ * CLI 工具应用。
388
+ * 对应 coverage.md「apps/cli >= 70%」。
389
+ */
390
+ declare const CLI_COVERAGE_THRESHOLDS: CoverageThreshold;
391
+ /**
392
+ * 纯类型定义包覆盖率阈值
393
+ *
394
+ * contract / main 包,无可执行代码,不参与覆盖率门控。
395
+ * preset 中会据此跳过 coverage 配置生成。
396
+ */
397
+ declare const TYPE_ONLY_COVERAGE_THRESHOLDS: CoverageThreshold;
398
+ //#endregion
399
+ //#region src/config/base.config.d.ts
400
+ /**
401
+ * 创建基础 bun 配置
402
+ *
403
+ * 生成一个标准的 bun 配置对象(含完整 `[test]` 段合并结果)。
404
+ * 支持传入完整 bun 原生配置与项目便捷字段,工厂进行三层合并。
405
+ *
406
+ * @example
407
+ * ```typescript
408
+ * import { createBaseBunConfig } from '@longzai-intelligence-bun/config';
409
+ *
410
+ * const config = createBaseBunConfig({
411
+ * coverageThresholds: { lines: 0.8, functions: 0.8 },
412
+ * extraCoverageIgnorePatterns: ['generated 目录'],
413
+ * });
414
+ * ```;
415
+ *
416
+ * @param options - 配置选项,支持 bun 原生配置和项目便捷选项
417
+ * @returns BunConfigResult 配置对象
418
+ */
419
+ declare function createBaseBunConfig(options?: BunConfigOptions): BunConfigResult;
420
+ /**
421
+ * 定义 bun 配置
422
+ *
423
+ * createBaseBunConfig 的语法糖,提供更语义化的配置方式。
424
+ * 与 vitest defineVitestConfig 一致:identity 转发。
425
+ *
426
+ * @example
427
+ * ```typescript
428
+ * import { defineBunConfig } from '@longzai-intelligence-bun/config';
429
+ *
430
+ * export default defineBunConfig({
431
+ * coverageThresholds: { lines: 0.8 },
432
+ * });
433
+ * ```;
434
+ *
435
+ * @param options - 配置选项,同 createBaseBunConfig
436
+ * @returns BunConfigResult 配置对象
437
+ */
438
+ declare function defineBunConfig(options?: BunConfigOptions): BunConfigResult;
439
+ //#endregion
440
+ //#region src/presets/domain.config.d.ts
441
+ /**
442
+ * 创建领域层 bun 配置
443
+ *
444
+ * @example
445
+ * ```typescript
446
+ * import { createDomainBunConfig } from '@longzai-intelligence-bun/config';
447
+ *
448
+ * export default createDomainBunConfig({
449
+ * extraCoverageIgnorePatterns: ['generated 目录'],
450
+ * });
451
+ * ```;
452
+ *
453
+ * @param options - 配置选项,同 createBaseBunConfig
454
+ * @returns bun 配置对象
455
+ */
456
+ declare function createDomainBunConfig(options?: BunConfigOptions): BunConfigResult;
457
+ /**
458
+ * 定义领域层 bun 配置
459
+ *
460
+ * createDomainBunConfig 的语法糖(identity 转发),对齐 vitest define* 风格。
461
+ *
462
+ * @example
463
+ * ```typescript
464
+ * import { defineDomainBunConfig } from '@longzai-intelligence-bun/config';
465
+ *
466
+ * export default defineDomainBunConfig();
467
+ * ```;
468
+ *
469
+ * @param options - 配置选项,同 createDomainBunConfig(默认 {})
470
+ * @returns bun 配置对象(BunConfigResult)
471
+ */
472
+ declare function defineDomainBunConfig(options?: BunConfigOptions): BunConfigResult;
473
+ //#endregion
474
+ //#region src/presets/implementation.config.d.ts
475
+ /**
476
+ * 创建 implementation 层 bun 配置
477
+ *
478
+ * @example
479
+ * ```typescript
480
+ * import { createImplementationBunConfig } from '@longzai-intelligence-bun/config';
481
+ *
482
+ * export default createImplementationBunConfig();
483
+ * ```;
484
+ *
485
+ * @param options - 配置选项,同 createBaseBunConfig
486
+ * @returns bun 配置对象
487
+ */
488
+ declare function createImplementationBunConfig(options?: BunConfigOptions): BunConfigResult;
489
+ /**
490
+ * 定义 implementation 层 bun 配置
491
+ *
492
+ * createImplementationBunConfig 的语法糖。
493
+ *
494
+ * @param options - 配置选项,同 createImplementationBunConfig
495
+ * @returns bun 配置对象
496
+ */
497
+ declare function defineImplementationBunConfig(options?: BunConfigOptions): BunConfigResult;
498
+ //#endregion
499
+ //#region src/presets/package.config.d.ts
500
+ /**
501
+ * 创建 packages/core bun 配置
502
+ *
503
+ * @example
504
+ * ```typescript
505
+ * import { createPackageCoreBunConfig } from '@longzai-intelligence-bun/config';
506
+ *
507
+ * export default createPackageCoreBunConfig();
508
+ * ```;
509
+ *
510
+ * @param options - 配置选项,同 createBaseBunConfig
511
+ * @returns bun 配置对象
512
+ */
513
+ declare function createPackageCoreBunConfig(options?: BunConfigOptions): BunConfigResult;
514
+ /**
515
+ * 定义 packages/core bun 配置
516
+ *
517
+ * createPackageCoreBunConfig 的语法糖。
518
+ *
519
+ * @param options - 配置选项,同 createPackageCoreBunConfig(默认 {})
520
+ * @returns bun 配置对象(BunConfigResult)
521
+ */
522
+ declare function definePackageCoreBunConfig(options?: BunConfigOptions): BunConfigResult;
523
+ /**
524
+ * 创建 packages/shared bun 配置
525
+ *
526
+ * @param options - 配置选项,同 createBaseBunConfig
527
+ * @returns bun 配置对象
528
+ */
529
+ declare function createPackageSharedBunConfig(options?: BunConfigOptions): BunConfigResult;
530
+ /**
531
+ * 定义 packages/shared bun 配置
532
+ *
533
+ * createPackageSharedBunConfig 的语法糖。
534
+ *
535
+ * @param options - 配置选项,同 createPackageSharedBunConfig(默认 {})
536
+ * @returns bun 配置对象(BunConfigResult)
537
+ */
538
+ declare function definePackageSharedBunConfig(options?: BunConfigOptions): BunConfigResult;
539
+ /**
540
+ * 创建 packages/sdk bun 配置
541
+ *
542
+ * @param options - 配置选项,同 createBaseBunConfig
543
+ * @returns bun 配置对象
544
+ */
545
+ declare function createPackageSdkBunConfig(options?: BunConfigOptions): BunConfigResult;
546
+ /**
547
+ * 定义 packages/sdk bun 配置
548
+ *
549
+ * createPackageSdkBunConfig 的语法糖。
550
+ *
551
+ * @param options - 配置选项,同 createPackageSdkBunConfig(默认 {})
552
+ * @returns bun 配置对象(BunConfigResult)
553
+ */
554
+ declare function definePackageSdkBunConfig(options?: BunConfigOptions): BunConfigResult;
555
+ //#endregion
556
+ //#region src/presets/app.config.d.ts
557
+ /**
558
+ * 创建 apps/server(NestJS)bun 配置
559
+ *
560
+ * @example
561
+ * ```typescript
562
+ * import { createServerBunConfig } from '@longzai-intelligence-bun/config';
563
+ *
564
+ * export default createServerBunConfig({
565
+ * test: { timeout: 15000 },
566
+ * });
567
+ * ```;
568
+ *
569
+ * @param options - 配置选项,同 createBaseBunConfig
570
+ * @returns bun 配置对象
571
+ */
572
+ declare function createServerBunConfig(options?: BunConfigOptions): BunConfigResult;
573
+ /**
574
+ * 定义 apps/server bun 配置
575
+ *
576
+ * createServerBunConfig 的语法糖。
577
+ *
578
+ * @param options - 配置选项,同 createServerBunConfig(默认 {})
579
+ * @returns bun 配置对象(BunConfigResult)
580
+ */
581
+ declare function defineServerBunConfig(options?: BunConfigOptions): BunConfigResult;
582
+ /**
583
+ * 创建 apps/web bun 配置
584
+ *
585
+ * @param options - 配置选项,同 createBaseBunConfig
586
+ * @returns bun 配置对象
587
+ */
588
+ declare function createWebBunConfig(options?: BunConfigOptions): BunConfigResult;
589
+ /**
590
+ * 定义 apps/web bun 配置
591
+ *
592
+ * createWebBunConfig 的语法糖。
593
+ *
594
+ * @param options - 配置选项,同 createWebBunConfig(默认 {})
595
+ * @returns bun 配置对象(BunConfigResult)
596
+ */
597
+ declare function defineWebBunConfig(options?: BunConfigOptions): BunConfigResult;
598
+ /**
599
+ * 创建 apps/desktop(Electron)bun 配置
600
+ *
601
+ * @param options - 配置选项,同 createBaseBunConfig
602
+ * @returns bun 配置对象
603
+ */
604
+ declare function createDesktopBunConfig(options?: BunConfigOptions): BunConfigResult;
605
+ /**
606
+ * 定义 apps/desktop bun 配置
607
+ *
608
+ * createDesktopBunConfig 的语法糖。
609
+ *
610
+ * @param options - 配置选项,同 createDesktopBunConfig(默认 {})
611
+ * @returns bun 配置对象(BunConfigResult)
612
+ */
613
+ declare function defineDesktopBunConfig(options?: BunConfigOptions): BunConfigResult;
614
+ /**
615
+ * 创建 apps/cli bun 配置
616
+ *
617
+ * @param options - 配置选项,同 createBaseBunConfig
618
+ * @returns bun 配置对象
619
+ */
620
+ declare function createCliBunConfig(options?: BunConfigOptions): BunConfigResult;
621
+ /**
622
+ * 定义 apps/cli bun 配置
623
+ *
624
+ * createCliBunConfig 的语法糖。
625
+ *
626
+ * @param options - 配置选项,同 createCliBunConfig(默认 {})
627
+ * @returns bun 配置对象(BunConfigResult)
628
+ */
629
+ declare function defineCliBunConfig(options?: BunConfigOptions): BunConfigResult;
630
+ //#endregion
631
+ //#region src/presets/type-only.config.d.ts
632
+ /**
633
+ * 创建纯类型包 bun 配置
634
+ *
635
+ * @example
636
+ * ```typescript
637
+ * import { createTypeOnlyBunConfig } from '@longzai-intelligence-bun/config';
638
+ *
639
+ * export default createTypeOnlyBunConfig();
640
+ * ```;
641
+ *
642
+ * @param options - 配置选项(enableCoverage 将被强制覆盖为 false)
643
+ * @returns bun 配置对象(无 coverage 段)
644
+ */
645
+ declare function createTypeOnlyBunConfig(options?: BunConfigOptions): BunConfigResult;
646
+ /**
647
+ * 定义纯类型包 bun 配置
648
+ *
649
+ * createTypeOnlyBunConfig 的语法糖。
650
+ *
651
+ * @param options - 配置选项(enableCoverage 将被强制覆盖为 false,默认 {})
652
+ * @returns bun 配置对象(BunConfigResult,无 coverage 段)
653
+ */
654
+ declare function defineTypeOnlyBunConfig(options?: BunConfigOptions): BunConfigResult;
655
+ //#endregion
59
656
  //#region src/index.d.ts
60
657
  /**
61
- * 定义 lzi-bun-cli 配置
658
+ * 定义 lzi-bun-cli 配置(向后兼容的 identity 工厂)
62
659
  *
63
660
  * 提供类型推导,用户无需手动 satisfies。
64
661
  *
65
662
  * 与 dev-tools 的 defineConfig 一致:identity 工厂,仅做类型推导,
66
- * 不在工厂层合并默认值——默认值由各命令实现内用 `?? fallback` 处理。
663
+ * 不在工厂层合并默认值——默认值由 createBaseBunConfig / preset 工厂处理。
664
+ *
665
+ * 当使用 preset 工厂(如 defineDomainBunConfig)时,无需再包一层 defineConfig;
666
+ * 此工厂保留给仅需 passWithNoTests 等基础字段的场景。
67
667
  *
68
668
  * @example
69
669
  * ```typescript
@@ -71,7 +671,7 @@ type LziBunConfig = {
71
671
  *
72
672
  * export default defineConfig({
73
673
  * test: {
74
- * passWithNoTests: false,
674
+ * passWithNoTests: true,
75
675
  * },
76
676
  * });
77
677
  * ```;
@@ -81,4 +681,4 @@ type LziBunConfig = {
81
681
  */
82
682
  declare const defineConfig: (config: LziBunConfig) => LziBunConfig;
83
683
  //#endregion
84
- export { type BunTestConfig, type LziBunConfig, defineConfig };
684
+ export { type BunConfigOptions, type BunConfigResult, type BunProjectSpecificOptions, type BunTestConfig, CLI_COVERAGE_THRESHOLDS, SERVER_MINIMAL_EXEMPTION_PATTERNS as CLI_MINIMAL_EXEMPTION_PATTERNS, SERVER_MINIMAL_EXEMPTION_PATTERNS, SERVER_MODERATE_EXEMPTION_PATTERNS as CLI_MODERATE_EXEMPTION_PATTERNS, SERVER_MODERATE_EXEMPTION_PATTERNS, type CoverageThreshold, DEFAULT_COVERAGE_DIR, DEFAULT_COVERAGE_IGNORE_PATTERNS, DEFAULT_COVERAGE_REPORTERS, DEFAULT_INCLUDE_PATTERNS, DESKTOP_COVERAGE_THRESHOLDS, WEB_MINIMAL_EXEMPTION_PATTERNS as DESKTOP_MINIMAL_EXEMPTION_PATTERNS, WEB_MINIMAL_EXEMPTION_PATTERNS, WEB_MODERATE_EXEMPTION_PATTERNS as DESKTOP_MODERATE_EXEMPTION_PATTERNS, WEB_MODERATE_EXEMPTION_PATTERNS, DOMAIN_COVERAGE_THRESHOLDS, DOMAIN_MINIMAL_EXEMPTION_PATTERNS, DOMAIN_MODERATE_EXEMPTION_PATTERNS, IMPLEMENTATION_COVERAGE_THRESHOLDS, type LziBunConfig, PACKAGE_CORE_COVERAGE_THRESHOLDS, PACKAGE_SDK_COVERAGE_THRESHOLDS, PACKAGE_SHARED_COVERAGE_THRESHOLDS, SERVER_COVERAGE_THRESHOLDS, TYPE_ONLY_COVERAGE_THRESHOLDS, WEB_COVERAGE_THRESHOLDS, createBaseBunConfig, createCliBunConfig, createDesktopBunConfig, createDomainBunConfig, createImplementationBunConfig, createPackageCoreBunConfig, createPackageSdkBunConfig, createPackageSharedBunConfig, createServerBunConfig, createTypeOnlyBunConfig, createWebBunConfig, defineBunConfig, defineCliBunConfig, defineConfig, defineDesktopBunConfig, defineDomainBunConfig, defineImplementationBunConfig, definePackageCoreBunConfig, definePackageSdkBunConfig, definePackageSharedBunConfig, defineServerBunConfig, defineTypeOnlyBunConfig, defineWebBunConfig };
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- const e=e=>e;export{e as defineConfig};
1
+ const e=[`**/node_modules/**`,`**/dist/**`,`**/out/**`],t=[`text`,`lcov`],n=`coverage`,r=[`src/**/*.test.ts`,`src/**/*.test.tsx`,`__tests__/**/*.test.ts`],i=[`**/infrastructure/entities/**`,`**/infrastructure/repositories/**`,`**/infrastructure/mappers/**`,`**/infrastructure/schemas/**`,`**/infrastructure/adapters/**`,`**/typeorm.ts`,`**/application/tokens.ts`,`**/application/index.ts`,`**/domain/index.ts`,`**/domain/entities/index.ts`,`**/domain/repositories/**`,`**/domain/types/**`,`**/domain/schemas/**`,`**/domain/events/**`,`**/domain/errors/**`,`src/index.ts`],a=[`**/infrastructure/**`,`**/typeorm.ts`,`**/application/tokens.ts`,`**/application/index.ts`,`**/application/port-adapters/**`,`**/application/mappers/**`,`**/application/dtos/**`,`**/domain/index.ts`,`**/domain/entities/index.ts`,`**/domain/repositories/**`,`**/domain/types/**`,`**/domain/events/**`,`**/domain/errors/**`,`src/index.ts`],o=[`**/*.module.ts`,`**/index.ts`,`src/index.ts`],s=[`**/*.module.ts`,`**/*.dto.ts`,`**/*.controller.ts`,`**/*.handler.ts`,`**/*.guard.ts`,`**/*.interceptor.ts`,`**/*.filter.ts`,`**/*.strategy.ts`,`**/*.scheduler.ts`,`**/*.provider.ts`,`**/*.gateway.ts`,`**/*.decorator.ts`,`**/infrastructure/**`,`**/migrations/**`,`**/index.ts`,`src/index.ts`],c=[`**/index.ts`,`src/index.ts`],l=[`src/app/**`,`src/components/**`,`src/features/**/components/**`,`src/hooks/**`,`src/providers/**`,`src/i18n/**`,`src/types/**`,`**/*.css`,`**/*.d.ts`,`**/index.ts`,`src/index.ts`],u={lines:.9,functions:.9,statements:.9},d={lines:.8,functions:.8,statements:.8},f={lines:.85,functions:.85,statements:.85},p={lines:.8,functions:.8,statements:.8},m={lines:.8,functions:.8,statements:.8},h={lines:.7,functions:.7,statements:.7},g={lines:.6,functions:.6,statements:.6},_={lines:.6,functions:.6,statements:.6},v={lines:.7,functions:.7,statements:.7},y={lines:0,functions:0,statements:0};function b(e){if(e!==void 0)return typeof e==`number`?{lines:e,functions:e,statements:e}:{...e}}function x(t,n,r){let i=n??[],a=r===void 0?[]:Array.isArray(r)?r:[r];return[...e,...t,...i,...a]}function S(e){let{enableCoverage:n=!0,coverageThresholds:i,extraCoverageIgnorePatterns:a,test:o}=e,s=o?.include??r,c={passWithNoTests:o?.passWithNoTests??!0,include:s,...o};if(!n)return c;let l=b(i),u=b(o?.coverageThreshold),d={...l,...u},f=d.lines!==void 0||d.functions!==void 0||d.statements!==void 0,p=x([],a,o?.coveragePathIgnorePatterns);return c.coverage=!0,c.coverageSkipTestFiles=o?.coverageSkipTestFiles??!0,c.coverageReporter=o?.coverageReporter??t,c.coverageDir=o?.coverageDir??`coverage`,c.coveragePathIgnorePatterns=p,f&&(c.coverageThreshold=d),o?.coverageIgnoreSourcemaps!==void 0&&(c.coverageIgnoreSourcemaps=o.coverageIgnoreSourcemaps),c}function C(e={}){return{test:S(e)}}function w(e={}){return C(e)}function T(e={}){return C({...e,coverageThresholds:u,extraCoverageIgnorePatterns:[...i,...e.extraCoverageIgnorePatterns??[]]})}function E(e={}){return T(e)}function D(e={}){return C({...e,coverageThresholds:d,extraCoverageIgnorePatterns:[...i,...e.extraCoverageIgnorePatterns??[]]})}function O(e={}){return D(e)}const k=[`**/types.ts`,`**/index.ts`,`**/constants.ts`,`src/index.ts`];function A(e={}){return C({...e,coverageThresholds:f,extraCoverageIgnorePatterns:[...k,...e.extraCoverageIgnorePatterns??[]]})}function j(e={}){return A(e)}function M(e={}){return C({...e,coverageThresholds:p,extraCoverageIgnorePatterns:[...k,...e.extraCoverageIgnorePatterns??[]]})}function N(e={}){return M(e)}function P(e={}){return C({...e,coverageThresholds:m,extraCoverageIgnorePatterns:[...k,...e.extraCoverageIgnorePatterns??[]]})}function F(e={}){return P(e)}function I(e={}){return C({...e,coverageThresholds:h,extraCoverageIgnorePatterns:[...s,...e.extraCoverageIgnorePatterns??[]]})}function L(e={}){return I(e)}function R(e={}){return C({...e,coverageThresholds:g,extraCoverageIgnorePatterns:[...l,...e.extraCoverageIgnorePatterns??[]]})}function z(e={}){return R(e)}function B(e={}){return C({...e,coverageThresholds:_,extraCoverageIgnorePatterns:[...l,...e.extraCoverageIgnorePatterns??[]]})}function V(e={}){return B(e)}function H(e={}){return C({...e,coverageThresholds:v,extraCoverageIgnorePatterns:[...s,...e.extraCoverageIgnorePatterns??[]]})}function U(e={}){return H(e)}function W(e={}){return C({...e,enableCoverage:!1,test:{passWithNoTests:!0,...e.test}})}function G(e={}){return W(e)}const K=e=>e;export{v as CLI_COVERAGE_THRESHOLDS,o as CLI_MINIMAL_EXEMPTION_PATTERNS,o as SERVER_MINIMAL_EXEMPTION_PATTERNS,s as CLI_MODERATE_EXEMPTION_PATTERNS,s as SERVER_MODERATE_EXEMPTION_PATTERNS,n as DEFAULT_COVERAGE_DIR,e as DEFAULT_COVERAGE_IGNORE_PATTERNS,t as DEFAULT_COVERAGE_REPORTERS,r as DEFAULT_INCLUDE_PATTERNS,_ as DESKTOP_COVERAGE_THRESHOLDS,c as DESKTOP_MINIMAL_EXEMPTION_PATTERNS,c as WEB_MINIMAL_EXEMPTION_PATTERNS,l as DESKTOP_MODERATE_EXEMPTION_PATTERNS,l as WEB_MODERATE_EXEMPTION_PATTERNS,u as DOMAIN_COVERAGE_THRESHOLDS,i as DOMAIN_MINIMAL_EXEMPTION_PATTERNS,a as DOMAIN_MODERATE_EXEMPTION_PATTERNS,d as IMPLEMENTATION_COVERAGE_THRESHOLDS,f as PACKAGE_CORE_COVERAGE_THRESHOLDS,m as PACKAGE_SDK_COVERAGE_THRESHOLDS,p as PACKAGE_SHARED_COVERAGE_THRESHOLDS,h as SERVER_COVERAGE_THRESHOLDS,y as TYPE_ONLY_COVERAGE_THRESHOLDS,g as WEB_COVERAGE_THRESHOLDS,C as createBaseBunConfig,H as createCliBunConfig,B as createDesktopBunConfig,T as createDomainBunConfig,D as createImplementationBunConfig,A as createPackageCoreBunConfig,P as createPackageSdkBunConfig,M as createPackageSharedBunConfig,I as createServerBunConfig,W as createTypeOnlyBunConfig,R as createWebBunConfig,w as defineBunConfig,U as defineCliBunConfig,K as defineConfig,V as defineDesktopBunConfig,E as defineDomainBunConfig,O as defineImplementationBunConfig,j as definePackageCoreBunConfig,F as definePackageSdkBunConfig,N as definePackageSharedBunConfig,L as defineServerBunConfig,G as defineTypeOnlyBunConfig,z as defineWebBunConfig};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@longzai-intelligence-bun/config",
3
- "version": "0.0.1",
3
+ "version": "0.0.3",
4
4
  "description": "Longzai Intelligence bun 工具配置类型定义",
5
5
  "license": "UNLICENSED",
6
6
  "files": [