libmime

55 releases measured. Default branch at 0d366eeb, 2026-10-19, 6 files.

Source lines
3,256
+3.6% in a year
Maintainability index
45.5
-1.6 in a year
Mean CC per function
5.41
Functions with CC > 20
1
of 49
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
parseHeaderValue src/libmime.ts:587 26.6 26 107
buildHeaderParam src/libmime.ts:783 31.0 20 83
encodeWord src/libmime.ts:217 38.0 20 43
decodeFlowed src/libmime.ts:93 38.5 16 45
foldLines src/libmime.ts:978 42.2 16 32
decodeWord src/libmime.ts:305 42.3 9 36
splitMimeEncodedString src/libmime.ts:1022 43.1 12 33
encodeWords src/libmime.ts:362 43.2 14 31
decodeHeaders src/libmime.ts:482 44.0 9 31
decode src/charset.ts:53 45.8 9 30
detectMimeType src/libmime.ts:944 51.3 7 17
detectExtension src/libmime.ts:914 52.0 7 16
normalizeCharset src/charset.ts:121 55.4 4 14
decodeHeader src/libmime.ts:460 56.2 6 13
commit src/libmime.ts:615 56.3 4 14
Every measured release 55
Release Date Files Source lines Functions MI Mean CC P90 CC Max CC CC > 10 CC > 20
default branch 2026-10-19 6 3,256 49 45.5 5.41 16 26 7 1
v5.5.2 2026-10-19 6 3,256 49 45.5 5.41 16 26 7 1
v5.5.1 2026-10-18 6 3,246 49 45.8 5.29 14 26 6 1
v5.5.0 2026-10-18 6 3,243 48 45.7 5.38 14 26 6 1
v5.4.9 2026-10-16 5 3,187 47 45.2 5.45 14 26 6 3
v5.4.8 2026-10-14 5 3,174 46 45.5 5.50 13 26 6 3
v5.4.7 2026-10-04 5 3,174 46 45.5 5.50 13 26 6 3
v5.4.6 2026-09-28 5 3,174 46 45.5 5.50 13 26 6 3
v5.4.5 2026-09-28 5 3,179 48 45.6 5.31 13 26 6 3
v5.4.4 2026-09-15 5 3,165 47 45.6 5.30 13 26 5 3
v5.4.3 2026-08-31 5 3,165 47 45.6 5.30 13 26 5 3
v5.4.2 2026-08-07 5 3,165 47 45.6 5.30 13 26 5 3
v5.4.1 2026-07-05 5 3,144 45 47.2 5.27 13 22 5 1
v5.4.0 2026-06-25 5 3,144 45 47.2 5.27 13 22 5 1
v5.3.8 2026-04-08 5 3,141 44 47.1 5.34 13 22 5 1
v5.3.7 2025-06-26 5 3,142 44 47.1 5.34 13 22 5 1
v5.3.6 2024-11-29 5 3,135 45 47.5 5.16 13 22 5 1
v5.3.5 2024-04-12 5 3,135 45 47.5 5.16 13 22 5 1
v5.3.4 2024-02-23 4 2,915 43 47.3 5.30 13 22 5 1
v5.3.3 2024-02-23 4 2,915 43 47.3 5.30 13 22 5 1
v5.3.2 2024-02-23 4 2,915 43 47.3 5.30 13 22 5 1
v5.3.1 2024-02-23 4 2,915 43 47.3 5.30 13 22 5 1
v5.3.0 2024-02-23 4 2,915 43 47.3 5.30 13 22 5 1
v5.2.1 2023-01-27 4 2,913 43 47.3 5.30 13 22 5 1
v5.2.0 2022-12-08 4 2,910 43 47.4 5.26 13 20 5 0
v5.1.0 2022-04-28 4 2,910 43 47.4 5.26 13 20 5 0
v5.0.0 2020-07-22 4 2,910 43 47.4 5.26 13 20 5 0
v4.2.1 2019-10-28 4 2,933 43 47.1 5.28 13 20 5 0
v4.2.0 2019-10-28 4 2,919 43 47.3 5.21 13 20 5 0
v4.1.4 2019-10-28 4 2,915 43 47.4 5.19 13 20 5 0
v4.1.3 2019-05-16 4 2,910 41 47.4 5.39 13 20 5 0
v4.1.1 2019-05-06 4 2,909 41 47.4 5.39 13 20 5 0
v4.1.0 2019-05-01 4 2,909 41 47.4 5.41 13 20 5 0
v4.0.1 2018-07-24 4 2,896 40 47.3 5.45 13 20 5 0
v4.0.0 2018-06-11 4 2,896 40 47.3 5.45 13 20 5 0
v3.1.0 2017-01-08 4 2,799 37 48.0 5.59 16 20 5 0
v3.0.0 2016-12-08 3 2,587 37 48.0 5.57 16 20 5 0
v2.1.3 2016-12-08 3 2,574 38 48.5 5.32 16 20 4 0
v2.1.2 2016-11-21 3 2,574 38 48.5 5.32 16 20 4 0
v2.1.1 2016-11-15 3 2,574 38 48.5 5.32 16 20 4 0
v2.1.0 2016-08-24 3 2,563 37 48.4 5.32 16 20 4 0
v2.0.3 2016-02-29 3 2,557 36 48.2 5.36 16 20 4 0
v2.0.2 2016-02-10 3 2,557 36 48.2 5.33 16 20 4 0
v2.0.1 2016-02-10 3 2,557 36 48.2 5.31 16 20 4 0
v2.0.0 2016-01-04 3 2,547 36 48.6 5.19 15 20 4 0
v1.2.0 2015-10-05 3 2,545 36 48.6 5.19 15 20 4 0
v1.1.0 2015-09-24 3 2,503 34 49.4 5.15 15 16 4 0
v1.0.0 2015-04-15 3 2,499 34 49.3 5.12 15 16 4 0
v0.1.7 2015-01-19 3 2,499 34 49.3 5.12 15 16 4 0
v0.1.6 2014-10-25 3 2,499 34 49.3 5.15 15 16 4 0
v0.1.5 2014-09-12 3 2,499 34 49.3 5.15 15 16 4 0
v0.1.4 2014-09-08 3 2,499 34 49.3 5.18 15 16 4 0
v0.1.3 2014-08-21 3 2,499 34 49.3 5.18 15 16 4 0
v0.1.2 2014-07-08 3 2,499 34 49.3 5.15 15 16 4 0
v0.1.1 2014-06-18 3 2,501 34 49.3 5.12 15 16 4 0
v0.1.0 2014-06-13 4 2,680 46 49.0 5.22 15 22 5 1
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.