@timiagama/ecr 0.0.1 → 0.1.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/LICENSE +202 -0
- package/NOTICE +16 -0
- package/README.md +411 -7
- package/dist/bin.d.ts +20 -0
- package/dist/bin.d.ts.map +1 -0
- package/dist/bin.js +26 -0
- package/dist/bin.js.map +1 -0
- package/dist/cli/corpus-loader.d.ts +198 -0
- package/dist/cli/corpus-loader.d.ts.map +1 -0
- package/dist/cli/corpus-loader.js +351 -0
- package/dist/cli/corpus-loader.js.map +1 -0
- package/dist/cli/corpus-statistics.d.ts +113 -0
- package/dist/cli/corpus-statistics.d.ts.map +1 -0
- package/dist/cli/corpus-statistics.js +119 -0
- package/dist/cli/corpus-statistics.js.map +1 -0
- package/dist/cli/diagnostic-reporter.d.ts +103 -0
- package/dist/cli/diagnostic-reporter.d.ts.map +1 -0
- package/dist/cli/diagnostic-reporter.js +254 -0
- package/dist/cli/diagnostic-reporter.js.map +1 -0
- package/dist/cli/project-ignore.d.ts +113 -0
- package/dist/cli/project-ignore.d.ts.map +1 -0
- package/dist/cli/project-ignore.js +199 -0
- package/dist/cli/project-ignore.js.map +1 -0
- package/dist/cli/safe-text.d.ts +25 -0
- package/dist/cli/safe-text.d.ts.map +1 -0
- package/dist/cli/safe-text.js +34 -0
- package/dist/cli/safe-text.js.map +1 -0
- package/dist/cli/supervisor.d.ts +108 -0
- package/dist/cli/supervisor.d.ts.map +1 -0
- package/dist/cli/supervisor.js +139 -0
- package/dist/cli/supervisor.js.map +1 -0
- package/dist/cli.d.ts +247 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +591 -0
- package/dist/cli.js.map +1 -0
- package/dist/corpus-validator.d.ts +183 -0
- package/dist/corpus-validator.d.ts.map +1 -0
- package/dist/corpus-validator.js +479 -0
- package/dist/corpus-validator.js.map +1 -0
- package/dist/document-identity-rule.d.ts +198 -0
- package/dist/document-identity-rule.d.ts.map +1 -0
- package/dist/document-identity-rule.js +244 -0
- package/dist/document-identity-rule.js.map +1 -0
- package/dist/ecr.d.ts +103 -0
- package/dist/ecr.d.ts.map +1 -0
- package/dist/ecr.js +216 -0
- package/dist/ecr.js.map +1 -0
- package/dist/glob-pattern.d.ts +94 -0
- package/dist/glob-pattern.d.ts.map +1 -0
- package/dist/glob-pattern.js +188 -0
- package/dist/glob-pattern.js.map +1 -0
- package/dist/heading-source-form.d.ts +77 -0
- package/dist/heading-source-form.d.ts.map +1 -0
- package/dist/heading-source-form.js +129 -0
- package/dist/heading-source-form.js.map +1 -0
- package/dist/identifier-grammar.d.ts +212 -0
- package/dist/identifier-grammar.d.ts.map +1 -0
- package/dist/identifier-grammar.js +273 -0
- package/dist/identifier-grammar.js.map +1 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -0
- package/dist/inline-reference-rule.d.ts +557 -0
- package/dist/inline-reference-rule.d.ts.map +1 -0
- package/dist/inline-reference-rule.js +802 -0
- package/dist/inline-reference-rule.js.map +1 -0
- package/dist/meta-documents.d.ts +91 -0
- package/dist/meta-documents.d.ts.map +1 -0
- package/dist/meta-documents.js +133 -0
- package/dist/meta-documents.js.map +1 -0
- package/dist/per-document-visitor.d.ts +510 -0
- package/dist/per-document-visitor.d.ts.map +1 -0
- package/dist/per-document-visitor.js +1032 -0
- package/dist/per-document-visitor.js.map +1 -0
- package/dist/references-section-rule.d.ts +482 -0
- package/dist/references-section-rule.d.ts.map +1 -0
- package/dist/references-section-rule.js +777 -0
- package/dist/references-section-rule.js.map +1 -0
- package/dist/section-hierarchy-rule.d.ts +299 -0
- package/dist/section-hierarchy-rule.d.ts.map +1 -0
- package/dist/section-hierarchy-rule.js +482 -0
- package/dist/section-hierarchy-rule.js.map +1 -0
- package/dist/source-alignment.d.ts +41 -0
- package/dist/source-alignment.d.ts.map +1 -0
- package/dist/source-alignment.js +166 -0
- package/dist/source-alignment.js.map +1 -0
- package/dist/source-lines.d.ts +69 -0
- package/dist/source-lines.d.ts.map +1 -0
- package/dist/source-lines.js +104 -0
- package/dist/source-lines.js.map +1 -0
- package/dist/spec-version.d.ts +19 -0
- package/dist/spec-version.d.ts.map +1 -0
- package/dist/spec-version.js +19 -0
- package/dist/spec-version.js.map +1 -0
- package/dist/types.d.ts +219 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +11 -0
- package/dist/types.js.map +1 -0
- package/examples/docs/0. Orientation/0.0 - System Overview.md +34 -0
- package/examples/docs/0. Orientation/0.0.1 - Glossary.md +21 -0
- package/examples/docs/0. Orientation/0.0.2 - Quality Gates.md +22 -0
- package/examples/docs/3. Ingestion/3.1 - Ingestion - Validation Rules.md +33 -0
- package/examples/docs/4. Payments/4.10 - Settlement.md +22 -0
- package/examples/docs/4. Payments/4.2 - Payment Processing Contract.md +33 -0
- package/examples/docs/8. Orchestration/8.1 - Workflow Orchestration Contract.md +38 -0
- package/examples/docs/8. Orchestration/8.1.3 - Retry Policy.md +17 -0
- package/examples/docs/8. Orchestration/8.10 - Dead Letter Queue.md +20 -0
- package/examples/docs/README.md +7 -0
- package/package.json +65 -7
- package/protocol/navigation-protocol.md +223 -0
- package/spec/v2/1 - ECR - Structural Specification.md +1467 -0
- package/spec/v2/2 - ECR - User Guide.md +845 -0
- package/spec/v2/3 - Design Rationale - The Section Separator.md +243 -0
- package/src/bin.ts +30 -0
- package/src/cli/corpus-loader.ts +482 -0
- package/src/cli/corpus-statistics.ts +196 -0
- package/src/cli/diagnostic-reporter.ts +344 -0
- package/src/cli/project-ignore.ts +238 -0
- package/src/cli/safe-text.ts +39 -0
- package/src/cli/supervisor.ts +204 -0
- package/src/cli.ts +836 -0
- package/src/corpus-validator.ts +642 -0
- package/src/document-identity-rule.ts +422 -0
- package/src/ecr.ts +298 -0
- package/src/glob-pattern.ts +242 -0
- package/src/heading-source-form.ts +173 -0
- package/src/identifier-grammar.ts +380 -0
- package/src/index.ts +78 -0
- package/src/inline-reference-rule.ts +1235 -0
- package/src/meta-documents.ts +159 -0
- package/src/per-document-visitor.ts +1528 -0
- package/src/references-section-rule.ts +1182 -0
- package/src/section-hierarchy-rule.ts +705 -0
- package/src/source-alignment.ts +209 -0
- package/src/source-lines.ts +123 -0
- package/src/spec-version.ts +19 -0
- package/src/types.ts +267 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"per-document-visitor.js","sourceRoot":"","sources":["../src/per-document-visitor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,482 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* References Section Rule (ECR103)
|
|
3
|
+
*
|
|
4
|
+
* Validates the mandatory References section defined in the ECR specification:
|
|
5
|
+
* - 1#9.6 -- References Section Rules (Mandatory)
|
|
6
|
+
* - 1#9.7 -- Direction Label Semantics
|
|
7
|
+
* - 1#9.8 -- Per-Document Structural Invariants ("References section present exactly once",
|
|
8
|
+
* "No duplicate TargetDocID entries in References")
|
|
9
|
+
*
|
|
10
|
+
* This rule operates on heading node data to detect the `## References` heading,
|
|
11
|
+
* and on list item text content to parse and validate individual reference entries.
|
|
12
|
+
* It delegates identifier parsing to {@link IdentifierGrammar} and emits
|
|
13
|
+
* {@link Diagnostic} objects for any violations.
|
|
14
|
+
*
|
|
15
|
+
* Extracted artefacts:
|
|
16
|
+
* - {@link ReferenceEdge} for each valid list item in the References section
|
|
17
|
+
*/
|
|
18
|
+
import type { DocID, Diagnostic, PositionRange, ReferenceEdge, ReferenceDirection } from './types.js';
|
|
19
|
+
import { IdentifierGrammar } from './identifier-grammar.js';
|
|
20
|
+
import type { HeadingNodeData } from './document-identity-rule.js';
|
|
21
|
+
/**
|
|
22
|
+
* Canonical rule identifier for the References Section Rule.
|
|
23
|
+
*
|
|
24
|
+
* Referenced as [ECR103] in the ECR specification (1#9.6).
|
|
25
|
+
*/
|
|
26
|
+
export declare const REFERENCES_SECTION_RULE_ID: string;
|
|
27
|
+
/**
|
|
28
|
+
* Data extracted from a single list item AST node within the References
|
|
29
|
+
* section, provided by the document traversal layer.
|
|
30
|
+
*
|
|
31
|
+
* The rule does not parse Markdown itself; it operates on list item
|
|
32
|
+
* data supplied by the visitor/traversal infrastructure.
|
|
33
|
+
*/
|
|
34
|
+
export interface ListItemNodeData {
|
|
35
|
+
/**
|
|
36
|
+
* Plain text content of the list item node.
|
|
37
|
+
*
|
|
38
|
+
* Expected to match the pattern:
|
|
39
|
+
* `TargetDocID <dash> Title " (" Direction <dash> Explanation ")"`
|
|
40
|
+
*
|
|
41
|
+
* @example "3.1 - Scenario Authoring (authority - defines guardrail logic)"
|
|
42
|
+
*/
|
|
43
|
+
readonly text: string;
|
|
44
|
+
/**
|
|
45
|
+
* Positional range of the list item node within the source document.
|
|
46
|
+
* Optional; depends on whether the Markdown parser provides positional metadata.
|
|
47
|
+
*/
|
|
48
|
+
readonly range?: PositionRange;
|
|
49
|
+
/**
|
|
50
|
+
* The parsed nodes that make up {@link text}, in order, joined to form it.
|
|
51
|
+
*
|
|
52
|
+
* Needed to locate the relationship parenthetical in the source. It is
|
|
53
|
+
* found in the parsed text, and only the parsed text knows which `(` it
|
|
54
|
+
* is: raw Markdown gains and loses parentheses through character
|
|
55
|
+
* references, formatting and link destinations, so balancing the source
|
|
56
|
+
* separately picked a different `(` and judged the wrong one. The segment
|
|
57
|
+
* holding the parsed `(` says where to look. When absent, as in unit tests
|
|
58
|
+
* that supply only text, the label's source position is not checked.
|
|
59
|
+
*/
|
|
60
|
+
readonly segments?: readonly ListItemSegment[];
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* One parsed node's contribution to a References entry's text.
|
|
64
|
+
*/
|
|
65
|
+
export interface ListItemSegment {
|
|
66
|
+
/**
|
|
67
|
+
* How the segment's characters map back to the source: `text` for a parsed
|
|
68
|
+
* text node, through escapes and character references; `code` for inline
|
|
69
|
+
* code, whose content is the source between its backtick fences; `other`
|
|
70
|
+
* for anything else that contributes text, such as the text of HTML, which
|
|
71
|
+
* is not traced.
|
|
72
|
+
*/
|
|
73
|
+
readonly kind: 'text' | 'code' | 'other';
|
|
74
|
+
/** The characters the node contributes. */
|
|
75
|
+
readonly text: string;
|
|
76
|
+
/** The node's position in the source. */
|
|
77
|
+
readonly range?: PositionRange;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* The complete result produced by finalising the References Section Rule
|
|
81
|
+
* after all headings and list items have been evaluated.
|
|
82
|
+
*
|
|
83
|
+
* Contains zero or more diagnostics and the list of successfully extracted
|
|
84
|
+
* reference edges.
|
|
85
|
+
*/
|
|
86
|
+
export interface ReferencesSectionRuleResult {
|
|
87
|
+
/** Diagnostics emitted during evaluation (errors for violations). */
|
|
88
|
+
readonly diagnostics: readonly Diagnostic[];
|
|
89
|
+
/**
|
|
90
|
+
* Reference edges extracted from valid list items, in document traversal order.
|
|
91
|
+
*
|
|
92
|
+
* Each edge represents a document-level typed relationship from the current
|
|
93
|
+
* document to a referenced document.
|
|
94
|
+
*/
|
|
95
|
+
readonly references: readonly ReferenceEdge[];
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Represents the successfully parsed components of a single References
|
|
99
|
+
* section list item.
|
|
100
|
+
*
|
|
101
|
+
* This is an intermediate type used internally during evaluation. It holds
|
|
102
|
+
* the parsed fields before they are assembled into a {@link ReferenceEdge}.
|
|
103
|
+
*/
|
|
104
|
+
export interface ParsedReferenceEntry {
|
|
105
|
+
/** The target DocID extracted from the list item. */
|
|
106
|
+
readonly targetDocId: DocID;
|
|
107
|
+
/** The title text extracted from the list item. */
|
|
108
|
+
readonly title: string;
|
|
109
|
+
/** The direction label extracted from the parenthetical. */
|
|
110
|
+
readonly direction: ReferenceDirection;
|
|
111
|
+
/** The explanation text extracted from the parenthetical. */
|
|
112
|
+
readonly explanation: string;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Configuration options for constructing a {@link ReferencesSectionRule} instance.
|
|
116
|
+
*/
|
|
117
|
+
export interface ReferencesSectionRuleOptions {
|
|
118
|
+
/**
|
|
119
|
+
* The opaque, host-provided URI identifying the document being validated.
|
|
120
|
+
* Attached to all emitted diagnostics.
|
|
121
|
+
*/
|
|
122
|
+
readonly uri: string;
|
|
123
|
+
/**
|
|
124
|
+
* The DocID established by the {@link DocumentIdentityRule} for this document.
|
|
125
|
+
* Used as the `fromDocId` field in all extracted {@link ReferenceEdge} objects.
|
|
126
|
+
*/
|
|
127
|
+
readonly docId: DocID;
|
|
128
|
+
/**
|
|
129
|
+
* The {@link IdentifierGrammar} instance used for DocID parsing
|
|
130
|
+
* and separator validation.
|
|
131
|
+
*/
|
|
132
|
+
readonly grammar: IdentifierGrammar;
|
|
133
|
+
/**
|
|
134
|
+
* The document's raw Markdown, for the References source-form checks of
|
|
135
|
+
* 1#9.11 rule 4. When absent, as in unit tests that supply only parsed
|
|
136
|
+
* text, those checks are skipped.
|
|
137
|
+
*/
|
|
138
|
+
readonly sourceText?: string;
|
|
139
|
+
}
|
|
140
|
+
/** The `data.cause` of a `## References` heading no recipe can find. */
|
|
141
|
+
export declare const REFERENCES_HEADING_SOURCE_FORM_CAUSE: string;
|
|
142
|
+
/** The `data.cause` of a References section that is not at the document root. */
|
|
143
|
+
export declare const REFERENCES_PLACEMENT_CAUSE: string;
|
|
144
|
+
/** The `data.cause` of a References entry the entry recipes cannot find. */
|
|
145
|
+
export declare const REFERENCES_ENTRY_SOURCE_FORM_CAUSE: string;
|
|
146
|
+
/** The `data.cause` of an entry whose relationship parenthetical never closes. */
|
|
147
|
+
export declare const REFERENCES_ENTRY_UNBALANCED_CAUSE: string;
|
|
148
|
+
/** The `data.cause` of a References section with no entries (reported as info). */
|
|
149
|
+
export declare const REFERENCES_EMPTY_CAUSE: string;
|
|
150
|
+
/**
|
|
151
|
+
* Validates the References Section Rule as defined in the ECR specification (1#9.6, 1#9.7, 1#9.8).
|
|
152
|
+
*
|
|
153
|
+
* The rule enforces that:
|
|
154
|
+
* - Exactly one `## References` heading exists in the document
|
|
155
|
+
* - A list node immediately follows the References heading
|
|
156
|
+
* - Each list item matches the required format:
|
|
157
|
+
* `TargetDocID <dash> Title " (" Direction <dash> Explanation ")"`
|
|
158
|
+
* - TargetDocID is a valid DocID per the identifier grammar
|
|
159
|
+
* - Direction is one of: authority, dependency, constraint, contract
|
|
160
|
+
* - Title and Explanation are non-empty
|
|
161
|
+
* - Each separator is a dash: hyphen-minus, en dash or em dash
|
|
162
|
+
* - No duplicate TargetDocID entries exist
|
|
163
|
+
*
|
|
164
|
+
* For each valid list item, the rule extracts a {@link ReferenceEdge} with
|
|
165
|
+
* `fromDocId` set to the document's established DocID.
|
|
166
|
+
*
|
|
167
|
+
* Usage:
|
|
168
|
+
* 1. Construct a rule instance with the document URI, established DocID,
|
|
169
|
+
* and an {@link IdentifierGrammar}.
|
|
170
|
+
* 2. Call {@link evaluateHeading} for every heading node encountered during
|
|
171
|
+
* AST traversal. The rule uses this to detect `## References` headings.
|
|
172
|
+
* 3. Call {@link evaluateListItem} for every list item node encountered
|
|
173
|
+
* within the References section during AST traversal.
|
|
174
|
+
* 4. Call {@link finalise} after all nodes have been evaluated to obtain
|
|
175
|
+
* the complete result including any "missing References" diagnostics.
|
|
176
|
+
*
|
|
177
|
+
* @example
|
|
178
|
+
* ```ts
|
|
179
|
+
* const grammar = new IdentifierGrammar();
|
|
180
|
+
* const rule = new ReferencesSectionRule({
|
|
181
|
+
* uri: 'file:///doc.md',
|
|
182
|
+
* docId: '5.1',
|
|
183
|
+
* grammar,
|
|
184
|
+
* });
|
|
185
|
+
*
|
|
186
|
+
* rule.evaluateHeading({ depth: 1, text: '5.1 - My Document' });
|
|
187
|
+
* rule.evaluateHeading({ depth: 2, text: '5.1#1 - Section' });
|
|
188
|
+
* rule.evaluateHeading({ depth: 2, text: 'References' });
|
|
189
|
+
*
|
|
190
|
+
* rule.evaluateListItem({
|
|
191
|
+
* text: '3.1 - Scenario Authoring (authority - defines guardrail logic)',
|
|
192
|
+
* });
|
|
193
|
+
* rule.evaluateListItem({
|
|
194
|
+
* text: '8.1 - Orchestration Contract (constraint - retry semantics)',
|
|
195
|
+
* });
|
|
196
|
+
*
|
|
197
|
+
* const result: ReferencesSectionRuleResult = rule.finalise();
|
|
198
|
+
* ```
|
|
199
|
+
*/
|
|
200
|
+
export declare class ReferencesSectionRule {
|
|
201
|
+
/** The opaque, host-provided URI identifying the document being validated. */
|
|
202
|
+
private readonly uri;
|
|
203
|
+
/** The established DocID for this document, used as `fromDocId` in extracted edges. */
|
|
204
|
+
private readonly docId;
|
|
205
|
+
/** The grammar instance used for DocID parsing and separator validation. */
|
|
206
|
+
private readonly grammar;
|
|
207
|
+
/** Diagnostics accumulated during evaluation. */
|
|
208
|
+
private readonly collectedDiagnostics;
|
|
209
|
+
/** Reference edges extracted from valid list items, in traversal order. */
|
|
210
|
+
private readonly collectedReferences;
|
|
211
|
+
/**
|
|
212
|
+
* Number of `## References` headings encountered during evaluation.
|
|
213
|
+
* Used to detect missing or duplicate References sections.
|
|
214
|
+
*/
|
|
215
|
+
private referencesHeadingCount;
|
|
216
|
+
/**
|
|
217
|
+
* Set of TargetDocIDs already encountered in the References section,
|
|
218
|
+
* for duplicate detection.
|
|
219
|
+
*/
|
|
220
|
+
private readonly encounteredTargetDocIds;
|
|
221
|
+
/** The document's source by line; absent when none was supplied. */
|
|
222
|
+
private readonly sourceLines;
|
|
223
|
+
/**
|
|
224
|
+
* Whether the section was found somewhere other than the document root.
|
|
225
|
+
* Its placement is then the one thing reported: every line of a nested
|
|
226
|
+
* section starts with its container's prefix, so checking each entry's
|
|
227
|
+
* source form as well would report the same mistake once per entry.
|
|
228
|
+
*/
|
|
229
|
+
private sectionMisplaced;
|
|
230
|
+
/**
|
|
231
|
+
* Number of list items evaluated under the References heading, valid or
|
|
232
|
+
* not. Zero means the section declares no entries (1#9.6).
|
|
233
|
+
*/
|
|
234
|
+
private evaluatedListItemCount;
|
|
235
|
+
/**
|
|
236
|
+
* Constructs a new References Section Rule evaluator.
|
|
237
|
+
*
|
|
238
|
+
* @param options - Configuration including the document URI, established DocID,
|
|
239
|
+
* and grammar instance
|
|
240
|
+
*/
|
|
241
|
+
constructor(options: ReferencesSectionRuleOptions);
|
|
242
|
+
/**
|
|
243
|
+
* Records where the References section sits, and checks its heading's
|
|
244
|
+
* source form (1#9.11 rules 3 and 4).
|
|
245
|
+
*
|
|
246
|
+
* Called once, by the traversal layer, for the section whose list it then
|
|
247
|
+
* feeds. A section nested in a blockquote, a list item or any other
|
|
248
|
+
* container is reported once as misplaced. One at the root has its heading
|
|
249
|
+
* line checked: it must be `## References` at the start of a line a search
|
|
250
|
+
* sees, because the recipe that reads a document's references is
|
|
251
|
+
* `^## References`.
|
|
252
|
+
*
|
|
253
|
+
* @param headingRange - Position of the `## References` heading
|
|
254
|
+
* @param nested - Whether the heading, or the list after it, is not a root child
|
|
255
|
+
*/
|
|
256
|
+
evaluateSectionPlacement(headingRange: PositionRange | undefined, nested: boolean): void;
|
|
257
|
+
/**
|
|
258
|
+
* Evaluates a single heading node to detect `## References` headings.
|
|
259
|
+
*
|
|
260
|
+
* A heading is considered a References heading when its depth is exactly 2
|
|
261
|
+
* and its text content is exactly "References". The rule tracks how many
|
|
262
|
+
* such headings are encountered to enforce the "exactly one" constraint.
|
|
263
|
+
*
|
|
264
|
+
* Headings that do not match are ignored by this rule.
|
|
265
|
+
*
|
|
266
|
+
* @param headingNodeData - Data extracted from a heading AST node
|
|
267
|
+
*/
|
|
268
|
+
evaluateHeading(headingNodeData: HeadingNodeData): void;
|
|
269
|
+
/**
|
|
270
|
+
* Evaluates a single list item node from within the References section.
|
|
271
|
+
*
|
|
272
|
+
* For each list item, the method validates:
|
|
273
|
+
* 1. The entry carries its separators (any dash variant is accepted)
|
|
274
|
+
* 2. The overall format matches:
|
|
275
|
+
* `TargetDocID <dash> Title " (" Direction <dash> Explanation ")"`
|
|
276
|
+
* 3. TargetDocID parses as a valid DocID per the identifier grammar
|
|
277
|
+
* 4. Direction is one of the allowed enumeration values
|
|
278
|
+
* 5. Title is non-empty (after trimming)
|
|
279
|
+
* 6. Explanation is non-empty (after trimming)
|
|
280
|
+
* 7. TargetDocID has not been seen before in this References section
|
|
281
|
+
*
|
|
282
|
+
* When all validations pass, a {@link ReferenceEdge} is extracted with
|
|
283
|
+
* `fromDocId` set to the document's DocID.
|
|
284
|
+
*
|
|
285
|
+
* When any validation fails, an error diagnostic is emitted and no
|
|
286
|
+
* edge is extracted for that list item.
|
|
287
|
+
*
|
|
288
|
+
* @param listItemNodeData - Data extracted from a list item AST node
|
|
289
|
+
* within the References section
|
|
290
|
+
*/
|
|
291
|
+
evaluateListItem(listItemNodeData: ListItemNodeData): void;
|
|
292
|
+
/**
|
|
293
|
+
* Indicates whether the References section heading has been detected.
|
|
294
|
+
*
|
|
295
|
+
* This is used by the traversal layer to determine when list items
|
|
296
|
+
* should be fed to this rule. Only list items immediately following
|
|
297
|
+
* the `## References` heading should be evaluated.
|
|
298
|
+
*
|
|
299
|
+
* @returns `true` if at least one `## References` heading has been encountered
|
|
300
|
+
*/
|
|
301
|
+
tellReferencesHeadingDetected(): boolean;
|
|
302
|
+
/**
|
|
303
|
+
* Finalises the rule evaluation and produces the complete result.
|
|
304
|
+
*
|
|
305
|
+
* This method must be called after all heading and list item nodes
|
|
306
|
+
* have been supplied via {@link evaluateHeading} and {@link evaluateListItem}.
|
|
307
|
+
* It analyses the count of References headings encountered and emits
|
|
308
|
+
* appropriate diagnostics:
|
|
309
|
+
*
|
|
310
|
+
* - Zero References headings: emits a "missing References section" error diagnostic
|
|
311
|
+
* - Multiple References headings: emits a "multiple References sections" error diagnostic
|
|
312
|
+
* - Exactly one References heading with no list items: emits an "empty section" info
|
|
313
|
+
* diagnostic, since an empty section is valid (1#9.6)
|
|
314
|
+
*
|
|
315
|
+
* @returns The complete rule result including all diagnostics and extracted reference edges
|
|
316
|
+
*/
|
|
317
|
+
finalise(): ReferencesSectionRuleResult;
|
|
318
|
+
/**
|
|
319
|
+
* Parses a list item text string into its component parts.
|
|
320
|
+
*
|
|
321
|
+
* Attempts to match the pattern:
|
|
322
|
+
* `TargetDocID <dash> Title " (" Direction <dash> Explanation ")"`
|
|
323
|
+
*
|
|
324
|
+
* The relationship parenthetical is located first, by matching the entry's
|
|
325
|
+
* final `)` to its opening `(` (1#9.6). Taking the last `" ("` instead read
|
|
326
|
+
* `defines retries (contract - policy)` as a `contract` edge, and failed
|
|
327
|
+
* outright on `defines retries (including backoff)`. Within the
|
|
328
|
+
* parenthetical, the first separator splits Direction from Explanation;
|
|
329
|
+
* before it, the first separator splits TargetDocID from Title, which may
|
|
330
|
+
* itself contain separators.
|
|
331
|
+
*
|
|
332
|
+
* @param text - The plain text content of a list item node
|
|
333
|
+
* @returns The parsed entry, `'unbalanced'` when the parenthetical never
|
|
334
|
+
* closes, or `undefined` when the entry is otherwise malformed
|
|
335
|
+
*/
|
|
336
|
+
private parseListItemText;
|
|
337
|
+
/**
|
|
338
|
+
* Maps an offset in a segment's parsed text to its offset in the segment's
|
|
339
|
+
* source, by the rule for the segment's kind.
|
|
340
|
+
*
|
|
341
|
+
* @param segment - A `text` or `code` segment
|
|
342
|
+
* @param source - The segment's source
|
|
343
|
+
* @param offset - An offset within its parsed text
|
|
344
|
+
* @returns The corresponding source offset, or `undefined` when a text
|
|
345
|
+
* segment could not be aligned
|
|
346
|
+
*/
|
|
347
|
+
private static locateInSegmentSource;
|
|
348
|
+
/**
|
|
349
|
+
* Maps an offset in an inline code span's content to its source.
|
|
350
|
+
*
|
|
351
|
+
* Code content takes no escapes or character references, so it is the
|
|
352
|
+
* source between the backtick fences, with one exception: when it both
|
|
353
|
+
* begins and ends with a space, one space is stripped from each side.
|
|
354
|
+
*
|
|
355
|
+
* @param source - The code span's source, fences included
|
|
356
|
+
* @param offset - An offset within its parsed content
|
|
357
|
+
* @returns The corresponding source offset
|
|
358
|
+
*/
|
|
359
|
+
private static locateInCodeSource;
|
|
360
|
+
/**
|
|
361
|
+
* Finds what, if anything, keeps `^## References` from finding the heading.
|
|
362
|
+
*
|
|
363
|
+
* The line must be `## References` exactly (1#9.11 rule 4). The check that
|
|
364
|
+
* numbered headings share allows anything after the identifier, since a
|
|
365
|
+
* title follows it; that let `## References ##` and trailing spaces pass
|
|
366
|
+
* here, where the specification allows nothing.
|
|
367
|
+
*
|
|
368
|
+
* @param headingRange - Position of the `## References` heading
|
|
369
|
+
* @returns The obstruction, or `undefined` when the heading is findable
|
|
370
|
+
*/
|
|
371
|
+
private findHeadingObstruction;
|
|
372
|
+
/**
|
|
373
|
+
* Locates an entry's relationship parenthetical by matching its final `)`
|
|
374
|
+
* to the `(` that opens it, scanning right to left and counting depth
|
|
375
|
+
* (1#9.6). The explanation may then hold parentheses of its own, and the
|
|
376
|
+
* title may hold unmatched ones, without either being mistaken for it.
|
|
377
|
+
*
|
|
378
|
+
* @param entry - The entry's text, without trailing whitespace
|
|
379
|
+
* @returns The opening `(`'s index; `'missing'` when the entry does not end
|
|
380
|
+
* with `)`; `'unbalanced'` when the final `)` is never matched
|
|
381
|
+
*/
|
|
382
|
+
private static locateRelationshipParenthetical;
|
|
383
|
+
/**
|
|
384
|
+
* Checks that an entry is where the References recipes look (1#9.11 rule 4).
|
|
385
|
+
*
|
|
386
|
+
* The entry recipe `^\s*([-*+]|[0-9]+[.)])\s*\[?8\.1[^0-9.#]` and the
|
|
387
|
+
* direction recipe, which adds `.*\(authority`, each read one line. So the
|
|
388
|
+
* list marker, the target DocID in literal characters and the direction
|
|
389
|
+
* label must all be on the entry's first line, and that line must be a
|
|
390
|
+
* line to a search engine. The explanation may wrap freely after the label.
|
|
391
|
+
*
|
|
392
|
+
* @param entry - The parsed entry
|
|
393
|
+
* @param item - The list item the entry was parsed from
|
|
394
|
+
* @returns A diagnostic when a recipe cannot find the entry, or `undefined`
|
|
395
|
+
*/
|
|
396
|
+
private validateEntrySourceForm;
|
|
397
|
+
/**
|
|
398
|
+
* Reports whether an entry's first line begins as the entry recipe expects:
|
|
399
|
+
* a list marker, then the target DocID in literal characters.
|
|
400
|
+
*
|
|
401
|
+
* @param line - The list item's first source line
|
|
402
|
+
* @param entry - The parsed entry
|
|
403
|
+
* @returns `true` when the entry recipe matches the line's start
|
|
404
|
+
*/
|
|
405
|
+
private static tellEntryLineMatches;
|
|
406
|
+
/**
|
|
407
|
+
* Reports whether the entry's own relationship parenthetical opens on its
|
|
408
|
+
* first line, with the direction label written literally after the `(`.
|
|
409
|
+
*
|
|
410
|
+
* The `(` is the one the parser chose: found in the parsed entry by
|
|
411
|
+
* matching its final `)`, then traced to the source through the parsed
|
|
412
|
+
* text node that holds it. Two shortcuts both failed. Asking whether
|
|
413
|
+
* `(dependency` occurred anywhere on the line let a title such as
|
|
414
|
+
* `Target (dependency graph)` answer for a formatted label. Balancing the
|
|
415
|
+
* raw source separately picked a different `(` whenever markup added or
|
|
416
|
+
* removed a parenthesis -- `(`, `**(…)**`, a link destination holding
|
|
417
|
+
* `)` -- rejecting valid entries and, in one case, excusing an invalid one.
|
|
418
|
+
*
|
|
419
|
+
* @param item - The list item, with its parsed segments
|
|
420
|
+
* @param line - The list item's first source line
|
|
421
|
+
* @param entry - The parsed entry
|
|
422
|
+
* @returns `true` when the label follows the entry's own `(` on its first line
|
|
423
|
+
*/
|
|
424
|
+
private tellLabelOpensFirstLineParenthetical;
|
|
425
|
+
/**
|
|
426
|
+
* Traces a parsed `(` to the source through its text node, and checks that
|
|
427
|
+
* the label follows it literally on the entry's first line.
|
|
428
|
+
*
|
|
429
|
+
* @param segment - The text segment holding the `(`
|
|
430
|
+
* @param offset - The `(`'s offset within the segment's parsed text
|
|
431
|
+
* @param label - `(` followed by the direction label
|
|
432
|
+
* @param firstLine - The entry's first line number
|
|
433
|
+
* @param line - That line's text
|
|
434
|
+
* @returns `true` when the source holds the label there, on that line
|
|
435
|
+
*/
|
|
436
|
+
private tellSegmentHoldsLiteralLabel;
|
|
437
|
+
/**
|
|
438
|
+
* Validates that a list item carries a separator, and returns an error
|
|
439
|
+
* diagnostic when none is found.
|
|
440
|
+
*
|
|
441
|
+
* Any dash variant is accepted. Detection is delegated to
|
|
442
|
+
* {@link IdentifierGrammar.validateSeparator}.
|
|
443
|
+
*
|
|
444
|
+
* @param text - The plain text content of a list item node
|
|
445
|
+
* @param range - Optional positional range for the diagnostic
|
|
446
|
+
* @returns A diagnostic if a separator is invalid, or `undefined` if all separators are valid
|
|
447
|
+
*/
|
|
448
|
+
private validateListItemSeparators;
|
|
449
|
+
/**
|
|
450
|
+
* Validates that a direction string is one of the allowed
|
|
451
|
+
* {@link ReferenceDirection} values.
|
|
452
|
+
*
|
|
453
|
+
* @param candidate - The direction string extracted from the parenthetical
|
|
454
|
+
* @returns `true` if the candidate is a valid direction, `false` otherwise
|
|
455
|
+
*/
|
|
456
|
+
private tellValidDirection;
|
|
457
|
+
/**
|
|
458
|
+
* Creates a diagnostic object for the References Section Rule.
|
|
459
|
+
*
|
|
460
|
+
* All diagnostics share the same rule ID ({@link REFERENCES_SECTION_RULE_ID})
|
|
461
|
+
* and document URI. Each is an error except the empty-section finding, which
|
|
462
|
+
* is information (1#9.6, 1#12.3).
|
|
463
|
+
*
|
|
464
|
+
* @param message - Human-readable description of the issue
|
|
465
|
+
* @param range - Optional positional range within the source document
|
|
466
|
+
* @param data - Optional machine-readable detail, such as a `cause`
|
|
467
|
+
* @param severity - Severity per 1#12; an error unless stated otherwise
|
|
468
|
+
* @returns A fully populated diagnostic object
|
|
469
|
+
*/
|
|
470
|
+
private createDiagnostic;
|
|
471
|
+
/**
|
|
472
|
+
* Produces a human-readable description of a detected separator string.
|
|
473
|
+
*
|
|
474
|
+
* Replaces non-visible characters with their Unicode names to make
|
|
475
|
+
* diagnostics more informative.
|
|
476
|
+
*
|
|
477
|
+
* @param separator - The detected separator string
|
|
478
|
+
* @returns A human-readable description suitable for inclusion in a diagnostic message
|
|
479
|
+
*/
|
|
480
|
+
private describeSeparator;
|
|
481
|
+
}
|
|
482
|
+
//# sourceMappingURL=references-section-rule.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"references-section-rule.d.ts","sourceRoot":"","sources":["../src/references-section-rule.ts"],"names":[],"mappings":"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"}
|