@omne-harness/repo-toolchain 0.0.15 → 0.0.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/README.md +13 -0
  2. package/README_ZH.md +26 -4
  3. package/dist/arch/conformance-model.d.ts +17 -0
  4. package/dist/arch/conformance-model.d.ts.map +1 -1
  5. package/dist/arch/conformance-model.js.map +1 -1
  6. package/dist/arch/constraints.d.ts.map +1 -1
  7. package/dist/arch/constraints.js +83 -5
  8. package/dist/arch/constraints.js.map +1 -1
  9. package/dist/arch/group-cycles.d.ts +28 -0
  10. package/dist/arch/group-cycles.d.ts.map +1 -0
  11. package/dist/arch/group-cycles.js +65 -0
  12. package/dist/arch/group-cycles.js.map +1 -0
  13. package/dist/declarations/api-baseline.d.ts +82 -0
  14. package/dist/declarations/api-baseline.d.ts.map +1 -0
  15. package/dist/declarations/api-baseline.js +326 -0
  16. package/dist/declarations/api-baseline.js.map +1 -0
  17. package/dist/declarations/api-cli.js +44 -7
  18. package/dist/declarations/api-cli.js.map +1 -1
  19. package/dist/declarations/contract-api.d.ts +25 -1
  20. package/dist/declarations/contract-api.d.ts.map +1 -1
  21. package/dist/declarations/contract-api.js +9 -7
  22. package/dist/declarations/contract-api.js.map +1 -1
  23. package/dist/deps/cli.js +13 -3
  24. package/dist/deps/cli.js.map +1 -1
  25. package/dist/deps/graph.d.ts +14 -5
  26. package/dist/deps/graph.d.ts.map +1 -1
  27. package/dist/deps/graph.js +14 -11
  28. package/dist/deps/graph.js.map +1 -1
  29. package/dist/loop/hook-measure.d.ts.map +1 -1
  30. package/dist/loop/hook-measure.js +2 -2
  31. package/dist/loop/hook-measure.js.map +1 -1
  32. package/dist/loop/hook.js.map +1 -1
  33. package/dist/loop/run.d.ts +5 -2
  34. package/dist/loop/run.d.ts.map +1 -1
  35. package/dist/loop/run.js +20 -7
  36. package/dist/loop/run.js.map +1 -1
  37. package/dist/loop/status.d.ts +7 -1
  38. package/dist/loop/status.d.ts.map +1 -1
  39. package/dist/loop/status.js +4 -1
  40. package/dist/loop/status.js.map +1 -1
  41. package/package.json +1 -1
package/README.md CHANGED
@@ -63,6 +63,17 @@ Version 0.0.12 is the first version in which `omne-deps` checks the direction ro
63
63
  - No direction rows: when the runner has no `constraints.json`, the command prints that it did not check directions, and the exit code comes from the other findings. A schema 1 or 2 file, or a schema 3 file without `directions`, prints that there are no direction rows.
64
64
  - Exit 2: `constraints.json` does not parse, fails validation, fails the check of its cited sources, or `docs/architecture/constraints.json` and `.meta_harness/design/architecture/constraints.json` both exist. The command reads the file before it runs dependency-cruiser.
65
65
 
