@markuplint/rules 3.3.0 → 3.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/lib/attr-check.d.ts +19 -8
  2. package/lib/attr-duplication/index.d.ts +1 -1
  3. package/lib/attr-value-quotes/index.d.ts +2 -2
  4. package/lib/case-sensitive-attr-name/index.d.ts +1 -1
  5. package/lib/case-sensitive-tag-name/index.d.ts +1 -1
  6. package/lib/character-reference/index.d.ts +1 -1
  7. package/lib/class-naming/index.d.ts +1 -1
  8. package/lib/create-message.d.ts +12 -2
  9. package/lib/create-message.js +2 -2
  10. package/lib/deprecated-attr/index.d.ts +1 -1
  11. package/lib/deprecated-element/index.d.ts +1 -1
  12. package/lib/disallowed-element/index.d.ts +1 -1
  13. package/lib/doctype/index.d.ts +2 -2
  14. package/lib/end-tag/index.d.ts +1 -1
  15. package/lib/helpers.d.ts +35 -17
  16. package/lib/id-duplication/index.d.ts +1 -1
  17. package/lib/ineffective-attr/index.d.ts +1 -1
  18. package/lib/invalid-attr/index.d.ts +17 -13
  19. package/lib/label-has-control/index.d.ts +1 -1
  20. package/lib/landmark-roles/index.d.ts +3 -3
  21. package/lib/no-boolean-attr-value/index.d.ts +1 -1
  22. package/lib/no-default-value/index.d.ts +1 -1
  23. package/lib/no-empty-palpable-content/index.d.ts +3 -3
  24. package/lib/no-hard-code-id/index.d.ts +1 -1
  25. package/lib/no-refer-to-non-existent-id/index.d.ts +7 -4
  26. package/lib/no-refer-to-non-existent-id/index.js +4 -0
  27. package/lib/no-use-event-handler-attr/index.d.ts +2 -2
  28. package/lib/permitted-contents/choice.d.ts +7 -1
  29. package/lib/permitted-contents/complex-branch.d.ts +7 -1
  30. package/lib/permitted-contents/count-pattern.d.ts +17 -2
  31. package/lib/permitted-contents/count-pattern.js +2 -1
  32. package/lib/permitted-contents/debug.browser.d.ts +15 -15
  33. package/lib/permitted-contents/debug.d.ts +1 -1
  34. package/lib/permitted-contents/index.d.ts +1 -1
  35. package/lib/permitted-contents/matches-selector.d.ts +7 -1
  36. package/lib/permitted-contents/order.d.ts +7 -1
  37. package/lib/permitted-contents/order.js +1 -1
  38. package/lib/permitted-contents/recursive-branch.d.ts +7 -1
  39. package/lib/permitted-contents/represent-transparent-nodes.d.ts +7 -3
  40. package/lib/permitted-contents/start.d.ts +6 -1
  41. package/lib/permitted-contents/transparent.js +2 -2
  42. package/lib/permitted-contents/types.d.ts +29 -29
  43. package/lib/permitted-contents/utils.d.ts +72 -35
  44. package/lib/permitted-contents/utils.js +1 -1
  45. package/lib/placeholder-label-option/index.d.ts +1 -1
  46. package/lib/require-accessible-name/index.d.ts +2 -2
  47. package/lib/require-datetime/index.d.ts +2 -2
  48. package/lib/require-datetime/types.d.ts +2 -2
  49. package/lib/require-datetime/utils.js +3 -1
  50. package/lib/required-attr/index.d.ts +3 -3
  51. package/lib/required-attr/index.js +13 -10
  52. package/lib/required-element/index.d.ts +2 -2
  53. package/lib/required-element/index.js +2 -1
  54. package/lib/required-h1/index.d.ts +3 -3
  55. package/lib/required-h1/index.js +3 -2
  56. package/lib/use-list/index.d.ts +2 -2
  57. package/lib/use-list/index.js +3 -2
  58. package/lib/wai-aria/checkings/default-value.d.ts +7 -3
  59. package/lib/wai-aria/checkings/deprecated-props.d.ts +8 -4
  60. package/lib/wai-aria/checkings/disallowed-prop.d.ts +8 -4
  61. package/lib/wai-aria/checkings/disallowed-prop.js +27 -3
  62. package/lib/wai-aria/checkings/implicit-props.d.ts +8 -4
  63. package/lib/wai-aria/checkings/no-global-prop.d.ts +7 -3
  64. package/lib/wai-aria/checkings/required-owned-elements.d.ts +7 -3
  65. package/lib/wai-aria/checkings/required-owned-elements.js +2 -2
  66. package/lib/wai-aria/checkings/required-prop.d.ts +12 -6
  67. package/lib/wai-aria/checkings/value.d.ts +9 -5
  68. package/lib/wai-aria/index.d.ts +1 -1
  69. package/lib/wai-aria/types.d.ts +10 -10
  70. package/package.json +8 -6
