@longzai-intelligence-bun/config 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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`
85
+ *
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
27
103
  *
28
- * 默认值在命令实现内用 `?? true` 处理
29
- * (与 dev-tools defineConfig identity 工厂模式一致,不在工厂层合并默认值)
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,461 @@ 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
+ /**
276
+ * apps/server 最小豁免模式覆盖率忽略路径列表
277
+ */
278
+ declare const SERVER_MINIMAL_EXEMPTION_PATTERNS: string[];
279
+ //#endregion
280
+ //#region src/exemptions/server/moderate-exemption.patterns.d.ts
281
+ /**
282
+ * apps/server 中等豁免模式
283
+ *
284
+ * 在最小豁免基础上,排除 NestJS 全部框架中间件 + 基础设施层 + 数据库迁移。
285
+ * 内容来源:coverage.md「apps/server(中等豁免)」全集。
286
+ */
287
+ /**
288
+ * apps/server 中等豁免模式覆盖率忽略路径列表
289
+ *
290
+ * SERVER_MINIMAL_EXEMPTION_PATTERNS 的真超集(由 exemptions.test.ts 锁定)。
291
+ */
292
+ declare const SERVER_MODERATE_EXEMPTION_PATTERNS: string[];
293
+ //#endregion
294
+ //#region src/exemptions/web/minimal-exemption.patterns.d.ts
295
+ /**
296
+ * apps/web / apps/desktop 最小豁免模式
297
+ *
298
+ * UI 应用最小豁免:仅排除依赖/产物 + 通用类型/导出。
299
+ */
300
+ /**
301
+ * apps/web / apps/desktop 最小豁免模式覆盖率忽略路径列表
302
+ */
303
+ declare const WEB_MINIMAL_EXEMPTION_PATTERNS: string[];
304
+ //#endregion
305
+ //#region src/exemptions/web/moderate-exemption.patterns.d.ts
306
+ /**
307
+ * apps/web / apps/desktop 中等豁免模式
308
+ *
309
+ * 排除 UI 层(app/components/hooks/providers/i18n/types)+ 样式 + 类型声明。
310
+ * 内容来源:coverage.md「apps/web / apps/desktop(中等豁免)」全集。
311
+ */
312
+ /**
313
+ * apps/web / apps/desktop 中等豁免模式覆盖率忽略路径列表
314
+ *
315
+ * WEB_MINIMAL_EXEMPTION_PATTERNS 的真超集(由 exemptions.test.ts 锁定)。
316
+ */
317
+ declare const WEB_MODERATE_EXEMPTION_PATTERNS: string[];
318
+ //#endregion
319
+ //#region src/thresholds/index.d.ts
320
+ /**
321
+ * Domain 层覆盖率阈值
322
+ *
323
+ * 核心业务逻辑层(DDD domain 层),要求最高覆盖率。
324
+ * 对应 coverage.md「DDD 分层 - domain 层 >= 90%」。
325
+ */
326
+ declare const DOMAIN_COVERAGE_THRESHOLDS: CoverageThreshold;
327
+ /**
328
+ * Implementation 层覆盖率阈值
329
+ *
330
+ * domains 下的 implementation 包(domains/{name}/implementation),DDD 分层中 application 层标准。
331
+ * 对应 coverage.md「domains 下 implementation 包 >= 80%」。
332
+ */
333
+ declare const IMPLEMENTATION_COVERAGE_THRESHOLDS: CoverageThreshold;
334
+ /**
335
+ * packages/core 覆盖率阈值
336
+ *
337
+ * 核心工具库,要求较高覆盖率。
338
+ * 对应 coverage.md「packages/core >= 85%」。
339
+ */
340
+ declare const PACKAGE_CORE_COVERAGE_THRESHOLDS: CoverageThreshold;
341
+ /**
342
+ * packages/shared 覆盖率阈值
343
+ *
344
+ * 共享工具库。
345
+ * 对应 coverage.md「packages/shared >= 80%」。
346
+ */
347
+ declare const PACKAGE_SHARED_COVERAGE_THRESHOLDS: CoverageThreshold;
348
+ /**
349
+ * packages/sdk 覆盖率阈值
350
+ *
351
+ * SDK 包。
352
+ * 对应 coverage.md「packages/sdk >= 80%」。
353
+ */
354
+ declare const PACKAGE_SDK_COVERAGE_THRESHOLDS: CoverageThreshold;
355
+ /**
356
+ * apps/server 覆盖率阈值
357
+ *
358
+ * 服务端应用(NestJS),DDD 分层中 infrastructure 层标准。
359
+ * 对应 coverage.md「apps/server >= 70%」。
360
+ */
361
+ declare const SERVER_COVERAGE_THRESHOLDS: CoverageThreshold;
362
+ /**
363
+ * apps/web 覆盖率阈值
364
+ *
365
+ * Web 前端应用。
366
+ * 对应 coverage.md「apps/web >= 60%」。
367
+ */
368
+ declare const WEB_COVERAGE_THRESHOLDS: CoverageThreshold;
369
+ /**
370
+ * apps/desktop 覆盖率阈值
371
+ *
372
+ * 桌面端应用(Electron)。
373
+ * 对应 coverage.md「apps/desktop >= 60%」。
374
+ */
375
+ declare const DESKTOP_COVERAGE_THRESHOLDS: CoverageThreshold;
376
+ /**
377
+ * apps/cli 覆盖率阈值
378
+ *
379
+ * CLI 工具应用。
380
+ * 对应 coverage.md「apps/cli >= 70%」。
381
+ */
382
+ declare const CLI_COVERAGE_THRESHOLDS: CoverageThreshold;
383
+ /**
384
+ * 纯类型定义包覆盖率阈值
385
+ *
386
+ * contract / main 包,无可执行代码,不参与覆盖率门控。
387
+ * preset 中会据此跳过 coverage 配置生成。
388
+ */
389
+ declare const TYPE_ONLY_COVERAGE_THRESHOLDS: CoverageThreshold;
390
+ //#endregion
391
+ //#region src/config/base.config.d.ts
392
+ /**
393
+ * 创建基础 bun 配置
394
+ *
395
+ * 生成一个标准的 bun 配置对象(含完整 `[test]` 段合并结果)。
396
+ * 支持传入完整 bun 原生配置与项目便捷字段,工厂进行三层合并。
397
+ *
398
+ * @example
399
+ * ```typescript
400
+ * import { createBaseBunConfig } from '@longzai-intelligence-bun/config';
401
+ *
402
+ * const config = createBaseBunConfig({
403
+ * coverageThresholds: { lines: 0.8, functions: 0.8 },
404
+ * extraCoverageIgnorePatterns: ['generated 目录'],
405
+ * });
406
+ * ```;
407
+ *
408
+ * @param options - 配置选项,支持 bun 原生配置和项目便捷选项
409
+ * @returns BunConfigResult 配置对象
410
+ */
411
+ declare function createBaseBunConfig(options?: BunConfigOptions): BunConfigResult;
412
+ /**
413
+ * 定义 bun 配置
414
+ *
415
+ * createBaseBunConfig 的语法糖,提供更语义化的配置方式。
416
+ * 与 vitest defineVitestConfig 一致:identity 转发。
417
+ *
418
+ * @example
419
+ * ```typescript
420
+ * import { defineBunConfig } from '@longzai-intelligence-bun/config';
421
+ *
422
+ * export default defineBunConfig({
423
+ * coverageThresholds: { lines: 0.8 },
424
+ * });
425
+ * ```;
426
+ *
427
+ * @param options - 配置选项,同 createBaseBunConfig
428
+ * @returns BunConfigResult 配置对象
429
+ */
430
+ declare function defineBunConfig(options?: BunConfigOptions): BunConfigResult;
431
+ //#endregion
432
+ //#region src/presets/domain.config.d.ts
433
+ /**
434
+ * 创建领域层 bun 配置
435
+ *
436
+ * @example
437
+ * ```typescript
438
+ * import { createDomainBunConfig } from '@longzai-intelligence-bun/config';
439
+ *
440
+ * export default createDomainBunConfig({
441
+ * extraCoverageIgnorePatterns: ['generated 目录'],
442
+ * });
443
+ * ```;
444
+ *
445
+ * @param options - 配置选项,同 createBaseBunConfig
446
+ * @returns bun 配置对象
447
+ */
448
+ declare function createDomainBunConfig(options?: BunConfigOptions): BunConfigResult;
449
+ /**
450
+ * 定义领域层 bun 配置
451
+ *
452
+ * createDomainBunConfig 的语法糖(identity 转发),对齐 vitest define* 风格。
453
+ *
454
+ * @example
455
+ * ```typescript
456
+ * import { defineDomainBunConfig } from '@longzai-intelligence-bun/config';
457
+ *
458
+ * export default defineDomainBunConfig();
459
+ * ```;
460
+ *
461
+ * @param options - 配置选项,同 createDomainBunConfig(默认 {})
462
+ * @returns bun 配置对象(BunConfigResult)
463
+ */
464
+ declare function defineDomainBunConfig(options?: BunConfigOptions): BunConfigResult;
465
+ //#endregion
466
+ //#region src/presets/implementation.config.d.ts
467
+ /**
468
+ * 创建 implementation 层 bun 配置
469
+ *
470
+ * @example
471
+ * ```typescript
472
+ * import { createImplementationBunConfig } from '@longzai-intelligence-bun/config';
473
+ *
474
+ * export default createImplementationBunConfig();
475
+ * ```;
476
+ *
477
+ * @param options - 配置选项,同 createBaseBunConfig
478
+ * @returns bun 配置对象
479
+ */
480
+ declare function createImplementationBunConfig(options?: BunConfigOptions): BunConfigResult;
481
+ /**
482
+ * 定义 implementation 层 bun 配置
483
+ *
484
+ * createImplementationBunConfig 的语法糖。
485
+ *
486
+ * @param options - 配置选项,同 createImplementationBunConfig
487
+ * @returns bun 配置对象
488
+ */
489
+ declare function defineImplementationBunConfig(options?: BunConfigOptions): BunConfigResult;
490
+ //#endregion
491
+ //#region src/presets/package.config.d.ts
492
+ /**
493
+ * 创建 packages/core bun 配置
494
+ *
495
+ * @example
496
+ * ```typescript
497
+ * import { createPackageCoreBunConfig } from '@longzai-intelligence-bun/config';
498
+ *
499
+ * export default createPackageCoreBunConfig();
500
+ * ```;
501
+ *
502
+ * @param options - 配置选项,同 createBaseBunConfig
503
+ * @returns bun 配置对象
504
+ */
505
+ declare function createPackageCoreBunConfig(options?: BunConfigOptions): BunConfigResult;
506
+ /**
507
+ * 定义 packages/core bun 配置
508
+ *
509
+ * createPackageCoreBunConfig 的语法糖。
510
+ *
511
+ * @param options - 配置选项,同 createPackageCoreBunConfig(默认 {})
512
+ * @returns bun 配置对象(BunConfigResult)
513
+ */
514
+ declare function definePackageCoreBunConfig(options?: BunConfigOptions): BunConfigResult;
515
+ /**
516
+ * 创建 packages/shared bun 配置
517
+ *
518
+ * @param options - 配置选项,同 createBaseBunConfig
519
+ * @returns bun 配置对象
520
+ */
521
+ declare function createPackageSharedBunConfig(options?: BunConfigOptions): BunConfigResult;
522
+ /**
523
+ * 定义 packages/shared bun 配置
524
+ *
525
+ * createPackageSharedBunConfig 的语法糖。
526
+ *
527
+ * @param options - 配置选项,同 createPackageSharedBunConfig(默认 {})
528
+ * @returns bun 配置对象(BunConfigResult)
529
+ */
530
+ declare function definePackageSharedBunConfig(options?: BunConfigOptions): BunConfigResult;
531
+ /**
532
+ * 创建 packages/sdk bun 配置
533
+ *
534
+ * @param options - 配置选项,同 createBaseBunConfig
535
+ * @returns bun 配置对象
536
+ */
537
+ declare function createPackageSdkBunConfig(options?: BunConfigOptions): BunConfigResult;
538
+ /**
539
+ * 定义 packages/sdk bun 配置
540
+ *
541
+ * createPackageSdkBunConfig 的语法糖。
542
+ *
543
+ * @param options - 配置选项,同 createPackageSdkBunConfig(默认 {})
544
+ * @returns bun 配置对象(BunConfigResult)
545
+ */
546
+ declare function definePackageSdkBunConfig(options?: BunConfigOptions): BunConfigResult;
547
+ //#endregion
548
+ //#region src/presets/app.config.d.ts
549
+ /**
550
+ * 创建 apps/server(NestJS)bun 配置
551
+ *
552
+ * @example
553
+ * ```typescript
554
+ * import { createServerBunConfig } from '@longzai-intelligence-bun/config';
555
+ *
556
+ * export default createServerBunConfig({
557
+ * test: { timeout: 15000 },
558
+ * });
559
+ * ```;
560
+ *
561
+ * @param options - 配置选项,同 createBaseBunConfig
562
+ * @returns bun 配置对象
563
+ */
564
+ declare function createServerBunConfig(options?: BunConfigOptions): BunConfigResult;
565
+ /**
566
+ * 定义 apps/server bun 配置
567
+ *
568
+ * createServerBunConfig 的语法糖。
569
+ *
570
+ * @param options - 配置选项,同 createServerBunConfig(默认 {})
571
+ * @returns bun 配置对象(BunConfigResult)
572
+ */
573
+ declare function defineServerBunConfig(options?: BunConfigOptions): BunConfigResult;
574
+ /**
575
+ * 创建 apps/web bun 配置
576
+ *
577
+ * @param options - 配置选项,同 createBaseBunConfig
578
+ * @returns bun 配置对象
579
+ */
580
+ declare function createWebBunConfig(options?: BunConfigOptions): BunConfigResult;
581
+ /**
582
+ * 定义 apps/web bun 配置
583
+ *
584
+ * createWebBunConfig 的语法糖。
585
+ *
586
+ * @param options - 配置选项,同 createWebBunConfig(默认 {})
587
+ * @returns bun 配置对象(BunConfigResult)
588
+ */
589
+ declare function defineWebBunConfig(options?: BunConfigOptions): BunConfigResult;
590
+ /**
591
+ * 创建 apps/desktop(Electron)bun 配置
592
+ *
593
+ * @param options - 配置选项,同 createBaseBunConfig
594
+ * @returns bun 配置对象
595
+ */
596
+ declare function createDesktopBunConfig(options?: BunConfigOptions): BunConfigResult;
597
+ /**
598
+ * 定义 apps/desktop bun 配置
599
+ *
600
+ * createDesktopBunConfig 的语法糖。
601
+ *
602
+ * @param options - 配置选项,同 createDesktopBunConfig(默认 {})
603
+ * @returns bun 配置对象(BunConfigResult)
604
+ */
605
+ declare function defineDesktopBunConfig(options?: BunConfigOptions): BunConfigResult;
606
+ /**
607
+ * 创建 apps/cli bun 配置
608
+ *
609
+ * @param options - 配置选项,同 createBaseBunConfig
610
+ * @returns bun 配置对象
611
+ */
612
+ declare function createCliBunConfig(options?: BunConfigOptions): BunConfigResult;
613
+ /**
614
+ * 定义 apps/cli bun 配置
615
+ *
616
+ * createCliBunConfig 的语法糖。
617
+ *
618
+ * @param options - 配置选项,同 createCliBunConfig(默认 {})
619
+ * @returns bun 配置对象(BunConfigResult)
620
+ */
621
+ declare function defineCliBunConfig(options?: BunConfigOptions): BunConfigResult;
622
+ //#endregion
623
+ //#region src/presets/type-only.config.d.ts
624
+ /**
625
+ * 创建纯类型包 bun 配置
626
+ *
627
+ * @example
628
+ * ```typescript
629
+ * import { createTypeOnlyBunConfig } from '@longzai-intelligence-bun/config';
630
+ *
631
+ * export default createTypeOnlyBunConfig();
632
+ * ```;
633
+ *
634
+ * @param options - 配置选项(enableCoverage 将被强制覆盖为 false)
635
+ * @returns bun 配置对象(无 coverage 段)
636
+ */
637
+ declare function createTypeOnlyBunConfig(options?: BunConfigOptions): BunConfigResult;
638
+ /**
639
+ * 定义纯类型包 bun 配置
640
+ *
641
+ * createTypeOnlyBunConfig 的语法糖。
642
+ *
643
+ * @param options - 配置选项(enableCoverage 将被强制覆盖为 false,默认 {})
644
+ * @returns bun 配置对象(BunConfigResult,无 coverage 段)
645
+ */
646
+ declare function defineTypeOnlyBunConfig(options?: BunConfigOptions): BunConfigResult;
647
+ //#endregion
59
648
  //#region src/index.d.ts
60
649
  /**
61
- * 定义 lzi-bun-cli 配置
650
+ * 定义 lzi-bun-cli 配置(向后兼容的 identity 工厂)
62
651
  *
63
652
  * 提供类型推导,用户无需手动 satisfies。
64
653
  *
65
654
  * 与 dev-tools 的 defineConfig 一致:identity 工厂,仅做类型推导,
66
- * 不在工厂层合并默认值——默认值由各命令实现内用 `?? fallback` 处理。
655
+ * 不在工厂层合并默认值——默认值由 createBaseBunConfig / preset 工厂处理。
656
+ *
657
+ * 当使用 preset 工厂(如 defineDomainBunConfig)时,无需再包一层 defineConfig;
658
+ * 此工厂保留给仅需 passWithNoTests 等基础字段的场景。
67
659
  *
68
660
  * @example
69
661
  * ```typescript
@@ -71,7 +663,7 @@ type LziBunConfig = {
71
663
  *
72
664
  * export default defineConfig({
73
665
  * test: {
74
- * passWithNoTests: false,
666
+ * passWithNoTests: true,
75
667
  * },
76
668
  * });
77
669
  * ```;
@@ -81,4 +673,4 @@ type LziBunConfig = {
81
673
  */
82
674
  declare const defineConfig: (config: LziBunConfig) => LziBunConfig;
83
675
  //#endregion
84
- export { type BunTestConfig, type LziBunConfig, defineConfig };
676
+ 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=[`**/node_modules/**`,`**/dist/**`,`**/out/**`,`**/*.module.ts`,`**/index.ts`,`src/index.ts`],s=[`**/node_modules/**`,`**/dist/**`,`**/out/**`,`**/*.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=[`**/node_modules/**`,`**/dist/**`,`**/out/**`,`**/index.ts`,`src/index.ts`],l=[`**/node_modules/**`,`**/dist/**`,`**/out/**`,`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=[`**/node_modules/**`,`**/dist/**`,`**/out/**`,`**/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.2",
4
4
  "description": "Longzai Intelligence bun 工具配置类型定义",
5
5
  "license": "UNLICENSED",
6
6
  "files": [