66
+ ## Group cycle exceptions
67
+
68
+ A cycle between groups fails by default. When an owner rules that a specific chain of dependencies is correct, the runner repository records its member edges in `groupCycleExceptions` of its schema 3 `constraints.json`. Each entry has an id, a list of member edges (`from` and `to` are member paths), an https link to the ruling, and a one-line reason. An exception allows the listed edges only. The field format is in [the conformance contract](src/arch/CONFORMANCE.md#组环例外). The command reads exceptions only from the runner repository. An exception in the checked tree has no effect. Exceptions take effect from repo-toolchain 0.0.16.
69
+
70
+ - A group cycle is allowed only when every cross-group member edge in it is listed by an exception. The command then prints one `excepted` line with the groups, the exception id, the ruling link, the allowed edges and the reason, and the cycle does not fail. If one edge is not listed, the cycle fails as before. The message ends with the edges that are not listed, and the machine-readable `edges` of the finding stay the full list of edges in the cycle. A new member edge between the same groups, which no exception lists, therefore always makes the cycle fail.
71
+ - Each listed edge must appear in a group cycle, whether or not that cycle is allowed. An exception with an edge that does not appear (the edge was removed, the cycle is gone, or the edge is not in the cycle) is an `unused-group-cycle-exception` finding and exits 1. The `edges` of that finding are the edges that did not appear.
72
+ - Exceptions do not apply to cycles between members, to file cycles, or to other rules.
73
+ - When at least one group cycle is allowed, the last line of the summary ends with `<n> 个组环按具名例外放行` (`<n>` group cycles allowed by named exceptions).
74
+ - The hard lines of `omne-loop-status` and of the stop hook read the same exceptions. An excepted group cycle is not a hard line. The status lists it under the cycle line and keeps it in `hardLines.exceptedCycles` of `status.json`. An unused exception is a cycle hard line. When the `constraints.json` of the runner is not valid, `omne-loop-status` exits 2 as a tool error.
75
+ - `omne-metrics` and the architecture report do not read exceptions. They still list an excepted group cycle as a cycle.
76
+
66
77
  ## Contract API snapshots
67
78
 
68
79
  `omne-contract-api` keeps one API snapshot file for each contract member. The contract members are the `contracts` entries of `docs/engineering/delivery-lines.json`. The behavior contract is in the [SPEC](src/declarations/SPEC.md).
@@ -70,6 +81,8 @@ Version 0.0.12 is the first version in which `omne-deps` checks the direction ro
70
81
  - `--write` writes the snapshots from `dist`. It does not write a member that has no `dist`, incomplete declarations or compile diagnostics.
71
82
  - `--check` compares each snapshot file with a snapshot that it makes from `dist` now, and reports each difference. With `--json`, it gives the SHA-256 of each snapshot file. The snapshot digest is this SHA-256 of the file bytes.
72
83
  - `--diff <base>` compares the snapshot files at a base commit with the snapshot files in the working tree. It gives `none`, `additive` or `review` for each member and reports which side a change breaks. It reads only the snapshot files, not `dist`, so run `--check` first. The member list is the union of the contract lists at the base and now. A member without a snapshot at the base counts as `additive`. To decide whether a change is additive, give the milestone baseline commit.
84
+ - `--baseline-write <commit> [--milestone <name>] [--member <member>]...` makes the machine-readable block of a milestone baseline registration. The block is a `json omne-contract-baseline:v1` fence. For each member it records `path`, `commit`, the snapshot `sha256` and `apiTree` (the tree ID of `<commit>:<member>/api`). With `--member`, it writes only the given members. The baseline file is not committed. The block goes into the registration comment.
85
+ - `--baseline <file>` reads a block (a JSON object, or a text with exactly one block) and compares each member from its own `commit` to the working tree snapshot. The rules are the rules of `--diff`. A member added after the baseline counts as a whole addition. The command cannot judge two kinds of member, and then it exits 1 even with `breakingCards`: a registered member that is not a contract member or has no snapshot at its `commit`, and an unregistered member that was a contract member at the base point (the common ancestor of all registered commits). Otherwise a `review` result without `breakingCards` exits 1. A registered `sha256` or `apiTree` that differs from its commit is only reported.
73
86
  - `--check` and `--diff` only report and exit 0. `--write` exits 1 when it cannot write a member. Errors exit 2.
74
87
 
75
88
  A snapshot has two parts: the names that each entry exports, and every declaration file of the member's `dist`, normalized by the TypeScript printer. The declaration files keep their imports, exports and module augmentations, so a snapshot can be restored to declarations that compile.
package/README_ZH.md CHANGED
@@ -69,14 +69,15 @@ pnpm --filter @omne-harness/repo-toolchain test
69
69
 
70
70
  - 规则:无法解析的导入、文件级运行时循环、legacy 引用,以及按[产品包组织](../../docs/package-organization.md#依赖方向与cordis集成)与[系统分层](../../docs/architecture/layers-and-dependencies.md#依赖关系与禁止方向)写成成员路径的方向规则(SDK 与 server-entry 互不导入、公开契约不依赖两端实现、业务不依赖 SDK 与装配入口、common 与 util 不依赖领域成员、产品包不依赖应用与工具)。每条规则的 `comment` 指回出处。要按角色判断的规则(契约不依赖提供者等)还没有机读的角色,没有写。
71
71
  - 方向行:`docs/architecture/constraints.json` schema 3 的 `directions`,格式与校验见[符合性契约](src/arch/CONFORMANCE.md#方向行);`omne-deps` 怎样用它见下面[依赖方向](#依赖方向)一节。
72
+ - 组环例外:同一文件 schema 3 的 `groupCycleExceptions`,格式与校验见[符合性契约](src/arch/CONFORMANCE.md#组环例外);`omne-deps` 与回路状态怎样用它见下面[组环例外](#组环例外)一节。
72
73
  - 成员边:产品源码(不含测试)解析到另一个成员的依赖,类型导入也算。成员与组之间的环由这些边算出。导入处的行号按说明符在文件里第一次出现的位置找。图里另保留成员里 dependency-cruiser 走到的模块清单(`modules`)与跨成员的文件级依赖事实(`dependencies`,含测试与 `src` 下的 testing 入口,不含 Node 内建模块),方向行的判定与架构符合性报告的方向行都只从这两项判断,不另解析导入。
73
74
  - 工作树的图不含被 Git 忽略且未跟踪的目录里的模块与它们的违规(本地产物,理由同[实际架构](#全局实际架构视图)的成员规则);不在 Git 仓库里的目录没有忽略规则,照常出图。
74
75
  - 规则与解析选项(`tsconfig.base.json` 的 `source` 条件)只从运行检查器的仓库读,被检查的检出改不了。
75
76
  - 基线图:把那个提交的源码导出到 git 公共目录下的临时树,按成员包名补上 `node_modules/@omne-harness/*` 链接后跑;结果按提交、规则文件摘要与图的格式版本缓存在 `<git-common-dir>/omne-dep-graph/`,同一基线只算一次,不写工作树。
76
77
  - 耗时:本机全仓一次约 3 秒,基线命中缓存约 10 毫秒。
77
- - 回路状态的硬线是依赖违规与环;方向命中只让 `lint:deps` 退出 1,回路里只报告。
78
+ - 回路状态的硬线是依赖违规与环;方向命中只让 `lint:deps` 退出 1,回路里只报告。按具名例外放行的组环不算硬线。
78
79
 
79
- 自测:`tests/deps-graph.spec.ts`、`tests/direction-rules.spec.ts`(runner 与被检树分开的临时仓库);回路金丝雀种了一处 `shared-stays-pure` 违规与一对成环的成员。
80
+ 自测:`tests/deps-graph.spec.ts`、`tests/direction-rules.spec.ts`、`tests/group-cycle-exceptions-cli.spec.ts`(runner 与被检树分开的临时仓库)、`tests/group-cycle-exceptions.spec.ts`;回路金丝雀种了一处 `shared-stays-pure` 违规与一对成环的成员。
80
81
 
81
82
  ### 依赖方向
82
83
 
@@ -89,6 +90,17 @@ pnpm --filter @omne-harness/repo-toolchain test
89
90
  - 没有方向行:运行检查器的仓库没有 `constraints.json` 时不检查方向,写「runner 没有 docs/architecture/constraints.json,未检查」,退出码只由其他发现决定;文件是 schema 1、2,或 schema 3 缺省 `directions`,写「没有方向行」。
90
91
  - 退出 2:`constraints.json` 解析失败、校验失败、来源核对失败,或 `docs/architecture/constraints.json` 与 `.meta_harness/design/architecture/constraints.json` 两份并存。先读它再运行 dependency-cruiser,所以文件坏了不出依赖图。
91
92
 
93
+ ### 组环例外
94
+
95
+ 组之间成环默认失败。负责人裁定某条具体的依赖链在架构上成立时,在运行检查器的仓库的 `constraints.json` 里登记一条 `groupCycleExceptions`,写明成员边(`from`、`to` 是成员路径)、裁定链接和一句理由。例外只放行登记的那几条边。例外与方向行一样只从运行检查器的仓库读,被检查的树登记的例外不生效。例外从 repo-toolchain 0.0.16 起执行。
96
+
97
+ - 放行:一个组环的每一条跨组成员边都登记了,`omne-deps` 才放行它,另写一行 `excepted 组环 <组>、<组> 按例外 <id>(裁定 <链接>)放行 <from> → <to>、…:<理由>`。环上有一条边没登记,就照常报 `组之间成环` 并失败,消息末尾列出没登记的边;机读的 `edges` 仍是环上的全部边。因此两个组之间以后新增的任何没有登记的成员边,都会让组环失败。
98
+ - 没用上:登记的边必须出现在某个组环里,不论那个组环最后是否放行。边被删、组环已消失或边不在环上时,这条例外报一条 `unused-group-cycle-exception`,写明 id、没用上的边和裁定链接,并退出 1。这条发现的机读 `edges` 是没用上的边。要删掉或改写这条例外。
99
+ - 成员环:成员之间的环不受例外影响,照常失败。文件环与其他规则也一样。
100
+ - 汇总行:有放行的组环时,末行写「<n> 个组环按具名例外放行」。
101
+ - 回路状态:硬线读同一份例外。放行的组环不算硬线,在 `status.md` 硬线一段的「环」下面列出例外、裁定链接与放行的边,在 `status.json` 的 `hardLines.exceptedCycles` 里保留。没用上的例外算进「环」这条硬线。runner 的 `constraints.json` 坏了时,回路状态按工具错误退出 2。收工钩子的硬线同样按例外判。
102
+ - 结构度量与实际架构的报告不读例外:它们照旧把放行的组环列为环。
103
+
92
104
  ## 提交署名
93
105
 
94
106
  `commit-attribution`(`src/commits.ts`)随 `pnpm run lint:rules` 执行,有违反即退出 1。它查的不是源码,
@@ -326,7 +338,7 @@ pnpm run loop:status --snapshot # 干净的工作树上
326
338
  pnpm run loop:status --base <基线> --strict --out <目录> # 严格模式,pnpm run check 的最后一步
327
339
  ```
328
340
 
329
- **除硬线外一切只报告。**退出码 1 只在硬线被破时:依赖违规或环(与 `pnpm run metrics`、`lint:deps` 读[同一张依赖图](#依赖图与依赖规则);无法解析的导入归 `lint:deps`,不算硬线),
341
+ **除硬线外一切只报告。**退出码 1 只在硬线被破时:依赖违规或环(与 `pnpm run metrics`、`lint:deps` 读[同一张依赖图](#依赖图与依赖规则);无法解析的导入归 `lint:deps`,不算硬线;按[组环例外](#组环例外)放行的组环不算硬线),
330
342
  或给了 `--base` 且[验收锁](#验收锁)被破,或严格模式下有开着的传感器没数据;
331
343
  2 是工具自己出错(参数、配置、git);其余报告项再多也是 0。
332
344
 
@@ -633,9 +645,11 @@ pnpm run loop:health # --out 可改产物目录
633
645
  omne-contract-api --write # 从 dist 重写快照(先构建)
634
646
  omne-contract-api --check # 拿 dist 现场生成的快照与快照文件比
635
647
  omne-contract-api --diff <基线提交或分支> # 基线提交上的快照对工作树的快照,逐成员粗分类
648
+ omne-contract-api --baseline-write <提交> [--milestone <名>] [--member <成员目录>]... # 生成基线登记的机读区块
649
+ omne-contract-api --baseline <区块文件> # 逐成员从登记的提交比到工作树的快照
636
650
  ```
637
651
 
638
- 三个动作都可加 `--json`,把结果按 JSON 写到标准输出。`--root <检出目录>` 指定被检查的检出。
652
+ 每个动作都可加 `--json`,把结果按 JSON 写到标准输出。`--root <检出目录>` 指定被检查的检出。
639
653
 
640
654
  配置在 `repo-toolchain.config.json` 的 `contractApi` 一节,有两个键:
641
655
 
@@ -666,6 +680,14 @@ omne-contract-api --diff <基线提交或分支> # 基线提交上的快照对
666
680
 
667
681
  快照摘要是快照文件字节的 SHA-256。`--check --json` 对每个有快照文件的成员给出 `sha256`。
668
682
 
683
+ 里程碑基线的登记:
684
+
685
+ - 登记者运行 `--baseline-write <基线提交> --milestone <名>`,把输出的 `json omne-contract-baseline:v1` 区块贴进 baseline 卡的登记评论。区块给每个成员记 `path`、`commit`、快照的 `sha256` 与 `apiTree`。基线文件不入库。
686
+ - 补登记个别成员时加 `--member <成员目录>`,只写这些成员,它们的 `commit` 可以与其他成员不同。
687
+ - 有破坏性改动的裁定读回后,调度者在区块里补 `breakingCards`,列出承接的 `integration` 卡。
688
+ - 核对时把登记合并成一个文件(JSON 对象,或含一个区块的评论正文),运行 `--baseline <文件>`。每个成员从它自己的 `commit` 比到工作树的快照。基线之后加入的成员整份算新增。下列成员判不了,命令退出 1,`breakingCards` 不能放行:登记的成员在它的 `commit` 上不是契约成员或没有快照;在基线点(全部登记提交的共同祖先)上已是契约成员却没有登记。其余情况分类为 `review` 而没有 `breakingCards` 时退出 1。登记的 `sha256` 或 `apiTree` 与那个提交对不上时只报告。
689
+ - `--baseline-write` 与 `--baseline` 从 0.0.16 起提供。仓库钉住的版本早于 0.0.16 时,从源码运行:`node --experimental-strip-types tools/repo-toolchain/src/declarations/api-cli.ts --baseline <文件>`。
690
+
669
691
  `review` 不是 PR「契约变化」一节的级别。它包括两方都破坏的改动、只破坏一方的改动,也包括按「可加改动」表不破坏、但不在白名单里的改动(例如契约声明开放的联合加成员、给类型参数加默认值)。PR 的 none、additive 或 breaking 由人按「可加改动」表判定。
670
692
 
671
693
  它**不能声称**的:它报出读方与写方两个方向,但不判定哪个方向的破坏可以接受。白名单门失败关闭,拿不准时给 `review`,所以 `review` 会比只用检查器时多。这是 P1 只报告阶段的有意取舍。它只看声明的形状,不看行为、文档或运行时校验。转导出的别的包的声明变化归那个包的快照。快照与 dist 一致只说明快照是最新的,不说明改动可加。其余限制(例如 `ToolBindings` 一类的递归启发式误报)见 [SPEC](src/declarations/SPEC.md#已知限制)。
@@ -26,11 +26,28 @@ export interface ArchitectureDirection {
26
26
  readonly to: readonly [string, ...string[]];
27
27
  readonly source: string;
28
28
  }
29
+ /** 例外登记的一条成员边:`from`、`to` 是成员路径(依赖图 `edges` 的键),两端在不同的组。 */
30
+ export interface ArchitectureGroupCycleEdge {
31
+ readonly from: string;
32
+ readonly to: string;
33
+ }
34
+ /**
35
+ * schema 3 的具名组环例外:放行裁定过的那几条成员边。依赖图的组环的每条跨组成员边都登记了才放行;
36
+ * `ruling` 是裁定的 https 链接,`reason` 是一句理由。一条边在全部例外里只出现一次。
37
+ */
38
+ export interface ArchitectureGroupCycleException {
39
+ readonly id: string;
40
+ readonly edges: readonly [ArchitectureGroupCycleEdge, ...ArchitectureGroupCycleEdge[]];
41
+ readonly ruling: string;
42
+ readonly reason: string;
43
+ }
29
44
  export interface ArchitectureConstraints {
30
45
  readonly schemaVersion: 1 | 2 | 3;
31
46
  readonly importExceptions?: readonly ArchitectureImportException[];
32
47
  /** 只有 schema 3 可以声明;schema 1、2 的文档没有这个字段。 */
33
48
  readonly directions?: readonly ArchitectureDirection[];
49
+ /** 只有 schema 3 可以声明;schema 1、2 的文档没有这个字段。 */
50
+ readonly groupCycleExceptions?: readonly ArchitectureGroupCycleException[];
34
51
  readonly domains: readonly {
35
52
  readonly id: string;
36
53
  readonly label: string;
@@ -1 +1 @@
1
- {"version":3,"file":"conformance-model.d.ts","sourceRoot":"","sources":["../../src/arch/conformance-model.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"conformance-model.d.ts","sourceRoot":"","sources":["../../src/arch/conformance-model.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"conformance-model.js","sourceRoot":"","sources":["../../src/arch/conformance-model.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,aAAa;IACb,WAAW;IACX,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,kBAAkB;IAClB,qBAAqB;IACrB,mBAAmB;IACnB,2BAA2B;CACnB,CAAA;AAsDV,MAAM,UAAU,WAAW,CAAC,KAAsB;IAChD,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,cAAc,IAAI,EAAE,CAAC,CAAA;IACnD,OAAO,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;AACvE,CAAC"}
1
+ {"version":3,"file":"conformance-model.js","sourceRoot":"","sources":["../../src/arch/conformance-model.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,aAAa;IACb,WAAW;IACX,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,kBAAkB;IAClB,qBAAqB;IACrB,mBAAmB;IACnB,2BAA2B;CACnB,CAAA;AAuEV,MAAM,UAAU,WAAW,CAAC,KAAsB;IAChD,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,cAAc,IAAI,EAAE,CAAC,CAAA;IACnD,OAAO,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;AACvE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"constraints.d.ts","sourceRoot":"","sources":["../../src/arch/constraints.ts"],"names":[],"mappings":"AAMA,OAAO,EAEL,KAAK,uBAAuB,EAG5B,KAAK,gBAAgB,EACrB,KAAK,eAAe,EAErB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACvB,MAAM,aAAa,CAAA;AAEpB,eAAO,MAAM,eAAe,uCAAuC,CAAA;AACnE,eAAO,MAAM,sBAAsB,uDAAuD,CAAA;AAC1F,eAAO,MAAM,gBAAgB,uGAAqD,CAAA;AA+BlF,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAW7C;AAgCD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,gBAAgB,GAAG,MAAM,CAWzD;AAsGD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,uBAAuB,CA8BtE;AAUD,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,GAAG,eAAe,CAGxF;AAED,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,kBAAkB,GAC3B,eAAe,CASjB;AAGD,eAAO,MAAM,eAAe,SAAU,MAAM,WAAW,MAAM,KAAG,OACoB,CAAA;AAEpF,MAAM,MAAM,iBAAiB,GACzB;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACnD;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,uBAAuB,CAAA;CAAE,CAAA;AAChG;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,GAAE,MAAqB,GAAG,iBAAiB,CAKpF;AAiDD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAOzF;AA6BD,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,uBAAuB,CAAC,eAAe,CAAC,EACvD,SAAS,EAAE,MAAM,GAChB,MAAM,CAiBR;AA+FD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,uBAAuB,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAyBxF;AACD,wBAAgB,MAAM,CACpB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,SAAS,gBAAgB,EAAE,GACjC,gBAAgB,GAAG,SAAS,CAkB9B"}
1
+ {"version":3,"file":"constraints.d.ts","sourceRoot":"","sources":["../../src/arch/constraints.ts"],"names":[],"mappings":"AAMA,OAAO,EAEL,KAAK,uBAAuB,EAK5B,KAAK,gBAAgB,EACrB,KAAK,eAAe,EAErB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACvB,MAAM,aAAa,CAAA;AAEpB,eAAO,MAAM,eAAe,uCAAuC,CAAA;AACnE,eAAO,MAAM,sBAAsB,uDAAuD,CAAA;AAC1F,eAAO,MAAM,gBAAgB,uGAAqD,CAAA;AA+BlF,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAW7C;AAyCD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,gBAAgB,GAAG,MAAM,CAWzD;AA4JD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,uBAAuB,CAmCtE;AAUD,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,GAAG,eAAe,CAGxF;AAED,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,kBAAkB,GAC3B,eAAe,CASjB;AAGD,eAAO,MAAM,eAAe,SAAU,MAAM,WAAW,MAAM,KAAG,OACoB,CAAA;AAEpF,MAAM,MAAM,iBAAiB,GACzB;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACnD;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,uBAAuB,CAAA;CAAE,CAAA;AAChG;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,GAAE,MAAqB,GAAG,iBAAiB,CAKpF;AAiDD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAOzF;AA6BD,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,uBAAuB,CAAC,eAAe,CAAC,EACvD,SAAS,EAAE,MAAM,GAChB,MAAM,CAiBR;AA6GD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,uBAAuB,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CA0BxF;AACD,wBAAgB,MAAM,CACpB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,SAAS,gBAAgB,EAAE,GACjC,gBAAgB,GAAG,SAAS,CAkB9B"}
@@ -51,12 +51,22 @@ export function safePath(path) {
51
51
  throw new Error(`Invalid architecture path: ${path}`);
52
52
  return path;
53
53
  }
54
- function memberPath(value) {
54
+ /** 成员路径的一段:字母数字开头,不含 `*`、空白与 `..`。 */
55
+ const SEGMENT = '[A-Za-z0-9][A-Za-z0-9._-]*';
56
+ const PACKAGE_MEMBER = `packages/${SEGMENT}/${SEGMENT}`;
57
+ /** 导入例外的成员:`packages/<组>/<包>`、`apps/<应用>`;`examples/` 不在其内。 */
58
+ const IMPORT_MEMBER = new RegExp(`^(?:${PACKAGE_MEMBER}|apps/${SEGMENT})$`, 'u');
59
+ /** 依赖图的成员,与 deps/graph.ts 的 `memberOf` 给出的 `path` 同形:另含 `examples/<示例>`。 */
60
+ const GRAPH_MEMBER = new RegExp(`^(?:${PACKAGE_MEMBER}|(?:apps|examples)/${SEGMENT})$`, 'u');
61
+ function exactMember(value, shape, failure) {
55
62
  const path = safePath(str(value));
56
- if (!/^(packages\/[^/]+\/[^/]+|apps\/[^/]+)$/u.test(path))
57
- throw new Error(`Architecture exceptions require exact members: ${path}`);
63
+ if (!shape.test(path))
64
+ throw new Error(`${failure}: ${path}`);
58
65
  return path;
59
66
  }
67
+ function memberPath(value) {
68
+ return exactMember(value, IMPORT_MEMBER, 'Architecture exceptions require exact members');
69
+ }
60
70
  function importException(value) {
61
71
  const row = obj(value, ['id', 'member', 'target', 'symbols', 'sharedStorage', 'source']);
62
72
  const symbols = strings(row['symbols']);
@@ -178,6 +188,55 @@ function directions(value, roles) {
178
188
  const byId = new Map(roles.map(declared => [declared.id, declared]));
179
189
  return unique((value === undefined ? [] : list(value)).map(item => direction(item, byId)));
180
190
  }
191
+ function groupCycleMember(value) {
192
+ const path = exactMember(value, GRAPH_MEMBER, 'Architecture group cycle exceptions require member paths');
193
+ // 与 `memberOf` 的组同形:`packages/<组>`、`apps`、`examples`。
194
+ return { path, group: path.slice(0, path.lastIndexOf('/')) };
195
+ }
196
+ function ruling(value) {
197
+ const text = str(value);
198
+ let url;
199
+ try {
200
+ url = new URL(text);
201
+ }
202
+ catch {
203
+ throw new Error(`Architecture group cycle exceptions require an https ruling link: ${text}`);
204
+ }
205
+ if (url.protocol !== 'https:')
206
+ throw new Error(`Architecture group cycle exceptions require an https ruling link: ${text}`);
207
+ return text;
208
+ }
209
+ function groupCycleEdge(value) {
210
+ const row = obj(value, ['from', 'to']);
211
+ const from = groupCycleMember(row['from']);
212
+ const to = groupCycleMember(row['to']);
213
+ if (from.group === to.group)
214
+ throw new Error(`Architecture group cycle exceptions require edges across groups: ${from.path} -> ${to.path}`);
215
+ return { from: from.path, to: to.path };
216
+ }
217
+ function groupCycleException(value) {
218
+ const row = obj(value, ['id', 'edges', 'ruling', 'reason']);
219
+ const [first, ...rest] = list(row['edges']).map(groupCycleEdge);
220
+ if (first === undefined)
221
+ throw new Error('Architecture group cycle exceptions require at least one edge');
222
+ return {
223
+ id: str(row['id']),
224
+ edges: [first, ...rest],
225
+ ruling: ruling(row['ruling']),
226
+ reason: str(row['reason']),
227
+ };
228
+ }
229
+ /**
230
+ * schema 3 的 `groupCycleExceptions`:缺省是没有例外;给了就必须是数组。同一条成员边在全部例外里只能出现一次:
231
+ * 放行哪条边由哪条例外负责,不留两份裁定。
232
+ */
233
+ function groupCycleExceptions(value) {
234
+ const rows = unique((value === undefined ? [] : list(value)).map(groupCycleException));
235
+ const keys = rows.flatMap(row => row.edges.map(edge => `${edge.from}\u0000${edge.to}`));
236
+ if (new Set(keys).size !== keys.length)
237
+ throw new Error('Architecture group cycle exceptions repeat an edge');
238
+ return rows;
239
+ }
181
240
  export function parseConstraints(text) {
182
241
  const parsed = JSON.parse(text);
183
242
  if (!record(parsed))
@@ -191,7 +250,7 @@ export function parseConstraints(text) {
191
250
  'roles',
192
251
  'rules',
193
252
  'importExceptions',
194
- ...(schemaVersion === 3 ? ['directions'] : []),
253
+ ...(schemaVersion === 3 ? ['directions', 'groupCycleExceptions'] : []),
195
254
  ]);
196
255
  const domains = unique(list(value['domains']).map(item => {
197
256
  const row = obj(item, ['id', 'label', 'source']);
@@ -205,7 +264,12 @@ export function parseConstraints(text) {
205
264
  roles,
206
265
  rules: unique(list(value['rules']).map(rule)),
207
266
  importExceptions: importExceptions(value['importExceptions']),
208
- ...(schemaVersion === 3 ? { directions: directions(value['directions'], roles) } : {}),
267
+ ...(schemaVersion === 3
268
+ ? {
269
+ directions: directions(value['directions'], roles),
270
+ groupCycleExceptions: groupCycleExceptions(value['groupCycleExceptions']),
271
+ }
272
+ : {}),
209
273
  };
210
274
  }
211
275
  const at = (source) => source.kind === 'worktree' ? { kind: 'worktree' } : { kind: 'revision', commit: source.commit };
@@ -411,6 +475,19 @@ function semanticDirections(rows) {
411
475
  }))),
412
476
  };
413
477
  }
478
+ /** 语义比较里的组环例外:与方向行相同,没有例外时不出现这个键;例外内边的书写顺序不是语义。 */
479
+ function semanticGroupCycleExceptions(rows) {
480
+ if (!rows?.length)
481
+ return {};
482
+ return {
483
+ groupCycleExceptions: sortedById(rows.map(row => ({
484
+ ...row,
485
+ edges: row.edges
486
+ .map(edge => ({ from: edge.from, to: edge.to }))
487
+ .sort((a, b) => `${a.from}\u0000${a.to}`.localeCompare(`${b.from}\u0000${b.to}`)),
488
+ }))),
489
+ };
490
+ }
414
491
  export function semanticConstraints(value) {
415
492
  if (value === null)
416
493
  return null;
@@ -423,6 +500,7 @@ export function semanticConstraints(value) {
423
500
  }
424
501
  : {}),
425
502
  ...semanticDirections(value.directions),
503
+ ...semanticGroupCycleExceptions(value.groupCycleExceptions),
426
504
  rules: sortedById(value.rules),
427
505
  roles: sortedById(value.roles.map(row => ({
428
506
  id: row.id,
@@ -1 +1 @@
1
- {"version":3,"file":"constraints.js","sourceRoot":"","sources":["../../src/arch/constraints.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAC7D,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EACL,QAAQ,GAOT,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EACL,sBAAsB,GAGvB,MAAM,aAAa,CAAA;AAEpB,MAAM,CAAC,MAAM,eAAe,GAAG,oCAAoC,CAAA;AACnE,MAAM,CAAC,MAAM,sBAAsB,GAAG,oDAAoD,CAAA;AAC1F,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,eAAe,EAAE,sBAAsB,CAAU,CAAA;AAClF,MAAM,MAAM,GAAG,CAAC,CAAU,EAAgC,EAAE,CAC1D,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;AAC1D,SAAS,GAAG,CAAC,CAAU,EAAE,IAAuB;IAC9C,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAA;IAC3E,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAA;IACjE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,oDAAoD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC3F,OAAO,CAAC,CAAA;AACV,CAAC;AACD,SAAS,GAAG,CAAC,CAAU;IACrB,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE;QAC1C,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAA;IACtE,OAAO,CAAC,CAAA;AACV,CAAC;AACD,SAAS,OAAO,CAAC,CAAU;IACzB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAA;IACxF,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACtB,IAAI,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,MAAM;QAClC,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAA;IACtE,OAAO,GAAG,CAAA;AACZ,CAAC;AACD,SAAS,IAAI,CAAC,CAAU;IACtB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAA;IACjF,OAAO,CAAC,CAAA;AACV,CAAC;AACD,SAAS,MAAM,CAAoC,MAAW;IAC5D,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,MAAM;QACvD,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAA;IAC1E,OAAO,MAAM,CAAA;AACf,CAAC;AACD,MAAM,UAAU,QAAQ,CAAC,IAAY;IACnC,IACE,UAAU,CAAC,IAAI,CAAC;QAChB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QACnB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,EAAE,CAAC;QAC1E,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;QACtB,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC7C,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;QAE/B,MAAM,IAAI,KAAK,CAAC,8BAA8B,IAAI,EAAE,CAAC,CAAA;IACvD,OAAO,IAAI,CAAA;AACb,CAAC;AACD,SAAS,UAAU,CAAC,KAAc;IAChC,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAA;IACjC,IAAI,CAAC,yCAAyC,CAAC,IAAI,CAAC,IAAI,CAAC;QACvD,MAAM,IAAI,KAAK,CAAC,kDAAkD,IAAI,EAAE,CAAC,CAAA;IAC3E,OAAO,IAAI,CAAA;AACb,CAAC;AACD,SAAS,eAAe,CAAC,KAAc;IACrC,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC,CAAA;IACxF,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAA;IACvC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACtE,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAA;IAC3E,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClB,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACjC,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACjC,OAAO;QACP,aAAa,EAAE,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QACxC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;KAC3B,CAAA;AACH,CAAC;AACD,SAAS,gBAAgB,CAAC,KAAc;IACtC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAA;IAChF,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAA;IAC9B,KAAK,MAAM,GAAG,IAAI,IAAI;QACpB,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;YACjC,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;YAC5D,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAA;YAC3F,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACf,CAAC;IACH,OAAO,IAAI,CAAA;AACb,CAAC;AACD;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,IAAsB;IAC/C,MAAM,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA;IAChE,IAAI,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC;QACzE,MAAM,IAAI,KAAK,CACb,qBAAqB,IAAI,CAAC,EAAE,qCAAqC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACzF,CAAA;IACH,IAAI,MAAM,CAAC,KAAK,KAAK,UAAU;QAC7B,MAAM,IAAI,KAAK,CACb,qBAAqB,IAAI,CAAC,EAAE,qDAAqD,CAClF,CAAA;IACH,OAAO,MAAM,CAAC,IAAI,CAAA;AACpB,CAAC;AACD,oEAAoE;AACpE,MAAM,MAAM,GAAG,CAAC,OAAe,EAAE,KAAa,EAAW,EAAE,CACzD,OAAO,KAAK,KAAK,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAM1F;;;GAGG;AACH,SAAS,aAAa,CAAC,EAAU,EAAE,KAA4C;IAC7E,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IAC1B,IAAI,IAAI,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,kDAAkD,EAAE,EAAE,CAAC,CAAA;IAC/F,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;IAC/B,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;QACnC,IAAI,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE;YAAE,SAAQ;QAClC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACrC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAClF,CAAA;QACD,IAAI,OAAO,KAAK,SAAS;YACvB,MAAM,IAAI,KAAK,CACb,qBAAqB,IAAI,CAAC,EAAE,oCAAoC,KAAK,CAAC,EAAE,KAAK,OAAO,EAAE,CACvF,CAAA;IACL,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,CAAA;AACvB,CAAC;AACD,MAAM,YAAY,GAAG,iCAAiC,CAAA;AAEtD,SAAS,QAAQ,CAAC,CAAU,EAAE,KAA4C;IACxE,MAAM,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;IACnC,IAAI,KAAK,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAA;IAC/F,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAA;AACnF,CAAC;AACD,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,IAAI,CAAW,EAAyB,EAAE,CAAC;IACnE,KAAK,CAAC,EAAE;IACR,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;CAC3B,CAAA;AACD;;;GAGG;AACH,SAAS,gBAAgB,CAAC,EAAU,EAAE,IAAc,EAAE,EAAY;IAChE,KAAK,MAAM,MAAM,IAAI,IAAI,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,CAAA;QAC3D,IAAI,MAAM,KAAK,SAAS;YACtB,MAAM,IAAI,KAAK,CACb,0BAA0B,EAAE,qBAAqB,MAAM,CAAC,EAAE,oBAAoB,MAAM,CAAC,EAAE,uBAAuB,MAAM,CAAC,MAAM,EAAE,CAC9H,CAAA;IACL,CAAC;AACH,CAAC;AACD,SAAS,SAAS,CAChB,KAAc,EACd,KAA4C;IAE5C,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAA;IACtD,MAAM,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAA;IACzB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,EAAE,EAAE,CAAC,CAAA;IACvF,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,EACvC,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAA;IACjC,gBAAgB,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAA;IAC9B,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAA;AAC7E,CAAC;AACD,MAAM,MAAM,GAAqB;IAC/B,aAAa;IACb,QAAQ;IACR,UAAU;IACV,cAAc;IACd,iBAAiB;IACjB,UAAU;IACV,SAAS;CACV,CAAA;AACD,MAAM,QAAQ,GAA0C,CAAC,SAAS,EAAE,WAAW,EAAE,SAAS,CAAC,CAAA;AAC3F,SAAS,IAAI,CAAC,IAAa,EAAE,SAA8B;IACzD,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAA;IAC9E,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAC/C,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EACjD,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EACrD,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAA;IACnC,IACE,KAAK,CAAC,MAAM,KAAK,CAAC;QAClB,KAAK,KAAK,SAAS;QACnB,MAAM,KAAK,SAAS;QACpB,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEtC,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAA;IAC9C,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAA;AACnG,CAAC;AACD,SAAS,IAAI,CAAC,IAAa;IACzB,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,EACrC,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAA;IACrB,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,KAAK,EAAE,CAAC,CAAA;IAC1D,IAAI,KAAK,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,EAAE,EAAE,CAAC,CAAA;IAC3E,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAA;AAClD,CAAC;AACD,6DAA6D;AAC7D,SAAS,UAAU,CAAC,KAAc,EAAE,KAAkC;IACpE,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAA;IACpE,OAAO,MAAM,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAA;AAC5F,CAAC;AACD,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACxC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAA;IAClF,MAAM,aAAa,GAAG,MAAM,CAAC,eAAe,CAAC,CAAA;IAC7C,IAAI,aAAa,KAAK,CAAC,IAAI,aAAa,KAAK,CAAC,IAAI,aAAa,KAAK,CAAC;QACnE,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAA;IAC/D,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,EAAE;QACxB,eAAe;QACf,SAAS;QACT,OAAO;QACP,OAAO;QACP,kBAAkB;QAClB,GAAG,CAAC,aAAa,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KAC/C,CAAC,CAAA;IACF,MAAM,OAAO,GAAG,MAAM,CACpB,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;QAChC,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAA;QAChD,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAA;IACrF,CAAC,CAAC,CACH,CAAA;IACD,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACjD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAA;IAC7E,OAAO;QACL,aAAa;QACb,OAAO;QACP,KAAK;QACL,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC7C,gBAAgB,EAAE,gBAAgB,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAC7D,GAAG,CAAC,aAAa,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACvF,CAAA;AACH,CAAC;AAKD,MAAM,EAAE,GAAG,CAAC,MAAkD,EAAc,EAAE,CAC5E,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAA;AACjG,MAAM,KAAK,GAAG,CAAC,MAAkD,EAAE,EAAE,CACnE,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,MAAM,EAAE,CAAA;AAEnC,MAAM,UAAU,eAAe,CAAC,IAAY,EAAE,MAAyB;IACrE,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;IAC9D,OAAO,EAAE,GAAG,QAAQ,EAAE,MAAM,EAAE,CAAA;AAChC,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,IAAY,EACZ,QAA4B;IAE5B,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU;QACrC,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAA;IAClF,OAAO;QACL,GAAG,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;YACjE,GAAG,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE;SAClC,CAAC;QACF,MAAM,EAAE,QAAQ,CAAC,MAAM;KACxB,CAAA;AACH,CAAC;AAED,MAAM,YAAY,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,wCAAwC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAC1F,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,IAAY,EAAE,OAAe,EAAW,EAAE,CACxE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAA;AAKpF;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAI,GAAW,UAAU,EAAE;IAC/D,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,UAAU,IAAI,EAAE,CAAC,CAAA;IAC3E,OAAO,QAAQ,CAAC,KAAK,KAAK,IAAI;QAC5B,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE;QAC1C,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAA;AACrE,CAAC;AAED,2CAA2C;AAC3C,SAAS,YAAY,CACnB,IAAY,EACZ,MAAkB,EAClB,KAAa,EACb,aAAiC;IAEjC,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IACxC,MAAM,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QAC9C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAA;QACvB,OAAO,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;IACnD,CAAC,CAAC,CAAA;IACF,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;QACpB,MAAM,IAAI,KAAK,CACb,yCAAyC,KAAK,KAAK,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC/F,CAAA;IACH,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;IAC3B,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAA;IACtF,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QAC7C,MAAM,cAAc,GAAG,KAAK,CAAC,KAAK;aAC/B,MAAM,CACL,IAAI,CAAC,EAAE,CACL,aAAa,KAAK,SAAS;YAC3B,YAAY,CAAC,oBAAoB,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YACnF,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAC1F;aACA,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACvB,MAAM,QAAQ,GAAG;YACf,GAAG,KAAK;YACR,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SACrE,CAAA;QACD,MAAM,OAAO,GAAG,yBAAyB,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAA;QACxE,OAAO;YACL,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,KAAK;YACL,OAAO;YACP,GAAG,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC;SAC3D,CAAA;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,GAAG,KAAK,IAAI,QAAQ,CAAC,IAAI,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EACtF,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAA;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,IAAY,EAAE,QAAiB;IACpE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,GAC5B,QAAQ,KAAK,SAAS;QACpB,CAAC,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,YAAY,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;QAC1F,CAAC,CAAC,uBAAuB,CAAC,IAAI,EAAE,sBAAsB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAA;IAC3E,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,gBAAgB,CAAA;IAC3C,OAAO,CAAC,IAAI,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;AACtD,CAAC;AAED,SAAS,aAAa,CAAC,IAAY,EAAE,MAAkB;IACrD,MAAM,KAAK,GAAG,IAAI,GAAG,EAA8B,CAAA;IACnD,OAAO,CAAC,IAAY,EAAsB,EAAE;QAC1C,QAAQ,CAAC,IAAI,CAAC,CAAA;QACd,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAC3C,IAAI,IAAwB,CAAA;QAC5B,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC/B,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;YAC/D,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;gBACjB,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC;oBACvC,MAAM,IAAI,KAAK,CAAC,+CAA+C,MAAM,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC,CAAA;gBAC1F,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;gBACxC,IAAI,IAAI,KAAK,SAAS;oBACpB,MAAM,IAAI,KAAK,CAAC,qCAAqC,MAAM,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC,CAAA;YAClF,CAAC;QACH,CAAC;aAAM,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,KAAK,SAAS,EAAE,CAAC;YAChF,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;YAC7C,MAAM,SAAS,GAAG,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAA;YACtD,IAAI,UAAU,CAAC,SAAS,CAAC,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC;gBAC5E,MAAM,IAAI,KAAK,CAAC,wCAAwC,IAAI,EAAE,CAAC,CAAA;YACjE,IAAI,GAAG,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QACrC,CAAC;QACD,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QACrB,OAAO,IAAI,CAAA;IACb,CAAC,CAAA;AACH,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,IAAY,EACZ,aAAuD,EACvD,SAAiB;IAEjB,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACnD,IACE,GAAG,KAAK,SAAS;QACjB,GAAG,KAAK,EAAE;QACV,KAAK,KAAK,SAAS;QACnB,QAAQ,KAAK,EAAE;QACf,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC;QAEjB,MAAM,IAAI,KAAK,CAAC,gCAAgC,SAAS,EAAE,CAAC,CAAA;IAC9D,MAAM,OAAO,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAA;IACvC,QAAQ,CAAC,OAAO,CAAC,CAAA;IACjB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,yCAAyC,SAAS,EAAE,CAAC,CAAA;IACvE,MAAM,MAAM,GACV,aAAa,KAAK,CAAC,IAAI,yDAAyD,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAChG,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC,CAAA;AAC9E,CAAC;AAED,SAAS,eAAe,CAAC,IAAY;IACnC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAA;IACjC,IAAI,KAAyB,CAAA;IAC7B,IAAI,QAAQ,GAAG,EAAE,CAAA;IACjB,KAAK,MAAM,IAAI,IAAI,IAAI;SACpB,OAAO,CAAC,uCAAuC,EAAE,EAAE,CAAC;SACpD,OAAO,CAAC,yBAAyB,EAAE,EAAE,CAAC;SACtC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnB,MAAM,MAAM,GAAG,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QACtD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,IAAI,KAAK,KAAK,SAAS;gBAAE,KAAK,GAAG,MAAM,CAAA;iBAClC,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM;gBAAE,KAAK,GAAG,SAAS,CAAA;YACnF,QAAQ,GAAG,EAAE,CAAA;YACb,SAAQ;QACV,CAAC;QACD,IAAI,KAAK,KAAK,SAAS,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,SAAQ;QAC/D,MAAM,OAAO,GACX,iCAAiC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YACjD,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;QAC7D,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;YAC5C,MAAM,IAAI,GAAG,OAAO;iBACjB,OAAO,CAAC,+BAA+B,EAAE,IAAI,CAAC;iBAC9C,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;iBACxB,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;iBACrB,WAAW,EAAE;iBACb,OAAO,CAAC,qBAAqB,EAAE,EAAE,CAAC;iBAClC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;YACvB,IAAI,MAAM,GAAG,IAAI,EACf,MAAM,GAAG,CAAC,CAAA;YACZ,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;gBAAE,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,MAAM,EAAE,CAAA;YAC1D,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QACrB,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,IAAI;aACrB,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC;aAC1B,QAAQ,CAAC,iDAAiD,CAAC,EAAE,CAAC;YAC/D,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;YACvB,IAAI,MAAM,KAAK,SAAS;gBAAE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAC/C,CAAC;QACD,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;IACxB,CAAC;IACD,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,SAAS,yBAAyB,CAChC,IAAY,EACZ,KAA8B,EAC9B,IAA0C;IAE1C,MAAM,OAAO,GAAG,IAAI,GAAG,EAAuB,CAAA;IAC9C,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAA;IACzC,KAAK,MAAM,GAAG,IAAI;QAChB,GAAG,KAAK,CAAC,OAAO;QAChB,GAAG,KAAK,CAAC,KAAK;QACd,GAAG,KAAK,CAAC,KAAK;QACd,GAAG,CAAC,KAAK,CAAC,gBAAgB,IAAI,EAAE,CAAC;QACjC,GAAG,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC;KAC5B,EAAE,CAAC;QACF,MAAM,MAAM,GAAG,oBAAoB,CAAC,IAAI,EAAE,KAAK,CAAC,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;QAC1E,IAAI,YAAY,CAAC,MAAM,CAAC;YACtB,MAAM,IAAI,KAAK,CACb,GAAG,IAAI,IAAI,GAAG,CAAC,EAAE,wDAAwD,MAAM,EAAE,CAClF,CAAA;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAA;QACzB,IAAI,IAAI,KAAK,SAAS;YACpB,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,IAAI,GAAG,CAAC,EAAE,oBAAoB,GAAG,CAAC,MAAM,KAAK,MAAM,GAAG,CAAC,CAAA;QAChF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;YAAE,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;QAC9F,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;QACzC,IAAI,QAAQ,KAAK,SAAS;YAAE,SAAQ;QACpC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,CAAA;QAC1D,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;QAC1B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,IAAI,GAAG,CAAC,EAAE,2BAA2B,GAAG,CAAC,MAAM,KAAK,MAAM,GAAG,CAAC,CAAA;IACzF,CAAC;IACD,OAAO,CAAC,GAAG,OAAO,CAAC;SAChB,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;SACtC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAA;AAChD,CAAC;AACD,MAAM,UAAU,GAAG,CAAoC,KAAmB,EAAE,EAAE,CAC5E,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AACrD,oEAAoE;AACpE,SAAS,kBAAkB,CAAC,IAA2C;IACrE,IAAI,CAAC,IAAI,EAAE,MAAM;QAAE,OAAO,EAAE,CAAA;IAC5B,OAAO;QACL,UAAU,EAAE,UAAU,CACpB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACf,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;YAC1B,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE;YACtB,MAAM,EAAE,GAAG,CAAC,MAAM;SACnB,CAAC,CAAC,CACJ;KACF,CAAA;AACH,CAAC;AACD,MAAM,UAAU,mBAAmB,CAAC,KAAqC;IACvE,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAA;IAC/B,OAAO,IAAI,CAAC,SAAS,CAAC;QACpB,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC;QAClC,GAAG,CAAC,KAAK,CAAC,gBAAgB,EAAE,MAAM;YAChC,CAAC,CAAC;gBACE,gBAAgB,EAAE,UAAU,CAC1B,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,OAAO,EAAE,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAClF;aACF;YACH,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,kBAAkB,CAAC,KAAK,CAAC,UAAU,CAAC;QACvC,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC;QAC9B,KAAK,EAAE,UAAU,CACf,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACtB,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE;YAC5B,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,OAAO,EAAE,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE;YAChC,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,MAAM,EAAE,GAAG,CAAC,MAAM;SACnB,CAAC,CAAC,CACJ;KACF,CAAC,CAAA;AACJ,CAAC;AACD,MAAM,UAAU,MAAM,CACpB,IAAY,EACZ,KAAkC;IAElC,MAAM,OAAO,GAAG,KAAK;SAClB,OAAO,CAAC,IAAI,CAAC,EAAE,CACd,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;QAC3B,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;QACzE,OAAO,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC;YACnC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7D,CAAC,CAAC,EAAE,CAAA;IACR,CAAC,CAAC,CACH;SACA,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,CAAA;IAC5C,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;IACtB,IACE,GAAG,KAAK,SAAS;QACjB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,KAAK,GAAG,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAEtF,OAAO,SAAS,CAAA;IAClB,OAAO,GAAG,CAAC,IAAI,CAAA;AACjB,CAAC"}
1
+ {"version":3,"file":"constraints.js","sourceRoot":"","sources":["../../src/arch/constraints.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import type { DependencyFinding, GroupCycleFinding } from '../deps/graph.ts';
2
+ import type { ArchitectureGroupCycleEdge, ArchitectureGroupCycleException } from './conformance-model.ts';
3
+ import type { RunnerConstraints } from './constraints.ts';
4
+ /** 登记了却没有出现在任何组环里的边:例外过期、边被删或边不再属于组环,照常失败。 */
5
+ export type GroupCycleExceptionFinding = DependencyFinding<'unused-group-cycle-exception'>;
6
+ /** 放行一个组环所用的一条登记边,与登记它的例外。 */
7
+ export interface ReleasedEdge {
8
+ readonly edge: ArchitectureGroupCycleEdge;
9
+ readonly exception: ArchitectureGroupCycleException;
10
+ }
11
+ /** 一个按例外放行的组环:环上的每条跨组成员边都登记了,`released` 是这些边与登记它们的例外。 */
12
+ export interface ExceptedGroupCycle {
13
+ readonly finding: GroupCycleFinding;
14
+ readonly released: readonly ReleasedEdge[];
15
+ }
16
+ export interface GroupCycleJudgement {
17
+ /** 照常失败的发现:原发现去掉放行的组环,原顺序不变。 */
18
+ readonly findings: readonly DependencyFinding[];
19
+ readonly excepted: readonly ExceptedGroupCycle[];
20
+ /** 每条有边没用上的例外一条,按例外在文件里的顺序。 */
21
+ readonly unused: readonly GroupCycleExceptionFinding[];
22
+ }
23
+ /** runner 的例外;runner 没有 `constraints.json` 或文件是 schema 1、2 时没有例外。 */
24
+ export declare function runnerGroupCycleExceptions(constraints: RunnerConstraints): readonly ArchitectureGroupCycleException[];
25
+ export declare function judgeGroupCycles(findings: readonly DependencyFinding[], exceptions: readonly ArchitectureGroupCycleException[]): GroupCycleJudgement;
26
+ /** 给人看的一行:哪个组环靠哪条例外的哪些边放行,带裁定链接。 */
27
+ export declare function exceptedLine(item: ExceptedGroupCycle): string;
28
+ //# sourceMappingURL=group-cycles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"group-cycles.d.ts","sourceRoot":"","sources":["../../src/arch/group-cycles.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAe,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACzF,OAAO,KAAK,EACV,0BAA0B,EAC1B,+BAA+B,EAChC,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAEzD,8CAA8C;AAC9C,MAAM,MAAM,0BAA0B,GAAG,iBAAiB,CAAC,8BAA8B,CAAC,CAAA;AAE1F,8BAA8B;AAC9B,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,0BAA0B,CAAA;IACzC,QAAQ,CAAC,SAAS,EAAE,+BAA+B,CAAA;CACpD;AAED,yDAAyD;AACzD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAA;IACnC,QAAQ,CAAC,QAAQ,EAAE,SAAS,YAAY,EAAE,CAAA;CAC3C;AAED,MAAM,WAAW,mBAAmB;IAClC,gCAAgC;IAChC,QAAQ,CAAC,QAAQ,EAAE,SAAS,iBAAiB,EAAE,CAAA;IAC/C,QAAQ,CAAC,QAAQ,EAAE,SAAS,kBAAkB,EAAE,CAAA;IAChD,+BAA+B;IAC/B,QAAQ,CAAC,MAAM,EAAE,SAAS,0BAA0B,EAAE,CAAA;CACvD;AAED,qEAAqE;AACrE,wBAAgB,0BAA0B,CACxC,WAAW,EAAE,iBAAiB,GAC7B,SAAS,+BAA+B,EAAE,CAE5C;AAKD,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,SAAS,iBAAiB,EAAE,EACtC,UAAU,EAAE,SAAS,+BAA+B,EAAE,GACrD,mBAAmB,CAyCrB;AAED,oCAAoC;AACpC,wBAAgB,YAAY,CAAC,IAAI,EAAE,kBAAkB,GAAG,MAAM,CAe7D"}
@@ -0,0 +1,65 @@
1
+ /** runner 的例外;runner 没有 `constraints.json` 或文件是 schema 1、2 时没有例外。 */
2
+ export function runnerGroupCycleExceptions(constraints) {
3
+ return constraints.kind === 'missing' ? [] : (constraints.value.groupCycleExceptions ?? []);
4
+ }
5
+ const edgeKey = (edge) => `${edge.from}\u0000${edge.to}`;
6
+ const arrow = (edge) => `${edge.from} → ${edge.to}`;
7
+ export function judgeGroupCycles(findings, exceptions) {
8
+ const registered = new Map();
9
+ for (const exception of exceptions)
10
+ for (const edge of exception.edges)
11
+ registered.set(edgeKey(edge), { edge, exception });
12
+ const kept = [];
13
+ const excepted = [];
14
+ const appearing = new Set();
15
+ for (const finding of findings) {
16
+ if (finding.kind !== 'group-cycle') {
17
+ kept.push(finding);
18
+ continue;
19
+ }
20
+ const released = [];
21
+ const unregistered = [];
22
+ for (const edge of finding.edges) {
23
+ appearing.add(edgeKey(edge));
24
+ const hit = registered.get(edgeKey(edge));
25
+ if (hit === undefined)
26
+ unregistered.push(edge);
27
+ else
28
+ released.push(hit);
29
+ }
30
+ if (released.length === 0)
31
+ kept.push(finding);
32
+ else if (unregistered.length > 0)
33
+ kept.push({
34
+ ...finding,
35
+ message: `${finding.message};环上未登记为例外的边:${unregistered.map(arrow).join('、')}`,
36
+ });
37
+ else
38
+ excepted.push({ finding, released });
39
+ }
40
+ const unused = [];
41
+ for (const exception of exceptions) {
42
+ const lost = exception.edges.filter(edge => !appearing.has(edgeKey(edge)));
43
+ if (lost.length > 0)
44
+ unused.push({
45
+ kind: 'unused-group-cycle-exception',
46
+ rule: 'unused-group-cycle-exception',
47
+ message: `组环例外 ${exception.id} 登记的边没有出现在任何组环里:${lost.map(arrow).join('、')}(裁定 ${exception.ruling})。组环已经消失或这条边不在环上,删掉或改写这条例外`,
48
+ sites: [],
49
+ edges: lost,
50
+ });
51
+ }
52
+ return { findings: kept, excepted, unused };
53
+ }
54
+ /** 给人看的一行:哪个组环靠哪条例外的哪些边放行,带裁定链接。 */
55
+ export function exceptedLine(item) {
56
+ const byException = new Map();
57
+ for (const { edge, exception } of item.released) {
58
+ const entry = byException.get(exception.id) ?? { exception, edges: [] };
59
+ entry.edges.push(edge);
60
+ byException.set(exception.id, entry);
61
+ }
62
+ const used = [...byException.values()].map(({ exception, edges }) => `例外 ${exception.id}(裁定 ${exception.ruling})放行 ${edges.map(arrow).join('、')}:${exception.reason}`);
63
+ return `组环 ${item.finding.groups.join('、')} 按${used.join(';')}`;
64
+ }
65
+ //# sourceMappingURL=group-cycles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"group-cycles.js","sourceRoot":"","sources":["../../src/arch/group-cycles.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,82 @@
1
+ import { type ApiChange } from './api-classify.ts';
2
+ import { type ContractApiConfig, type DiffMember } from './contract-api.ts';
3
+ export declare const BASELINE_MARKER = "omne-contract-baseline:v1";
4
+ /** 一个契约成员的基线登记。 */
5
+ export interface BaselineMember {
6
+ /** 成员目录,仓库相对。 */
7
+ readonly path: string;
8
+ /** 这个成员的基线提交,40 位小写十六进制。 */
9
+ readonly commit: string;
10
+ /** 该提交上快照文件字节的 SHA-256,口径同 `--check --json`。 */
11
+ readonly sha256: string;
12
+ /** `git rev-parse <commit>:<path>/api` 的树号。 */
13
+ readonly apiTree: string;
14
+ }
15
+ export interface ContractBaseline {
16
+ /** 里程碑名;生成时没给 `--milestone` 为 null。 */
17
+ readonly milestone: string | null;
18
+ /** 按 `path` 排序,`path` 不重复。 */
19
+ readonly members: readonly BaselineMember[];
20
+ /** 承接破坏性改动的 integration 卡;调度者在破坏性裁定读回后补登记。 */
21
+ readonly breakingCards?: readonly string[];
22
+ }
23
+ export declare class BaselineFormatError extends Error {
24
+ }
25
+ /** 校验区块的 JSON 值:键、成员的格式、`path` 不重复、`breakingCards` 是不重复的非空字符串。 */
26
+ export declare function parseBaseline(value: unknown): ContractBaseline;
27
+ /**
28
+ * 读区块:整段文本是 JSON 时按 JSON 读,否则须恰好含一个 `json omne-contract-baseline:v1` 围栏,
29
+ * 例如一条登记评论的正文。没有或多于一个围栏、JSON 不合格时抛 BaselineFormatError。
30
+ */
31
+ export declare function parseBaselineText(input: string): ContractBaseline;
32
+ /** 评论里用的围栏区块;键的顺序固定,成员按 `path` 排序。 */
33
+ export declare function renderBaselineBlock(baseline: ContractBaseline): string;
34
+ /**
35
+ * 从提交 `ref` 生成基线:成员取那个提交的线归属表,`members` 给出时只写这些成员。
36
+ * 成员不是那个提交的契约成员、声明不全、没有快照文件或没有 `api` 目录时抛出。
37
+ */
38
+ export declare function writeBaseline(root: string, config: ContractApiConfig, ref: string, options: {
39
+ milestone: string | null;
40
+ members?: readonly string[];
41
+ }): ContractBaseline;
42
+ /** 一条登记与它的提交对不上:只报告,不改变分类与退出码。 */
43
+ export interface RegistrationFinding {
44
+ readonly path: string;
45
+ readonly code: 'sha256-mismatch' | 'api-tree-mismatch' | 'not-a-contract-member';
46
+ readonly registered: string;
47
+ readonly actual: string | null;
48
+ }
49
+ /** 一个成员的核对结果;`commit` 是登记的基线提交,没有登记的成员为 null。 */
50
+ export type BaselineMemberRun = DiffMember & {
51
+ readonly commit: string | null;
52
+ };
53
+ /** 判不了的成员:登记一侧读不出,或基线上已是契约成员却没有登记。有一项就拒绝。 */
54
+ export interface UndeterminedMember {
55
+ readonly path: string;
56
+ readonly reason: string;
57
+ }
58
+ export interface BaselineRun {
59
+ readonly milestone: string | null;
60
+ readonly change: ApiChange;
61
+ readonly breakingCards: readonly string[];
62
+ /** 有判不了的成员,或分类为 review 且没有 breakingCards。 */
63
+ readonly refused: boolean;
64
+ readonly members: readonly BaselineMemberRun[];
65
+ readonly registration: readonly RegistrationFinding[];
66
+ /** breakingCards 不能放行这些成员。 */
67
+ readonly undetermined: readonly UndeterminedMember[];
68
+ }
69
+ /**
70
+ * 逐成员从登记的提交比到工作树的快照,分类与 `--diff` 相同。成员取登记与当前线归属表的并集:
71
+ *
72
+ * - 登记的成员在它的提交上不是契约成员、读不出或没有快照文件时判不了。
73
+ * - 没有登记、只在当前表里的成员:在基线点(全部登记提交的共同祖先)上已是契约成员的,是漏登记,
74
+ * 判不了;不是的,是基线之后加入的,基线一侧没有快照,整份算新增。
75
+ * - 只在登记里的成员整份算删除。
76
+ *
77
+ * 有判不了的成员就拒绝,breakingCards 不能放行。登记的提交上快照的 sha256 或 api 树与登记不同时,
78
+ * 记在 `registration`,只报告。
79
+ */
80
+ export declare function checkBaseline(root: string, config: ContractApiConfig, baseline: ContractBaseline): BaselineRun;
81
+ export declare function renderBaseline(run: BaselineRun): string[];
82
+ //# sourceMappingURL=api-baseline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-baseline.d.ts","sourceRoot":"","sources":["../../src/declarations/api-baseline.ts"],"names":[],"mappings":"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"}