@jasonbelmonti/markdown-engine 2.0.0 → 3.0.0

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 (152) hide show
  1. package/CHANGELOG.md +26 -1
  2. package/README.md +65 -57
  3. package/dist/api/declarative-validation.d.ts +2 -2
  4. package/dist/api/declarative-validation.d.ts.map +1 -1
  5. package/dist/api/declarative-validation.js +53 -31
  6. package/dist/api/declarative-validation.js.map +1 -1
  7. package/dist/cli/declarative-validation.d.ts.map +1 -1
  8. package/dist/cli/declarative-validation.js +7 -12
  9. package/dist/cli/declarative-validation.js.map +1 -1
  10. package/dist/declarative-validation/applicability/classifier.d.ts +18 -0
  11. package/dist/declarative-validation/applicability/classifier.d.ts.map +1 -0
  12. package/dist/declarative-validation/applicability/classifier.js +37 -0
  13. package/dist/declarative-validation/applicability/classifier.js.map +1 -0
  14. package/dist/declarative-validation/applicability/index.d.ts +2 -0
  15. package/dist/declarative-validation/applicability/index.d.ts.map +1 -0
  16. package/dist/declarative-validation/applicability/index.js +2 -0
  17. package/dist/declarative-validation/applicability/index.js.map +1 -0
  18. package/dist/declarative-validation/assertions/context.d.ts +2 -2
  19. package/dist/declarative-validation/assertions/context.d.ts.map +1 -1
  20. package/dist/declarative-validation/assertions/diagnostics.d.ts +7 -4
  21. package/dist/declarative-validation/assertions/diagnostics.d.ts.map +1 -1
  22. package/dist/declarative-validation/assertions/diagnostics.js +26 -1
  23. package/dist/declarative-validation/assertions/diagnostics.js.map +1 -1
  24. package/dist/declarative-validation/assertions/evaluator.d.ts +2 -2
  25. package/dist/declarative-validation/assertions/evaluator.d.ts.map +1 -1
  26. package/dist/declarative-validation/assertions/evaluator.js +3 -0
  27. package/dist/declarative-validation/assertions/evaluator.js.map +1 -1
  28. package/dist/declarative-validation/assertions/group-evaluator.d.ts +6 -0
  29. package/dist/declarative-validation/assertions/group-evaluator.d.ts.map +1 -0
  30. package/dist/declarative-validation/assertions/group-evaluator.js +57 -0
  31. package/dist/declarative-validation/assertions/group-evaluator.js.map +1 -0
  32. package/dist/declarative-validation/assertions/id-targets.d.ts +15 -0
  33. package/dist/declarative-validation/assertions/id-targets.d.ts.map +1 -1
  34. package/dist/declarative-validation/assertions/id-targets.js +18 -55
  35. package/dist/declarative-validation/assertions/id-targets.js.map +1 -1
  36. package/dist/declarative-validation/assertions/ids.d.ts.map +1 -1
  37. package/dist/declarative-validation/assertions/ids.js +100 -14
  38. package/dist/declarative-validation/assertions/ids.js.map +1 -1
  39. package/dist/declarative-validation/assertions/index.d.ts +1 -0
  40. package/dist/declarative-validation/assertions/index.d.ts.map +1 -1
  41. package/dist/declarative-validation/assertions/index.js +1 -0
  42. package/dist/declarative-validation/assertions/index.js.map +1 -1
  43. package/dist/declarative-validation/assertions/table-column-coverage.d.ts +9 -0
  44. package/dist/declarative-validation/assertions/table-column-coverage.d.ts.map +1 -0
  45. package/dist/declarative-validation/assertions/table-column-coverage.js +108 -0
  46. package/dist/declarative-validation/assertions/table-column-coverage.js.map +1 -0
  47. package/dist/declarative-validation/compiler/applicability-plan.d.ts +5 -0
  48. package/dist/declarative-validation/compiler/applicability-plan.d.ts.map +1 -0
  49. package/dist/declarative-validation/compiler/applicability-plan.js +22 -0
  50. package/dist/declarative-validation/compiler/applicability-plan.js.map +1 -0
  51. package/dist/declarative-validation/compiler/assertion-builders.d.ts +2 -1
  52. package/dist/declarative-validation/compiler/assertion-builders.d.ts.map +1 -1
  53. package/dist/declarative-validation/compiler/assertion-builders.js +51 -13
  54. package/dist/declarative-validation/compiler/assertion-builders.js.map +1 -1
  55. package/dist/declarative-validation/compiler/assertion-shapes.d.ts +3 -1
  56. package/dist/declarative-validation/compiler/assertion-shapes.d.ts.map +1 -1
  57. package/dist/declarative-validation/compiler/assertion-shapes.js +90 -0
  58. package/dist/declarative-validation/compiler/assertion-shapes.js.map +1 -1
  59. package/dist/declarative-validation/compiler/assertions.d.ts +2 -1
  60. package/dist/declarative-validation/compiler/assertions.d.ts.map +1 -1
  61. package/dist/declarative-validation/compiler/assertions.js +14 -4
  62. package/dist/declarative-validation/compiler/assertions.js.map +1 -1
  63. package/dist/declarative-validation/compiler/compatibility.d.ts.map +1 -1
  64. package/dist/declarative-validation/compiler/compatibility.js +1 -0
  65. package/dist/declarative-validation/compiler/compatibility.js.map +1 -1
  66. package/dist/declarative-validation/compiler/group-plans.d.ts +6 -0
  67. package/dist/declarative-validation/compiler/group-plans.d.ts.map +1 -0
  68. package/dist/declarative-validation/compiler/group-plans.js +67 -0
  69. package/dist/declarative-validation/compiler/group-plans.js.map +1 -0
  70. package/dist/declarative-validation/compiler/index.d.ts +1 -1
  71. package/dist/declarative-validation/compiler/index.d.ts.map +1 -1
  72. package/dist/declarative-validation/compiler/index.js +70 -35
  73. package/dist/declarative-validation/compiler/index.js.map +1 -1
  74. package/dist/declarative-validation/compiler/plan.d.ts +72 -4
  75. package/dist/declarative-validation/compiler/plan.d.ts.map +1 -1
  76. package/dist/declarative-validation/compiler/rule-fields.d.ts +6 -0
  77. package/dist/declarative-validation/compiler/rule-fields.d.ts.map +1 -0
  78. package/dist/declarative-validation/compiler/rule-fields.js +40 -0
  79. package/dist/declarative-validation/compiler/rule-fields.js.map +1 -0
  80. package/dist/declarative-validation/diagnostics/profile-config-diagnostics.d.ts +0 -1
  81. package/dist/declarative-validation/diagnostics/profile-config-diagnostics.d.ts.map +1 -1
  82. package/dist/declarative-validation/diagnostics/profile-config-diagnostics.js +8 -2
  83. package/dist/declarative-validation/diagnostics/profile-config-diagnostics.js.map +1 -1
  84. package/dist/declarative-validation/evidence/index.d.ts +3 -3
  85. package/dist/declarative-validation/evidence/index.d.ts.map +1 -1
  86. package/dist/declarative-validation/evidence/index.js +6 -6
  87. package/dist/declarative-validation/evidence/index.js.map +1 -1
  88. package/dist/declarative-validation/profile/applicability-schema.d.ts +4 -0
  89. package/dist/declarative-validation/profile/applicability-schema.d.ts.map +1 -0
  90. package/dist/declarative-validation/profile/applicability-schema.js +24 -0
  91. package/dist/declarative-validation/profile/applicability-schema.js.map +1 -0
  92. package/dist/declarative-validation/profile/assertion-schema.d.ts +2 -1
  93. package/dist/declarative-validation/profile/assertion-schema.d.ts.map +1 -1
  94. package/dist/declarative-validation/profile/assertion-schema.js +149 -14
  95. package/dist/declarative-validation/profile/assertion-schema.js.map +1 -1
  96. package/dist/declarative-validation/profile/direct-profile-diagnostics.d.ts +3 -1
  97. package/dist/declarative-validation/profile/direct-profile-diagnostics.d.ts.map +1 -1
  98. package/dist/declarative-validation/profile/direct-profile-diagnostics.js +10 -2
  99. package/dist/declarative-validation/profile/direct-profile-diagnostics.js.map +1 -1
  100. package/dist/declarative-validation/profile/group-schema.d.ts +5 -0
  101. package/dist/declarative-validation/profile/group-schema.d.ts.map +1 -0
  102. package/dist/declarative-validation/profile/group-schema.js +55 -0
  103. package/dist/declarative-validation/profile/group-schema.js.map +1 -0
  104. package/dist/declarative-validation/profile/ids-assertion-contract.d.ts +12 -0
  105. package/dist/declarative-validation/profile/ids-assertion-contract.d.ts.map +1 -0
  106. package/dist/declarative-validation/profile/ids-assertion-contract.js +32 -0
  107. package/dist/declarative-validation/profile/ids-assertion-contract.js.map +1 -0
  108. package/dist/declarative-validation/profile/index.d.ts +42 -2
  109. package/dist/declarative-validation/profile/index.d.ts.map +1 -1
  110. package/dist/declarative-validation/profile/index.js.map +1 -1
  111. package/dist/declarative-validation/profile/materialization.d.ts.map +1 -1
  112. package/dist/declarative-validation/profile/materialization.js +13 -10
  113. package/dist/declarative-validation/profile/materialization.js.map +1 -1
  114. package/dist/declarative-validation/profile/schema.d.ts.map +1 -1
  115. package/dist/declarative-validation/profile/schema.js +73 -12
  116. package/dist/declarative-validation/profile/schema.js.map +1 -1
  117. package/dist/declarative-validation/profile/syntax-version.d.ts +7 -0
  118. package/dist/declarative-validation/profile/syntax-version.d.ts.map +1 -0
  119. package/dist/declarative-validation/profile/syntax-version.js +11 -0
  120. package/dist/declarative-validation/profile/syntax-version.js.map +1 -0
  121. package/dist/declarative-validation/results/clone-rule-result.d.ts +6 -0
  122. package/dist/declarative-validation/results/clone-rule-result.d.ts.map +1 -0
  123. package/dist/declarative-validation/results/clone-rule-result.js +125 -0
  124. package/dist/declarative-validation/results/clone-rule-result.js.map +1 -0
  125. package/dist/declarative-validation/results/create-result.d.ts +15 -0
  126. package/dist/declarative-validation/results/create-result.d.ts.map +1 -0
  127. package/dist/declarative-validation/results/create-result.js +58 -0
  128. package/dist/declarative-validation/results/create-result.js.map +1 -0
  129. package/dist/declarative-validation/results/index.d.ts +3 -25
  130. package/dist/declarative-validation/results/index.d.ts.map +1 -1
  131. package/dist/declarative-validation/results/index.js +2 -1
  132. package/dist/declarative-validation/results/index.js.map +1 -1
  133. package/dist/declarative-validation/results/skipped-rule-result.d.ts +10 -0
  134. package/dist/declarative-validation/results/skipped-rule-result.d.ts.map +1 -0
  135. package/dist/declarative-validation/results/skipped-rule-result.js +18 -0
  136. package/dist/declarative-validation/results/skipped-rule-result.js.map +1 -0
  137. package/dist/declarative-validation/results/types.d.ts +77 -0
  138. package/dist/declarative-validation/results/types.d.ts.map +1 -0
  139. package/dist/declarative-validation/results/types.js +2 -0
  140. package/dist/declarative-validation/results/types.js.map +1 -0
  141. package/dist/declarative-validation/selectors/table-targets.d.ts +23 -0
  142. package/dist/declarative-validation/selectors/table-targets.d.ts.map +1 -1
  143. package/dist/declarative-validation/selectors/table-targets.js +52 -9
  144. package/dist/declarative-validation/selectors/table-targets.js.map +1 -1
  145. package/dist-bundled/markdown-engine-cli.mjs +26826 -0
  146. package/docs/contracts/api.md +19 -15
  147. package/docs/contracts/declarative-validation.md +319 -36
  148. package/package.json +8 -3
  149. package/skills/profile-backed-markdown/SKILL.md +54 -0
  150. package/skills/profile-backed-markdown/assets/profiles/operational-spec.yaml +98 -0
  151. package/skills/profile-backed-markdown/references/repair-brief.md +14 -0
  152. package/skills/profile-backed-markdown/scripts/validate-profile-backed-markdown.mjs +590 -0
