@markuplint/ml-core 4.12.4 → 4.13.1

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
@@ -3,6 +3,30 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [4.13.1](https://github.com/markuplint/markuplint/compare/@markuplint/ml-core@4.13.0...@markuplint/ml-core@4.13.1) (2025-08-24)
7
+
8
+ **Note:** Version bump only for package @markuplint/ml-core
9
+
10
+
11
+
12
+
13
+
14
+ # [4.13.0](https://github.com/markuplint/markuplint/compare/@markuplint/ml-core@4.12.4...@markuplint/ml-core@4.13.0) (2025-08-13)
15
+
16
+ ### Bug Fixes
17
+
18
+ - ensure that each `clean` command correctly removes build files ([110b78e](https://github.com/markuplint/markuplint/commit/110b78e85379d29a84ca68325127344a87a570b6))
19
+
20
+ ### Features
21
+
22
+ - **markuplint:** add maxViolations support to API layer ([cb6d577](https://github.com/markuplint/markuplint/commit/cb6d577483a38e32a378d89a13e950c0eb311b09))
23
+ - **markuplint:** add status field to MLResultInfo and simplify verification ([56deb99](https://github.com/markuplint/markuplint/commit/56deb999a330bb7d91333dc464a034cbc6010479))
24
+ - **ml-core:** add new DOM API properties from TypeScript 5.9.2 ([a6cfed3](https://github.com/markuplint/markuplint/commit/a6cfed32c3abf6874161aad9c4f5c47541320b7b))
25
+ - **ml-core:** add validation for rule existence ([4c7ee75](https://github.com/markuplint/markuplint/commit/4c7ee758bd98737e8df7b0aa247306e61e48d30a))
26
+ - **ml-core:** add ViolationCollector for performance optimization ([a4e9694](https://github.com/markuplint/markuplint/commit/a4e9694a87f3e0958a59974ad6d03775831ec399))
27
+ - **ml-core:** enhance ViolationCollector for max-count functionality ([92316a4](https://github.com/markuplint/markuplint/commit/92316a4b070a1d53ae12cf1ae8cfdf3444e02025))
28
+ - **ml-core:** implement consistent textContent property across DOM nodes ([6c0fb62](https://github.com/markuplint/markuplint/commit/6c0fb62ded45f779f30602bf11299e928bdf24aa))
29
+
6
30
  ## [4.12.4](https://github.com/markuplint/markuplint/compare/@markuplint/ml-core@4.12.3...@markuplint/ml-core@4.12.4) (2025-04-13)
7
31
 
8
32
  **Note:** Version bump only for package @markuplint/ml-core
package/lib/index.d.ts CHANGED
@@ -11,4 +11,5 @@ export * from './plugin/index.js';
11
11
  export * from './test/index.js';
12
12
  export * from './types.js';
13
13
  export * from './utils/index.js';
14
+ export * from './violation-collector.js';
14
15
  export { AccessibilityProperties } from './ml-dom/node/types.js';
package/lib/index.js CHANGED
@@ -10,3 +10,4 @@ export * from './plugin/index.js';
10
10
  export * from './test/index.js';
11
11
  export * from './types.js';
12
12
  export * from './utils/index.js';
13
+ export * from './violation-collector.js';
package/lib/ml-core.js CHANGED
@@ -88,6 +88,24 @@ export class MLCore {
88
88
  log('verify: error %o', __classPrivateFieldGet(this, _MLCore_document, "f").message);
89
89
  return violations;
90
90
  }
91
+ const definedRuleName = new Set(__classPrivateFieldGet(this, _MLCore_rules, "f").map(rule => rule.name));
92
+ const setRuleNames = new Set([
93
+ ...Object.keys(__classPrivateFieldGet(this, _MLCore_ruleset, "f").rules),
94
+ ...__classPrivateFieldGet(this, _MLCore_ruleset, "f").nodeRules.flatMap(nodeRule => Object.keys(nodeRule.rules ?? {})),
95
+ ...__classPrivateFieldGet(this, _MLCore_ruleset, "f").childNodeRules.flatMap(childNodeRule => Object.keys(childNodeRule.rules ?? {})),
96
+ ]);
97
+ for (const setRuleName of setRuleNames) {
98
+ if (!definedRuleName.has(setRuleName)) {
99
+ violations.push({
100
+ ruleId: 'config-error',
101
+ severity: 'warning',
102
+ message: `Rule not found: ${setRuleName}`,
103
+ col: 1,
104
+ line: 1,
105
+ raw: '',
106
+ });
107
+ }
108
+ }
91
109
  for (const error of __classPrivateFieldGet(this, _MLCore_configErrors, "f")) {
92
110
  violations.push({
93
111
  ruleId: 'config-error',
@@ -82,6 +82,11 @@ export declare class MLAttr<T extends RuleConfigValue, O extends PlainData = und
82
82
  * @see https://dom.spec.whatwg.org/#dom-attr-specified
83
83
  */
84
84
  get specified(): true;
85
+ /**
86
+ * @implements DOM API: `Attr`
87
+ * @see https://dom.spec.whatwg.org/#dom-node-textcontent
88
+ */
89
+ get textContent(): string;
85
90
  /**
86
91
  * @implements `@markuplint/ml-core` API: `MLAttr`
87
92
  */
@@ -137,6 +137,13 @@ export class MLAttr extends MLNode {
137
137
  get specified() {
138
138
  return true;
139
139
  }
140
+ /**
141
+ * @implements DOM API: `Attr`
142
+ * @see https://dom.spec.whatwg.org/#dom-node-textcontent
143
+ */
144
+ get textContent() {
145
+ return this.value;
146
+ }
140
147
  /**
141
148
  * @implements `@markuplint/ml-core` API: `MLAttr`
142
149
  */
@@ -33,6 +33,11 @@ export declare abstract class MLCharacterData<T extends RuleConfigValue, O exten
33
33
  * @see https://dom.spec.whatwg.org/#ref-for-dom-nondocumenttypechildnode-previouselementsibling%E2%91%A1
34
34
  */
35
35
  get previousElementSibling(): MLElement<T, O> | null;
36
+ /**
37
+ * @implements DOM API: `CharacterData`
38
+ * @see https://dom.spec.whatwg.org/#dom-node-textcontent
39
+ */
40
+ get textContent(): string;
36
41
  /**
37
42
  * @implements DOM API: `CharacterData`
38
43
  */
@@ -43,6 +43,13 @@ export class MLCharacterData extends MLNode {
43
43
  get previousElementSibling() {
44
44
  return previousElementSibling(this);
45
45
  }
46
+ /**
47
+ * @implements DOM API: `CharacterData`
48
+ * @see https://dom.spec.whatwg.org/#dom-node-textcontent
49
+ */
50
+ get textContent() {
51
+ return this.data;
52
+ }
46
53
  /**
47
54
  * @implements DOM API: `CharacterData`
48
55
  */
@@ -13,5 +13,9 @@ export declare class MLComment<T extends RuleConfigValue, O extends PlainData =
13
13
  * Returns a number appropriate for the type of `Comment`
14
14
  */
15
15
  get nodeType(): CommentNodeType;
16
- get textContent(): string | null;
16
+ /**
17
+ * @implements DOM API: `Comment`
18
+ * @see https://dom.spec.whatwg.org/#dom-node-textcontent
19
+ */
20
+ get textContent(): string;
17
21
  }
@@ -14,7 +14,11 @@ export class MLComment extends MLCharacterData {
14
14
  get nodeType() {
15
15
  return this.COMMENT_NODE;
16
16
  }
17
+ /**
18
+ * @implements DOM API: `Comment`
19
+ * @see https://dom.spec.whatwg.org/#dom-node-textcontent
20
+ */
17
21
  get textContent() {
18
- return this.nodeValue;
22
+ return this.data;
19
23
  }
20
24
  }
@@ -13,6 +13,11 @@ export declare class MLDocumentFragment<T extends RuleConfigValue, O extends Pla
13
13
  * Returns a number appropriate for the type of `DocumentFragment`
14
14
  */
15
15
  get nodeType(): DocumentFragmentNodeType;
16
+ /**
17
+ * @implements DOM API: `DocumentFragment`
18
+ * @see https://dom.spec.whatwg.org/#dom-node-textcontent
19
+ */
20
+ get textContent(): string;
16
21
  /**
17
22
  * **IT THROWS AN ERROR WHEN CALLING THIS.**
18
23
  *
@@ -15,6 +15,13 @@ export class MLDocumentFragment extends MLParentNode {
15
15
  get nodeType() {
16
16
  return this.DOCUMENT_FRAGMENT_NODE;
17
17
  }
18
+ /**
19
+ * @implements DOM API: `DocumentFragment`
20
+ * @see https://dom.spec.whatwg.org/#dom-node-textcontent
21
+ */
22
+ get textContent() {
23
+ return [...this.childNodes].map(child => child.textContent ?? '').join('');
24
+ }
18
25
  /**
19
26
  * **IT THROWS AN ERROR WHEN CALLING THIS.**
20
27
  *
@@ -19,6 +19,11 @@ export declare class MLDocumentType<T extends RuleConfigValue, O extends PlainDa
19
19
  * Returns a number appropriate for the type of `DocumentType`
20
20
  */
21
21
  get nodeType(): DocumentTypeNodeType;
22
+ /**
23
+ * @implements DOM API: `DocumentType`
24
+ * @see https://dom.spec.whatwg.org/#dom-node-textcontent
25
+ */
26
+ get textContent(): null;
22
27
  /**
23
28
  * @implements DOM API: `CharacterData`
24
29
  */
@@ -23,6 +23,13 @@ export class MLDocumentType extends MLNode {
23
23
  get nodeType() {
24
24
  return this.DOCUMENT_TYPE_NODE;
25
25
  }
26
+ /**
27
+ * @implements DOM API: `DocumentType`
28
+ * @see https://dom.spec.whatwg.org/#dom-node-textcontent
29
+ */
30
+ get textContent() {
31
+ return null;
32
+ }
26
33
  /**
27
34
  * @implements DOM API: `CharacterData`
28
35
  */
@@ -414,6 +414,14 @@ export declare class MLDocument<T extends RuleConfigValue, O extends PlainData =
414
414
  * @implements DOM API: `Document`
415
415
  */
416
416
  get onauxclick(): ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
417
+ /**
418
+ * **IT THROWS AN ERROR WHEN CALLING THIS.**
419
+ *
420
+ * @deprecated
421
+ * @unsupported
422
+ * @implements DOM API: `Document`
423
+ */
424
+ get onbeforematch(): ((this: GlobalEventHandlers, ev: Event) => any) | null;
417
425
  /**
418
426
  * **IT THROWS AN ERROR WHEN CALLING THIS.**
419
427
  *
@@ -908,6 +916,14 @@ export declare class MLDocument<T extends RuleConfigValue, O extends PlainData =
908
916
  * @implements DOM API: `Document`
909
917
  */
910
918
  get onpointerover(): ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
919
+ /**
920
+ * **IT THROWS AN ERROR WHEN CALLING THIS.**
921
+ *
922
+ * @deprecated
923
+ * @unsupported
924
+ * @implements DOM API: `Document`
925
+ */
926
+ get onpointerrawupdate(): ((this: GlobalEventHandlers, ev: Event) => any) | null;
911
927
  /**
912
928
  * **IT THROWS AN ERROR WHEN CALLING THIS.**
913
929
  *
@@ -1235,6 +1251,11 @@ export declare class MLDocument<T extends RuleConfigValue, O extends PlainData =
1235
1251
  * @implements DOM API: `Document`
1236
1252
  */
1237
1253
  get styleSheets(): StyleSheetList;
1254
+ /**
1255
+ * @implements DOM API: `Document`
1256
+ * @see https://dom.spec.whatwg.org/#dom-node-textcontent
1257
+ */
1258
+ get textContent(): null;
1238
1259
  /**
1239
1260
  * **IT THROWS AN ERROR WHEN CALLING THIS.**
1240
1261
  *
@@ -528,6 +528,16 @@ export class MLDocument extends MLParentNode {
528
528
  get onauxclick() {
529
529
  throw new UnexpectedCallError('Not supported "onauxclick" property');
530
530
  }
531
+ /**
532
+ * **IT THROWS AN ERROR WHEN CALLING THIS.**
533
+ *
534
+ * @deprecated
535
+ * @unsupported
536
+ * @implements DOM API: `Document`
537
+ */
538
+ get onbeforematch() {
539
+ throw new UnexpectedCallError('Not supported "onbeforematch" property');
540
+ }
531
541
  /**
532
542
  * **IT THROWS AN ERROR WHEN CALLING THIS.**
533
543
  *
@@ -1146,6 +1156,16 @@ export class MLDocument extends MLParentNode {
1146
1156
  get onpointerover() {
1147
1157
  throw new UnexpectedCallError('Not supported "onpointerover" property');
1148
1158
  }
1159
+ /**
1160
+ * **IT THROWS AN ERROR WHEN CALLING THIS.**
1161
+ *
1162
+ * @deprecated
1163
+ * @unsupported
1164
+ * @implements DOM API: `Document`
1165
+ */
1166
+ get onpointerrawupdate() {
1167
+ throw new UnexpectedCallError('Not supported "onpointerrawupdate" property');
1168
+ }
1149
1169
  /**
1150
1170
  * **IT THROWS AN ERROR WHEN CALLING THIS.**
1151
1171
  *
@@ -1563,6 +1583,13 @@ export class MLDocument extends MLParentNode {
1563
1583
  get styleSheets() {
1564
1584
  throw new UnexpectedCallError('Not supported "styleSheets" property');
1565
1585
  }
1586
+ /**
1587
+ * @implements DOM API: `Document`
1588
+ * @see https://dom.spec.whatwg.org/#dom-node-textcontent
1589
+ */
1590
+ get textContent() {
1591
+ return null;
1592
+ }
1566
1593
  /**
1567
1594
  * **IT THROWS AN ERROR WHEN CALLING THIS.**
1568
1595
  *
@@ -51,6 +51,14 @@ export declare class MLElement<T extends RuleConfigValue, O extends PlainData =
51
51
  * @implements DOM API: `Element`
52
52
  */
53
53
  get accessKeyLabel(): string;
54
+ /**
55
+ * **IT THROWS AN ERROR WHEN CALLING THIS.**
56
+ *
57
+ * @deprecated
58
+ * @unsupported
59
+ * @implements DOM API: `Element`
60
+ */
61
+ get ariaActiveDescendantElement(): MLElement<T, O> | null;
54
62
  /**
55
63
  * **IT THROWS AN ERROR WHEN CALLING THIS.**
56
64
  *
@@ -131,6 +139,14 @@ export declare class MLElement<T extends RuleConfigValue, O extends PlainData =
131
139
  * @implements DOM API: `Element`
132
140
  */
133
141
  get ariaColSpan(): string | null;
142
+ /**
143
+ * **IT THROWS AN ERROR WHEN CALLING THIS.**
144
+ *
145
+ * @deprecated
146
+ * @unsupported
147
+ * @implements DOM API: `Element`
148
+ */
149
+ get ariaControlsElements(): readonly MLElement<T, O>[];
134
150
  /**
135
151
  * **IT THROWS AN ERROR WHEN CALLING THIS.**
136
152
  *
@@ -139,6 +155,14 @@ export declare class MLElement<T extends RuleConfigValue, O extends PlainData =
139
155
  * @implements DOM API: `Element`
140
156
  */
141
157
  get ariaCurrent(): string | null;
158
+ /**
159
+ * **IT THROWS AN ERROR WHEN CALLING THIS.**
160
+ *
161
+ * @deprecated
162
+ * @unsupported
163
+ * @implements DOM API: `Element`
164
+ */
165
+ get ariaDescribedByElements(): readonly MLElement<T, O>[];
142
166
  /**
143
167
  * **IT THROWS AN ERROR WHEN CALLING THIS.**
144
168
  *
@@ -147,6 +171,14 @@ export declare class MLElement<T extends RuleConfigValue, O extends PlainData =
147
171
  * @implements DOM API: `Element`
148
172
  */
149
173
  get ariaDescription(): string | null;
174
+ /**
175
+ * **IT THROWS AN ERROR WHEN CALLING THIS.**
176
+ *
177
+ * @deprecated
178
+ * @unsupported
179
+ * @implements DOM API: `Element`
180
+ */
181
+ get ariaDetailsElements(): readonly MLElement<T, O>[];
150
182
  /**
151
183
  * **IT THROWS AN ERROR WHEN CALLING THIS.**
152
184
  *
@@ -155,6 +187,14 @@ export declare class MLElement<T extends RuleConfigValue, O extends PlainData =
155
187
  * @implements DOM API: `Element`
156
188
  */
157
189
  get ariaDisabled(): string | null;
190
+ /**
191
+ * **IT THROWS AN ERROR WHEN CALLING THIS.**
192
+ *
193
+ * @deprecated
194
+ * @unsupported
195
+ * @implements DOM API: `Element`
196
+ */
197
+ get ariaErrorMessageElements(): readonly MLElement<T, O>[];
158
198
  /**
159
199
  * **IT THROWS AN ERROR WHEN CALLING THIS.**
160
200
  *
@@ -163,6 +203,14 @@ export declare class MLElement<T extends RuleConfigValue, O extends PlainData =
163
203
  * @implements DOM API: `Element`
164
204
  */
165
205
  get ariaExpanded(): string | null;
206
+ /**
207
+ * **IT THROWS AN ERROR WHEN CALLING THIS.**
208
+ *
209
+ * @deprecated
210
+ * @unsupported
211
+ * @implements DOM API: `Element`
212
+ */
213
+ get ariaFlowToElements(): readonly MLElement<T, O>[];
166
214
  /**
167
215
  * **IT THROWS AN ERROR WHEN CALLING THIS.**
168
216
  *
@@ -203,6 +251,14 @@ export declare class MLElement<T extends RuleConfigValue, O extends PlainData =
203
251
  * @implements DOM API: `Element`
204
252
  */
205
253
  get ariaLabel(): string | null;
254
+ /**
255
+ * **IT THROWS AN ERROR WHEN CALLING THIS.**
256
+ *
257
+ * @deprecated
258
+ * @unsupported
259
+ * @implements DOM API: `Element`
260
+ */
261
+ get ariaLabelledByElements(): readonly MLElement<T, O>[];
206
262
  /**
207
263
  * **IT THROWS AN ERROR WHEN CALLING THIS.**
208
264
  *
@@ -251,6 +307,14 @@ export declare class MLElement<T extends RuleConfigValue, O extends PlainData =
251
307
  * @implements DOM API: `Element`
252
308
  */
253
309
  get ariaOrientation(): string | null;
310
+ /**
311
+ * **IT THROWS AN ERROR WHEN CALLING THIS.**
312
+ *
313
+ * @deprecated
314
+ * @unsupported
315
+ * @implements DOM API: `Element`
316
+ */
317
+ get ariaOwnsElements(): readonly MLElement<T, O>[];
254
318
  /**
255
319
  * **IT THROWS AN ERROR WHEN CALLING THIS.**
256
320
  *
@@ -417,6 +481,14 @@ export declare class MLElement<T extends RuleConfigValue, O extends PlainData =
417
481
  * @implements DOM API: `Element`
418
482
  */
419
483
  get autocapitalize(): string;
484
+ /**
485
+ * **IT THROWS AN ERROR WHEN CALLING THIS.**
486
+ *
487
+ * @deprecated
488
+ * @unsupported
489
+ * @implements DOM API: `Element`
490
+ */
491
+ get autocorrect(): boolean;
420
492
  /**
421
493
  * **IT THROWS AN ERROR WHEN CALLING THIS.**
422
494
  *
@@ -712,6 +784,14 @@ export declare class MLElement<T extends RuleConfigValue, O extends PlainData =
712
784
  * @implements DOM API: `Element`
713
785
  */
714
786
  get onauxclick(): ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
787
+ /**
788
+ * **IT THROWS AN ERROR WHEN CALLING THIS.**
789
+ *
790
+ * @deprecated
791
+ * @unsupported
792
+ * @implements DOM API: `Element`
793
+ */
794
+ get onbeforematch(): ((this: GlobalEventHandlers, ev: Event) => any) | null;
715
795
  /**
716
796
  * **IT THROWS AN ERROR WHEN CALLING THIS.**
717
797
  *
@@ -1190,6 +1270,14 @@ export declare class MLElement<T extends RuleConfigValue, O extends PlainData =
1190
1270
  * @implements DOM API: `Element`
1191
1271
  */
1192
1272
  get onpointerover(): ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
1273
+ /**
1274
+ * **IT THROWS AN ERROR WHEN CALLING THIS.**
1275
+ *
1276
+ * @deprecated
1277
+ * @unsupported
1278
+ * @implements DOM API: `Element`
1279
+ */
1280
+ get onpointerrawupdate(): ((this: GlobalEventHandlers, ev: Event) => any) | null;
1193
1281
  /**
1194
1282
  * **IT THROWS AN ERROR WHEN CALLING THIS.**
1195
1283
  *
@@ -1573,6 +1661,10 @@ export declare class MLElement<T extends RuleConfigValue, O extends PlainData =
1573
1661
  * @see https://dom.spec.whatwg.org/#ref-for-dom-element-tagname%E2%91%A0
1574
1662
  */
1575
1663
  get tagName(): string;
1664
+ /**
1665
+ * @implements DOM API: `Element`
1666
+ * @see https://dom.spec.whatwg.org/#dom-node-textcontent
1667
+ */
1576
1668
  get textContent(): string;
1577
1669
  /**
1578
1670
  * **IT THROWS AN ERROR WHEN CALLING THIS.**
@@ -69,6 +69,16 @@ export class MLElement extends MLParentNode {
69
69
  get accessKeyLabel() {
70
70
  throw new UnexpectedCallError('Not supported "accessKeyLabel" property');
71
71
  }
72
+ /**
73
+ * **IT THROWS AN ERROR WHEN CALLING THIS.**
74
+ *
75
+ * @deprecated
76
+ * @unsupported
77
+ * @implements DOM API: `Element`
78
+ */
79
+ get ariaActiveDescendantElement() {
80
+ throw new UnexpectedCallError('Not supported "ariaActiveDescendantElement" property');
81
+ }
72
82
  /**
73
83
  * **IT THROWS AN ERROR WHEN CALLING THIS.**
74
84
  *
@@ -169,6 +179,16 @@ export class MLElement extends MLParentNode {
169
179
  get ariaColSpan() {
170
180
  throw new UnexpectedCallError('Not supported "ariaColSpan" property');
171
181
  }
182
+ /**
183
+ * **IT THROWS AN ERROR WHEN CALLING THIS.**
184
+ *
185
+ * @deprecated
186
+ * @unsupported
187
+ * @implements DOM API: `Element`
188
+ */
189
+ get ariaControlsElements() {
190
+ throw new UnexpectedCallError('Not supported "ariaControlsElements" property');
191
+ }
172
192
  /**
173
193
  * **IT THROWS AN ERROR WHEN CALLING THIS.**
174
194
  *
@@ -179,6 +199,16 @@ export class MLElement extends MLParentNode {
179
199
  get ariaCurrent() {
180
200
  throw new UnexpectedCallError('Not supported "ariaCurrent" property');
181
201
  }
202
+ /**
203
+ * **IT THROWS AN ERROR WHEN CALLING THIS.**
204
+ *
205
+ * @deprecated
206
+ * @unsupported
207
+ * @implements DOM API: `Element`
208
+ */
209
+ get ariaDescribedByElements() {
210
+ throw new UnexpectedCallError('Not supported "ariaDescribedByElements" property');
211
+ }
182
212
  /**
183
213
  * **IT THROWS AN ERROR WHEN CALLING THIS.**
184
214
  *
@@ -189,6 +219,16 @@ export class MLElement extends MLParentNode {
189
219
  get ariaDescription() {
190
220
  throw new UnexpectedCallError('Not supported "ariaDescription" property');
191
221
  }
222
+ /**
223
+ * **IT THROWS AN ERROR WHEN CALLING THIS.**
224
+ *
225
+ * @deprecated
226
+ * @unsupported
227
+ * @implements DOM API: `Element`
228
+ */
229
+ get ariaDetailsElements() {
230
+ throw new UnexpectedCallError('Not supported "ariaDetailsElements" property');
231
+ }
192
232
  /**
193
233
  * **IT THROWS AN ERROR WHEN CALLING THIS.**
194
234
  *
@@ -199,6 +239,16 @@ export class MLElement extends MLParentNode {
199
239
  get ariaDisabled() {
200
240
  throw new UnexpectedCallError('Not supported "ariaDisabled" property');
201
241
  }
242
+ /**
243
+ * **IT THROWS AN ERROR WHEN CALLING THIS.**
244
+ *
245
+ * @deprecated
246
+ * @unsupported
247
+ * @implements DOM API: `Element`
248
+ */
249
+ get ariaErrorMessageElements() {
250
+ throw new UnexpectedCallError('Not supported "ariaErrorMessageElements" property');
251
+ }
202
252
  /**
203
253
  * **IT THROWS AN ERROR WHEN CALLING THIS.**
204
254
  *
@@ -209,6 +259,16 @@ export class MLElement extends MLParentNode {
209
259
  get ariaExpanded() {
210
260
  throw new UnexpectedCallError('Not supported "ariaExpanded" property');
211
261
  }
262
+ /**
263
+ * **IT THROWS AN ERROR WHEN CALLING THIS.**
264
+ *
265
+ * @deprecated
266
+ * @unsupported
267
+ * @implements DOM API: `Element`
268
+ */
269
+ get ariaFlowToElements() {
270
+ throw new UnexpectedCallError('Not supported "ariaFlowToElements" property');
271
+ }
212
272
  /**
213
273
  * **IT THROWS AN ERROR WHEN CALLING THIS.**
214
274
  *
@@ -259,6 +319,16 @@ export class MLElement extends MLParentNode {
259
319
  get ariaLabel() {
260
320
  throw new UnexpectedCallError('Not supported "ariaLabel" property');
261
321
  }
322
+ /**
323
+ * **IT THROWS AN ERROR WHEN CALLING THIS.**
324
+ *
325
+ * @deprecated
326
+ * @unsupported
327
+ * @implements DOM API: `Element`
328
+ */
329
+ get ariaLabelledByElements() {
330
+ throw new UnexpectedCallError('Not supported "ariaLabelledByElements" property');
331
+ }
262
332
  /**
263
333
  * **IT THROWS AN ERROR WHEN CALLING THIS.**
264
334
  *
@@ -319,6 +389,16 @@ export class MLElement extends MLParentNode {
319
389
  get ariaOrientation() {
320
390
  throw new UnexpectedCallError('Not supported "ariaOrientation" property');
321
391
  }
392
+ /**
393
+ * **IT THROWS AN ERROR WHEN CALLING THIS.**
394
+ *
395
+ * @deprecated
396
+ * @unsupported
397
+ * @implements DOM API: `Element`
398
+ */
399
+ get ariaOwnsElements() {
400
+ throw new UnexpectedCallError('Not supported "ariaOwnsElements" property');
401
+ }
322
402
  /**
323
403
  * **IT THROWS AN ERROR WHEN CALLING THIS.**
324
404
  *
@@ -548,6 +628,16 @@ export class MLElement extends MLParentNode {
548
628
  get autocapitalize() {
549
629
  throw new UnexpectedCallError('Not supported "autocapitalize" property');
550
630
  }
631
+ /**
632
+ * **IT THROWS AN ERROR WHEN CALLING THIS.**
633
+ *
634
+ * @deprecated
635
+ * @unsupported
636
+ * @implements DOM API: `Element`
637
+ */
638
+ get autocorrect() {
639
+ throw new UnexpectedCallError('Not supported "autocorrect" property');
640
+ }
551
641
  /**
552
642
  * **IT THROWS AN ERROR WHEN CALLING THIS.**
553
643
  *
@@ -938,6 +1028,16 @@ export class MLElement extends MLParentNode {
938
1028
  get onauxclick() {
939
1029
  throw new UnexpectedCallError('Not supported "onauxclick" property');
940
1030
  }
1031
+ /**
1032
+ * **IT THROWS AN ERROR WHEN CALLING THIS.**
1033
+ *
1034
+ * @deprecated
1035
+ * @unsupported
1036
+ * @implements DOM API: `Element`
1037
+ */
1038
+ get onbeforematch() {
1039
+ throw new UnexpectedCallError('Not supported "onbeforematch" property');
1040
+ }
941
1041
  /**
942
1042
  * **IT THROWS AN ERROR WHEN CALLING THIS.**
943
1043
  *
@@ -1536,6 +1636,16 @@ export class MLElement extends MLParentNode {
1536
1636
  get onpointerover() {
1537
1637
  throw new UnexpectedCallError('Not supported "onpointerover" property');
1538
1638
  }
1639
+ /**
1640
+ * **IT THROWS AN ERROR WHEN CALLING THIS.**
1641
+ *
1642
+ * @deprecated
1643
+ * @unsupported
1644
+ * @implements DOM API: `Element`
1645
+ */
1646
+ get onpointerrawupdate() {
1647
+ throw new UnexpectedCallError('Not supported "onpointerrawupdate" property');
1648
+ }
1539
1649
  /**
1540
1650
  * **IT THROWS AN ERROR WHEN CALLING THIS.**
1541
1651
  *
@@ -2023,6 +2133,10 @@ export class MLElement extends MLParentNode {
2023
2133
  }
2024
2134
  return this.nodeName;
2025
2135
  }
2136
+ /**
2137
+ * @implements DOM API: `Element`
2138
+ * @see https://dom.spec.whatwg.org/#dom-node-textcontent
2139
+ */
2026
2140
  get textContent() {
2027
2141
  return [...this.childNodes].map(child => child.textContent ?? '').join('');
2028
2142
  }
@@ -20,7 +20,6 @@ export declare class MLText<T extends RuleConfigValue, O extends PlainData = und
20
20
  * Returns a number appropriate for the type of `Text`
21
21
  */
22
22
  get nodeType(): TextNodeType;
23
- get textContent(): string | null;
24
23
  /**
25
24
  * **IT THROWS AN ERROR WHEN CALLING THIS.**
26
25
  *
@@ -30,9 +30,6 @@ export class MLText extends MLCharacterData {
30
30
  get nodeType() {
31
31
  return this.TEXT_NODE;
32
32
  }
33
- get textContent() {
34
- return this.nodeValue;
35
- }
36
33
  /**
37
34
  * **IT THROWS AN ERROR WHEN CALLING THIS.**
38
35
  *
@@ -3,7 +3,7 @@ import type { MLNode } from '../ml-dom/node/node.js';
3
3
  import type { MLToken } from '../ml-dom/token/token.js';
4
4
  import type { MLASTNode, MLASTToken, MLParser } from '@markuplint/ml-ast';
5
5
  import type { Config, PlainData, Pretender, RuleConfigValue } from '@markuplint/ml-config';
6
- import type { ExtendedSpec, MLMLSpec } from '@markuplint/ml-spec';
6
+ import type { MLMLSpec } from '@markuplint/ml-spec';
7
7
  import { MLDocument } from '../ml-dom/node/document.js';
8
8
  export type CreateTestOptions = {
9
9
  readonly config?: Config;
@@ -20,4 +20,4 @@ export declare function createTestElement(sourceCode: string, options?: CreateTe
20
20
  /**
21
21
  * for test suite
22
22
  */
23
- export declare function dummySchemas(): [MLMLSpec, ...ExtendedSpec[]];
23
+ export declare function dummySchemas(): [MLMLSpec];
@@ -0,0 +1,12 @@
1
+ import type { Violation } from '@markuplint/ml-config';
2
+ export declare class ViolationCollector {
3
+ #private;
4
+ constructor(maxCount?: number);
5
+ pushWithFile(filePath: string, ...violations: readonly Violation[]): number;
6
+ get length(): number;
7
+ isLocked(): boolean;
8
+ toArray(): (Violation & {
9
+ filePath: string;
10
+ })[];
11
+ groupByFile(): Map<string, Violation[]>;
12
+ }
@@ -0,0 +1,55 @@
1
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
2
+ if (kind === "m") throw new TypeError("Private method is not writable");
3
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
4
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
5
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
6
+ };
7
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
8
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
9
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
10
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
+ };
12
+ var _ViolationCollector_violations, _ViolationCollector_maxCount, _ViolationCollector_locked;
13
+ export class ViolationCollector {
14
+ constructor(maxCount = 0) {
15
+ _ViolationCollector_violations.set(this, []);
16
+ _ViolationCollector_maxCount.set(this, 0);
17
+ _ViolationCollector_locked.set(this, false);
18
+ __classPrivateFieldSet(this, _ViolationCollector_maxCount, maxCount, "f");
19
+ __classPrivateFieldSet(this, _ViolationCollector_locked, false, "f");
20
+ }
21
+ pushWithFile(filePath, ...violations) {
22
+ if (__classPrivateFieldGet(this, _ViolationCollector_locked, "f")) {
23
+ return __classPrivateFieldGet(this, _ViolationCollector_violations, "f").length;
24
+ }
25
+ for (const violation of violations) {
26
+ __classPrivateFieldGet(this, _ViolationCollector_violations, "f").push({ ...violation, filePath });
27
+ if (__classPrivateFieldGet(this, _ViolationCollector_maxCount, "f") > 0 && __classPrivateFieldGet(this, _ViolationCollector_violations, "f").length >= __classPrivateFieldGet(this, _ViolationCollector_maxCount, "f")) {
28
+ __classPrivateFieldSet(this, _ViolationCollector_locked, true, "f");
29
+ break;
30
+ }
31
+ }
32
+ return __classPrivateFieldGet(this, _ViolationCollector_violations, "f").length;
33
+ }
34
+ get length() {
35
+ return __classPrivateFieldGet(this, _ViolationCollector_violations, "f").length;
36
+ }
37
+ isLocked() {
38
+ return __classPrivateFieldGet(this, _ViolationCollector_locked, "f");
39
+ }
40
+ toArray() {
41
+ return [...__classPrivateFieldGet(this, _ViolationCollector_violations, "f")];
42
+ }
43
+ groupByFile() {
44
+ const grouped = new Map();
45
+ for (const violation of __classPrivateFieldGet(this, _ViolationCollector_violations, "f")) {
46
+ const { filePath, ...violationWithoutPath } = violation;
47
+ if (!grouped.has(filePath)) {
48
+ grouped.set(filePath, []);
49
+ }
50
+ grouped.get(filePath).push(violationWithoutPath);
51
+ }
52
+ return grouped;
53
+ }
54
+ }
55
+ _ViolationCollector_violations = new WeakMap(), _ViolationCollector_maxCount = new WeakMap(), _ViolationCollector_locked = new WeakMap();
package/package.json CHANGED
@@ -1,11 +1,10 @@
1
1
  {
2
2
  "name": "@markuplint/ml-core",
3
- "version": "4.12.4",
3
+ "version": "4.13.1",
4
4
  "description": "The core module of markuplint",
5
5
  "repository": "git@github.com:markuplint/markuplint.git",
6
6
  "author": "Yusuke Hirao <yusukehirao@me.com>",
7
7
  "license": "MIT",
8
- "private": false,
9
8
  "type": "module",
10
9
  "exports": {
11
10
  ".": {
@@ -22,26 +21,26 @@
22
21
  "scripts": {
23
22
  "build": "tsc --project tsconfig.build.json",
24
23
  "dev": "tsc --watch --project tsconfig.build.json",
25
- "clean": "tsc --build --clean"
24
+ "clean": "tsc --build --clean tsconfig.build.json"
26
25
  },
27
26
  "browser": {
28
27
  "./lib/configs.js": "./lib/configs.browser.js"
29
28
  },
30
29
  "dependencies": {
31
- "@markuplint/config-presets": "4.5.12",
32
- "@markuplint/html-parser": "4.6.19",
33
- "@markuplint/html-spec": "4.14.2",
34
- "@markuplint/i18n": "4.6.0",
35
- "@markuplint/ml-ast": "4.4.9",
36
- "@markuplint/ml-config": "4.8.11",
37
- "@markuplint/ml-spec": "4.9.6",
38
- "@markuplint/parser-utils": "4.8.7",
39
- "@markuplint/selector": "4.7.4",
40
- "@markuplint/shared": "4.4.11",
30
+ "@markuplint/config-presets": "4.5.13",
31
+ "@markuplint/html-parser": "4.6.21",
32
+ "@markuplint/html-spec": "4.16.0",
33
+ "@markuplint/i18n": "4.7.0",
34
+ "@markuplint/ml-ast": "4.4.10",
35
+ "@markuplint/ml-config": "4.8.13",
36
+ "@markuplint/ml-spec": "4.10.0",
37
+ "@markuplint/parser-utils": "4.8.9",
38
+ "@markuplint/selector": "4.7.6",
39
+ "@markuplint/shared": "4.4.12",
41
40
  "@types/debug": "4.1.12",
42
- "debug": "4.4.0",
41
+ "debug": "4.4.1",
43
42
  "is-plain-object": "5.0.0",
44
- "type-fest": "4.39.1"
43
+ "type-fest": "4.41.0"
45
44
  },
46
- "gitHead": "eb36d59f7e13d4e59ff3f3c4eabb5ec06c070eb0"
45
+ "gitHead": "ae97eb2d31ecedf4f0800fbbf18588aad4ebca04"
47
46
  }