@conformetry/languages 0.0.5 β†’ 0.0.6

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 CHANGED
@@ -1,3 +1,14 @@
1
+ ## 0.0.6 (2026-10-08)
2
+
3
+ ### πŸš€ Features
4
+
5
+ - **conformetry,lexico:** ✨ add frontend conformetry templates and infer validation inputs ([#1301](https://github.com/organizzolini/codebase/pull/1301))
6
+
7
+ ### 🧱 Updated Dependencies
8
+
9
+ - Updated conformetry-configuration to 0.0.6
10
+ - Updated conformetry-core to 0.0.6
11
+
1
12
  ## 0.0.5 (2026-10-06)
2
13
 
3
14
  ### πŸ’… Refactors
package/README.md CHANGED
@@ -97,10 +97,10 @@ Call stacks traced through `packages/ic-suite/conformetry/conformetry-languages`
97
97
 
98
98
  | Measure | Value |
99
99
  | --- | --- |
100
- | Callables | 159 |
100
+ | Callables | 166 |
101
101
  | Files | 55 |
102
- | Calls traced | 199 |
103
- | Call stacks | 14 |
102
+ | Calls traced | 216 |
103
+ | Call stacks | 15 |
104
104
  | Deepest stack | 13 |
105
105
  | Stacks through recursion | 3 |
106
106
  | Unfollowable calls | 0 |
@@ -128,19 +128,19 @@ What this project is judged against, as declared in its own `callidescope.config
128
128
  ↳ Validates one paired cell with the validator matching its kind.
129
129
  └─> MarkdownService.validateDocument(document: PreparedValidationDocument): DocumentValidationResult [packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown.service.ts:48]
130
130
  ↳ Reports every markdown structure the template requires and the file lacks.
131
- └─> MarkdownTreeService.compareContainer(args: CompareNodeArguments): CompareNodeResult (cycle) [packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-tree.service.ts:65]
131
+ └─> MarkdownTreeService.compareContainer(args: CompareNodeArguments): CompareNodeResult (cycle) [packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-tree.service.ts:80]
132
132
  ↳ Matches a container node, then descends into it.
133
- └─> MarkdownTreeService.map(…)(…): { differences: MarkdownComparisonError[]; lastMatchedNode: MarkdownNode; totalWeight: number; } (cycle) [packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-tree.service.ts:91]
134
- └─> MarkdownTreeService.compareChildren(args: CompareChildrenArguments): CompareChildrenResult (cycle) [packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-tree.service.ts:147]
133
+ └─> MarkdownTreeService.map(…)(…): { captures: { [x: string]: string; }; differences: MarkdownComparisonError[]; lastMatchedNode: MarkdownNode; totalWeight: number; } (cycle) [packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-tree.service.ts:107]
134
+ └─> MarkdownTreeService.compareChildren(args: CompareChildrenArguments): CompareChildrenResult (cycle) [packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-tree.service.ts:170]
135
135
  ↳ Compares one level of two trees, descending into containers.
136
- └─> MarkdownTreeService.compareLeaf(args: CompareNodeArguments): CompareNodeResult [packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-tree.service.ts:115]
136
+ └─> MarkdownTreeService.compareLeaf(args: CompareNodeArguments): CompareNodeResult [packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-tree.service.ts:135]
137
137
  ↳ Matches a leaf node on its own identity, without descending.
138
- └─> MarkdownTreeService.findCandidates(args: CompareNodeArguments): MarkdownNode[] [packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-tree.service.ts:135]
138
+ └─> MarkdownTreeService.findCandidates(args: CompareNodeArguments): MarkdownNode[] [packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-tree.service.ts:156]
139
139
  ↳ Finds every instance sibling satisfying the template node.
140
- └─> MarkdownTreeService.filter(…)(instanceNode: MarkdownNode): boolean [packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-tree.service.ts:136]
141
- └─> MarkdownNodesService.matches(args: { instanceNode: MarkdownNode; templateNode: MarkdownNode; }): boolean [packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:140]
142
- ↳ Returns whether an instance node satisfies a template node.
143
- └─> MarkdownNodesService.readText(node: MarkdownNode): string [packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:163]
140
+ └─> MarkdownTreeService.filter(…)(instanceNode: MarkdownNode): boolean [packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-tree.service.ts:157]
141
+ └─> MarkdownNodesService.capture(…): Record<string, string> | undefined [packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:116]
142
+ ↳ Matches an instance node against a template node, returning what any placeholder value in the template node's text…
143
+ └─> MarkdownNodesService.readText(node: MarkdownNode): string [packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:190]
144
144
  ↳ Reads a node's rendered plain text.
145
145
  ```
146
146
 
@@ -149,52 +149,53 @@ What this project is judged against, as declared in its own `callidescope.config
149
149
  ```text
150
150
  πŸš€ JsonService.validateDocument(document: PreparedValidationDocument): DocumentValidationResult [packages/ic-suite/conformetry/conformetry-languages/src/modules/json/json.service.ts:39]
151
151
  ↳ Reports every key or value the template requires and the instance lacks.
152
- └─> JsonComparisonService.compareArrayItem(…): JsonComparison (cycle) [packages/ic-suite/conformetry/conformetry-languages/src/modules/json/json-comparison.service.ts:80]
152
+ └─> JsonComparisonService.compareArrayItem(…): JsonComparison (cycle) [packages/ic-suite/conformetry/conformetry-languages/src/modules/json/json-comparison.service.ts:103]
153
153
  ↳ Matches one required array entry against the instance array.
154
- └─> JsonComparisonService.map(…)(instanceItem: JsonValue, index: number): JsonComparison (cycle) [packages/ic-suite/conformetry/conformetry-languages/src/modules/json/json-comparison.service.ts:123]
155
- └─> JsonComparisonService.compare(args: CompareJsonArguments): JsonComparison (cycle) [packages/ic-suite/conformetry/conformetry-languages/src/modules/json/json-comparison.service.ts:269]
154
+ └─> JsonComparisonService.map(…)(instanceItem: JsonValue, index: number): JsonComparison (cycle) [packages/ic-suite/conformetry/conformetry-languages/src/modules/json/json-comparison.service.ts:158]
155
+ └─> JsonComparisonService.compare(args: CompareJsonArguments): JsonComparison (cycle) [packages/ic-suite/conformetry/conformetry-languages/src/modules/json/json-comparison.service.ts:304]
156
156
  ↳ Compares a template value against an instance value, returning every way the instance fails to contain what the…
157
- └─> JsonComparisonService.compareArrays(…): JsonComparison (cycle) [packages/ic-suite/conformetry/conformetry-languages/src/modules/json/json-comparison.service.ts:142]
157
+ └─> JsonComparisonService.compareArrays(…): JsonComparison (cycle) [packages/ic-suite/conformetry/conformetry-languages/src/modules/json/json-comparison.service.ts:177]
158
158
  ↳ Compares two arrays.
159
- └─> JsonComparisonService.map(…)(templateItem: JsonValue): JsonComparison (cycle) [packages/ic-suite/conformetry/conformetry-languages/src/modules/json/json-comparison.service.ts:149]
160
- └─> JsonComparisonService.compareObjects(…): JsonComparison (cycle) [packages/ic-suite/conformetry/conformetry-languages/src/modules/json/json-comparison.service.ts:156]
159
+ └─> JsonComparisonService.map(…)(templateItem: JsonValue): JsonComparison (cycle) [packages/ic-suite/conformetry/conformetry-languages/src/modules/json/json-comparison.service.ts:184]
160
+ └─> JsonComparisonService.compareObjects(…): JsonComparison (cycle) [packages/ic-suite/conformetry/conformetry-languages/src/modules/json/json-comparison.service.ts:191]
161
161
  ↳ Compares two objects, requiring every template key to be present.
162
- └─> JsonComparisonService.map(…)([key, templateValue]: [string, JsonValue]): JsonComparison (cycle) [packages/ic-suite/conformetry/conformetry-languages/src/modules/json/json-comparison.service.ts:165]
163
- └─> JsonComparisonService.countNodes(value: JsonValue): number (cycle) [packages/ic-suite/conformetry/conformetry-languages/src/modules/json/json-comparison.service.ts:208]
162
+ └─> JsonComparisonService.map(…)([key, templateValue]: [string, JsonValue]): JsonComparison (cycle) [packages/ic-suite/conformetry/conformetry-languages/src/modules/json/json-comparison.service.ts:200]
163
+ └─> JsonComparisonService.countNodes(value: JsonValue): number (cycle) [packages/ic-suite/conformetry/conformetry-languages/src/modules/json/json-comparison.service.ts:243]
164
164
  ↳ Counts a JSON value and every value nested inside it.
165
- └─> JsonComparisonService.reduce(…)(total: number, item: JsonValue): number (cycle) [packages/ic-suite/conformetry/conformetry-languages/src/modules/json/json-comparison.service.ts:210]
166
- └─> JsonComparisonService.reduce(…)(total: number, nested: JsonValue): number (cycle) [packages/ic-suite/conformetry/conformetry-languages/src/modules/json/json-comparison.service.ts:216]
167
- └─> JsonComparisonService.isJsonObject(value: JsonValue): value is Record<string, JsonValue> [packages/ic-suite/conformetry/conformetry-languages/src/modules/json/json-comparison.service.ts:236]
165
+ └─> JsonComparisonService.reduce(…)(total: number, item: JsonValue): number (cycle) [packages/ic-suite/conformetry/conformetry-languages/src/modules/json/json-comparison.service.ts:245]
166
+ └─> JsonComparisonService.reduce(…)(total: number, nested: JsonValue): number (cycle) [packages/ic-suite/conformetry/conformetry-languages/src/modules/json/json-comparison.service.ts:251]
167
+ └─> JsonComparisonService.isJsonObject(value: JsonValue): value is Record<string, JsonValue> [packages/ic-suite/conformetry/conformetry-languages/src/modules/json/json-comparison.service.ts:271]
168
168
  ↳ Returns whether a value is a plain JSON object.
169
169
  ```
170
170
 
171
171
  **3. `TypescriptService.validateDocument`** β€” depth 12 Β· orphan-root
172
172
 
173
173
  ```text
174
- πŸš€ TypescriptService.validateDocument(document: PreparedValidationDocument): DocumentValidationResult [packages/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript.service.ts:164]
174
+ πŸš€ TypescriptService.validateDocument(document: PreparedValidationDocument): DocumentValidationResult [packages/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript.service.ts:170]
175
175
  ↳ Reports every declaration and comment the template requires.
176
176
  └─> TypescriptService.validateStructure(…): DocumentValidationResult [packages/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript.service.ts:107]
177
177
  ↳ Compares the syntax trees and describes each missing declaration.
178
- └─> TypescriptTreeService.compareBestCandidate(args: { candidates: Node[]; templateChild: Node; }): TreeComparison (cycle) [packages/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript-tree.service.ts:68]
178
+ └─> TypescriptTreeService.compareBestCandidate(…): TreeComparison (cycle) [packages/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript-tree.service.ts:69]
179
179
  ↳ Descends into whichever candidate explains the template best.
180
- └─> TypescriptTreeService.map(…)(candidate: Node): TreeComparison (cycle) [packages/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript-tree.service.ts:73]
181
- └─> TypescriptTreeService.compareTree(args: CompareTreeArguments): TreeComparison (cycle) [packages/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript-tree.service.ts:127]
180
+ └─> TypescriptTreeService.map(…)(…): { captures: { [x: string]: string; }; differences: TypescriptComparisonError[]; totalWeight: number; } (cycle) [packages/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript-tree.service.ts:74]
181
+ └─> TypescriptTreeService.compareTree(args: CompareTreeArguments): TreeComparison (cycle) [packages/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript-tree.service.ts:179]
182
182
  ↳ Compares one level of two trees, descending into every match.
183
- └─> TypescriptTreeService.map(…)(templateChild: Node): TreeComparison (cycle) [packages/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript-tree.service.ts:134]
184
- └─> TypescriptTreeService.compareChild(…): TreeComparison (cycle) [packages/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript-tree.service.ts:88]
183
+ └─> TypescriptTreeService.map(…)(templateChild: Node): TreeComparison (cycle) [packages/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript-tree.service.ts:186]
184
+ └─> TypescriptTreeService.compareChild(…): TreeComparison (cycle) [packages/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript-tree.service.ts:95]
185
185
  ↳ Matches one template child against the instance's children.
186
- └─> TypescriptTreeService.buildError(…): TypescriptComparisonError [packages/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript-tree.service.ts:43]
187
- ↳ Describes a template node with no instance counterpart.
188
- └─> TypescriptNodesService.countSubtree(node: Node): number (cycle) [packages/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript-nodes.service.ts:176]
189
- ↳ Counts a node and everything beneath it.
190
- └─> TypescriptNodesService.reduce(…)(total: number, child: Node): number (cycle) [packages/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript-nodes.service.ts:177]
191
- └─> TypescriptNodesService.readChildren(node: Node): Node[] [packages/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript-nodes.service.ts:183]
192
- ↳ Reads a node's direct children, skipping the end-of-file token.
193
- └─> TypescriptNodesService.forEachChild(…)(childNode: Node): undefined [packages/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript-nodes.service.ts:186]
186
+ └─> TypescriptTreeService.flatMap(…)(…): { captures: Record<string, string>; node: Node; }[] [packages/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript-tree.service.ts:101]
187
+ └─> TypescriptTreeService.matchKey(…): Record<string, string> | undefined [packages/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript-tree.service.ts:144]
188
+ ↳ Matches a template node on its key, returning what any placeholder value in the key captured, or `undefined` when the…
189
+ └─> TypescriptNodesService.readKey(node: Node): null | string [packages/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript-nodes.service.ts:201]
190
+ ↳ Reads a node's identity, or `null` when it has none.
191
+ └─> TypescriptNodesService.readDecoratorKey(node: Decorator): null | string [packages/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript-nodes.service.ts:75]
192
+ ↳ Keys a decorator by its callee, so `@Injectable()` matches `@Injectable`.
193
+ └─> TypescriptNodesService.buildDottedName(callee: Node): null | string [packages/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript-nodes.service.ts:46]
194
+ ↳ Builds a dotted name such as `Nest.Injectable` from a callee expression.
194
195
  ```
195
196
 
196
197
  <details>
197
- <summary>11 more call stacks</summary>
198
+ <summary>12 more call stacks</summary>
198
199
 
199
200
  **4. `PythonService.validateDocument`** β€” depth 6 Β· orphan-root
200
201
 
@@ -212,89 +213,102 @@ What this project is judged against, as declared in its own `callidescope.config
212
213
  ↳ Narrows an untrusted string field from the bridge payload.
213
214
  ```
214
215
 
215
- **5. `LanguagesService.validateDocument`** β€” depth 4 Β· orphan-root
216
+ **5. `LanguagesService.validateDocument`** β€” depth 5 Β· orphan-root
216
217
 
217
218
  ```text
218
219
  πŸš€ LanguagesService.validateDocument(document: PreparedValidationDocument): DocumentValidationResult [packages/ic-suite/conformetry/conformetry-languages/src/modules/languages/languages.service.ts:80]
219
- └─> TextService.validateDocument(document: PreparedValidationDocument): DocumentValidationResult [packages/ic-suite/conformetry/conformetry-languages/src/modules/text/text.service.ts:76]
220
+ └─> TextService.validateDocument(document: PreparedValidationDocument): DocumentValidationResult [packages/ic-suite/conformetry/conformetry-languages/src/modules/text/text.service.ts:113]
220
221
  ↳ Reports every template line missing from the instance.
221
- └─> TextService.findMissingLines(document: PreparedValidationDocument): MissingLine[] [packages/ic-suite/conformetry/conformetry-languages/src/modules/text/text.service.ts:46]
222
+ └─> TextService.findMissingLines(document: PreparedValidationDocument): LineComparison [packages/ic-suite/conformetry/conformetry-languages/src/modules/text/text.service.ts:74]
222
223
  ↳ Finds template lines the instance does not supply often enough.
223
- └─> TextService.countLines(text: string): Map<string, number> [packages/ic-suite/conformetry/conformetry-languages/src/modules/text/text.service.ts:35]
224
- ↳ Counts how many times each line occurs, for duplicate-aware matching.
224
+ └─> TextService.captureLine(…): Record<string, string> | undefined [packages/ic-suite/conformetry/conformetry-languages/src/modules/text/text.service.ts:39]
225
+ ↳ Captures what a template line's placeholder values stand for, taking the first unclaimed instance line that fits it as…
226
+ └─> capturePlaceholderValues(…): Record<string, string> | undefined [packages/ic-suite/conformetry/conformetry-configuration/src/modules/rendering/rendering.utilities.ts:21]
227
+ ↳ Reads what each placeholder value in `templateText` stands for in `instanceText`.
225
228
  ```
226
229
 
227
230
  **6. `MarkdownNodesService.table`** β€” depth 3 Β· orphan-root
228
231
 
229
232
  ```text
230
- πŸš€ MarkdownNodesService.table(templateNode: MarkdownNode, instanceNode: MarkdownNode): boolean [packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:68]
231
- └─> MarkdownNodesService.readColumnCount(node: MarkdownNode): number [packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:91]
233
+ πŸš€ MarkdownNodesService.table(templateNode: MarkdownNode, instanceNode: MarkdownNode): boolean [packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:69]
234
+ └─> MarkdownNodesService.readColumnCount(node: MarkdownNode): number [packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:92]
232
235
  ↳ Counts a table's columns from its first row.
233
- └─> MarkdownNodesService.readChildren(node: MarkdownNode): MarkdownNode[] [packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:158]
236
+ └─> MarkdownNodesService.readChildren(node: MarkdownNode): MarkdownNode[] [packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:185]
234
237
  ↳ Reads a node's children, or an empty list for a leaf.
235
238
  ```
236
239
 
237
- **7. `MarkdownNodesService.code`** β€” depth 2 Β· orphan-root
240
+ **7. `MarkdownNodesService.matches`** β€” depth 3 Β· orphan-root
238
241
 
239
242
  ```text
240
- πŸš€ MarkdownNodesService.code(templateNode: MarkdownNode, instanceNode: MarkdownNode): boolean [packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:35]
241
- └─> MarkdownNodesService.sameField(leftValue: string | undefined, rightValue: string | undefined): boolean [packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:98]
243
+ πŸš€ MarkdownNodesService.matches(args: { instanceNode: MarkdownNode; templateNode: MarkdownNode; }): boolean [packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:177]
244
+ ↳ Returns whether an instance node satisfies a template node.
245
+ └─> MarkdownNodesService.capture(…): Record<string, string> | undefined [packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:116]
246
+ ↳ Matches an instance node against a template node, returning what any placeholder value in the template node's text…
247
+ └─> MarkdownNodesService.readText(node: MarkdownNode): string [packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:190]
248
+ ↳ Reads a node's rendered plain text.
249
+ ```
250
+
251
+ **8. `MarkdownNodesService.code`** β€” depth 2 Β· orphan-root
252
+
253
+ ```text
254
+ πŸš€ MarkdownNodesService.code(templateNode: MarkdownNode, instanceNode: MarkdownNode): boolean [packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:36]
255
+ └─> MarkdownNodesService.sameField(leftValue: string | undefined, rightValue: string | undefined): boolean [packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:99]
242
256
  ↳ Compares two optional string fields, treating absent as empty.
243
257
  ```
244
258
 
245
- **8. `MarkdownNodesService.heading`** β€” depth 2 Β· orphan-root
259
+ **9. `MarkdownNodesService.heading`** β€” depth 2 Β· orphan-root
246
260
 
247
261
  ```text
248
- πŸš€ MarkdownNodesService.heading(templateNode: MarkdownNode, instanceNode: MarkdownNode): boolean [packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:41]
249
- └─> MarkdownNodesService.readText(node: MarkdownNode): string [packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:163]
262
+ πŸš€ MarkdownNodesService.heading(templateNode: MarkdownNode, instanceNode: MarkdownNode): boolean [packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:42]
263
+ └─> MarkdownNodesService.readText(node: MarkdownNode): string [packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:190]
250
264
  ↳ Reads a node's rendered plain text.
251
265
  ```
252
266
 
253
- **9. `MarkdownNodesService.html`** β€” depth 2 Β· orphan-root
267
+ **10. `MarkdownNodesService.html`** β€” depth 2 Β· orphan-root
254
268
 
255
269
  ```text
256
- πŸš€ MarkdownNodesService.html(templateNode: MarkdownNode, instanceNode: MarkdownNode): boolean [packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:47]
257
- └─> MarkdownNodesService.sameField(leftValue: string | undefined, rightValue: string | undefined): boolean [packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:98]
270
+ πŸš€ MarkdownNodesService.html(templateNode: MarkdownNode, instanceNode: MarkdownNode): boolean [packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:48]
271
+ └─> MarkdownNodesService.sameField(leftValue: string | undefined, rightValue: string | undefined): boolean [packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:99]
258
272
  ↳ Compares two optional string fields, treating absent as empty.
259
273
  ```
260
274
 
261
- **10. `MarkdownNodesService.image`** β€” depth 2 Β· orphan-root
275
+ **11. `MarkdownNodesService.image`** β€” depth 2 Β· orphan-root
262
276
 
263
277
  ```text
264
- πŸš€ MarkdownNodesService.image(templateNode: MarkdownNode, instanceNode: MarkdownNode): boolean [packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:50]
265
- └─> MarkdownNodesService.sameField(leftValue: string | undefined, rightValue: string | undefined): boolean [packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:98]
278
+ πŸš€ MarkdownNodesService.image(templateNode: MarkdownNode, instanceNode: MarkdownNode): boolean [packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:51]
279
+ └─> MarkdownNodesService.sameField(leftValue: string | undefined, rightValue: string | undefined): boolean [packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:99]
266
280
  ↳ Compares two optional string fields, treating absent as empty.
267
281
  ```
268
282
 
269
- **11. `MarkdownNodesService.inlineCode`** β€” depth 2 Β· orphan-root
283
+ **12. `MarkdownNodesService.inlineCode`** β€” depth 2 Β· orphan-root
270
284
 
271
285
  ```text
272
- πŸš€ MarkdownNodesService.inlineCode(templateNode: MarkdownNode, instanceNode: MarkdownNode): boolean [packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:56]
273
- └─> MarkdownNodesService.sameField(leftValue: string | undefined, rightValue: string | undefined): boolean [packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:98]
286
+ πŸš€ MarkdownNodesService.inlineCode(templateNode: MarkdownNode, instanceNode: MarkdownNode): boolean [packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:57]
287
+ └─> MarkdownNodesService.sameField(leftValue: string | undefined, rightValue: string | undefined): boolean [packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:99]
274
288
  ↳ Compares two optional string fields, treating absent as empty.
275
289
  ```
276
290
 
277
- **12. `MarkdownNodesService.link`** β€” depth 2 Β· orphan-root
291
+ **13. `MarkdownNodesService.link`** β€” depth 2 Β· orphan-root
278
292
 
279
293
  ```text
280
- πŸš€ MarkdownNodesService.link(templateNode: MarkdownNode, instanceNode: MarkdownNode): boolean [packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:59]
281
- └─> MarkdownNodesService.sameField(leftValue: string | undefined, rightValue: string | undefined): boolean [packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:98]
294
+ πŸš€ MarkdownNodesService.link(templateNode: MarkdownNode, instanceNode: MarkdownNode): boolean [packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:60]
295
+ └─> MarkdownNodesService.sameField(leftValue: string | undefined, rightValue: string | undefined): boolean [packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:99]
282
296
  ↳ Compares two optional string fields, treating absent as empty.
283
297
  ```
284
298
 
285
- **13. `MarkdownNodesService.tableRow`** β€” depth 2 Β· orphan-root
299
+ **14. `MarkdownNodesService.tableRow`** β€” depth 2 Β· orphan-root
286
300
 
287
301
  ```text
288
- πŸš€ MarkdownNodesService.tableRow(templateNode: MarkdownNode, instanceNode: MarkdownNode): boolean [packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:74]
289
- └─> MarkdownNodesService.readChildren(node: MarkdownNode): MarkdownNode[] [packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:158]
302
+ πŸš€ MarkdownNodesService.tableRow(templateNode: MarkdownNode, instanceNode: MarkdownNode): boolean [packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:75]
303
+ └─> MarkdownNodesService.readChildren(node: MarkdownNode): MarkdownNode[] [packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:185]
290
304
  ↳ Reads a node's children, or an empty list for a leaf.
291
305
  ```
292
306
 
293
- **14. `MarkdownNodesService.text`** β€” depth 2 Β· orphan-root
307
+ **15. `MarkdownNodesService.text`** β€” depth 2 Β· orphan-root
294
308
 
295
309
  ```text
296
- πŸš€ MarkdownNodesService.text(templateNode: MarkdownNode, instanceNode: MarkdownNode): boolean [packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:80]
297
- └─> MarkdownNodesService.sameField(leftValue: string | undefined, rightValue: string | undefined): boolean [packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:98]
310
+ πŸš€ MarkdownNodesService.text(templateNode: MarkdownNode, instanceNode: MarkdownNode): boolean [packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:81]
311
+ └─> MarkdownNodesService.sameField(leftValue: string | undefined, rightValue: string | undefined): boolean [packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:99]
298
312
  ↳ Compares two optional string fields, treating absent as empty.
299
313
  ```
300
314
 
@@ -305,77 +319,84 @@ What this project is judged against, as declared in its own `callidescope.config
305
319
  | Callable | Breadth | Calls directly | Location |
306
320
  | --- | --- | --- | --- |
307
321
  | `JupyterService.validateDocument` | 11 | `JupyterNotebookService.parseNotebook`, `JupyterNotebookService.pairCells`, `JsonComparisonService.compare`, `JupyterService.readEnvelope`, `JupyterService.map(…)`, `JupyterService.map(…)`, `JupyterService.map(…)`, `JupyterService.flatMap(…)`, `JupyterService.reduce(…)`, `JupyterService.map(…)`, `JupyterService.map(…)` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/jupyter/jupyter.service.ts:153` |
308
- | `JsonComparisonService.compare` | 7 | `JsonComparisonService.countContainer`, `JsonComparisonService.compareArrays`, `JsonComparisonService.isJsonObject`, `JsonComparisonService.compareObjects`, `JsonComparisonService.countNodes`, `JsonComparisonService.formatPath`, `JsonComparisonService.buildError` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/json/json-comparison.service.ts:269` |
309
- | `JsonComparisonService.compareArrayItem` | 6 | `JsonComparisonService.formatPath`, `JsonComparisonService.countNodes`, `JsonComparisonService.isJsonPrimitive`, `JsonComparisonService.buildError`, `JsonComparisonService.pickClosestMatch`, `JsonComparisonService.map(…)` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/json/json-comparison.service.ts:80` |
322
+ | `JsonComparisonService.compareArrayItem` | 8 | `JsonComparisonService.formatPath`, `JsonComparisonService.countNodes`, `JsonComparisonService.isJsonPrimitive`, `JsonComparisonService.find(…)`, `JsonComparisonService.map(…)`, `JsonComparisonService.buildError`, `JsonComparisonService.pickClosestMatch`, `JsonComparisonService.map(…)` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/json/json-comparison.service.ts:103` |
323
+ | `JsonComparisonService.compare` | 8 | `JsonComparisonService.countContainer`, `JsonComparisonService.compareArrays`, `JsonComparisonService.isJsonObject`, `JsonComparisonService.compareObjects`, `JsonComparisonService.countNodes`, `JsonComparisonService.captureString`, `JsonComparisonService.formatPath`, `JsonComparisonService.buildError` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/json/json-comparison.service.ts:304` |
310
324
 
311
325
  <details>
312
- <summary>84 more callables</summary>
326
+ <summary>90 more callables</summary>
313
327
 
314
328
  | Callable | Breadth | Calls directly | Location |
315
329
  | --- | --- | --- | --- |
330
+ | `MarkdownTreeService.compareContainer` | 6 | `MarkdownTreeService.findCandidates`, `MarkdownTreeService.buildError`, `MarkdownNodesService.readChildren`, `MarkdownTreeService.captureFirst`, `MarkdownTreeService.reduce(…)`, `MarkdownTreeService.map(…)` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-tree.service.ts:80` |
316
331
  | `PythonBridgeService.toConformetryDifference` | 6 | `PythonBridgeService.readValues`, `PythonBridgeService.readLocations`, `DifferencesService.resolveDifferenceType`, `PythonBridgeService.readString`, `DifferencesService.resolveErrorLanguage`, `PythonBridgeService.readNumber` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/python/python-bridge.service.ts:134` |
317
332
  | `TypescriptNodesService.readKey` | 6 | `TypescriptNodesService.readImportKey`, `TypescriptNodesService.readExportKey`, `TypescriptNodesService.readDecoratorKey`, `TypescriptNodesService.readExpressionStatementKey`, `TypescriptNodesService.readLiteralKey`, `TypescriptNodesService.readNamedKey` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript-nodes.service.ts:201` |
318
- | `MarkdownTreeService.compareContainer` | 5 | `MarkdownTreeService.findCandidates`, `MarkdownTreeService.buildError`, `MarkdownNodesService.readChildren`, `MarkdownTreeService.reduce(…)`, `MarkdownTreeService.map(…)` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-tree.service.ts:65` |
319
- | `TypescriptTreeService.compareChild` | 5 | `TypescriptNodesService.readKey`, `TypescriptTreeService.filter(…)`, `TypescriptTreeService.filter(…)`, `TypescriptTreeService.buildError`, `TypescriptTreeService.compareBestCandidate` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript-tree.service.ts:88` |
320
333
  | `LanguagesService.resolveValidators` | 5 | `LanguagesService.filter(…)`, `LanguagesService.claimingLanguages`, `LanguagesService.flatMap(…)`, `LanguagesService.filter(…)`, `LanguagesService.widenFallback` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/languages/languages.service.ts:95` |
321
- | `JsonComparisonService.map(…)` | 4 | `JsonComparisonService.formatPath`, `JsonComparisonService.countNodes`, `JsonComparisonService.buildError`, `JsonComparisonService.compare` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/json/json-comparison.service.ts:165` |
334
+ | `JsonComparisonService.map(…)` | 4 | `JsonComparisonService.formatPath`, `JsonComparisonService.countNodes`, `JsonComparisonService.buildError`, `JsonComparisonService.compare` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/json/json-comparison.service.ts:200` |
335
+ | `MarkdownTreeService.compareLeaf` | 4 | `MarkdownTreeService.findCandidates`, `MarkdownNodesService.countSubtree`, `MarkdownTreeService.buildError`, `MarkdownTreeService.captureFirst` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-tree.service.ts:135` |
336
+ | `TypescriptTreeService.compareChild` | 4 | `TypescriptNodesService.readKey`, `TypescriptTreeService.flatMap(…)`, `TypescriptTreeService.buildError`, `TypescriptTreeService.compareBestCandidate` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript-tree.service.ts:95` |
322
337
  | `FilesService.checkInstanceFiles` | 3 | `ConfigurationService.resolveInstanceFiles`, `FilesService.buildMissingDifference`, `FilesService.countExpectedFiles` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/files/files.service.ts:96` |
323
- | `JsonComparisonService.countNodes` | 3 | `JsonComparisonService.reduce(…)`, `JsonComparisonService.isJsonObject`, `JsonComparisonService.reduce(…)` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/json/json-comparison.service.ts:208` |
338
+ | `JsonComparisonService.countNodes` | 3 | `JsonComparisonService.reduce(…)`, `JsonComparisonService.isJsonObject`, `JsonComparisonService.reduce(…)` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/json/json-comparison.service.ts:243` |
324
339
  | `JupyterNotebookService.pairCells` | 3 | `JupyterNotebookService.groupSourcesByKind`, `JupyterNotebookService.readCellKind`, `JupyterNotebookService.readCellSource` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/jupyter/jupyter-notebook.service.ts:82` |
325
- | `MarkdownTreeService.compareLeaf` | 3 | `MarkdownTreeService.findCandidates`, `MarkdownNodesService.countSubtree`, `MarkdownTreeService.buildError` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-tree.service.ts:115` |
340
+ | `MarkdownTreeService.map(…)` | 3 | `MarkdownTreeService.compareChildren`, `MarkdownNodesService.readChildren`, `MarkdownTreeService.captureFirst` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-tree.service.ts:107` |
326
341
  | `MarkdownService.validateDocument` | 3 | `MarkdownTreeService.compareChildren`, `MarkdownNodesService.filterNodes`, `MarkdownService.map(…)` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown.service.ts:48` |
327
342
  | `PythonBridgeService.validatePythonSource` | 3 | `PythonBridgeService.buildBridgeError`, `PythonBridgeService.map(…)`, `ScoringService.sumWeights` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/python/python-bridge.service.ts:162` |
328
343
  | `JupyterService.validateCell` | 3 | `MarkdownService.validateDocument`, `JupyterService.attributeToCell`, `PythonBridgeService.validatePythonSource` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/jupyter/jupyter.service.ts:90` |
329
- | `TypescriptTreeService.compareTree` | 3 | `TypescriptNodesService.readChildren`, `TypescriptTreeService.reduce(…)`, `TypescriptTreeService.map(…)` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript-tree.service.ts:127` |
330
- | `TypescriptService.validateDocument` | 3 | `TypescriptService.parseSourceFile`, `TypescriptService.validateStructure`, `TypescriptService.validateComments` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript.service.ts:164` |
344
+ | `TypescriptTreeService.compareTree` | 3 | `TypescriptNodesService.readChildren`, `TypescriptTreeService.reduce(…)`, `TypescriptTreeService.map(…)` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript-tree.service.ts:179` |
345
+ | `TypescriptService.validateDocument` | 3 | `TypescriptService.parseSourceFile`, `TypescriptService.validateStructure`, `TypescriptService.validateComments` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript.service.ts:170` |
331
346
  | `FilesService.buildMissingDifference` | 2 | `DifferencesService.buildMissingFileDifference`, `DifferencesService.buildMissingDirectoryDifference` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/files/files.service.ts:52` |
332
- | `JsonComparisonService.compareArrays` | 2 | `JsonComparisonService.combine`, `JsonComparisonService.map(…)` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/json/json-comparison.service.ts:142` |
333
- | `JsonComparisonService.compareObjects` | 2 | `JsonComparisonService.combine`, `JsonComparisonService.map(…)` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/json/json-comparison.service.ts:156` |
347
+ | `JsonComparisonService.compareArrays` | 2 | `JsonComparisonService.combine`, `JsonComparisonService.map(…)` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/json/json-comparison.service.ts:177` |
348
+ | `JsonComparisonService.compareObjects` | 2 | `JsonComparisonService.combine`, `JsonComparisonService.map(…)` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/json/json-comparison.service.ts:191` |
334
349
  | `JupyterNotebookService.groupSourcesByKind` | 2 | `JupyterNotebookService.readCellKind`, `JupyterNotebookService.readCellSource` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/jupyter/jupyter-notebook.service.ts:31` |
335
- | `MarkdownNodesService.link` | 2 | `MarkdownNodesService.sameField`, `MarkdownNodesService.readText` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:59` |
336
- | `MarkdownNodesService.countSubtree` | 2 | `MarkdownNodesService.reduce(…)`, `MarkdownNodesService.readChildren` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:118` |
350
+ | `MarkdownNodesService.link` | 2 | `MarkdownNodesService.sameField`, `MarkdownNodesService.readText` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:60` |
351
+ | `MarkdownNodesService.capture` | 2 | `MarkdownNodesService.readText`, `capturePlaceholderValues` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:116` |
352
+ | `MarkdownNodesService.countSubtree` | 2 | `MarkdownNodesService.reduce(…)`, `MarkdownNodesService.readChildren` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:155` |
337
353
  | `MarkdownTreeService.buildError` | 2 | `MarkdownNodesService.readText`, `MarkdownNodesService.countSubtree` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-tree.service.ts:45` |
338
- | `MarkdownTreeService.map(…)` | 2 | `MarkdownTreeService.compareChildren`, `MarkdownNodesService.readChildren` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-tree.service.ts:91` |
339
- | `MarkdownTreeService.compareChildren` | 2 | `MarkdownTreeService.compareContainer`, `MarkdownTreeService.compareLeaf` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-tree.service.ts:147` |
340
- | `TextService.validateDocument` | 2 | `TextService.map(…)`, `TextService.findMissingLines` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/text/text.service.ts:76` |
354
+ | `MarkdownTreeService.compareChildren` | 2 | `MarkdownTreeService.compareContainer`, `MarkdownTreeService.compareLeaf` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-tree.service.ts:170` |
355
+ | `TextService.findMissingLines` | 2 | `TextService.countLines`, `TextService.captureLine` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/text/text.service.ts:74` |
356
+ | `TextService.validateDocument` | 2 | `TextService.findMissingLines`, `TextService.map(…)` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/text/text.service.ts:113` |
341
357
  | `TypescriptCommentsService.compareComments` | 2 | `TypescriptCommentsService.extractComments`, `TypescriptCommentsService.findIndex(…)` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript-comments.service.ts:46` |
342
358
  | `TypescriptCommentsService.extractComments` | 2 | `TypescriptCommentsService.visit`, `TypescriptCommentsService.toSorted(…)` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript-comments.service.ts:87` |
343
359
  | `TypescriptNodesService.readExpressionStatementKey` | 2 | `TypescriptNodesService.buildDottedName`, `TypescriptNodesService.readLiteralKey` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript-nodes.service.ts:98` |
344
360
  | `TypescriptNodesService.countSubtree` | 2 | `TypescriptNodesService.reduce(…)`, `TypescriptNodesService.readChildren` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript-nodes.service.ts:176` |
345
- | `TypescriptTreeService.buildError` | 2 | `TypescriptNodesService.readKindLabel`, `TypescriptNodesService.countSubtree` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript-tree.service.ts:43` |
346
- | `TypescriptTreeService.compareBestCandidate` | 2 | `TypescriptTreeService.reduce(…)`, `TypescriptTreeService.map(…)` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript-tree.service.ts:68` |
361
+ | `TypescriptTreeService.buildError` | 2 | `TypescriptNodesService.readKindLabel`, `TypescriptNodesService.countSubtree` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript-tree.service.ts:44` |
362
+ | `TypescriptTreeService.compareBestCandidate` | 2 | `TypescriptTreeService.reduce(…)`, `TypescriptTreeService.map(…)` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript-tree.service.ts:69` |
363
+ | `TypescriptTreeService.flatMap(…)` | 2 | `TypescriptTreeService.matchKind`, `TypescriptTreeService.matchKey` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript-tree.service.ts:101` |
364
+ | `TypescriptTreeService.matchKey` | 2 | `TypescriptNodesService.readKey`, `capturePlaceholderValues` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript-tree.service.ts:144` |
347
365
  | `TypescriptService.validateComments` | 2 | `TypescriptCommentsService.compareComments`, `TypescriptService.map(…)` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript.service.ts:75` |
348
366
  | `TypescriptService.validateStructure` | 2 | `TypescriptTreeService.compareTree`, `TypescriptService.map(…)` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript.service.ts:107` |
349
367
  | `DifferencesService.resolveDifferenceType` | 1 | `DifferencesService.find(…)` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/differences/differences.service.ts:78` |
350
368
  | `DifferencesService.resolveErrorLanguage` | 1 | `DifferencesService.find(…)` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/differences/differences.service.ts:91` |
351
369
  | `FilesService.countExpectedFiles` | 1 | `FilesService.filter(…)` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/files/files.service.ts:78` |
352
370
  | `ScoringService.sumWeights` | 1 | `ScoringService.reduce(…)` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/scoring/scoring.service.ts:53` |
353
- | `JsonComparisonService.combine` | 1 | `JsonComparisonService.reduce(…)` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/json/json-comparison.service.ts:67` |
354
- | `JsonComparisonService.map(…)` | 1 | `JsonComparisonService.compare` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/json/json-comparison.service.ts:123` |
355
- | `JsonComparisonService.map(…)` | 1 | `JsonComparisonService.compareArrayItem` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/json/json-comparison.service.ts:149` |
356
- | `JsonComparisonService.reduce(…)` | 1 | `JsonComparisonService.countNodes` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/json/json-comparison.service.ts:210` |
357
- | `JsonComparisonService.reduce(…)` | 1 | `JsonComparisonService.countNodes` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/json/json-comparison.service.ts:216` |
358
- | `JsonComparisonService.formatPath` | 1 | `JsonComparisonService.reduce(…)` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/json/json-comparison.service.ts:225` |
359
- | `JsonComparisonService.pickClosestMatch` | 1 | `JsonComparisonService.reduce(…)` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/json/json-comparison.service.ts:254` |
360
- | `JsonComparisonService.reduce(…)` | 1 | `ScoringService.sumWeights` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/json/json-comparison.service.ts:255` |
371
+ | `JsonComparisonService.captureString` | 1 | `capturePlaceholderValues` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/json/json-comparison.service.ts:71` |
372
+ | `JsonComparisonService.combine` | 1 | `JsonComparisonService.reduce(…)` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/json/json-comparison.service.ts:89` |
373
+ | `JsonComparisonService.map(…)` | 1 | `JsonComparisonService.captureString` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/json/json-comparison.service.ts:117` |
374
+ | `JsonComparisonService.map(…)` | 1 | `JsonComparisonService.compare` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/json/json-comparison.service.ts:158` |
375
+ | `JsonComparisonService.map(…)` | 1 | `JsonComparisonService.compareArrayItem` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/json/json-comparison.service.ts:184` |
376
+ | `JsonComparisonService.reduce(…)` | 1 | `JsonComparisonService.countNodes` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/json/json-comparison.service.ts:245` |
377
+ | `JsonComparisonService.reduce(…)` | 1 | `JsonComparisonService.countNodes` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/json/json-comparison.service.ts:251` |
378
+ | `JsonComparisonService.formatPath` | 1 | `JsonComparisonService.reduce(…)` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/json/json-comparison.service.ts:260` |
379
+ | `JsonComparisonService.pickClosestMatch` | 1 | `JsonComparisonService.reduce(…)` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/json/json-comparison.service.ts:289` |
380
+ | `JsonComparisonService.reduce(…)` | 1 | `ScoringService.sumWeights` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/json/json-comparison.service.ts:290` |
361
381
  | `JsonService.validateDocument` | 1 | `JsonComparisonService.compare` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/json/json.service.ts:39` |
362
382
  | `JupyterNotebookService.readCellSource` | 1 | `JupyterNotebookService.filter(…)` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/jupyter/jupyter-notebook.service.ts:57` |
363
383
  | `JupyterNotebookService.parseNotebook` | 1 | `JupyterNotebookService.filter(…)` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/jupyter/jupyter-notebook.service.ts:122` |
364
- | `MarkdownNodesService.code` | 1 | `MarkdownNodesService.sameField` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:35` |
365
- | `MarkdownNodesService.heading` | 1 | `MarkdownNodesService.readText` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:41` |
366
- | `MarkdownNodesService.html` | 1 | `MarkdownNodesService.sameField` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:47` |
367
- | `MarkdownNodesService.image` | 1 | `MarkdownNodesService.sameField` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:50` |
368
- | `MarkdownNodesService.inlineCode` | 1 | `MarkdownNodesService.sameField` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:56` |
369
- | `MarkdownNodesService.table` | 1 | `MarkdownNodesService.readColumnCount` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:68` |
370
- | `MarkdownNodesService.tableRow` | 1 | `MarkdownNodesService.readChildren` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:74` |
371
- | `MarkdownNodesService.text` | 1 | `MarkdownNodesService.sameField` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:80` |
372
- | `MarkdownNodesService.readColumnCount` | 1 | `MarkdownNodesService.readChildren` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:91` |
373
- | `MarkdownNodesService.reduce(…)` | 1 | `MarkdownNodesService.countSubtree` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:123` |
374
- | `MarkdownNodesService.filterNodes` | 1 | `MarkdownNodesService.filter(…)` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:129` |
375
- | `MarkdownNodesService.matches` | 1 | `MarkdownNodesService.readText` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:140` |
376
- | `MarkdownTreeService.reduce(…)` | 1 | `ScoringService.sumWeights` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-tree.service.ts:104` |
377
- | `MarkdownTreeService.findCandidates` | 1 | `MarkdownTreeService.filter(…)` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-tree.service.ts:135` |
378
- | `MarkdownTreeService.filter(…)` | 1 | `MarkdownNodesService.matches` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-tree.service.ts:136` |
384
+ | `MarkdownNodesService.code` | 1 | `MarkdownNodesService.sameField` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:36` |
385
+ | `MarkdownNodesService.heading` | 1 | `MarkdownNodesService.readText` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:42` |
386
+ | `MarkdownNodesService.html` | 1 | `MarkdownNodesService.sameField` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:48` |
387
+ | `MarkdownNodesService.image` | 1 | `MarkdownNodesService.sameField` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:51` |
388
+ | `MarkdownNodesService.inlineCode` | 1 | `MarkdownNodesService.sameField` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:57` |
389
+ | `MarkdownNodesService.table` | 1 | `MarkdownNodesService.readColumnCount` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:69` |
390
+ | `MarkdownNodesService.tableRow` | 1 | `MarkdownNodesService.readChildren` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:75` |
391
+ | `MarkdownNodesService.text` | 1 | `MarkdownNodesService.sameField` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:81` |
392
+ | `MarkdownNodesService.readColumnCount` | 1 | `MarkdownNodesService.readChildren` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:92` |
393
+ | `MarkdownNodesService.reduce(…)` | 1 | `MarkdownNodesService.countSubtree` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:160` |
394
+ | `MarkdownNodesService.filterNodes` | 1 | `MarkdownNodesService.filter(…)` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:166` |
395
+ | `MarkdownNodesService.matches` | 1 | `MarkdownNodesService.capture` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-nodes.service.ts:177` |
396
+ | `MarkdownTreeService.captureFirst` | 1 | `MarkdownNodesService.capture` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-tree.service.ts:60` |
397
+ | `MarkdownTreeService.reduce(…)` | 1 | `ScoringService.sumWeights` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-tree.service.ts:124` |
398
+ | `MarkdownTreeService.findCandidates` | 1 | `MarkdownTreeService.filter(…)` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-tree.service.ts:156` |
399
+ | `MarkdownTreeService.filter(…)` | 1 | `MarkdownNodesService.capture` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/markdown/markdown-tree.service.ts:157` |
379
400
  | `PythonBridgeService.readLocations` | 1 | `PythonBridgeService.readNumber` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/python/python-bridge.service.ts:86` |
380
401
  | `PythonBridgeService.readValues` | 1 | `PythonBridgeService.readString` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/python/python-bridge.service.ts:123` |
381
402
  | `PythonBridgeService.map(…)` | 1 | `PythonBridgeService.toConformetryDifference` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/python/python-bridge.service.ts:187` |
@@ -384,15 +405,14 @@ What this project is judged against, as declared in its own `callidescope.config
384
405
  | `JupyterService.weighMissingCell` | 1 | `JupyterService.validateCell` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/jupyter/jupyter.service.ts:140` |
385
406
  | `JupyterService.map(…)` | 1 | `JupyterService.weighMissingCell` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/jupyter/jupyter.service.ts:173` |
386
407
  | `JupyterService.map(…)` | 1 | `JupyterService.validateCell` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/jupyter/jupyter.service.ts:188` |
387
- | `TextService.findMissingLines` | 1 | `TextService.countLines` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/text/text.service.ts:46` |
408
+ | `TextService.captureLine` | 1 | `capturePlaceholderValues` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/text/text.service.ts:39` |
388
409
  | `TypescriptNodesService.readDecoratorKey` | 1 | `TypescriptNodesService.buildDottedName` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript-nodes.service.ts:75` |
389
410
  | `TypescriptNodesService.readNamedKey` | 1 | `TypescriptNodesService.isNode` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript-nodes.service.ts:143` |
390
411
  | `TypescriptNodesService.reduce(…)` | 1 | `TypescriptNodesService.countSubtree` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript-nodes.service.ts:177` |
391
412
  | `TypescriptNodesService.readChildren` | 1 | `TypescriptNodesService.forEachChild(…)` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript-nodes.service.ts:183` |
392
- | `TypescriptTreeService.map(…)` | 1 | `TypescriptTreeService.compareTree` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript-tree.service.ts:73` |
393
- | `TypescriptTreeService.reduce(…)` | 1 | `ScoringService.sumWeights` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript-tree.service.ts:79` |
394
- | `TypescriptTreeService.filter(…)` | 1 | `TypescriptNodesService.readKey` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript-tree.service.ts:99` |
395
- | `TypescriptTreeService.map(…)` | 1 | `TypescriptTreeService.compareChild` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript-tree.service.ts:134` |
413
+ | `TypescriptTreeService.map(…)` | 1 | `TypescriptTreeService.compareTree` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript-tree.service.ts:74` |
414
+ | `TypescriptTreeService.reduce(…)` | 1 | `ScoringService.sumWeights` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript-tree.service.ts:86` |
415
+ | `TypescriptTreeService.map(…)` | 1 | `TypescriptTreeService.compareChild` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript-tree.service.ts:186` |
396
416
  | `TypescriptService.map(…)` | 1 | `TypescriptService.readLocation` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript.service.ts:81` |
397
417
  | `TypescriptService.map(…)` | 1 | `TypescriptService.readLocation` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/typescript/typescript.service.ts:116` |
398
418
  | `LanguagesService.validateDocument` | 1 | `TextService.validateDocument` | `packages/ic-suite/conformetry/conformetry-languages/src/modules/languages/languages.service.ts:80` |
@@ -732,23 +752,23 @@ graph LR
732
752
 
733
753
  ### Project
734
754
 
735
- ![Lines of Code](https://img.shields.io/badge/Lines_of_Code-7192-22c55e?style=flat-square)
736
- ![Repository Size](https://img.shields.io/badge/Repository_Size-235.05_kB-6b7280?style=flat-square)
755
+ ![Lines of Code](https://img.shields.io/badge/Lines_of_Code-7501-22c55e?style=flat-square)
756
+ ![Repository Size](https://img.shields.io/badge/Repository_Size-245.95_kB-6b7280?style=flat-square)
737
757
  ![Folders](https://img.shields.io/badge/Folders-14-4a4a4a?style=flat-square)
738
758
  ![Source Files](https://img.shields.io/badge/Source_Files-93-3178c6?style=flat-square)
739
759
 
740
760
  ### Measured Targets
741
761
 
742
- ![Compiled JavaScript Size](https://img.shields.io/badge/Compiled_JavaScript_Size-8.39_kB_gzip-6b7280?style=flat-square)
762
+ ![Compiled JavaScript Size](https://img.shields.io/badge/Compiled_JavaScript_Size-8.96_kB_gzip-6b7280?style=flat-square)
743
763
 
744
764
  ### TypeScript
745
765
 
746
766
  ![TypeScript Files](https://img.shields.io/badge/TypeScript_Files-85-3178c6?style=flat-square)
747
- ![Interfaces](https://img.shields.io/badge/Interfaces-29-0ea5e9?style=flat-square)
767
+ ![Interfaces](https://img.shields.io/badge/Interfaces-30-0ea5e9?style=flat-square)
748
768
  ![Generic Declarations](https://img.shields.io/badge/Generic_Declarations-0-0369a1?style=flat-square)
749
769
  ![Enums](https://img.shields.io/badge/Enums-0-f97316?style=flat-square)
750
770
  ![Decorators](https://img.shields.io/badge/Decorators-28-db2777?style=flat-square)
751
- ![Doc Comments](https://img.shields.io/badge/Doc_Comments-181-6366f1?style=flat-square)
771
+ ![Doc Comments](https://img.shields.io/badge/Doc_Comments-192-6366f1?style=flat-square)
752
772
  ![Static Methods](https://img.shields.io/badge/Static_Methods-0-166534?style=flat-square)
753
773
 
754
774
  ### JavaScript
@@ -757,15 +777,15 @@ graph LR
757
777
  ![Test Files](https://img.shields.io/badge/Test_Files-28-10b981?style=flat-square)
758
778
  ![External Packages](https://img.shields.io/badge/External_Packages-17-8b5cf6?style=flat-square)
759
779
  ![Classes](https://img.shields.io/badge/Classes-28-7c3aed?style=flat-square)
760
- ![Functions](https://img.shields.io/badge/Functions-358-16a34a?style=flat-square)
761
- ![Methods](https://img.shields.io/badge/Methods-141-15803d?style=flat-square)
762
- ![Sync Functions](https://img.shields.io/badge/Sync_Functions-472-4ade80?style=flat-square)
780
+ ![Functions](https://img.shields.io/badge/Functions-366-16a34a?style=flat-square)
781
+ ![Methods](https://img.shields.io/badge/Methods-148-15803d?style=flat-square)
782
+ ![Sync Functions](https://img.shields.io/badge/Sync_Functions-487-4ade80?style=flat-square)
763
783
  ![Async Functions](https://img.shields.io/badge/Async_Functions-27-059669?style=flat-square)
764
- ![Constants](https://img.shields.io/badge/Constants-328-dc2626?style=flat-square)
765
- ![Imports](https://img.shields.io/badge/Imports-318-0284c7?style=flat-square)
766
- ![Exported Symbols](https://img.shields.io/badge/Exported_Symbols-89-ea580c?style=flat-square)
767
- ![Comments](https://img.shields.io/badge/Comments-352-64748b?style=flat-square)
768
- ![Comment Lines](https://img.shields.io/badge/Comment_Lines-766-475569?style=flat-square)
784
+ ![Constants](https://img.shields.io/badge/Constants-350-dc2626?style=flat-square)
785
+ ![Imports](https://img.shields.io/badge/Imports-326-0284c7?style=flat-square)
786
+ ![Exported Symbols](https://img.shields.io/badge/Exported_Symbols-90-ea580c?style=flat-square)
787
+ ![Comments](https://img.shields.io/badge/Comments-367-64748b?style=flat-square)
788
+ ![Comment Lines](https://img.shields.io/badge/Comment_Lines-797-475569?style=flat-square)
769
789
  ![TODO Comments](https://img.shields.io/badge/TODO_Comments-5-ca8a04?style=flat-square)
770
790
 
771
791
  ### Python
@@ -921,20 +941,20 @@ graph LR
921
941
  ### Markdown
922
942
 
923
943
  ![Markdown Files](https://img.shields.io/badge/Markdown_Files-2-083fa1?style=flat-square)
924
- ![Markdown Lines](https://img.shields.io/badge/Markdown_Lines-232-1f6feb?style=flat-square)
944
+ ![Markdown Lines](https://img.shields.io/badge/Markdown_Lines-243-1f6feb?style=flat-square)
925
945
  ![H1](https://img.shields.io/badge/H1-1-7c3aed?style=flat-square)
926
- ![H2](https://img.shields.io/badge/H2-8-8b5cf6?style=flat-square)
927
- ![H3](https://img.shields.io/badge/H3-14-a78bfa?style=flat-square)
946
+ ![H2](https://img.shields.io/badge/H2-9-8b5cf6?style=flat-square)
947
+ ![H3](https://img.shields.io/badge/H3-16-a78bfa?style=flat-square)
928
948
  ![H4](https://img.shields.io/badge/H4-0-c4b5fd?style=flat-square)
929
949
  ![H5](https://img.shields.io/badge/H5-0-ddd6fe?style=flat-square)
930
950
  ![H6](https://img.shields.io/badge/H6-0-ede9fe?style=flat-square)
931
- ![Paragraphs](https://img.shields.io/badge/Paragraphs-48-64748b?style=flat-square)
932
- ![Lists](https://img.shields.io/badge/Lists-8-16a34a?style=flat-square)
933
- ![List Items](https://img.shields.io/badge/List_Items-28-22c55e?style=flat-square)
951
+ ![Paragraphs](https://img.shields.io/badge/Paragraphs-51-64748b?style=flat-square)
952
+ ![Lists](https://img.shields.io/badge/Lists-10-16a34a?style=flat-square)
953
+ ![List Items](https://img.shields.io/badge/List_Items-31-22c55e?style=flat-square)
934
954
  ![Task List Items](https://img.shields.io/badge/Task_List_Items-0-4ade80?style=flat-square)
935
955
  ![Tables](https://img.shields.io/badge/Tables-2-0284c7?style=flat-square)
936
956
  ![Table Rows](https://img.shields.io/badge/Table_Rows-10-0ea5e9?style=flat-square)
937
- ![Links](https://img.shields.io/badge/Links-10-059669?style=flat-square)
957
+ ![Links](https://img.shields.io/badge/Links-11-059669?style=flat-square)
938
958
  ![Images](https://img.shields.io/badge/Images-0-10b981?style=flat-square)
939
959
  ![Code Blocks](https://img.shields.io/badge/Code_Blocks-11-dc2626?style=flat-square)
940
960
  ![Inline Code](https://img.shields.io/badge/Inline_Code-73-ef4444?style=flat-square)