Changelog

All notable changes to this project will be documented in this file.
See Conventional Commits opens in a new tab for commit guidelines.

6.0.0

1 Dec 2022

💥 BREAKING CHANGES

  • Minimum supported Node version is v14.18; we’re dropping v12 support

5.1.0

12 Aug 2022

Features

5.0.0

9 Sept 2021

Features

💥 BREAKING CHANGES

  • programs now are in ES Modules and won’t work with Common JS require()

4.7.0

24 May 2021

🔧 Fixed

Features

  • config file based major bump blacklisting (e15f9bb)
  • logic improvements around inline CSS and ESP tokens (4334454)

4.6.0

11 Apr 2021

🔧 Fixed

  • decommission attribute-enforce-img-alt in favor of more generic attribute-required (197a4f6)
  • export the JSON of every single rule possibly reported by emlint (e048195)
  • improve attribute-align-mismatch to flag up any amount of child table nodes (906ff9f)

Features

  • new rule, attribute-align-mismatch (c785678)
  • new rule, attribute-required (6bdd17e)
  • new rule, css-required (5edda75)
  • prevent character-encode and bad-character-* from clashing (19d6709)

Reverts

  • Revert “chore: setup refresh” (23cf206)

4.5.0

23 Mar 2021

🔧 Fixed

  • attribute-validate-style the case of a missing value (efcefa7)
  • improve tag-malformed, detect missing opening brackets too (d71f957)
  • remove the rule character-unspaced-punctuation because it’s not set up right conceptually (424e530)
  • update the compilation script to include newest families of rules, plus generate a list of all (cc9fae0)

Features

  • attribute-malformed to recognise unencoded quotes within values and encode them (b98d58c)
  • tag-table to detect empty td tags (9d1980b)
  • tag-table to detect intra-tag text tokens within tables (84a5d7e)
  • tag-table to recognise the absence of tr or td tags (eaa4676)
  • new rule, tag-malformed (1cca505)

4.4.0

14 Mar 2021

🔧 Fixed

  • apply attr equal character checks on empty value too (0f2732a)
  • improvements to tag-table (1510cdf)
  • improvements to tag-table — fix the error by deleting a bad colspan (a197d07)

Features

  • attribute-malformed does not enforce attr leading whitespace if HTML is not pure (490d8bb)
  • attribute-malformed to detect malformed leading space (e054789)
  • improvements to attribute-malformed (b60adbe)
  • improvements to attribute-malformed (a2e694f)
  • improvements to attribute-malformed (c2da4bb)
  • merge rule tag-space-before-closing-slash into tag-space-before-closing-bracket (e66f448)
  • new rule, attribute-enforce-img-alt (a83236f)
  • new rule, tag-table (035ac70)

4.3.0

7 Mar 2021

🔧 Fixed

  • extend the reporting range in tag-void-slash (b8fae83)
  • prevent attribute-duplicate reporting non-attributes: ESP tokens, comments etc (110d1f4)

Features

  • improve tag-void-slash rule to detect rogue closing void tags (48c894e)
  • merge head CSS style validation with inline HTML style-one, separate trailing semi rules (8d8291d)
  • new rule, format-prettier (08ff4f0)
  • rewrite css-trailing-semi to tend both HTML head CSS and the inline HTML style attrs (5b82c6b)
  • set rule format-prettier to detect missing space after semi in CSS (df53bec)

4.2.0

27 Feb 2021

🔧 Fixed

  • improvements to css-rule-malformed (cf34cf4)
  • rename trailing-semi to css-trailing-semi (ed848a7)

