pubface

40 releases measured. Default branch at e01c2f64, 2026-10-19, 2 files.

Source lines
334
+49.1% in a year
Maintainability index
54.3
-0.3 in a year
Mean CC per function
3.70
Functions with CC > 20
0
of 27
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
fetchPublicIP src/index.ts:197 42.9 10 34
resolveIP src/index.ts:301 45.6 9 28
combineResults src/index.ts:343 45.9 9 28
resolveInterfaces src/index.ts:384 48.1 7 22
lookupFamily src/index.ts:118 49.9 9 20
getPtrAddr src/index.ts:95 53.3 3 17
getPublicInterfaces src/index.ts:159 54.0 7 15
updateDns src/index.ts:141 54.6 5 14
<anonymous> src/index.ts:253 55.8 3 14
extractIp src/index.ts:286 60.3 6 9
fail src/index.ts:240 60.4 4 10
<anonymous> src/index.ts:371 60.5 6 9
<anonymous> src/index.ts:270 62.3 2 9
<anonymous> src/index.ts:236 63.0 1 9
parseTimeout src/index.ts:75 63.3 5 7
Every measured release 40
Release Date Files Source lines Functions MI Mean CC P90 CC Max CC CC > 10 CC > 20
v1.2.0 2026-10-19 2 334 27 54.3 3.70 9 10 0 0
v1.1.18 2026-09-28 2 300 23 50.8 4.22 12 17 4 0
v1.1.17 2026-09-27 2 230 19 51.5 3.74 12 17 2 0
v1.1.16 2026-09-15 2 230 19 51.5 3.74 12 17 2 0
v1.1.15 2026-09-12 2 230 19 51.5 3.74 12 17 2 0
v1.1.14 2026-09-11 2 230 19 51.5 3.74 12 17 2 0
v1.1.13 2026-09-10 2 230 19 51.5 3.74 12 17 2 0
v1.1.12 2026-09-07 2 230 19 51.5 3.74 12 17 2 0
v1.1.11 2026-09-06 2 230 19 51.5 3.74 12 17 2 0
v1.1.10 2026-09-06 2 230 19 51.5 3.74 12 17 2 0
v1.1.9 2026-09-01 2 230 19 51.5 3.74 12 17 2 0
v1.1.8 2026-08-31 2 230 19 51.5 3.74 12 17 2 0
v1.1.7 2026-08-27 2 230 19 51.5 3.74 12 17 2 0
v1.1.6 2026-08-07 2 230 19 51.5 3.74 12 17 2 0
v1.1.5 2026-07-05 2 230 19 51.5 3.74 12 17 2 0
v1.1.4 2026-06-19 2 230 19 51.5 3.74 12 17 2 0
v1.1.3 2026-06-15 2 230 19 51.5 3.74 12 17 2 0
v1.1.2 2026-05-29 2 230 19 51.5 3.74 12 17 2 0
v1.1.1 2026-04-08 2 230 19 51.5 3.74 12 17 2 0
v1.1.0 2026-03-25 2 230 19 51.5 3.74 12 17 2 0
v1.0.19 2026-03-23 2 224 27 54.6 2.74 6 17 1 0
v1.0.18 2026-01-28 2 224 27 54.6 2.74 6 17 1 0
v1.0.17 2025-12-11 2 224 27 54.6 2.74 6 17 1 0
v1.0.16 2025-12-11 2 224 27 54.6 2.74 6 17 1 0
v1.0.15 2025-12-11 2 224 27 54.6 2.74 6 17 1 0
v1.0.14 2025-10-09 2 224 27 54.6 2.74 6 17 1 0
v1.0.13 2025-05-20 2 224 27 54.6 2.74 6 17 1 0
v1.0.12 2024-09-08 2 224 27 54.6 2.74 6 17 1 0
v1.0.11 2024-07-03 2 224 27 54.6 2.74 6 17 1 0
v1.0.10 2024-04-12 2 224 27 54.6 2.74 6 17 1 0
v1.0.9 2024-02-29 2 224 27 54.6 2.74 6 17 1 0
v1.0.8 2024-02-23 2 224 27 54.6 2.74 6 17 1 0
v1.0.7 2024-02-02 2 224 27 54.6 2.74 6 17 1 0
v1.0.6 2023-09-20 2 224 27 54.6 2.74 6 17 1 0
v1.0.5 2023-09-20 2 224 27 54.6 2.74 6 17 1 0
v1.0.4 2022-11-14 2 224 27 54.6 2.74 6 17 1 0
v1.0.3 2022-06-07 2 222 27 54.8 2.74 6 17 1 0
v1.0.2 2021-11-26 2 217 27 54.9 2.67 6 17 1 0
v1.0.1 2021-11-24 2 195 24 54.5 2.75 6 17 1 0
v1.0.0 2021-11-24 2 195 24 54.5 2.75 6 17 1 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.