package/CHANGELOG.md CHANGED
@@ -2,10 +2,35 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ No unreleased changes.
6
+
7
+ ## 3.0.0 - 2026-06-05
8
+
5
9
  ### Added
6
10
 
7
11
  - Added a GitHub Pages consumer site under `docs/` with value proposition,
8
- workflow examples, and quickstart material for package 2.0 users.
12
+ workflow examples, and quickstart material for package users.
13
+ - Added Conditional V2 release-readiness notes for MS-4 review, summarizing the
14
+ explicit `markdown-engine.validation@v2` opt-in, retained v1 profile
15
+ compatibility, v2 grouped-rule and `when` behavior, ID count and table-column
16
+ coverage evidence, downstream false-acceptance proof, and BEL-1121 release
17
+ verification handoff. This is documentation readiness only and does not claim
18
+ a tag, npm publication, npm dist-tag mutation, GitHub Release, downstream
19
+ adoption, release completion, or MS-4 approval.
20
+ - Added Conditional V2 public validation support behind explicit
21
+ `markdown-engine.validation@v2` profile opt-in, including ID count bounds,
22
+ table column coverage, non-recursive `anyOf` / `allOf` grouped rules,
23
+ rule-level `when` applicability, skipped-rule result metadata, downstream
24
+ false-acceptance proof, repeatability evidence, and boundary-audit coverage.
25
+
26
+ ### Changed
27
+
28
+ - Promoted package metadata to `@jasonbelmonti/markdown-engine@3.0.0` while
29
+ retaining the serialized rich IR document contract at
30
+ `documentVersion: "1.0.0"`.
31
+ - Preserved v1 declarative validation profile behavior and result shape;
32
+ Conditional V2 behavior is selected only by
33
+ `syntaxVersion: markdown-engine.validation@v2`.
9
34
 