Features

  • css-rule-malformed detect colon character replacement in CSS rules (e6f2ed6)
  • css-rule-malformed to catch gaps in front of semicolon or colon in CSS rules (ca9fe11)
  • css-rule-malformed to report missing CSS rule values (59a3690)
  • improvements to css-rule-malformed, catch rogue characters present instead of a rule (34209f9)
  • new rule, css-rule-malformed (cfa77e2)
  • new rule, trailing-semi (a47bdfb)
  • rule css-rule-malformed: add mis-typed !important recognition (428a6f0)
  • salvage a rare case with rogue semi in front of !important in CSS rule (424dc7b)
  • wire up and run the helper script to compile aggregate rule sets (2673c8c)

4.1.0

7 Feb 2021

🔧 Fixed

  • stop attribute-validate-alt flagging up empty alt attribute values (14b0160)

Features

  • improvements to attribute-validate-style (7a2e9e2)
  • new rule, attribute-on-closing-tag (cd9615a)
  • new rule, email-td-sibling-padding (49ef0bb)

4.0.1

28 Jan 2021

🔧 Fixed

  • add testStats to npmignore (f3c84e9)

4.0.0

23 Jan 2021

Features

  • rewrite in TS

2.19.0

12 Oct 2020

Features

  • update to the latest tokenizer, improve attribute-* rules (deea2ce)

2.18.0

6 May 2020

Features

2.17.0

13 Apr 2020

Features

  • new rule, tag-space-before-closing-bracket (77dc417)

2.16.0

4 Apr 2020

🔧 Fixed

  • don’t raise alerts on doctype case in rule tag-name-case (4d5c2a7)
  • fix a few premature exiting functions (f8ad307)
  • stop validateDigitAndUnit() breaking on falsey inputs, thanks to dev UMD build (ad1fb8f)
  • support tel:* for href value (fa9d649)

Features

  • add Apple-specific link types (5148bf8)
  • add more known link types such as rel=“icon” (0756ad0)
  • introduce new key in reported messages, keepSeparateWhenFixing (f27a756)
  • mention attribute’s name in attribute-validate-* error messages (6801b6e)
  • recognise IE attribute in attribute-validate-http-equiv (a85496c)

2.15.0

24 Mar 2020

Features

  • improvements to attribute-malformed — detect repeated opening quotes on attributes (c4db5bf)
  • improvements to attribute-malformed — recognise repeated double quotes instead of equal (f7d487e)
  • new rule, comment-conditional-nested (b5de5b9)
  • new rule, tag-bad-self-closing (1d6c1db)
  • new rule, tag-void-frontal-slash; recognise HTML attr missing quotes (attribute-malformed) (7de6964)
  • recognise errors on the opening “only”-kind comment tag endings (abf504c)
  • recognise wrong brackets in comment tags (both closing and opening) (e97dccb)
  • tweaks to comment-mismatching-pair to mind malformed closing tags to prevent fixes clashes (5f389b5)

2.14.0

16 Mar 2020

🔧 Fixed

  • fix the severity reporting for character-unspaced-punctuation rule (dce4064)

Features

  • correctly recognise !-- pattern, don’t trigger unspaced-punctuation (d3ae0d8)
  • emit token events from the traversed AST (instead of directly from tokenizer) (ee460c0)
  • improvements to opening comment tag recognition (9dfacc4)
  • make character-encode rule to consume text type nodes, to traverse them (d5ee8b5)
  • new rule, comment-mismatching-pair (72bcb44)
  • tap string-find-malformed and implement the broken simple opening comment search (53807d0)

2.13.0

24 Feb 2020

Features

  • new rule, media-malformed (cac1c17)
  • new rules, comment-only-closing-malformed & comment-only-opening-malformed (84f9319)
  • recognise broken html simple closing comments with missing dashes (88874b6)
  • recognise more broken closing comment tag cases (fe77d70)

2.12.0

9 Feb 2020

Features

  • new rule, tag-missing-opening (1d5d596)
  • switch to codsen-parser (e9d7080)

2.11.0

26 Jan 2020

Features

  • improve whitespace recognition within URI’s (ba3446b)

2.10.0

11 Jan 2020

