email-text-tools
65 releases measured. Default branch at 82719820, 2026-10-19, 10 files.
Size
Lines of code, comments and blank lines left out
Maintainability index
Mean over functions, weighted by their lines. Higher is better
Cyclomatic complexity per function
Lower is better
Hard to maintain
Share of functions, and of function code, past the usual limits. Lower is better
Least maintainable functions now
| Function | Location | MI | CC | Lines |
|---|---|---|---|---|
inlineHtml |
lib/inline-html.js:78 | 31.6 | 17 | 84 |
inlineText |
lib/inline-text.js:45 | 34.5 | 17 | 66 |
exceedsNestingDepth |
lib/html-guard.js:26 | 36.2 | 20 | 55 |
prepareHtml |
lib/mime-html.js:335 | 42.4 | 13 | 34 |
finishHtml |
lib/mime-html.js:426 | 44.9 | 9 | 29 |
fallbackText |
lib/html-guard.js:95 | 45.2 | 7 | 30 |
linkifyAndHtmlEscape |
lib/text-to-html.js:80 | 45.2 | 7 | 32 |
processQuotedNode |
lib/text-to-html.js:163 | 45.5 | 11 | 29 |
textLinesToHtml |
lib/text-to-html.js:130 | 47.2 | 9 | 25 |
hasNotWithPseudo |
lib/mime-html.js:278 | 47.5 | 9 | 27 |
countSelectors |
lib/mime-html.js:239 | 48.2 | 10 | 25 |
walkNode |
lib/text-to-html.js:37 | 48.5 | 7 | 23 |
_createWorker |
lib/worker-pool.js:33 | 50.3 | 3 | 23 |
formatDate |
lib/format-date.js:39 | 50.6 | 7 | 19 |
<anonymous> |
lib/worker-pool.js:70 | 50.9 | 6 | 20 |
Every measured release 65
| Release | Date | Files | Source lines | Functions | MI | Mean CC | P90 CC | Max CC | CC > 10 | CC > 20 |
|---|---|---|---|---|---|---|---|---|---|---|
| v2.4.26 | 2026-10-19 | 10 | 1,217 | 74 | 50.8 | 4.55 | 9 | 20 | 5 | 0 |
| v2.4.25 | 2026-10-18 | 10 | 1,217 | 74 | 50.8 | 4.55 | 9 | 20 | 5 | 0 |
| v2.4.24 | 2026-10-18 | 10 | 1,217 | 74 | 50.8 | 4.55 | 9 | 20 | 5 | 0 |
| v2.4.23 | 2026-10-18 | 10 | 1,217 | 73 | 50.7 | 4.60 | 9 | 20 | 5 | 0 |
| v2.4.22 | 2026-10-18 | 10 | 1,206 | 72 | 50.4 | 4.60 | 9 | 20 | 6 | 0 |
| v2.4.21 | 2026-10-16 | 10 | 1,206 | 72 | 50.4 | 4.60 | 9 | 20 | 6 | 0 |
| v2.4.20 | 2026-10-16 | 10 | 1,206 | 72 | 50.4 | 4.60 | 9 | 20 | 6 | 0 |
| v2.4.19 | 2026-10-14 | 9 | 1,139 | 70 | 51.1 | 4.44 | 8 | 20 | 4 | 0 |
| v2.4.18 | 2026-09-28 | 9 | 1,139 | 70 | 51.1 | 4.44 | 8 | 20 | 4 | 0 |
| v2.4.17 | 2026-09-28 | 9 | 1,110 | 69 | 51.3 | 4.41 | 9 | 20 | 4 | 0 |
| v2.4.16 | 2026-09-07 | 8 | 969 | 61 | 50.0 | 4.05 | 8 | 19 | 4 | 0 |
| v2.4.15 | 2026-08-31 | 8 | 969 | 61 | 50.0 | 4.05 | 8 | 19 | 4 | 0 |
| v2.4.14 | 2026-08-24 | 8 | 969 | 61 | 50.0 | 4.05 | 8 | 19 | 4 | 0 |
| v2.4.13 | 2026-08-17 | 8 | 969 | 61 | 50.0 | 4.05 | 8 | 19 | 4 | 0 |
| v2.4.12 | 2026-08-11 | 8 | 969 | 61 | 50.0 | 4.05 | 8 | 19 | 4 | 0 |
| v2.4.11 | 2026-07-20 | 8 | 969 | 61 | 50.0 | 4.05 | 8 | 19 | 4 | 0 |
| v2.4.10 | 2026-07-05 | 8 | 969 | 61 | 50.0 | 4.05 | 8 | 19 | 4 | 0 |
| v2.4.9 | 2026-06-26 | 8 | 969 | 61 | 50.0 | 4.05 | 8 | 19 | 4 | 0 |
| v2.4.8 | 2026-06-19 | 8 | 969 | 61 | 50.0 | 4.05 | 8 | 19 | 4 | 0 |
| v2.4.7 | 2026-06-15 | 8 | 969 | 61 | 50.0 | 4.05 | 8 | 19 | 4 | 0 |
| v2.4.6 | 2026-05-29 | 8 | 969 | 61 | 50.0 | 4.05 | 8 | 19 | 4 | 0 |
| v2.4.5 | 2026-04-16 | 8 | 969 | 61 | 50.0 | 4.05 | 8 | 19 | 4 | 0 |
| v2.4.4 | 2026-04-08 | 8 | 969 | 61 | 50.0 | 4.05 | 8 | 19 | 4 | 0 |
| v2.4.3 | 2026-03-15 | 8 | 969 | 61 | 50.0 | 4.05 | 8 | 19 | 4 | 0 |
| v2.4.2 | 2026-03-05 | 8 | 969 | 61 | 50.0 | 4.05 | 8 | 19 | 4 | 0 |
| v2.4.1 | 2026-01-15 | 8 | 969 | 61 | 50.0 | 4.05 | 8 | 19 | 4 | 0 |
| v2.4.0 | 2025-12-11 | 8 | 969 | 61 | 50.0 | 4.05 | 8 | 19 | 4 | 0 |
| v2.2.0 | 2025-09-29 | 8 | 949 | 59 | 49.8 | 4.15 | 9 | 19 | 4 | 0 |
| v2.1.16 | 2025-06-29 | 6 | 577 | 20 | 43.9 | 6.45 | 11 | 19 | 3 | 0 |
| v2.1.15 | 2025-05-20 | 6 | 587 | 20 | 43.4 | 6.45 | 11 | 19 | 3 | 0 |
| v2.1.14 | 2025-02-22 | 6 | 576 | 20 | 43.9 | 6.45 | 11 | 19 | 3 | 0 |
| v2.1.13 | 2025-01-26 | 6 | 576 | 20 | 43.9 | 6.45 | 11 | 19 | 3 | 0 |
| v2.1.12 | 2024-12-03 | 6 | 576 | 20 | 43.9 | 6.45 | 11 | 19 | 3 | 0 |
| v2.1.11 | 2024-09-08 | 6 | 576 | 20 | 43.9 | 6.45 | 11 | 19 | 3 | 0 |
| v2.1.10 | 2024-08-22 | 6 | 576 | 20 | 43.9 | 6.45 | 11 | 19 | 3 | 0 |
| v2.1.9 | 2024-07-03 | 6 | 576 | 20 | 43.9 | 6.45 | 11 | 19 | 3 | 0 |
| v2.1.8 | 2024-04-12 | 6 | 576 | 20 | 43.9 | 6.45 | 11 | 19 | 3 | 0 |
| v2.1.7 | 2024-02-29 | 6 | 576 | 20 | 43.9 | 6.45 | 11 | 19 | 3 | 0 |
| v2.1.6 | 2024-02-18 | 6 | 576 | 20 | 43.9 | 6.45 | 11 | 19 | 3 | 0 |
| v2.1.5 | 2024-02-18 | 6 | 581 | 20 | 44.0 | 6.50 | 11 | 19 | 3 | 0 |
| v2.1.4 | 2024-02-18 | 6 | 581 | 20 | 44.0 | 6.50 | 11 | 19 | 3 | 0 |
| v2.1.3 | 2023-10-31 | 6 | 581 | 20 | 44.0 | 6.50 | 11 | 19 | 3 | 0 |
| v2.1.2 | 2023-10-20 | 6 | 581 | 20 | 44.0 | 6.50 | 11 | 19 | 3 | 0 |
| v2.1.1 | 2023-08-29 | 6 | 581 | 20 | 44.0 | 6.50 | 11 | 19 | 3 | 0 |
| v2.1.0 | 2023-06-06 | 6 | 581 | 20 | 44.0 | 6.50 | 11 | 19 | 3 | 0 |
| v2.0.1 | 2023-05-19 | 6 | 541 | 19 | 43.6 | 6.58 | 19 | 19 | 3 | 0 |
| v2.0.0 | 2023-05-11 | 6 | 540 | 19 | 43.6 | 6.58 | 19 | 19 | 3 | 0 |
| v1.4.1 | 2023-04-28 | 8 | 929 | 36 | 39.4 | 6.28 | 19 | 28 | 5 | 2 |
| v1.4.0 | 2023-04-28 | 8 | 904 | 32 | 37.3 | 6.75 | 19 | 32 | 5 | 2 |
| v1.3.2 | 2023-04-14 | 8 | 849 | 30 | 38.8 | 6.73 | 19 | 29 | 5 | 2 |
| v1.3.1 | 2023-04-14 | 8 | 849 | 30 | 38.8 | 6.73 | 19 | 29 | 5 | 2 |
| v1.3.0 | 2023-04-13 | 8 | 809 | 30 | 40.7 | 6.43 | 19 | 23 | 5 | 1 |
| v1.2.7 | 2023-04-04 | 7 | 650 | 23 | 41.3 | 6.87 | 19 | 23 | 4 | 1 |
| v1.2.6 | 2023-03-11 | 7 | 650 | 23 | 41.3 | 6.87 | 19 | 23 | 4 | 1 |
| v1.2.5 | 2023-03-11 | 7 | 654 | 23 | 41.1 | 6.87 | 19 | 23 | 4 | 1 |
| v1.2.4 | 2023-03-11 | 7 | 637 | 23 | 42.1 | 6.61 | 17 | 19 | 4 | 0 |
| v1.2.3 | 2023-03-06 | 7 | 610 | 23 | 42.7 | 6.52 | 15 | 19 | 4 | 0 |
| v1.2.2 | 2023-03-06 | 7 | 608 | 23 | 42.8 | 6.52 | 15 | 19 | 4 | 0 |
| v1.2.1 | 2023-03-06 | 7 | 608 | 23 | 42.8 | 6.52 | 15 | 19 | 4 | 0 |
| v1.2.0 | 2023-03-06 | 7 | 607 | 23 | 42.8 | 6.52 | 15 | 19 | 4 | 0 |
| v1.1.1 | 2023-03-03 | 6 | 534 | 19 | 43.6 | 6.58 | 19 | 19 | 3 | 0 |
| v1.1.0 | 2023-03-02 | 6 | 507 | 19 | 43.7 | 6.58 | 19 | 19 | 3 | 0 |
| v1.0.2 | 2022-11-18 | 5 | 422 | 18 | 43.9 | 6.28 | 19 | 19 | 3 | 0 |
| v1.0.1 | 2022-11-18 | 5 | 422 | 18 | 43.9 | 6.28 | 19 | 19 | 3 | 0 |
| v1.0.0 | 2022-07-07 | 5 | 422 | 18 | 43.9 | 6.28 | 19 | 19 | 3 | 0 |
How the numbers are made
Library source only: lib/, src/, workers/, bin/ and top-level source files.
Tests, examples, tooling, type declarations and generated or minified files are left out.
Source lines are lines carrying code, with blank lines and comments dropped.
Cyclomatic complexity (CC) counts the independent paths through a function: 1 plus every if, loop,
case, catch, ternary, && / || / ??, optional chain and default
parameter. Above 10 a function is commonly considered hard to test, above 20 hard to understand.
Maintainability index (MI) is computed per function as
max(0, (171 - 5.2 ln(Halstead volume) - 0.23 CC - 16.2 ln(lines)) * 100 / 171), the 0 to 100 scale Visual Studio uses,
where below 20 is poor. The repository figure weights each function by its lines. Code outside any function (lookup tables, schemas,
declarations) counts toward size only. MI is driven mostly by size, so read it as a trend, not a grade.
A move from JavaScript to TypeScript adds type annotations to every function, which raises the Halstead volume and lowers MI without the logic changing. Expect a step at that release.
Measured Mon, 19 Oct 2026 19:28:19 GMT.