10
35
  ## 2.0.0 - 2026-05-13
11
36
 
package/README.md CHANGED
@@ -3,14 +3,17 @@
3
3
  Deterministic Markdown parsing and validation engine package for downstream
4
4
  profile and runtime work.
5
5
 
6
- Current package release:
6
+ Package release state:
7
7
 
8
8
  - package name: `@jasonbelmonti/markdown-engine`
9
- - version: `2.0.0`
9
+ - package metadata version: `3.0.0`
10
+ - published npm versions before this release: `0.1.0`, `1.0.0`, `2.0.0`
11
+ - npm release target: `3.0.0` on `latest`
10
12
  - website: <https://jasonbelmonti.github.io/markdown-engine/>
11
- - release focus: package-level 2.0 hardening with the existing
12
- `documentVersion: "1.0.0"` rich IR contract as the default API and CLI
13
- document shape
13
+ - release focus: Conditional V2 explicit validation-profile syntax while
14
+ retaining the existing `documentVersion: "1.0.0"` rich IR contract as the
15
+ default API and CLI document shape
16
+ - maintainer documentation map: [docs/README.md](docs/README.md)
14
17
  - design reference:
15
18
  [Markdown Engine 1.0 Rich IR design](docs/design/markdown-engine-1.0-rich-ir-operational-design-spec.md)
16
19
 
@@ -80,7 +83,7 @@ console.log(validationResult.valid);
80
83
  console.log(serialize(validationResult, { pretty: true }));