Features

  • extend “onunload” attribute validation to body tag (81a9e5a)
  • extend onload attribute validation to body tag (a6c61f8)
  • extend rule attribute-validate-size (72502c6)
  • improvements to attribute-validate-width (f50e6e7)
  • migrate all URI value type attributes to consume validateUri() (2ab3631)
  • new rule, attribute-validate-method (b233e92)
  • new rule, attribute-validate-multiple (2465441)
  • new rule, attribute-validate-name (8870abe)
  • new rule, attribute-validate-nohref (dadcb16)
  • new rule, attribute-validate-noresize (73a63a7)
  • new rule, attribute-validate-noshade (250f786)
  • new rule, attribute-validate-nowrap (cfea63e)
  • new rule, attribute-validate-object (7f1fed3)
  • new rule, attribute-validate-onblur (3b464bc)
  • new rule, attribute-validate-onchange (188d5b6)
  • new rule, attribute-validate-onfocus (1db2ebe)
  • new rule, attribute-validate-onkeydown (19c091a)
  • new rule, attribute-validate-onkeypress (c5d465a)
  • new rule, attribute-validate-onkeyup (9cdb2ed)
  • new rule, attribute-validate-onload (f231e11)
  • new rule, attribute-validate-onmousedown (d7323a0)
  • new rule, attribute-validate-onmousemove (a64c6a0)
  • new rule, attribute-validate-onmouseout (64115da)
  • new rule, attribute-validate-onmouseover (9fd7b85)
  • new rule, attribute-validate-onmouseup (9118dbb)
  • new rule, attribute-validate-onreset (4cdb742)
  • new rule, attribute-validate-onselect (3834290)
  • new rule, attribute-validate-onsubmit (f23640a)
  • new rule, attribute-validate-onunload (582be1f)
  • new rule, attribute-validate-profile (c1e8ba1)
  • new rule, attribute-validate-prompt (003c04f)
  • new rule, attribute-validate-readonly (5b2f921)
  • new rule, attribute-validate-rel (4c991d8)
  • new rule, attribute-validate-rev (868fdbb)
  • new rule, attribute-validate-rows (f3fa9e1)
  • new rule, attribute-validate-scheme (2d85432)
  • new rule, attribute-validate-scope (666fe2b)
  • new rule, attribute-validate-scrolling (e89d60b)
  • new rule, attribute-validate-selected (ed3d264)
  • new rule, attribute-validate-shape (6ed0bf4)
  • new rule, attribute-validate-size and some rebasing (b11c805)
  • new rule, attribute-validate-span (c03a6bb)
  • new rule, attribute-validate-src (38a3154)
  • new rule, attribute-validate-start (4a9d387)
  • new rule, attribute-validate-style (basic level) (293fa79)
  • new rule, attribute-validate-summary (a4a0e6e)
  • new rule, attribute-validate-tabindex (d9299d8)
  • new rule, attribute-validate-target (d996417)
  • new rule, attribute-validate-title (251b854)
  • new rule, attribute-validate-type (29ef159)
  • new rule, attribute-validate-usemap (6a33365)
  • new rule, attribute-validate-valign (83e80a9)
  • new rule, attribute-validate-value (716f7f6)
  • new rule, attribute-validate-valuetype (fd68ed7)
  • new rule, attribute-validate-version (e524e00)
  • new rule, attribute-validate-vspace (e99b727)
  • new rules, attribute-validate-onclick and attribute-validate-ondblclick (b5d797c)
  • separate relative URI checking into a standalone package and then tap it (c48a622)

2.9.0

5 Jan 2020