@@ -1,14 +1,14 @@
1
1
  import type { Translator } from '@markuplint/i18n';
2
2
  import type { Attribute as AttrSpec, AttributeType } from '@markuplint/ml-spec';
3
3
  type Invalid = {
4
- invalidType: 'non-existent' | 'invalid-value' | 'disallowed-attr';
5
- message: string;
6
- loc?: Loc;
4
+ invalidType: 'non-existent' | 'invalid-value' | 'disallowed-attr';
5
+ message: string;
6
+ loc?: Loc;
7
7
  };
8
8
  type Loc = {
9
- raw: string;
10
- line: number;
11
- col: number;
9
+ raw: string;
10
+ line: number;
11
+ col: number;
12
12
  };
13
13
  /**
14
14
  * Use in rules `invalid-attr` and `wai-aria`
@@ -18,6 +18,17 @@ type Loc = {
18
18
  * @param isCustomRule
19
19
  * @param spec
20
20
  */
21
- export declare function attrCheck(t: Translator, name: string, value: string, isCustomRule: boolean, spec?: AttrSpec): Invalid | false;
22
- export declare function valueCheck(t: Translator, name: string, value: string, type: AttributeType): string | [string, Loc] | false;
21
+ export declare function attrCheck(
22
+ t: Translator,
23
+ name: string,
24
+ value: string,
25
+ isCustomRule: boolean,
26
+ spec?: AttrSpec,
27
+ ): Invalid | false;
28
+ export declare function valueCheck(
29
+ t: Translator,
30
+ name: string,
31
+ value: string,
32
+ type: AttributeType,
33
+ ): string | [string, Loc] | false;
23
34
  export {};
@@ -1,2 +1,2 @@
1
- declare const _default: import("@markuplint/ml-core").RuleSeed<import("@markuplint/ml-core").RuleConfigValue, null>;
1
+ declare const _default: import('@markuplint/ml-core').RuleSeed<import('@markuplint/ml-core').RuleConfigValue, null>;
2
2
  export default _default;
@@ -1,7 +1,7 @@
1
1
  export type Type = 'double' | 'single';
2
2
  export type Quote = '"' | "'";
3
3
  export type QuoteMap = {
4
- [P in Type]: Quote;
4
+ [P in Type]: Quote;
5
5
  };
6
- declare const _default: import("@markuplint/ml-core").RuleSeed<Type, null>;
6
+ declare const _default: import('@markuplint/ml-core').RuleSeed<Type, null>;
7
7
  export default _default;
@@ -1,3 +1,3 @@
1
1
  export type Value = 'lower' | 'upper';
2
- declare const _default: import("@markuplint/ml-core").RuleSeed<Value, null>;
2
+ declare const _default: import('@markuplint/ml-core').RuleSeed<Value, null>;
3
3
  export default _default;
@@ -1,3 +1,3 @@
1
1
  export type Value = 'lower' | 'upper';
2
- declare const _default: import("@markuplint/ml-core").RuleSeed<Value, null>;
2
+ declare const _default: import('@markuplint/ml-core').RuleSeed<Value, null>;
3
3
  export default _default;
@@ -1,3 +1,3 @@
1
1
  import type { RuleConfigValue } from '@markuplint/ml-config';