81
84
  ```
82
85
 
83
- Package 2.0 keeps the serialized document contract at
86
+ Package 3.0 keeps the serialized document contract at
84
87
  `documentVersion: "1.0.0"` and makes that rich IR path the default for
85
88
  `normalize(parsed)`. Callers may still pass
86
89
  `normalize(parsed, { documentVersion: "1.0.0" })` explicitly. That path adds
@@ -153,6 +156,40 @@ Successful validation exits with code `0`; validation or normalization error
153
156
  diagnostics exit with code `1`. Validation JSON includes `profile`,
154
157
  `ruleResults`, `diagnostics`, and `evidence`.
155
158
 
159
+ Declarative validation compatibility is syntax-versioned. Existing v1 profiles
160
+ remain on the v1 result and evidence shape by keeping:
161
+
162
+ ```yaml
163
+ syntaxVersion: markdown-engine.validation@v1
164
+ ```
165
+
166
+ Conditional V2 behavior is selected only by an explicit v2 profile:
167
+
168
+ ```yaml
169
+ syntaxVersion: markdown-engine.validation@v2
170
+ rules:
171
+ - id: release.docs
172
+ anyOf:
173
+ - label: release-section
174
+ select:
175
+ target: section
176
+ title: Release
177
+ assert:
178
+ exists: true
179
+ - label: changelog-link
180
+ select:
181
+ target: link
182
+ text: changelog
183
+ assert:
184
+ exists: true
185
+ ```
186
+
187
+ CLI validation output uses `profile.syntaxVersion` as the v1/v2 discriminator.
188
+ V1 rule results keep the existing flat `ruleId`, `passed`, and `diagnostics`
189
+ fields. V2 rule results add `status` and `evaluation`; v2 profile metadata adds
190
+ `evaluatedRuleCount` and `skippedRuleCount` when the profile explicitly opts into
191
+ `markdown-engine.validation@v2`.
192
+
156
193
  Reader-facing declarative validation examples live under
157
194
  `fixtures/declarative-validation/examples/**`. From the repository or package
158
195
  root after building, run one passing and one intentionally failing example with:
@@ -165,17 +202,18 @@ node dist/cli/index.js validate --file fixtures/declarative-validation/examples/
165
202
  The passing example exits `0`; the failing example exits `1` and prints JSON
166
203
  diagnostics for review.
167
204
 
168
- Package 2.0 classifies the API normalization default as breaking for consumers
169
- that call `normalize(parsed)` and expect the legacy `0.0.0` shape. Migration is
170
- to either consume the rich IR fields (`target`, `sections`, `textSpans`,
171
- `tables`, `lists`, and `links`) or pin
172
- `normalize(parsed, { documentVersion: "0.0.0" })` until the downstream consumer
173
- is ready. The CLI already defaults to the rich IR document contract and keeps
205
+ Package 3.0 keeps the 2.0 API normalization default: callers that invoke
206
+ `normalize(parsed)` receive the rich IR `1.0.0` document shape. Consumers that
207
+ still need the legacy `0.0.0` shape should consume the rich IR fields
208
+ (`target`, `sections`, `textSpans`, `tables`, `lists`, and `links`) or pin
209
+ `normalize(parsed, { documentVersion: "0.0.0" })` until they are ready. The CLI
210
+ continues to default to the rich IR document contract and keeps
174
211
  `--document-version 0.0.0` for explicit legacy output.
175
212
 
176
- Contract references:
213
+ Package and contract references:
177
214
 
178
215
  - [Consumer website](https://jasonbelmonti.github.io/markdown-engine/)
216
+ - [Maintainer documentation map](docs/README.md)
179
217
  - [Public API contract](docs/contracts/api.md)
180
218
  - [Declarative validation contract](docs/contracts/declarative-validation.md)
181
219
  - [Frontmatter contract](docs/contracts/frontmatter.md)
@@ -186,61 +224,31 @@ Contract references:
186
224
 
187
225
  ## Validation
188
226
 
189
- Run the release-readiness gates from the repository root:
227
+ Run focused contract documentation gates from the repository root:
190
228
 
191
229
  ```sh
192
230
  npm run docs:rich-ir-contract
193
231
  npm run docs:declarative-validation-contract
194
232
  npm run audit:declarative-validation-boundary
233
+ ```
234
+
235
+ Run full release-readiness and publication dry-run gates only when preparing a
236
+ release, tag, package artifact, or publication decision:
237
+
238
+ ```sh
195
239
  npm run release:verify
196
240
  npm pack --dry-run
197
241
  npm publish --dry-run --access public
198
242
  ```
199
243
 
200
- Validation records include:
201
-
202
- - [EVD-6 rich IR contract docs](docs/evidence/wp-5-evd-6-rich-ir-contract.md)
203
- - [EVD-6 declarative validation repeatability](docs/evidence/wp-5-evd-6-declarative-validation-repeatability.md)
204
- - [EVD-7 declarative validation contract review](docs/evidence/wp-5-evd-7-declarative-validation-contract-review.md)
205
- - [EVD-8 declarative validation boundary audit](docs/evidence/wp-5-evd-8-declarative-validation-boundary-audit.md)
206
- - [BEL-986 declarative validation MS-2 approval](docs/evidence/bel-986-ms-2-approval.md)
207
- - [EVD-8 compatibility and CLI impact](docs/evidence/wp-5-evd-8-compatibility-cli-impact.md)
208
- - [EVD-9 1.0 downstream exercise](docs/evidence/wp-6-evd-9-downstream-exercise.md)
209
- - [EVD-10 declarative validation release-readiness handoff](docs/evidence/wp-6-evd-10-declarative-validation-release-readiness.md)
210
- - [EVD-10 1.0 release readiness](docs/evidence/wp-6-evd-10-release-readiness.md)
211
- - [EVD-7 release readiness](docs/evidence/wp-6-evd-7-release-readiness.md)
212
- - [EVD-9 merge readiness](docs/evidence/wp-6-evd-9-merge-readiness.md)
213
- - [EVD-10 rollback containment](docs/evidence/wp-6-evd-10-rollback-containment.md)
214
- - [EVD-11 downstream handoff](docs/evidence/wp-6-evd-11-downstream-handoff.md)
215
- - [BEL-1025 declarative validation example suite](docs/evidence/bel-1025-declarative-validation-example-suite.md)
244
+ The full maintainer and evidence index lives in
245
+ [docs/README.md](docs/README.md). The focused contract documentation gates
246
+ currently check these evidence records:
247
+
248
+ - [Rich IR contract documentation gate](docs/evidence/wp-5-evd-6-rich-ir-contract.md)
249
+ - [Declarative validation contract review](docs/evidence/wp-5-evd-7-declarative-validation-contract-review.md)
250
+ - [Declarative validation boundary audit](docs/evidence/wp-5-evd-8-declarative-validation-boundary-audit.md)
216
251
 
217
252
  Snapshot baseline updates are operational changes, not routine test-output
218
253
  cleanup. Use the [testing and snapshot operations](docs/testing.md) guide before
219
254
  updating files under `snapshots/**`.
220
-
221
- ## 2.0 Release Gate
222
-
223
- Do not tag or publish the 2.0 release until approval is recorded with:
224
-
225
- - semver classification distinguishing package version `2.0.0` from document
226
- contract version `1.0.0`
227
- - release/tag decision
228
- - rollback and containment notes
229
- - downstream profile/runtime consumer confirmation
230
- - complete evidence links from EVD-1 through EVD-11
231
-
232
- Current release decision: package `2.0.0` retains the public rich IR document
233
- contract at `documentVersion: "1.0.0"`, makes that contract the default API
234
- normalization output, and hardens declarative profile ingestion. The `v2.0.0`
235
- git tag must point only at a commit that passes the validation commands above.
236
-
237
- When 2.0 is approved, publish the package as:
238
-
239
- ```sh
240
- npm publish --access public
241
- ```
242
-
243
- The publish path is guarded by npm lifecycle scripts: `prepublishOnly` and
244
- `prepack` both run the release verification gate before `npm publish` or
245
- `npm pack` creates an artifact. The gate rebuilds `dist` and fails if tracked
246
- files drift from `HEAD`.
@@ -1,9 +1,9 @@
1
1
  import type { EngineDocument } from "./document.js";
2
2
  import type { DeclarativeProfileParseOptions, DeclarativeProfileParseResult, JsonSafeValue, ValidationProfile } from "../declarative-validation/profile/index.js";
3
3
  import type { DeclarativeValidationOptions, DeclarativeValidationResult } from "../declarative-validation/results/index.js";
4
- export type { DeclarativeAssertion, DeclarativeIdSource, DeclarativeOutputFormat, DeclarativeProfileParseOptions, DeclarativeProfileParseResult, DeclarativeSectionOrder, DeclarativeSelector, DeclarativeTableCellPredicate, DeclarativeValidationRule, DeclarativeValidationSeverity, JsonSafeValue, ValidationProfile, } from "../declarative-validation/profile/index.js";
4
+ export type { DeclarativeAssertion, DeclarativeValidationApplicability, DeclarativeValidationAllOfRule, DeclarativeValidationAnyOfRule, DeclarativeValidationBranch, DeclarativeValidationFlatRule, DeclarativeValidationGroupRule, DeclarativeValidationRuleFields, DeclarativeIdSource, DeclarativeOutputFormat, DeclarativeProfileParseOptions, DeclarativeProfileParseResult, DeclarativeSectionOrder, DeclarativeSelector, DeclarativeTableCellPredicate, DeclarativeTableColumnCoverage, DeclarativeTableColumnCoverageSource, DeclarativeTableColumnCoverageTarget, DeclarativeValidationRule, DeclarativeValidationSeverity, JsonSafeValue, ValidationProfile, } from "../declarative-validation/profile/index.js";
5
5
  export type { DeclarativeValidationEvidence } from "../declarative-validation/evidence/index.js";
6
- export type { DeclarativeValidationCliJsonResult, DeclarativeValidationConfigErrorResult, DeclarativeValidationOptions, DeclarativeValidationResult, } from "../declarative-validation/results/index.js";
6
+ export type { DeclarativeValidationAllOfEvaluationResult, DeclarativeValidationAnyOfEvaluationResult, DeclarativeValidationApplicabilityResult, DeclarativeValidationAssertionsEvaluationResult, DeclarativeValidationBranchReference, DeclarativeValidationBranchResult, DeclarativeValidationCliJsonResult, DeclarativeValidationConfigErrorResult, DeclarativeValidationOptions, DeclarativeValidationResultV1, DeclarativeValidationResultV2, DeclarativeValidationRuleEvaluationResult, DeclarativeValidationRuleResultV2, DeclarativeValidationRuleStatus, DeclarativeValidationSkippedEvaluationResult, DeclarativeValidationResult, } from "../declarative-validation/results/index.js";
7
7
  export interface DeclarativeValidationApi {
8
8
  parseValidationProfile(input: string | JsonSafeValue, options?: DeclarativeProfileParseOptions): DeclarativeProfileParseResult;
9
9
  validateWithProfile(document: EngineDocument, profile: ValidationProfile, options?: DeclarativeValidationOptions): DeclarativeValidationResult;
@@ -1 +1 @@
1
- {"version":3,"file":"declarative-validation.d.ts","sourceRoot":"","sources":["../../src/api/declarative-validation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAYpD,OAAO,KAAK,EACV,8BAA8B,EAC9B,6BAA6B,EAC7B,aAAa,EACb,iBAAiB,EAClB,MAAM,4CAA4C,CAAC;AACpD,OAAO,KAAK,EACV,4BAA4B,EAC5B,2BAA2B,EAC5B,MAAM,4CAA4C,CAAC;AAGpD,YAAY,EACV,oBAAoB,EACpB,mBAAmB,EACnB,uBAAuB,EACvB,8BAA8B,EAC9B,6BAA6B,EAC7B,uBAAuB,EACvB,mBAAmB,EACnB,6BAA6B,EAC7B,yBAAyB,EACzB,6BAA6B,EAC7B,aAAa,EACb,iBAAiB,GAClB,MAAM,4CAA4C,CAAC;AACpD,YAAY,EAAE,6BAA6B,EAAE,MAAM,6CAA6C,CAAC;AACjG,YAAY,EACV,kCAAkC,EAClC,sCAAsC,EACtC,4BAA4B,EAC5B,2BAA2B,GAC5B,MAAM,4CAA4C,CAAC;AAEpD,MAAM,WAAW,wBAAwB;IACvC,sBAAsB,CACpB,KAAK,EAAE,MAAM,GAAG,aAAa,EAC7B,OAAO,CAAC,EAAE,8BAA8B,GACvC,6BAA6B,CAAC;IACjC,mBAAmB,CACjB,QAAQ,EAAE,cAAc,EACxB,OAAO,EAAE,iBAAiB,EAC1B,OAAO,CAAC,EAAE,4BAA4B,GACrC,2BAA2B,CAAC;CAChC;AAED,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,MAAM,GAAG,aAAa,EAC7B,OAAO,GAAE,8BAAmC,GAC3C,6BAA6B,CAE/B;AAED,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,cAAc,EACxB,OAAO,EAAE,iBAAiB,EAC1B,OAAO,GAAE,4BAAiC,GACzC,2BAA2B,CAoD7B"}
1
+ {"version":3,"file":"declarative-validation.d.ts","sourceRoot":"","sources":["../../src/api/declarative-validation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAkBpD,OAAO,KAAK,EACV,8BAA8B,EAC9B,6BAA6B,EAC7B,aAAa,EACb,iBAAiB,EAClB,MAAM,4CAA4C,CAAC;AAKpD,OAAO,KAAK,EACV,4BAA4B,EAC5B,2BAA2B,EAC5B,MAAM,4CAA4C,CAAC;AAGpD,YAAY,EACV,oBAAoB,EACpB,kCAAkC,EAClC,8BAA8B,EAC9B,8BAA8B,EAC9B,2BAA2B,EAC3B,6BAA6B,EAC7B,8BAA8B,EAC9B,+BAA+B,EAC/B,mBAAmB,EACnB,uBAAuB,EACvB,8BAA8B,EAC9B,6BAA6B,EAC7B,uBAAuB,EACvB,mBAAmB,EACnB,6BAA6B,EAC7B,8BAA8B,EAC9B,oCAAoC,EACpC,oCAAoC,EACpC,yBAAyB,EACzB,6BAA6B,EAC7B,aAAa,EACb,iBAAiB,GAClB,MAAM,4CAA4C,CAAC;AACpD,YAAY,EAAE,6BAA6B,EAAE,MAAM,6CAA6C,CAAC;AACjG,YAAY,EACV,0CAA0C,EAC1C,0CAA0C,EAC1C,wCAAwC,EACxC,+CAA+C,EAC/C,oCAAoC,EACpC,iCAAiC,EACjC,kCAAkC,EAClC,sCAAsC,EACtC,4BAA4B,EAC5B,6BAA6B,EAC7B,6BAA6B,EAC7B,yCAAyC,EACzC,iCAAiC,EACjC,+BAA+B,EAC/B,4CAA4C,EAC5C,2BAA2B,GAC5B,MAAM,4CAA4C,CAAC;AAEpD,MAAM,WAAW,wBAAwB;IACvC,sBAAsB,CACpB,KAAK,EAAE,MAAM,GAAG,aAAa,EAC7B,OAAO,CAAC,EAAE,8BAA8B,GACvC,6BAA6B,CAAC;IACjC,mBAAmB,CACjB,QAAQ,EAAE,cAAc,EACxB,OAAO,EAAE,iBAAiB,EAC1B,OAAO,CAAC,EAAE,4BAA4B,GACrC,2BAA2B,CAAC;CAChC;AAED,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,MAAM,GAAG,aAAa,EAC7B,OAAO,GAAE,8BAAmC,GAC3C,6BAA6B,CAE/B;AAED,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,cAAc,EACxB,OAAO,EAAE,iBAAiB,EAC1B,OAAO,GAAE,4BAAiC,GACzC,2BAA2B,CAgD7B"}
@@ -1,9 +1,9 @@
1
- import { cloneDiagnostics, hasErrorDiagnostic } from "../diagnostics/index.js";
2
- import { evaluateCompiledDeclarativeRule, sortValidationRuleResults, } from "../declarative-validation/assertions/index.js";
1
+ import { classifyCompiledDeclarativeRuleApplicability } from "../declarative-validation/applicability/index.js";
2
+ import { evaluateCompiledDeclarativeAllOfRule, evaluateCompiledDeclarativeAnyOfRule, evaluateCompiledDeclarativeRule, sortValidationRuleResults, } from "../declarative-validation/assertions/index.js";
3
3
  import { compileValidationProfile } from "../declarative-validation/compiler/index.js";
4
- import { createDeclarativeValidationEvidence } from "../declarative-validation/evidence/index.js";
5
4
  import { parseValidationProfileInput } from "../declarative-validation/profile/index.js";
6
5
  import { materializeValidationProfile } from "../declarative-validation/profile/materialization.js";
6
+ import { createDeclarativeValidationResult, createSkippedDeclarativeValidationRuleResult, } from "../declarative-validation/results/index.js";
7
7
  import { resolveDeclarativeSelector } from "../declarative-validation/selectors/index.js";
8
8
  export function parseValidationProfile(input, options = {}) {
9
9
  return parseValidationProfileInput(input, options);
@@ -11,40 +11,69 @@ export function parseValidationProfile(input, options = {}) {
11
11
  export function validateWithProfile(document, profile, options = {}) {
12
12
  const materializedProfile = materializeValidationProfile(profile, document.version);
13
13
  if (materializedProfile.diagnostics.length > 0) {
14
- return validationResult(document, materializedProfile.profile, [], materializedProfile.diagnostics, options);
14
+ return createDeclarativeValidationResult({
15
+ document,
16
+ profile: materializedProfile.profile,
17
+ ruleResults: [],
18
+ diagnostics: materializedProfile.diagnostics,
19
+ options,
20
+ });
15
21
  }
16
22
  const profileDocumentVersion = materializedProfile.profile.documentVersion ?? document.version;
17
23
  const versionDiagnostics = profileDocumentVersion === document.version
18
24
  ? []
19
25
  : [documentVersionMismatchDiagnostic(profileDocumentVersion, document.version)];
20
26
  if (versionDiagnostics.length > 0) {
21
- return validationResult(document, materializedProfile.profile, [], versionDiagnostics, options);
27
+ return createDeclarativeValidationResult({
28
+ document,
29
+ profile: materializedProfile.profile,
30
+ ruleResults: [],
31
+ diagnostics: versionDiagnostics,
32
+ options,
33
+ });
22
34
  }
23
35
  const compileResult = compileValidationProfile(materializedProfile.profile);
24
- const ruleResults = sortValidationRuleResults(compileResult.plan?.rules.map((rule) => evaluateCompiledDeclarativeRule(rule, resolveDeclarativeSelector(document, rule.selector))) ?? []);
36
+ const compiledRules = compileResult.plan?.rules ?? [];
37
+ const ruleResults = sortValidationRuleResults(compiledRules.flatMap((rule) => evaluateApplicableCompiledRule(document, rule)));
25
38
  const diagnostics = [
26
39
  ...compileResult.diagnostics,
27
40
  ...ruleResults.flatMap((result) => result.diagnostics),
28
41
  ];
29
- return validationResult(document, materializedProfile.profile, ruleResults, diagnostics, options);
42
+ return createDeclarativeValidationResult({
43
+ document,
44
+ profile: materializedProfile.profile,
45
+ ruleResults,
46
+ diagnostics,
47
+ options,
48
+ });
30
49
  }
31
- function validationResult(document, profile, ruleResults, diagnostics, options) {
32
- const result = {
33
- valid: !hasErrorDiagnostic(diagnostics),
34
- diagnostics: cloneDiagnostics(diagnostics),
35
- ruleResults: cloneRuleResults(ruleResults),
36
- profile: {
37
- syntaxVersion: profile.syntaxVersion,
38
- documentVersion: profile.documentVersion ?? document.version,
39
- ruleCount: profile.rules.length,
40
- },
41
- };
42
- return options.includeEvidence === true
43
- ? {
44
- ...result,
45
- evidence: createDeclarativeValidationEvidence(document, profile, ruleResults, diagnostics),
46
- }
47
- : result;
50
+ function evaluateApplicableCompiledRule(document, rule) {
51
+ const applicability = classifyCompiledDeclarativeRuleApplicability(rule, document);
52
+ return applicability.status === "notMatched"
53
+ ? [
54
+ createSkippedDeclarativeValidationRuleResult({
55
+ ruleId: rule.ruleId,
56
+ when: applicability.result,
57
+ }),
58
+ ]
59
+ : evaluateCompiledRule(document, rule);
60
+ }
61
+ function evaluateCompiledRule(document, rule) {
62
+ if (isCompiledAnyOfRule(rule)) {
63
+ return [evaluateCompiledDeclarativeAnyOfRule(rule, document)];
64
+ }
65
+ if (isCompiledAllOfRule(rule)) {
66
+ return [evaluateCompiledDeclarativeAllOfRule(rule, document)];
67
+ }
68
+ return [
69
+ evaluateCompiledDeclarativeRule(rule, resolveDeclarativeSelector(document, rule.selector)),
70
+ ];
71
+ }
72
+ function isCompiledAnyOfRule(rule) {
73
+ return "kind" in rule && rule.kind === "anyOf";
74
+ }
75
+ function isCompiledAllOfRule(rule) {
76
+ return "kind" in rule && rule.kind === "allOf";
48
77
  }
49
78
  function documentVersionMismatchDiagnostic(profileDocumentVersion, documentVersion) {
50
79
  return {
@@ -53,11 +82,4 @@ function documentVersionMismatchDiagnostic(profileDocumentVersion, documentVersi
53
82
  severity: "error",
54
83
  };
55
84
  }
56
- function cloneRuleResults(ruleResults) {
57
- return ruleResults.map((result) => ({
58
- ruleId: result.ruleId,
59
- passed: result.passed,
60
- diagnostics: cloneDiagnostics(result.diagnostics),
61
- }));
62
- }
63
85
  //# sourceMappingURL=declarative-validation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"declarative-validation.js","sourceRoot":"","sources":["../../src/api/declarative-validation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"declarative-validation.js","sourceRoot":"","sources":["../../src/api/declarative-validation.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"declarative-validation.d.ts","sourceRoot":"","sources":["../../src/cli/declarative-validation.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,uBAAuB,EAExB,MAAM,4CAA4C,CAAC;AAWpD,oFAAoF;AACpF,MAAM,WAAW,sCAAsC;IACrD,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,uBAAuB,CAAC;CACjC;AAED,MAAM,MAAM,qCAAqC,GAC7C;IACE,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB,GACD;IACE,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEN,wBAAsB,2BAA2B,CAC/C,KAAK,EAAE,sCAAsC,GAC5C,OAAO,CAAC,qCAAqC,CAAC,CA0EhD"}
1
+ {"version":3,"file":"declarative-validation.d.ts","sourceRoot":"","sources":["../../src/cli/declarative-validation.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,uBAAuB,EAExB,MAAM,4CAA4C,CAAC;AAYpD,oFAAoF;AACpF,MAAM,WAAW,sCAAsC;IACrD,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,uBAAuB,CAAC;CACjC;AAED,MAAM,MAAM,qCAAqC,GAC7C;IACE,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB,GACD;IACE,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEN,wBAAsB,2BAA2B,CAC/C,KAAK,EAAE,sCAAsC,GAC5C,OAAO,CAAC,qCAAqC,CAAC,CA0EhD"}
@@ -1,7 +1,7 @@
1
1
  import { validateWithProfile } from "../api/declarative-validation.js";
2
2
  import { compileValidationProfile } from "../declarative-validation/compiler/index.js";
3
- import { createDeclarativeValidationEvidence } from "../declarative-validation/evidence/index.js";
4
3
  import { parseValidationProfileInput } from "../declarative-validation/profile/index.js";
4
+ import { createDeclarativeValidationResult } from "../declarative-validation/results/index.js";
5
5
  import { cloneDiagnostics, hasErrorDiagnostic } from "../diagnostics/index.js";
6
6
  import { normalizeStableJsonValue } from "../internal/stable-json.js";
7
7
  import { readCliFile } from "./files.js";
@@ -69,18 +69,13 @@ function profileStageResult(diagnostics) {
69
69
  };
70
70
  }
71
71
  function documentDiagnosticsResult(document, profile, diagnostics) {
72
- const clonedDiagnostics = cloneDiagnostics(diagnostics);
73
- return {
74
- valid: !hasErrorDiagnostic(clonedDiagnostics),
75
- diagnostics: clonedDiagnostics,
72
+ return createDeclarativeValidationResult({
73
+ document,
74
+ profile,
76
75
  ruleResults: [],
77
- profile: {
78
- syntaxVersion: profile.syntaxVersion,
79
- documentVersion: profile.documentVersion ?? document.version,
80
- ruleCount: profile.rules.length,
81
- },
82
- evidence: createDeclarativeValidationEvidence(document, profile, [], clonedDiagnostics),
83
- };
76
+ diagnostics,
77
+ options: { includeEvidence: true },
78
+ });
84
79
  }
85
80
  function mergeDocumentDiagnostics(validationResult, documentDiagnostics) {
86
81
  if (documentDiagnostics.length === 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"declarative-validation.js","sourceRoot":"","sources":["../../src/cli/declarative-validation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"declarative-validation.js","sourceRoot":"","sources":["../../src/cli/declarative-validation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { EngineDocument } from "../../api/document.js";
2
+ import type { CompiledDeclarativeValidationRule } from "../compiler/plan.js";
3
+ import type { DeclarativeValidationApplicabilityResult } from "../results/index.js";
4
+ export type CompiledRuleApplicabilityClassification = {
5
+ status: "notConfigured";
6
+ } | {
7
+ status: "matched";
8
+ result: DeclarativeValidationApplicabilityResult & {
9
+ status: "matched";
10
+ };
11
+ } | {
12
+ status: "notMatched";
13
+ result: DeclarativeValidationApplicabilityResult & {
14
+ status: "notMatched";
15
+ };
16
+ };
17
+ export declare function classifyCompiledDeclarativeRuleApplicability(rule: CompiledDeclarativeValidationRule, document: EngineDocument): CompiledRuleApplicabilityClassification;
18
+ //# sourceMappingURL=classifier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"classifier.d.ts","sourceRoot":"","sources":["../../../src/declarative-validation/applicability/classifier.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAGV,iCAAiC,EAClC,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,wCAAwC,EAAE,MAAM,qBAAqB,CAAC;AAIpF,MAAM,MAAM,uCAAuC,GAC/C;IACE,MAAM,EAAE,eAAe,CAAC;CACzB,GACD;IACE,MAAM,EAAE,SAAS,CAAC;IAClB,MAAM,EAAE,wCAAwC,GAAG;QAAE,MAAM,EAAE,SAAS,CAAA;KAAE,CAAC;CAC1E,GACD;IACE,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,wCAAwC,GAAG;QACjD,MAAM,EAAE,YAAY,CAAC;KACtB,CAAC;CACH,CAAC;AAEN,wBAAgB,4CAA4C,CAC1D,IAAI,EAAE,iCAAiC,EACvC,QAAQ,EAAE,cAAc,GACvB,uCAAuC,CA6BzC"}
@@ -0,0 +1,37 @@
1
+ import { evaluateCompiledDeclarativeRule } from "../assertions/evaluator.js";
2
+ import { resolveDeclarativeSelector } from "../selectors/index.js";
3
+ export function classifyCompiledDeclarativeRuleApplicability(rule, document) {
4
+ const applicability = compiledApplicabilityFromRule(rule);
5
+ if (applicability === undefined) {
6
+ return { status: "notConfigured" };
7
+ }
8
+ const result = evaluateCompiledDeclarativeRule(applicabilityRuleFromPlan(rule, applicability), resolveDeclarativeSelector(document, applicability.selector));
9
+ if (result.diagnostics.length === 0) {
10
+ return {
11
+ status: "matched",
12
+ result: {
13
+ status: "matched",
14
+ diagnostics: [],
15
+ },
16
+ };
17
+ }
18
+ return {
19
+ status: "notMatched",
20
+ result: {
21
+ status: "notMatched",
22
+ diagnostics: result.diagnostics,
23
+ },
24
+ };
25
+ }
26
+ function compiledApplicabilityFromRule(rule) {
27
+ return "applicability" in rule ? rule.applicability : undefined;
28
+ }
29
+ function applicabilityRuleFromPlan(rule, applicability) {
30
+ return {
31
+ ruleId: rule.ruleId,
32
+ severity: rule.severity,
33
+ selector: applicability.selector,
34
+ assertions: applicability.assertions,
35
+ };
36
+ }
37
+ //# sourceMappingURL=classifier.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"classifier.js","sourceRoot":"","sources":["../../../src/declarative-validation/applicability/classifier.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,+BAA+B,EAAE,MAAM,4BAA4B,CAAC;AAC7E,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAiBnE,MAAM,UAAU,4CAA4C,CAC1D,IAAuC,EACvC,QAAwB;IAExB,MAAM,aAAa,GAAG,6BAA6B,CAAC,IAAI,CAAC,CAAC;IAE1D,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QAChC,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;IACrC,CAAC;IAED,MAAM,MAAM,GAAG,+BAA+B,CAC5C,yBAAyB,CAAC,IAAI,EAAE,aAAa,CAAC,EAC9C,0BAA0B,CAAC,QAAQ,EAAE,aAAa,CAAC,QAAQ,CAAC,CAC7D,CAAC;IAEF,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpC,OAAO;YACL,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE;gBACN,MAAM,EAAE,SAAS;gBACjB,WAAW,EAAE,EAAE;aAChB;SACF,CAAC;IACJ,CAAC;IAED,OAAO;QACL,MAAM,EAAE,YAAY;QACpB,MAAM,EAAE;YACN,MAAM,EAAE,YAAY;YACpB,WAAW,EAAE,MAAM,CAAC,WAAW;SAChC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,6BAA6B,CACpC,IAAuC;IAEvC,OAAO,eAAe,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC;AAClE,CAAC;AAED,SAAS,yBAAyB,CAChC,IAAuC,EACvC,aAA6D;IAE7D,OAAO;QACL,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,QAAQ,EAAE,aAAa,CAAC,QAAQ;QAChC,UAAU,EAAE,aAAa,CAAC,UAAU;KACrC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { classifyCompiledDeclarativeRuleApplicability } from "./classifier.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/declarative-validation/applicability/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4CAA4C,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { classifyCompiledDeclarativeRuleApplicability } from "./classifier.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/declarative-validation/applicability/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4CAA4C,EAAE,MAAM,iBAAiB,CAAC"}
@@ -1,7 +1,7 @@
1
- import type { CompiledDeclarativeValidationRule } from "../compiler/plan.js";
1
+ import type { CompiledDeclarativeValidationExecutableRule } from "../compiler/plan.js";
2
2
  import type { DeclarativeSelection } from "../selectors/index.js";
3
3
  export interface AssertionEvaluationContext {
4
- rule: CompiledDeclarativeValidationRule;
4
+ rule: CompiledDeclarativeValidationExecutableRule;
5
5
  selection: DeclarativeSelection;
6
6
  assertionIndex: number;
7
7
  }
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/declarative-validation/assertions/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAElE,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,iCAAiC,CAAC;IACxC,SAAS,EAAE,oBAAoB,CAAC;IAChC,cAAc,EAAE,MAAM,CAAC;CACxB"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/declarative-validation/assertions/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,2CAA2C,EAAE,MAAM,qBAAqB,CAAC;AACvF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAElE,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,2CAA2C,CAAC;IAClD,SAAS,EAAE,oBAAoB,CAAC;IAChC,cAAc,EAAE,MAAM,CAAC;CACxB"}
@@ -1,5 +1,5 @@
1
1
  import type { MarkdownDiagnostic, SourceRange } from "../../api/diagnostics.js";
2
- import type { CompiledDeclarativeAssertion, CompiledDeclarativeValidationRule } from "../compiler/plan.js";
2
+ import type { CompiledDeclarativeAssertion, CompiledDeclarativeValidationAllOfRuleV2, CompiledDeclarativeValidationAnyOfRuleV2, CompiledDeclarativeValidationExecutableRule } from "../compiler/plan.js";
3
3
  import type { DeclarativeSelectionTarget } from "../selectors/index.js";
4
4
  export interface AssertionDiagnostic {
5
5
  diagnostic: MarkdownDiagnostic;
@@ -16,7 +16,10 @@ export interface AssertionDiagnosticOptions {
16
16
  diagnosticOrder?: number;
17
17
  sourceRange?: SourceRange;
18
18
  }
19
- export declare function emptySelectionDiagnostic(rule: CompiledDeclarativeValidationRule, assertionIndex: number): AssertionDiagnostic;
20
- export declare function validationDiagnostic(code: string, message: string, rule: CompiledDeclarativeValidationRule, options: AssertionDiagnosticOptions): AssertionDiagnostic;
21
- export declare function unsupportedEvaluatorDiagnostic(assertion: CompiledDeclarativeAssertion, rule: CompiledDeclarativeValidationRule, assertionIndex: number): AssertionDiagnostic;
19
+ export declare function noAlternativeMatchedDiagnostic(rule: CompiledDeclarativeValidationAnyOfRuleV2): MarkdownDiagnostic;
20
+ export declare function groupRequirementFailedDiagnostic(rule: CompiledDeclarativeValidationAllOfRuleV2): MarkdownDiagnostic;
21
+ export declare function emptySelectionDiagnostic(rule: CompiledDeclarativeValidationExecutableRule, assertionIndex: number): AssertionDiagnostic;
22
+ export declare function validationDiagnostic(code: string, message: string, rule: CompiledDeclarativeValidationExecutableRule, options: AssertionDiagnosticOptions): AssertionDiagnostic;
23
+ export declare function unsupportedEvaluatorDiagnostic(assertion: CompiledDeclarativeAssertion, rule: CompiledDeclarativeValidationExecutableRule, assertionIndex: number): AssertionDiagnostic;
24
+ export declare function unsupportedEvaluatorFeatureDiagnostic(assertionKind: CompiledDeclarativeAssertion["kind"], featureName: string, rule: CompiledDeclarativeValidationExecutableRule, assertionIndex: number): AssertionDiagnostic;
22
25
  //# sourceMappingURL=diagnostics.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../../../src/declarative-validation/assertions/diagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAChF,OAAO,KAAK,EACV,4BAA4B,EAC5B,iCAAiC,EAClC,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAExE,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,kBAAkB,CAAC;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,0BAA0B;IACzC,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,0BAA0B,CAAC;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAED,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,iCAAiC,EACvC,cAAc,EAAE,MAAM,GACrB,mBAAmB,CAWrB;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,iCAAiC,EACvC,OAAO,EAAE,0BAA0B,GAClC,mBAAmB,CAgBrB;AAED,wBAAgB,8BAA8B,CAC5C,SAAS,EAAE,4BAA4B,EACvC,IAAI,EAAE,iCAAiC,EACvC,cAAc,EAAE,MAAM,GACrB,mBAAmB,CAarB"}
1
+ {"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../../../src/declarative-validation/assertions/diagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAChF,OAAO,KAAK,EACV,4BAA4B,EAC5B,wCAAwC,EACxC,wCAAwC,EACxC,2CAA2C,EAC5C,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAExE,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,kBAAkB,CAAC;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,0BAA0B;IACzC,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,0BAA0B,CAAC;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAED,wBAAgB,8BAA8B,CAC5C,IAAI,EAAE,wCAAwC,GAC7C,kBAAkB,CAOpB;AAED,wBAAgB,gCAAgC,CAC9C,IAAI,EAAE,wCAAwC,GAC7C,kBAAkB,CAOpB;AAED,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,2CAA2C,EACjD,cAAc,EAAE,MAAM,GACrB,mBAAmB,CAWrB;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,2CAA2C,EACjD,OAAO,EAAE,0BAA0B,GAClC,mBAAmB,CAgBrB;AAED,wBAAgB,8BAA8B,CAC5C,SAAS,EAAE,4BAA4B,EACvC,IAAI,EAAE,2CAA2C,EACjD,cAAc,EAAE,MAAM,GACrB,mBAAmB,CAMrB;AAED,wBAAgB,qCAAqC,CACnD,aAAa,EAAE,4BAA4B,CAAC,MAAM,CAAC,EACnD,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,2CAA2C,EACjD,cAAc,EAAE,MAAM,GACrB,mBAAmB,CAMrB"}
@@ -1,3 +1,19 @@
1
+ export function noAlternativeMatchedDiagnostic(rule) {
2
+ return {
3
+ code: "profile.validation.noAlternativeMatched",
4
+ ruleId: rule.ruleId,
5
+ message: "No anyOf branch matched the grouped rule.",
6
+ severity: rule.severity,
7
+ };
8
+ }
9
+ export function groupRequirementFailedDiagnostic(rule) {
10
+ return {
11
+ code: "profile.validation.groupRequirementFailed",
12
+ ruleId: rule.ruleId,
13
+ message: "One or more allOf branches failed the grouped rule.",
14
+ severity: rule.severity,
15
+ };
16
+ }
1
17
  export function emptySelectionDiagnostic(rule, assertionIndex) {
2
18
  return validationDiagnostic("profile.validation.emptySelection", "Rule selector did not match any document targets.", rule, {
3
19
  assertionIndex,
@@ -22,11 +38,17 @@ export function validationDiagnostic(code, message, rule, options) {
22
38
  };
23
39
  }
24
40
  export function unsupportedEvaluatorDiagnostic(assertion, rule, assertionIndex) {
41
+ return unsupportedEvaluatorDiagnosticFromMessage(unsupportedEvaluatorMessage(assertion.kind), rule, assertionIndex);
42
+ }
43
+ export function unsupportedEvaluatorFeatureDiagnostic(assertionKind, featureName, rule, assertionIndex) {
44
+ return unsupportedEvaluatorDiagnosticFromMessage(unsupportedEvaluatorFeatureMessage(assertionKind, featureName), rule, assertionIndex);
45
+ }
46
+ function unsupportedEvaluatorDiagnosticFromMessage(message, rule, assertionIndex) {
25
47
  return {
26
48
  diagnostic: {
27
49
  code: "profile.validation.assertionUnsupported",
28
50
  ruleId: rule.ruleId,
29
- message: unsupportedEvaluatorMessage(assertion.kind),
51
+ message,
30
52
  severity: "error",
31
53
  },
32
54
  assertionIndex,
@@ -38,6 +60,9 @@ export function unsupportedEvaluatorDiagnostic(assertion, rule, assertionIndex)
38
60
  function unsupportedEvaluatorMessage(assertionKind) {
39
61
  return `Assertion "${assertionKind}" is compiled but not implemented by the assertion evaluator yet.`;
40
62
  }
63
+ function unsupportedEvaluatorFeatureMessage(assertionKind, featureName) {
64
+ return `Unsupported assertion feature "${featureName}" for "${assertionKind}" is compiled but not implemented by the assertion evaluator yet.`;
65
+ }
41
66
  function targetSourceRange(target) {
42
67
  return target !== undefined && "source" in target
43
68
  ? target.source?.range