Features

  • add xmlns (7154f5f)
  • new rule, attribute-validate-alt (6ec507e)
  • new rule, attribute-validate-frameborder (c8e580a)
  • new rule, attribute-validate-headers (d582b8a)
  • new rule, attribute-validate-height (09732a9)
  • new rule, attribute-validate-href (73148d7)
  • new rule, attribute-validate-hreflang (a19c9d2)
  • new rule, attribute-validate-hspace (eed294b)
  • new rule, attribute-validate-http-equiv (b6436bc)
  • new rule, attribute-validate-ismap (e5df842)
  • new rule, attribute-validate-label (5409a92)
  • new rule, attribute-validate-lang (dd0f9d2)
  • new rule, attribute-validate-language (06d4312)
  • new rule, attribute-validate-link (e37e2e0)
  • new rule, attribute-validate-longdesc (702fbd2)
  • new rule, attribute-validate-marginheight (e1f024f)
  • new rule, attribute-validate-marginwidth (47860e4)
  • new rule, attribute-validate-maxlength (e7401c0)
  • new rule, attribute-validate-media (2d77259)
  • new rule, attribute-validate-text (57f7d8e)
  • new rule, attribute-validate-vlink (55ff0db)
  • new rules, attribute-validate-frame and attribute-validate-rules (1d12ae4)

2.8.0

1 Jan 2020

Features

  • harden the rule attribute-malformed, flag up all non-recognised attrs (fc949a7)
  • improvements to attribute-validate-archive and others (f8b35fe)
  • new rule, attribute-validate-cols (05fb199)
  • new rule, attribute-validate-colspan (e72fa98)
  • new rule, attribute-validate-compact (ec7e4f3)
  • new rule, attribute-validate-content (a076d71)
  • new rule, attribute-validate-coords (f3baa58)
  • new rule, attribute-validate-data (3cd016a)
  • new rule, attribute-validate-datetime (62b8776)
  • new rule, attribute-validate-declare (e16fd80)
  • new rule, attribute-validate-defer (52d0acd)
  • new rule, attribute-validate-dir (086a83d)
  • new rule, attribute-validate-disabled (45bb607)
  • new rule, attribute-validate-enctype (5f1098c)
  • new rule, attribute-validate-for (7a53a41)
  • new rule, attribute-validate-rowspan (a234874)
  • show all permitted values in error messages instead of complaining about wrong value (a5ee245)

2.7.0

27 Dec 2019

Features

  • levenshtein distance for attribute names (3ab2e83)
  • new rule, attribute-duplicate (1fc32a5)
  • new rule, attribute-validate-axis (9da98c7)
  • new rule, attribute-validate-background (6628374)
  • new rule, attribute-validate-bgcolor (bfa84e7)
  • new rule, attribute-validate-cellpadding (47a927f)
  • new rule, attribute-validate-cellspacing (273d551)
  • new rule, attribute-validate-char (d3eef87)
  • new rule, attribute-validate-charoff (4528a17)
  • new rule, attribute-validate-charset (c2749c2)
  • new rule, attribute-validate-checked (29a7047)
  • new rule, attribute-validate-cite (ec72be6)
  • new rule, attribute-validate-class (de68974)
  • new rule, attribute-validate-classid (4de2985)
  • new rule, attribute-validate-clear (9997520)
  • new rule, attribute-validate-code (60b085b)
  • new rule, attribute-validate-codebase (08ccf17)
  • new rule, attribute-validate-codetype (228e3bc)
  • new rule, attribute-validate-color (8f174c6)
  • new rule, attribute-validate-id (6cb9ba8)
  • rules attribute-validate-class/id, detect duplicate class/id names (dfe570d)

2.6.0

21 Dec 2019

Features

  • add parent tag validation for attribute-validate-accept (bc23026)
  • new rule, attribute-validate-archive (7fa39f3)
  • new rule, attribute-validate-abbr (168009c)
  • new rule, attribute-validate-accept (4993b5a)
  • new rule, attribute-validate-accept-charset (d5a52cb)
  • new rule, attribute-validate-accesskey (d83018c)
  • new rule, attribute-validate-action (8e18a6f)
  • new rule, attribute-validate-align (632b758)
  • new rule, attribute-validate-alink (9f9a94b)
  • new rule, attribute-validate-border + some housekeeping (d245a14)
  • new rule, attribute-validate-width (4929609)
  • parent tag validation for attributes (788157f)