2
- declare const _default: import("@markuplint/ml-core").RuleSeed<RuleConfigValue, null>;
2
+ declare const _default: import('@markuplint/ml-core').RuleSeed<RuleConfigValue, null>;
3
3
  export default _default;
@@ -1,3 +1,3 @@
1
1
  export type Value = string | string[] | null;
2
- declare const _default: import("@markuplint/ml-core").RuleSeed<Value, null>;
2
+ declare const _default: import('@markuplint/ml-core').RuleSeed<Value, null>;
3
3
  export default _default;
@@ -1,5 +1,15 @@
1
1
  import type { Translator } from '@markuplint/i18n';
2
2
  import type { AttributeType } from '@markuplint/ml-spec';
3
3
  import type { UnmatchedResult } from '@markuplint/types';
4
- export declare function createMessageValueExpected(t: Translator, baseTarget: string, type: AttributeType, matches: UnmatchedResult): string;
5
- export declare function __createMessageValueExpected(t: Translator, baseTarget: string, expected: string | null, matches: Pick<UnmatchedResult, 'partName' | 'reason' | 'raw' | 'candidate' | 'ref' | 'extra'>): string;
4
+ export declare function createMessageValueExpected(
5
+ t: Translator,
6
+ baseTarget: string,
7
+ type: AttributeType,
8
+ matches: UnmatchedResult,
9
+ ): string;
10
+ export declare function __createMessageValueExpected(
11
+ t: Translator,
12
+ baseTarget: string,
13
+ expected: string | null,
14
+ matches: Pick<UnmatchedResult, 'partName' | 'reason' | 'raw' | 'candidate' | 'ref' | 'extra'>,
15
+ ): string;
@@ -199,7 +199,7 @@ function __createMessageValueExpected(t, baseTarget, expected, matches) {
199
199
  }
200
200
  exports.__createMessageValueExpected = __createMessageValueExpected;
