@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.
- package/CHANGELOG.md +26 -1
- package/README.md +65 -57
- package/dist/api/declarative-validation.d.ts +2 -2
- package/dist/api/declarative-validation.d.ts.map +1 -1
- package/dist/api/declarative-validation.js +53 -31
- package/dist/api/declarative-validation.js.map +1 -1
- package/dist/cli/declarative-validation.d.ts.map +1 -1
- package/dist/cli/declarative-validation.js +7 -12
- package/dist/cli/declarative-validation.js.map +1 -1
- package/dist/declarative-validation/applicability/classifier.d.ts +18 -0
- package/dist/declarative-validation/applicability/classifier.d.ts.map +1 -0
- package/dist/declarative-validation/applicability/classifier.js +37 -0
- package/dist/declarative-validation/applicability/classifier.js.map +1 -0
- package/dist/declarative-validation/applicability/index.d.ts +2 -0
- package/dist/declarative-validation/applicability/index.d.ts.map +1 -0
- package/dist/declarative-validation/applicability/index.js +2 -0
- package/dist/declarative-validation/applicability/index.js.map +1 -0
- package/dist/declarative-validation/assertions/context.d.ts +2 -2
- package/dist/declarative-validation/assertions/context.d.ts.map +1 -1
- package/dist/declarative-validation/assertions/diagnostics.d.ts +7 -4
- package/dist/declarative-validation/assertions/diagnostics.d.ts.map +1 -1
- package/dist/declarative-validation/assertions/diagnostics.js +26 -1
- package/dist/declarative-validation/assertions/diagnostics.js.map +1 -1
- package/dist/declarative-validation/assertions/evaluator.d.ts +2 -2
- package/dist/declarative-validation/assertions/evaluator.d.ts.map +1 -1
- package/dist/declarative-validation/assertions/evaluator.js +3 -0
- package/dist/declarative-validation/assertions/evaluator.js.map +1 -1
- package/dist/declarative-validation/assertions/group-evaluator.d.ts +6 -0
- package/dist/declarative-validation/assertions/group-evaluator.d.ts.map +1 -0
- package/dist/declarative-validation/assertions/group-evaluator.js +57 -0
- package/dist/declarative-validation/assertions/group-evaluator.js.map +1 -0
- package/dist/declarative-validation/assertions/id-targets.d.ts +15 -0
- package/dist/declarative-validation/assertions/id-targets.d.ts.map +1 -1
- package/dist/declarative-validation/assertions/id-targets.js +18 -55
- package/dist/declarative-validation/assertions/id-targets.js.map +1 -1
- package/dist/declarative-validation/assertions/ids.d.ts.map +1 -1
- package/dist/declarative-validation/assertions/ids.js +100 -14
- package/dist/declarative-validation/assertions/ids.js.map +1 -1
- package/dist/declarative-validation/assertions/index.d.ts +1 -0
- package/dist/declarative-validation/assertions/index.d.ts.map +1 -1
- package/dist/declarative-validation/assertions/index.js +1 -0
- package/dist/declarative-validation/assertions/index.js.map +1 -1
- package/dist/declarative-validation/assertions/table-column-coverage.d.ts +9 -0
- package/dist/declarative-validation/assertions/table-column-coverage.d.ts.map +1 -0
- package/dist/declarative-validation/assertions/table-column-coverage.js +108 -0
- package/dist/declarative-validation/assertions/table-column-coverage.js.map +1 -0
- package/dist/declarative-validation/compiler/applicability-plan.d.ts +5 -0
- package/dist/declarative-validation/compiler/applicability-plan.d.ts.map +1 -0
- package/dist/declarative-validation/compiler/applicability-plan.js +22 -0
- package/dist/declarative-validation/compiler/applicability-plan.js.map +1 -0
- package/dist/declarative-validation/compiler/assertion-builders.d.ts +2 -1
- package/dist/declarative-validation/compiler/assertion-builders.d.ts.map +1 -1
- package/dist/declarative-validation/compiler/assertion-builders.js +51 -13
- package/dist/declarative-validation/compiler/assertion-builders.js.map +1 -1
- package/dist/declarative-validation/compiler/assertion-shapes.d.ts +3 -1
- package/dist/declarative-validation/compiler/assertion-shapes.d.ts.map +1 -1
- package/dist/declarative-validation/compiler/assertion-shapes.js +90 -0
- package/dist/declarative-validation/compiler/assertion-shapes.js.map +1 -1
- package/dist/declarative-validation/compiler/assertions.d.ts +2 -1
- package/dist/declarative-validation/compiler/assertions.d.ts.map +1 -1
- package/dist/declarative-validation/compiler/assertions.js +14 -4
- package/dist/declarative-validation/compiler/assertions.js.map +1 -1
- package/dist/declarative-validation/compiler/compatibility.d.ts.map +1 -1
- package/dist/declarative-validation/compiler/compatibility.js +1 -0
- package/dist/declarative-validation/compiler/compatibility.js.map +1 -1
- package/dist/declarative-validation/compiler/group-plans.d.ts +6 -0
- package/dist/declarative-validation/compiler/group-plans.d.ts.map +1 -0
- package/dist/declarative-validation/compiler/group-plans.js +67 -0
- package/dist/declarative-validation/compiler/group-plans.js.map +1 -0
- package/dist/declarative-validation/compiler/index.d.ts +1 -1
- package/dist/declarative-validation/compiler/index.d.ts.map +1 -1
- package/dist/declarative-validation/compiler/index.js +70 -35
- package/dist/declarative-validation/compiler/index.js.map +1 -1
- package/dist/declarative-validation/compiler/plan.d.ts +72 -4
- package/dist/declarative-validation/compiler/plan.d.ts.map +1 -1
- package/dist/declarative-validation/compiler/rule-fields.d.ts +6 -0
- package/dist/declarative-validation/compiler/rule-fields.d.ts.map +1 -0
- package/dist/declarative-validation/compiler/rule-fields.js +40 -0
- package/dist/declarative-validation/compiler/rule-fields.js.map +1 -0
- package/dist/declarative-validation/diagnostics/profile-config-diagnostics.d.ts +0 -1
- package/dist/declarative-validation/diagnostics/profile-config-diagnostics.d.ts.map +1 -1
- package/dist/declarative-validation/diagnostics/profile-config-diagnostics.js +8 -2
- package/dist/declarative-validation/diagnostics/profile-config-diagnostics.js.map +1 -1
- package/dist/declarative-validation/evidence/index.d.ts +3 -3
- package/dist/declarative-validation/evidence/index.d.ts.map +1 -1
- package/dist/declarative-validation/evidence/index.js +6 -6
- package/dist/declarative-validation/evidence/index.js.map +1 -1
- package/dist/declarative-validation/profile/applicability-schema.d.ts +4 -0
- package/dist/declarative-validation/profile/applicability-schema.d.ts.map +1 -0
- package/dist/declarative-validation/profile/applicability-schema.js +24 -0
- package/dist/declarative-validation/profile/applicability-schema.js.map +1 -0
- package/dist/declarative-validation/profile/assertion-schema.d.ts +2 -1
- package/dist/declarative-validation/profile/assertion-schema.d.ts.map +1 -1
- package/dist/declarative-validation/profile/assertion-schema.js +149 -14
- package/dist/declarative-validation/profile/assertion-schema.js.map +1 -1
- package/dist/declarative-validation/profile/direct-profile-diagnostics.d.ts +3 -1
- package/dist/declarative-validation/profile/direct-profile-diagnostics.d.ts.map +1 -1
- package/dist/declarative-validation/profile/direct-profile-diagnostics.js +10 -2
- package/dist/declarative-validation/profile/direct-profile-diagnostics.js.map +1 -1
- package/dist/declarative-validation/profile/group-schema.d.ts +5 -0
- package/dist/declarative-validation/profile/group-schema.d.ts.map +1 -0
- package/dist/declarative-validation/profile/group-schema.js +55 -0
- package/dist/declarative-validation/profile/group-schema.js.map +1 -0
- package/dist/declarative-validation/profile/ids-assertion-contract.d.ts +12 -0
- package/dist/declarative-validation/profile/ids-assertion-contract.d.ts.map +1 -0
- package/dist/declarative-validation/profile/ids-assertion-contract.js +32 -0
- package/dist/declarative-validation/profile/ids-assertion-contract.js.map +1 -0
- package/dist/declarative-validation/profile/index.d.ts +42 -2
- package/dist/declarative-validation/profile/index.d.ts.map +1 -1
- package/dist/declarative-validation/profile/index.js.map +1 -1
- package/dist/declarative-validation/profile/materialization.d.ts.map +1 -1
- package/dist/declarative-validation/profile/materialization.js +13 -10
- package/dist/declarative-validation/profile/materialization.js.map +1 -1
- package/dist/declarative-validation/profile/schema.d.ts.map +1 -1
- package/dist/declarative-validation/profile/schema.js +73 -12
- package/dist/declarative-validation/profile/schema.js.map +1 -1
- package/dist/declarative-validation/profile/syntax-version.d.ts +7 -0
- package/dist/declarative-validation/profile/syntax-version.d.ts.map +1 -0
- package/dist/declarative-validation/profile/syntax-version.js +11 -0
- package/dist/declarative-validation/profile/syntax-version.js.map +1 -0
- package/dist/declarative-validation/results/clone-rule-result.d.ts +6 -0
- package/dist/declarative-validation/results/clone-rule-result.d.ts.map +1 -0
- package/dist/declarative-validation/results/clone-rule-result.js +125 -0
- package/dist/declarative-validation/results/clone-rule-result.js.map +1 -0
- package/dist/declarative-validation/results/create-result.d.ts +15 -0
- package/dist/declarative-validation/results/create-result.d.ts.map +1 -0
- package/dist/declarative-validation/results/create-result.js +58 -0
- package/dist/declarative-validation/results/create-result.js.map +1 -0
- package/dist/declarative-validation/results/index.d.ts +3 -25
- package/dist/declarative-validation/results/index.d.ts.map +1 -1
- package/dist/declarative-validation/results/index.js +2 -1
- package/dist/declarative-validation/results/index.js.map +1 -1
- package/dist/declarative-validation/results/skipped-rule-result.d.ts +10 -0
- package/dist/declarative-validation/results/skipped-rule-result.d.ts.map +1 -0
- package/dist/declarative-validation/results/skipped-rule-result.js +18 -0
- package/dist/declarative-validation/results/skipped-rule-result.js.map +1 -0
- package/dist/declarative-validation/results/types.d.ts +77 -0
- package/dist/declarative-validation/results/types.d.ts.map +1 -0
- package/dist/declarative-validation/results/types.js +2 -0
- package/dist/declarative-validation/results/types.js.map +1 -0
- package/dist/declarative-validation/selectors/table-targets.d.ts +23 -0
- package/dist/declarative-validation/selectors/table-targets.d.ts.map +1 -1
- package/dist/declarative-validation/selectors/table-targets.js +52 -9
- package/dist/declarative-validation/selectors/table-targets.js.map +1 -1
- package/dist-bundled/markdown-engine-cli.mjs +26826 -0
- package/docs/contracts/api.md +19 -15
- package/docs/contracts/declarative-validation.md +319 -36
- package/package.json +8 -3
- package/skills/profile-backed-markdown/SKILL.md +54 -0
- package/skills/profile-backed-markdown/assets/profiles/operational-spec.yaml +98 -0
- package/skills/profile-backed-markdown/references/repair-brief.md +14 -0
- 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
|
|
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
|
-
|
|
6
|
+
Package release state:
|
|
7
7
|
|
|
8
8
|
- package name: `@jasonbelmonti/markdown-engine`
|
|
9
|
-
- version: `
|
|
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:
|
|
12
|
-
`documentVersion: "1.0.0"` rich IR contract as the
|
|
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
|
|
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
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
`tables`, `lists`, and `links`) or pin
|
|
172
|
-
`normalize(parsed, { documentVersion: "0.0.0" })` until
|
|
173
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
- [
|
|
205
|
-
- [
|
|
206
|
-
- [
|
|
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;
|
|
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 {
|
|
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
|
|
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
|
|
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
|
|
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
|
|
42
|
+
return createDeclarativeValidationResult({
|
|
43
|
+
document,
|
|
44
|
+
profile: materializedProfile.profile,
|
|
45
|
+
ruleResults,
|
|
46
|
+
diagnostics,
|
|
47
|
+
options,
|
|
48
|
+
});
|
|
30
49
|
}
|
|
31
|
-
function
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
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":"AAGA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"declarative-validation.js","sourceRoot":"","sources":["../../src/api/declarative-validation.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,4CAA4C,EAAE,MAAM,kDAAkD,CAAC;AAChH,OAAO,EACL,oCAAoC,EACpC,oCAAoC,EACpC,+BAA+B,EAC/B,yBAAyB,GAC1B,MAAM,+CAA+C,CAAC;AACvD,OAAO,EAAE,wBAAwB,EAAE,MAAM,6CAA6C,CAAC;AAMvF,OAAO,EAAE,2BAA2B,EAAE,MAAM,4CAA4C,CAAC;AACzF,OAAO,EAAE,4BAA4B,EAAE,MAAM,sDAAsD,CAAC;AAOpG,OAAO,EACL,iCAAiC,EACjC,4CAA4C,GAC7C,MAAM,4CAA4C,CAAC;AAKpD,OAAO,EAAE,0BAA0B,EAAE,MAAM,8CAA8C,CAAC;AA0D1F,MAAM,UAAU,sBAAsB,CACpC,KAA6B,EAC7B,UAA0C,EAAE;IAE5C,OAAO,2BAA2B,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,QAAwB,EACxB,OAA0B,EAC1B,UAAwC,EAAE;IAE1C,MAAM,mBAAmB,GAAG,4BAA4B,CACtD,OAAO,EACP,QAAQ,CAAC,OAAO,CACjB,CAAC;IACF,IAAI,mBAAmB,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/C,OAAO,iCAAiC,CAAC;YACvC,QAAQ;YACR,OAAO,EAAE,mBAAmB,CAAC,OAAO;YACpC,WAAW,EAAE,EAAE;YACf,WAAW,EAAE,mBAAmB,CAAC,WAAW;YAC5C,OAAO;SACR,CAAC,CAAC;IACL,CAAC;IAED,MAAM,sBAAsB,GAC1B,mBAAmB,CAAC,OAAO,CAAC,eAAe,IAAI,QAAQ,CAAC,OAAO,CAAC;IAClE,MAAM,kBAAkB,GACtB,sBAAsB,KAAK,QAAQ,CAAC,OAAO;QACzC,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,CAAC,iCAAiC,CAAC,sBAAsB,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IAEpF,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClC,OAAO,iCAAiC,CAAC;YACvC,QAAQ;YACR,OAAO,EAAE,mBAAmB,CAAC,OAAO;YACpC,WAAW,EAAE,EAAE;YACf,WAAW,EAAE,kBAAkB;YAC/B,OAAO;SACR,CAAC,CAAC;IACL,CAAC;IAED,MAAM,aAAa,GAAG,wBAAwB,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAC5E,MAAM,aAAa,GAAG,aAAa,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;IACtD,MAAM,WAAW,GAAG,yBAAyB,CAC3C,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,8BAA8B,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAChF,CAAC;IACF,MAAM,WAAW,GAAG;QAClB,GAAG,aAAa,CAAC,WAAW;QAC5B,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC;KACvD,CAAC;IACF,OAAO,iCAAiC,CAAC;QACvC,QAAQ;QACR,OAAO,EAAE,mBAAmB,CAAC,OAAO;QACpC,WAAW;QACX,WAAW;QACX,OAAO;KACR,CAAC,CAAC;AACL,CAAC;AAED,SAAS,8BAA8B,CACrC,QAAwB,EACxB,IAAuC;IAEvC,MAAM,aAAa,GAAG,4CAA4C,CAChE,IAAI,EACJ,QAAQ,CACT,CAAC;IAEF,OAAO,aAAa,CAAC,MAAM,KAAK,YAAY;QAC1C,CAAC,CAAC;YACE,4CAA4C,CAAC;gBAC3C,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,IAAI,EAAE,aAAa,CAAC,MAAM;aAC3B,CAAC;SACH;QACH,CAAC,CAAC,oBAAoB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AAC3C,CAAC;AAED,SAAS,oBAAoB,CAC3B,QAAwB,EACxB,IAAuC;IAEvC,IAAI,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,oCAAoC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChE,CAAC;IAED,IAAI,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,oCAAoC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChE,CAAC;IAED,OAAO;QACL,+BAA+B,CAC7B,IAAI,EACJ,0BAA0B,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CACpD;KACF,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAC1B,IAAuC;IAEvC,OAAO,MAAM,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC;AACjD,CAAC;AAED,SAAS,mBAAmB,CAC1B,IAAuC;IAEvC,OAAO,MAAM,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC;AACjD,CAAC;AAED,SAAS,iCAAiC,CACxC,sBAAiD,EACjD,eAA0C;IAE1C,OAAO;QACL,IAAI,EAAE,wCAAwC;QAC9C,OAAO,EAAE,4BAA4B,sBAAsB,sCAAsC,eAAe,IAAI;QACpH,QAAQ,EAAE,OAAgB;KAC3B,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"declarative-validation.d.ts","sourceRoot":"","sources":["../../src/cli/declarative-validation.ts"],"names":[],"mappings":"
|
|
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
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
diagnostics: clonedDiagnostics,
|
|
72
|
+
return createDeclarativeValidationResult({
|
|
73
|
+
document,
|
|
74
|
+
profile,
|
|
76
75
|
ruleResults: [],
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
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":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAGvE,OAAO,EAAE,wBAAwB,EAAE,MAAM,6CAA6C,CAAC;AACvF,OAAO,EAAE,
|
|
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 @@
|
|
|
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 @@
|
|
|
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 {
|
|
1
|
+
import type { CompiledDeclarativeValidationExecutableRule } from "../compiler/plan.js";
|
|
2
2
|
import type { DeclarativeSelection } from "../selectors/index.js";
|
|
3
3
|
export interface AssertionEvaluationContext {
|
|
4
|
-
rule:
|
|
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,
|
|
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,
|
|
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
|
|
20
|
-
export declare function
|
|
21
|
-
export declare function
|
|
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,
|
|
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
|
|
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
|