2.5.0

9 Dec 2019

Features

  • new rule, attribute-malformed + new emitted event type, ”attribute“ (6afac3d)
  • new rule, bad-character-replacement-character (82b24b8)
  • new rule, character-unspaced-punctuation (e60a806)
  • new rule, tag-bold (bb907cd)
  • new rule, tag-is-present (e627c14)
  • rename and beef up rule: bad-character-tabulation (cd4d0a0)

2.4.0

27 Nov 2019

Features

  • improvements to ESP tag recognition (8ac47b1)
  • make rules more composable (7cf3cbf)
  • new rule, all — plus removing all listeners in the end of a program (d6bc792)
  • new rule, character-encode (17c35ad)
  • new rule, tag-name-case (503ac91)
  • put names on the most common entities in error description (69233df)
  • rule tag-name-case — doctype and cdata wrong case (being not uppercase) (da9f68a)

2.3.0

21 Nov 2019

🔧 Fixed

  • when bad entity rules are disabled, they do not raise any issues (6f06ce2)

Features

  • new rules, bad-malformed-numeric-character-entity and bad-named-html-entity-multiple-encoding (d071749)
  • new rule, bad-named-html-entity-not-email-friendly (0a72fdc)
  • improvements in malformed entity reporting rules (d807a45)

2.2.0

20 Nov 2019

Features

  • add safegard type checks on linter.verify() inputs (fc4f30f)
  • detect backslashes in front of a tag (eba7347)
  • new rule, bad-named-html-entity-malformed-nbsp (75f232f)
  • new rule, bad-named-html-entity-unrecognised (9ea399d)
  • set up broken named html entity rules (a490e90)
  • tap the new codsen-tokenizer’s API where it pings the characters, remove character emits here (9f4a2c5)

2.1.0

18 Nov 2019

Features

  • add few more character rules (8a14f7c)
  • add few more character rules (2f06a84)
  • add few more character rules (e80737f)
  • complete creating rules for all ASCII range invisible characters (3abb85b)
  • few more character rules (e9048ca)
  • few more rules (8a347be)
  • first rule with config, tag-space-before-closing-slash, also add string-left-right as a dep (e6b6adb)
  • grouped rules — tag and bad-character (6aa5096)
  • new rules tag-void-slash and tag-closing-backslash (adce05d)
  • two more character rules (3e7516f)
  • update config on tap to consume all grouped rules (98d6af4)

2.0.0

11 Nov 2019

Features

  • add more bad character rules (4b5ae71)
  • make it pluggable — rewrite in observer pattern, separate the tokenizer and tap it (1c0a0eb)
  • set up the tag-level processing, add the first character-level rule (fc9a89f)

💥 BREAKING CHANGES

  • rewrite in observer pattern

1.8.0

9 Oct 2019

🔧 Fixed

  • make rule tag-space-after-opening-bracket not applicable for HTML comments (3fac2f6)

Features

  • improvements for recognition of ESP tags within attributes (0c1e42c)

1.7.0

24 Aug 2019

Features

  • flags up characters outside of ASCII and suggests HTML (only, so far) encoding (3e04e9e)
  • recognise email-unfriendly named HTML entities and suggest fixes (8b9d2c8)
  • when character outside ASCII is encoded, email-pattern encoding is considered (80f516c)

1.6.0

15 Aug 2019

Features

  • recognise tags with no attributes and with missing closing bracket (08fe678)

1.5.0

1 Jun 2019

Features

  • Algorithm tweaks to correspond to the latest API’s of all deps (7de00c2)

1.4.0

10 Apr 2019

Features

  • Algorithm improvements (634dde7)
  • Dedupe repeated slash errors, now there’s only one reported per tag (bb53589)
  • Improve closing slash error reporting consistency and rule name precision (a3d7570)
  • Rule tag-duplicate-closing-slash (8887552)

