email-text-tools

65 releases measured. Default branch at 82719820, 2026-10-19, 10 files.

Source lines
1,217
+28.2% in a year
Maintainability index
50.8
+1.0 in a year
Mean CC per function
4.55
Functions with CC > 20
0
of 74
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.