201
201
  function createExpectedObject(type, matches, t) {
202
- var _a;
202
+ var _a, _b;
203
203
  const expectedObject = [];
204
204
  if ((_a = matches.expects) === null || _a === void 0 ? void 0 : _a.length) {
205
205
  expectedObject.push(...matches.expects.map(expect => {
@@ -221,7 +221,7 @@ function createExpectedObject(type, matches, t) {
221
221
  ? null
222
222
  : 1 < expectedObject.length
223
223
  ? t('either {0}', t(expectedObject))
224
- : expectedObject[0];
224
+ : (_b = expectedObject[0]) !== null && _b !== void 0 ? _b : null;
225
225
  return expects;
226
226
  }
227
227
  function expectValueToWord(t, expect, type) {
@@ -1,2 +1,2 @@
1
- declare const _default: import("@markuplint/ml-core").RuleSeed<import("@markuplint/ml-core").RuleConfigValue, null>;
1
+ declare const _default: import('@markuplint/ml-core').RuleSeed<import('@markuplint/ml-core').RuleConfigValue, null>;
2
2
  export default _default;
@@ -1,2 +1,2 @@
1
- declare const _default: import("@markuplint/ml-core").RuleSeed<import("@markuplint/ml-core").RuleConfigValue, null>;
1
+ declare const _default: import('@markuplint/ml-core').RuleSeed<import('@markuplint/ml-core').RuleConfigValue, null>;
2
2
  export default _default;
@@ -1,2 +1,2 @@
1
- declare const _default: import("@markuplint/ml-core").RuleSeed<string[], null>;
1
+ declare const _default: import('@markuplint/ml-core').RuleSeed<string[], null>;
2
2
  export default _default;
@@ -1,5 +1,5 @@
1
1
  type Option = {
2
- denyObsoleteType: boolean;
2
+ denyObsoleteType: boolean;
3
3
  };
4
- declare const _default: import("@markuplint/ml-core").RuleSeed<"always", Option>;
4
+ declare const _default: import('@markuplint/ml-core').RuleSeed<'always', Option>;
5
5
  export default _default;
@@ -1,2 +1,2 @@
1
- declare const _default: import("@markuplint/ml-core").RuleSeed<boolean, null>;
1
+ declare const _default: import('@markuplint/ml-core').RuleSeed<boolean, null>;
2
2
  export default _default;
package/lib/helpers.d.ts CHANGED
@@ -2,7 +2,10 @@ import type { Log } from './debug';
2
2
  import type { Translator } from '@markuplint/i18n';
3
3
  import type { Element, RuleConfigValue, Document } from '@markuplint/ml-core';
4
4
  import type { Attribute } from '@markuplint/ml-spec';
5
- export declare function attrMatches<T extends RuleConfigValue, R>(node: Element<T, R>, condition: Attribute['condition']): boolean;
5
+ export declare function attrMatches<T extends RuleConfigValue, R>(
6
+ node: Element<T, R>,
7
+ condition: Attribute['condition'],
8
+ ): boolean;
6
9
  export declare function match(needle: string, pattern: string): boolean;
7
10
  /**
8
11
  * PotentialCustomElementName
@@ -20,28 +23,43 @@ export declare function match(needle: string, pattern: string): boolean;
20
23
  * Originally, it is not possible to define a name including ASCII upper alphas in the custom element, but it is not treated as illegal by the HTML parser.
21
24
  */
22
25
  export declare const rePCENChar: string;
23
- export declare function isValidAttr(t: Translator, name: string, value: string, isDynamicValue: boolean, node: Element<any, any>, attrSpecs: Attribute[], log?: Log): false | {
24
- invalidType: "non-existent" | "invalid-value" | "disallowed-attr";
25
- message: string;
26
- loc?: {
27
- raw: string;
28
- line: number;
29
- col: number;
30
- } | undefined;
31
- };
26
+ export declare function isValidAttr(
27
+ t: Translator,
28
+ name: string,
29
+ value: string,
30
+ isDynamicValue: boolean,
31
+ node: Element<any, any>,
32
+ attrSpecs: Attribute[],
33
+ log?: Log,
34
+ ):
35
+ | false
36
+ | {
37
+ invalidType: 'non-existent' | 'invalid-value' | 'disallowed-attr';
38
+ message: string;
39
+ loc?:
40
+ | {
41
+ raw: string;
42
+ line: number;
43
+ col: number;
44
+ }
45
+ | undefined;
46
+ };
32
47
  export declare function toNormalizedValue(value: string, spec: Attribute): string;
33
48
  export declare function accnameMayBeMutable(el: Element<any, any>, document: Document<any, any>): boolean;
34
- export declare function getOwnedLabel<V extends RuleConfigValue, O>(el: Element<V, O>, document: Document<V, O>): Element<V, O> | null;
49
+ export declare function getOwnedLabel<V extends RuleConfigValue, O>(
50
+ el: Element<V, O>,
51
+ document: Document<V, O>,
52
+ ): Element<V, O> | null;
35
53
  export declare function decodeCharRef(characterReference: string): string;
36
54
  export declare class Collection<T> {
37
- #private;
38
- constructor(...items: (T | null | undefined)[]);
39
- [Symbol.iterator](): Iterator<T>;
40
- add(...items: (T | null | undefined)[]): void;
41
- toArray(): readonly T[];
55
+ #private;
56
+ constructor(...items: (T | null | undefined)[]);
57
+ [Symbol.iterator](): Iterator<T>;
58
+ add(...items: (T | null | undefined)[]): void;
59
+ toArray(): readonly T[];
42
60
  }
43
61
  type Writeable<T> = {
44
- -readonly [P in keyof T]: T[P];
62
+ -readonly [P in keyof T]: T[P];
45
63
  };
46
64
  export declare function deepCopy<T>(value: T): Writeable<T>;
47
65
  export {};
@@ -1,2 +1,2 @@
1
- declare const _default: import("@markuplint/ml-core").RuleSeed<import("@markuplint/ml-core").RuleConfigValue, null>;
1
+ declare const _default: import('@markuplint/ml-core').RuleSeed<import('@markuplint/ml-core').RuleConfigValue, null>;
2
2
  export default _default;
@@ -1,2 +1,2 @@
1
- declare const _default: import("@markuplint/ml-core").RuleSeed<import("@markuplint/ml-core").RuleConfigValue, null>;
1
+ declare const _default: import('@markuplint/ml-core').RuleSeed<import('@markuplint/ml-core').RuleConfigValue, null>;
2
2
  export default _default;
@@ -1,17 +1,21 @@
1
1
  import type { AttributeType } from '@markuplint/ml-spec';
2
2
  type Option = {
3
- attrs?: Record<string, Rule>;
4
- ignoreAttrNamePrefix?: string | string[];
5
- allowToAddPropertiesForPretender?: boolean;
3
+ attrs?: Record<string, Rule>;
4
+ ignoreAttrNamePrefix?: string | string[];
5
+ allowToAddPropertiesForPretender?: boolean;
6
6
  };
7
- type Rule = {
8
- enum: [string, ...string[]];
9
- } | {
10
- pattern: string;
11
- } | {
12
- type: AttributeType;
13
- } | {
14
- disallowed: true;
15
- };
16
- declare const _default: import("@markuplint/ml-core").RuleSeed<boolean, Option>;
7
+ type Rule =
8
+ | {
9
+ enum: [string, ...string[]];
10
+ }
11
+ | {
12
+ pattern: string;
13
+ }
14
+ | {
15
+ type: AttributeType;
16
+ }
17
+ | {
18
+ disallowed: true;
19
+ };
20
+ declare const _default: import('@markuplint/ml-core').RuleSeed<boolean, Option>;
17
21
  export default _default;
@@ -1,2 +1,2 @@
1
- declare const _default: import("@markuplint/ml-core").RuleSeed<import("@markuplint/ml-core").RuleConfigValue, null>;
1
+ declare const _default: import('@markuplint/ml-core').RuleSeed<import('@markuplint/ml-core').RuleConfigValue, null>;
2
2
  export default _default;
@@ -1,8 +1,8 @@
1
1
  type Options = {
2
- ignoreRoles: Roles[];
3
- labelEachArea: boolean;
2
+ ignoreRoles: Roles[];
3
+ labelEachArea: boolean;
4
4
  };
5
5
  type TopLevelRoles = 'banner' | 'main' | 'complementary' | 'contentinfo';
6
6
  type Roles = TopLevelRoles | 'form' | 'navigation' | 'region';
7
- declare const _default: import("@markuplint/ml-core").RuleSeed<boolean, Options>;
7
+ declare const _default: import('@markuplint/ml-core').RuleSeed<boolean, Options>;
8
8
  export default _default;
@@ -1,2 +1,2 @@
1
- declare const _default: import("@markuplint/ml-core").RuleSeed<import("@markuplint/ml-core").RuleConfigValue, null>;
1
+ declare const _default: import('@markuplint/ml-core').RuleSeed<import('@markuplint/ml-core').RuleConfigValue, null>;
2
2
  export default _default;
@@ -1,2 +1,2 @@
1
- declare const _default: import("@markuplint/ml-core").RuleSeed<import("@markuplint/ml-core").RuleConfigValue, null>;
1
+ declare const _default: import('@markuplint/ml-core').RuleSeed<import('@markuplint/ml-core').RuleConfigValue, null>;
2
2
  export default _default;
@@ -1,6 +1,6 @@
1
1
  type Options = {
2
- extendsExposableElements?: boolean;
3
- ignoreIfAriaBusy?: boolean;
2
+ extendsExposableElements?: boolean;
3
+ ignoreIfAriaBusy?: boolean;
4
4
  };
5
- declare const _default: import("@markuplint/ml-core").RuleSeed<boolean, Options>;
5
+ declare const _default: import('@markuplint/ml-core').RuleSeed<boolean, Options>;
6
6
  export default _default;
@@ -1,2 +1,2 @@
1
- declare const _default: import("@markuplint/ml-core").RuleSeed<import("@markuplint/ml-core").RuleConfigValue, null>;
1
+ declare const _default: import('@markuplint/ml-core').RuleSeed<import('@markuplint/ml-core').RuleConfigValue, null>;
2
2
  export default _default;
@@ -1,6 +1,9 @@
1
1
  import type { ARIAVersion } from '@markuplint/ml-spec';
2
- declare const _default: import("@markuplint/ml-core").RuleSeed<import("@markuplint/ml-core").RuleConfigValue, {
3
- ariaVersion: ARIAVersion;
4
- fragmentRefersNameAttr: boolean;
5
- }>;
2
+ declare const _default: import('@markuplint/ml-core').RuleSeed<
3
+ import('@markuplint/ml-core').RuleConfigValue,
4
+ {
5
+ ariaVersion: ARIAVersion;
6
+ fragmentRefersNameAttr: boolean;
7
+ }
8
+ >;
6
9
  export default _default;
@@ -12,6 +12,10 @@ exports.default = (0, ml_core_1.createRule)({
12
12
  const nameList = new Set();
13
13
  let hasDynamicId = false;
14
14
  let hasDynamicName = false;
15
+ const isMutable = document.nodeList.some(node => node.is(node.MARKUPLINT_PREPROCESSOR_BLOCK));
16
+ if (isMutable) {
17
+ return;
18
+ }
15
19
  document.querySelectorAll('[id]').forEach(el => {
16
20
  const attr = el.getAttributeNode('id');
17
21
  if (!attr) {
@@ -1,5 +1,5 @@
1
1
  type Options = {
2
- ignore?: string | string[];
2
+ ignore?: string | string[];
3
3
  };
4
- declare const _default: import("@markuplint/ml-core").RuleSeed<boolean, Options>;
4
+ declare const _default: import('@markuplint/ml-core').RuleSeed<boolean, Options>;
5
5
  export default _default;
@@ -1,3 +1,9 @@
1
1
  import type { ChildNode, Options, Result, Specs } from './types';
2
2
  import type { PermittedContentChoice } from '@markuplint/ml-spec';
3
- export declare function choice(pattern: PermittedContentChoice, elements: ChildNode[], specs: Specs, options: Options, depth: number): Result;
3
+ export declare function choice(
4
+ pattern: PermittedContentChoice,
5
+ elements: ChildNode[],
6
+ specs: Specs,
7
+ options: Options,
8
+ depth: number,
9
+ ): Result;
@@ -10,4 +10,10 @@ import type { PermittedContentPattern } from '@markuplint/ml-spec';
10
10
  * @param depth
11
11
  * @returns
12
12
  */
13
- export declare function complexBranch(pattern: PermittedContentPattern, elements: ChildNode[], specs: Specs, options: Options, depth: number): Result;
13
+ export declare function complexBranch(
14
+ pattern: PermittedContentPattern,
15
+ elements: ChildNode[],
16
+ specs: Specs,
17
+ options: Options,
18
+ depth: number,
19
+ ): Result;
@@ -1,5 +1,10 @@
1
1
  import type { ChildNode, Options, Result, Specs } from './types';
2
- import type { PermittedContentOneOrMore, PermittedContentOptional, PermittedContentRequire, PermittedContentZeroOrMore } from '@markuplint/ml-spec';
2
+ import type {
3
+ PermittedContentOneOrMore,
4
+ PermittedContentOptional,
5
+ PermittedContentRequire,
6
+ PermittedContentZeroOrMore,
7
+ } from '@markuplint/ml-spec';
3
8
  /**
4
9
  * Check count
5
10
  *
@@ -10,4 +15,14 @@ import type { PermittedContentOneOrMore, PermittedContentOptional, PermittedCont
10
15
  * @param depth
11
16
  * @returns
12
17
  */
13
- export declare function countPattern(pattern: PermittedContentOneOrMore | PermittedContentOptional | PermittedContentRequire | PermittedContentZeroOrMore, elements: readonly ChildNode[], specs: Specs, options: Options, depth: number): Result;
18
+ export declare function countPattern(
19
+ pattern:
20
+ | PermittedContentOneOrMore
21
+ | PermittedContentOptional
22
+ | PermittedContentRequire
23
+ | PermittedContentZeroOrMore,
24
+ elements: readonly ChildNode[],
25
+ specs: Specs,
26
+ options: Options,
27
+ depth: number,
28
+ ): Result;
@@ -143,6 +143,7 @@ function countPattern(pattern, elements, specs, options, depth) {
143
143
  exports.countPattern = countPattern;
144
144
  const cLog = debug_1.cmLog.extend('countCompereResult');
145
145
  function compereResult(a, b) {
146
+ var _a;
146
147
  cLog('current: %s %O\nbarely: %s %O', a.type, a.hint, b === null || b === void 0 ? void 0 : b.type, b === null || b === void 0 ? void 0 : b.hint);
147
148
  if (b == null) {
148
149
  return a;
@@ -150,6 +151,6 @@ function compereResult(a, b) {
150
151
  if (a.type === 'MATCHED' || a.type === 'MATCHED_ZERO' || a.type === 'UNEXPECTED_EXTRA_NODE') {
151
152
  return a;
152
153
  }
153
- const result = [a, b].sort((a, b) => { var _a, _b, _c, _d; return ((_b = (_a = b.hint.missing) === null || _a === void 0 ? void 0 : _a.barelyMatchedElements) !== null && _b !== void 0 ? _b : 0) - ((_d = (_c = a.hint.missing) === null || _c === void 0 ? void 0 : _c.barelyMatchedElements) !== null && _d !== void 0 ? _d : 0); })[0];
154
+ const result = (_a = [a, b].sort((a, b) => { var _a, _b, _c, _d; return ((_b = (_a = b.hint.missing) === null || _a === void 0 ? void 0 : _a.barelyMatchedElements) !== null && _b !== void 0 ? _b : 0) - ((_d = (_c = a.hint.missing) === null || _c === void 0 ? void 0 : _c.barelyMatchedElements) !== null && _d !== void 0 ? _d : 0); })[0]) !== null && _a !== void 0 ? _a : a;
154
155
  return result;
155
156
  }
@@ -1,30 +1,30 @@
1
1
  /// <reference types="debug" />
2
- export declare const cmLog: import("debug").Debugger;
2
+ export declare const cmLog: import('debug').Debugger;
3
3
  export declare const bgGreen: {
4
- (): void;
5
- bold(): void;
4
+ (): void;
5
+ bold(): void;
6
6
  };
7
7
  export declare const green: {
8
- (): void;
9
- bold(): void;
8
+ (): void;
9
+ bold(): void;
10
10
  };
11
11
  export declare const bgRed: {
12
- (): void;
13
- bold(): void;
12
+ (): void;
13
+ bold(): void;
14
14
  };
15
15
  export declare const bgBlue: {
16
- (): void;
17
- bold(): void;
16
+ (): void;
17
+ bold(): void;
18
18
  };
19
19
  export declare const blue: {
20
- (): void;
21
- bold(): void;
20
+ (): void;
21
+ bold(): void;
22
22
  };
23
23
  export declare const bgMagenta: {
24
- (): void;
25
- bold(): void;
24
+ (): void;
25
+ bold(): void;
26
26
  };
27
27
  export declare const cyan: {
28
- (): void;
29
- bold(): void;
28
+ (): void;
29
+ bold(): void;
30
30
  };
@@ -1,3 +1,3 @@
1
1
  /// <reference types="debug" />
2
- export declare const cmLog: import("debug").Debugger;
2
+ export declare const cmLog: import('debug').Debugger;
3
3
  export { bgGreen, green, bgRed, bgBlue, blue, bgMagenta, cyan } from 'ansi-colors';
@@ -1,3 +1,3 @@
1
1
  import type { Options, TagRule } from './types';
2
- declare const _default: import("@markuplint/ml-core").RuleSeed<TagRule[], Options>;
2
+ declare const _default: import('@markuplint/ml-core').RuleSeed<TagRule[], Options>;
3
3
  export default _default;
@@ -1,3 +1,9 @@
1
1
  import type { ChildNode, Options, Result, Specs } from './types';
2
2
  export type SelectorResult = Result<'UNMATCHED_SELECTOR_BUT_MAY_EMPTY' | 'MISSING_NODE' | 'UNMATCHED_SELECTORS'>;
3
- export declare function matchesSelector(query: string, node: ChildNode | undefined, specs: Specs, options: Options, depth: number): SelectorResult;
3
+ export declare function matchesSelector(
4
+ query: string,
5
+ node: ChildNode | undefined,
6
+ specs: Specs,
7
+ options: Options,
8
+ depth: number,
9
+ ): SelectorResult;
@@ -10,4 +10,10 @@ import type { PermittedContentPattern } from '@markuplint/ml-spec';
10
10
  * @param depth
11
11
  * @returns
12
12
  */
13
- export declare function order(contents: ReadonlyArray<PermittedContentPattern>, nodes: ReadonlyArray<ChildNode>, specs: Specs, options: Options, depth: number): Result;
13
+ export declare function order(
14
+ contents: ReadonlyArray<PermittedContentPattern>,
15
+ nodes: ReadonlyArray<ChildNode>,
16
+ specs: Specs,
17
+ options: Options,
18
+ depth: number,
19
+ ): Result;
@@ -27,7 +27,7 @@ function order(contents, nodes, specs, options, depth) {
27
27
  let backtrackMode = false;
28
28
  let afterBacktrack = false;
29
29
  const unmatchedResults = [];
30
- while (patterns.length) {
30
+ while (patterns.length && patterns[0]) {
31
31
  result = (0, complex_branch_1.complexBranch)(patterns[0], collection.unmatched, specs, options, depth);
32
32
  collection.addMatched(result.matched);
33
33
  if (result.type !== 'UNEXPECTED_EXTRA_NODE' && result.type !== 'MATCHED' && result.type !== 'MATCHED_ZERO') {
@@ -1,4 +1,10 @@
1
1
  import type { SelectorResult } from './matches-selector';
2
2
  import type { ChildNode, Options, Specs } from './types';
3
3
  import type { PermittedContentPattern, Model } from '@markuplint/ml-spec';
4
- export declare function recursiveBranch(model: Model | PermittedContentPattern[], nodes: readonly ChildNode[], specs: Specs, options: Options, depth: number): SelectorResult;
4
+ export declare function recursiveBranch(
5
+ model: Model | PermittedContentPattern[],
6
+ nodes: readonly ChildNode[],
7
+ specs: Specs,
8
+ options: Options,
9
+ depth: number,
10
+ ): SelectorResult;
@@ -1,6 +1,10 @@
1
1
  import type { ChildNode, Options, Result, Specs } from './types';
2
2
  export declare const transparentMode: Map<ChildNode, true>;
3
- export declare function representTransparentNodes(nodes: ChildNode[], specs: Specs, options: Options): {
4
- nodes: ChildNode[];
5
- errors: Result[];
3
+ export declare function representTransparentNodes(
4
+ nodes: ChildNode[],
5
+ specs: Specs,
6
+ options: Options,
7
+ ): {
8
+ nodes: ChildNode[];
9
+ errors: Result[];
6
10
  };
@@ -9,4 +9,9 @@ import type { ContentModel } from '@markuplint/ml-spec';
9
9
  * @param options
10
10
  * @returns
11
11
  */
12
- export declare function start(contents: ContentModel['contents'], el: Element, specs: Specs, options: Options): ContentModelResult[];
12
+ export declare function start(
13
+ contents: ContentModel['contents'],
14
+ el: Element,
15
+ specs: Specs,
16
+ options: Options,
17
+ ): ContentModelResult[];
@@ -4,8 +4,8 @@ exports.transparent = void 0;
4
4
  const debug_1 = require("./debug");
5
5
  const transparentLog = debug_1.cmLog.extend('transparent');
6
6
  function transparent(nodes, specs, options, depth) {
7
- var _a;
8
- if (nodes.length === 0 || ((_a = nodes[0].parentElement) === null || _a === void 0 ? void 0 : _a.parentElement)) {
7
+ var _a, _b;
8
+ if (nodes.length === 0 || ((_b = (_a = nodes[0]) === null || _a === void 0 ? void 0 : _a.parentElement) === null || _b === void 0 ? void 0 : _b.parentElement)) {
9
9
  transparentLog('Skipped');
10
10
  return {
11
11
  type: nodes.length === 0 ? 'MATCHED_ZERO' : 'MATCHED',