1.3.0

6 Apr 2019

Features

  • Broken CDATA recognition improvements (a130abc)
  • Detect excessive whitespace in front of ESP tag (b659586)
  • Heuristical ESP tag recognition (ef69bf7)
  • Improvements to CDATA rules and 4 new rules to cater HTML comments (65e23c9)
  • Improvements to malformed CDATA tag recognition algorithm (8bc571f)
  • Nested function-based ESP templating tag support (ab86a85)
  • Recognise ESP tags within HTML tags (764ee1d)
  • Recognise single character ESP closing tag endings (ee4fe96)
  • Rudimentary protection against CSS false positive display:block (8c14b90)
  • Rule esp-line-break-within-templating-tag (b3cc442)
  • Rules esp-more-closing-parentheses-than-opening & esp-more-opening-parentheses-than-closing (5235b15)

1.2.0

17 Mar 2019

Features

  • Implement opts for each rule (f2be977)
  • res.applicableRules — reports what rules could be applicable for given input (d5fb5a0)

1.0.0

4 Mar 2019

Features

  • Integrate package string-fix-broken-named-entities (bf26962)
  • Rule tag-generic-error (70dd628)
  • Rules tag-missing-space-before-attribute and tag-stray-quotes (fe7c5af)

0.8.0

26 Feb 2019

🔧 Fixed

Features

  • Rule tag-attribute-repeated-equal (cdcbe09)
  • Rule tag-missing-closing-bracket (6f495c5)
  • Rules combo: missing closing quotes and whitespace between slash and bracket (960a0f2)
  • Correctly recognises brackets within attribute values (836bfe2)
  • Excessive whitespace before missing closing bracket (b7ecdc9)
  • Excessive whitespace instead of a missing closing quotes (0bf97ed)
  • Excessive whitespace then slash instead of closing quotes (68da8b5)

0.7.0

10 Feb 2019

Features

  • Improve recognition of attribute sequences (998f718)
  • Rule tag-attribute-missing-equal tweaks (06c5992)
  • Rules tag-attribute-missing-equal and tag-attribute-opening-quotation-mark-missing (5f2f0d4)

🔧 Fixed

  • Add more false-outcome unit tests and tweak the algorithm edge cases to pass all tests (3563c3e)
  • Algorithm tweaks to pass all unit tests (d576d39)
  • Fix the Create New Issue URLs (c5ee4a6)
  • Treats legit quotes of the opposite kind within healthy quotes correctly (a390e6d)
  • Tweak the detection algorithm of some false cases (18c368d)

0.6.0

5 Feb 2019

Features

  • Rule tag-attribute-space-between-name-and-equals (11653a9)
  • Improvements to rules *-double-quotation-mark (d6f3307)
  • Rule tag-attribute-closing-quotation-mark-missing (f3ef429)
  • Rule tag-whitespace-tags-closing-slash-and-bracket (b65ee11)
  • Rules *-double-quotation-mark (e744a27)
  • Rules tag-attribute-*-single-quotation-mark (7ec9b49)
  • Rules tag-attribute-mismatching-quotes-is-* (1f8ca9e)
  • Rules tag-attribute-quote-and-onwards-missing and tag-generic-error (5182c0f)
  • Rules: tag-attribute-space-between-equals-and-opening-quotes and tag-excessive-whitespace-inside-tag (1da021b)

0.5.0

31 Jan 2019

Features

  • New rule — tag-name-lowercase (dfead6d)
  • New rules file-mixed-line-endings-file-is-\*-mainly to cater mixed EOL files with no opts for EOL (25e21ef)
  • Wired up basic unit test cases for rule file-mixed-line-endings-file-is-\*-mainly (46a549e)

0.4.0

27 Jan 2019

Features

  • Add rules to identify non-printable low-range ASCII characters (5471ccc)

0.1.0

27 Aug 2018
  • First public release