@verifyhash/air-quality-index
Zero-dependency US EPA Air Quality Index (AQI) calculator for PM2.5, PM10, O3, CO, SO2 and NO2.
npm install @verifyhash/air-quality-index17 zero-dependency, MIT-licensed npm packages for Node.js — the same weather, geo/astronomy and utility math that powers several Polyatic tools, published so you can use it in your own projects. All source lives in one monorepo: github.com/verifyhash/libs.
We built these and we say so. Every package below is written and maintained by us, has zero runtime dependencies, ships TypeScript declarations, and is published on npm today — this page never links a package that isn't live. Descriptions are taken verbatim from each package's own package.json.
Atmospheric math you would otherwise transcribe from papers and agency PDFs: EPA AQI breakpoints, NOAA heat index, Köppen–Geiger rules, WBGT approximations.
Zero-dependency US EPA Air Quality Index (AQI) calculator for PM2.5, PM10, O3, CO, SO2 and NO2.
npm install @verifyhash/air-quality-indexZero-dependency climate math over monthly normals: heating/cooling degree-days, apparent ("feels like") temperature, diurnal range, a continentality index, and a monthly pleasantness score.
npm install @verifyhash/climate-normalsZero-dependency Köppen–Geiger climate classifier from 12 monthly mean-temperature and precipitation values (hemisphere-aware).
npm install @verifyhash/koppen-classifierZero-dependency humidity & moist-air math: saturation vapour pressure, dew point, relative & absolute humidity, NOAA heat index, and Stull wet-bulb temperature.
npm install @verifyhash/psychrometricsZero-dependency, network-free clear-sky UV-index estimator: solar-elevation-driven UVI, WHO exposure category, and burn-time guidance from lat/lon/date/time (+ optional ozone and elevation).
npm install @verifyhash/uv-indexZero-dependency heat-stress indices: NWS heat index, Environment Canada humidex, and a Wet-Bulb Globe Temperature (WBGT) approximation with risk flags.
npm install @verifyhash/wbgt-heat-stressZero-dependency wind speed conversions plus Beaufort, Saffir-Simpson, and the official 2001 NWS wind-chill formula.
npm install @verifyhash/wind-scalePosition math for the real, curved, tilted world — the engines behind our distance, moon phase and sunrise/sunset tools.
Zero-dependency great-circle and WGS-84 ellipsoidal geodesy: haversine/Vincenty distance, bearings, destination point, midpoint, and unit conversions.
npm install @verifyhash/geo-distanceZero-dependency lunar phase & illumination math (simplified Meeus method): phase angle, illuminated fraction, synodic age, canonical phase name, and Brown lunation number for any UTC instant.
npm install @verifyhash/moon-phaseZero-dependency solar position & daylight math (NOAA algorithm): sunrise, sunset, solar noon, day length, elevation, azimuth, civil twilight, and golden hour for any latitude/longitude/date.
npm install @verifyhash/solar-calcSmall, spec-faithful replacements for utility dependencies: an RFC 4180 CSV parser, SemVer 2.0.0 comparisons, ISO 8601 durations, CIDR math and friends.
Zero-dependency byte-size humanizer and parser for Node.js — decimal (SI, base 1000) and binary (IEC, base 1024) with round-trippable format() and parse().
npm install @verifyhash/bytesizeZero-dependency RFC 4180 CSV parser and stringifier for Node.js: quoted fields, embedded delimiters/newlines, doubled-quote escapes, header-object mode, custom delimiters.
npm install @verifyhash/csv-liteZero-dependency human-readable relative time ('5 minutes ago', 'in 3 days') plus compact ms-style duration format/parse ('2h30m' <-> ms) for Node.js. English-only.
npm install @verifyhash/human-timeZero-dependency IPv4 (and basic IPv6) address/CIDR toolkit for Node.js: validate/parse, CIDR math (network, broadcast, first/last host, host count), ip<->integer, and containment.
npm install @verifyhash/ip-cidrZero-dependency ISO 8601 duration parse, format, calendar-correct date arithmetic, and English humanize for Node.js.
npm install @verifyhash/iso-durationZero-dependency SemVer 2.0.0 parse, precedence compare, and a documented practical subset of npm-style range matching for Node.js.
npm install @verifyhash/semver-liteZero-dependency, zero-network string-to-URL-slug library for Node.js: Latin-1/accent transliteration via a pinned in-repo map, custom separator, word-boundary maxLength truncation, and custom replacement overrides.
npm install @verifyhash/slugify-liteEvery package on this page has an empty dependencies field — installing one adds exactly one entry to your node_modules, not a tree of transitive packages you never audited. That matters for two concrete reasons. First, supply-chain risk scales with dependency count: each transitive package is another maintainer account that can be compromised and another install script that can run on your machine. Second, small trees stay installable for years; a package with zero dependencies cannot be broken by someone else's breaking release.
The trade-off is scope, and we state it plainly per package rather than hiding it. @verifyhash/human-time is English-only. @verifyhash/semver-lite implements full SemVer 2.0.0 precedence but only a documented practical subset of npm's range grammar — if you need || chains of exotic ranges, use the full semver package. @verifyhash/uv-index is a clear-sky estimator: it does not model cloud cover, so treat its output as an upper bound. @verifyhash/ip-cidr handles IPv6 at a basic level only.
A worked example: require('@verifyhash/solar-calc') and one function call gives you sunrise, sunset and civil twilight for any latitude/longitude/date using NOAA's published algorithm — accurate to within about a minute for most latitudes, degrading near the poles, exactly as NOAA documents. The same math drives our sunrise & sunset tool, so the library is exercised by real traffic, not just its test suite.
All 17 are MIT-licensed, ship CommonJS with TypeScript declaration files, and live in one public monorepo at github.com/verifyhash/libs — each README documents the full API with runnable examples. No download-count badges here: these are young packages, and we would rather you judge them by reading the source, which is short enough that you actually can.