A Val.town script that monitors dbc-cdn.columnar.tech for available ADBC drivers and compares them against upstream releases to detect outdated versions.
Create a new Val: Go to val.town and create a new Val
Copy the code: Copy the contents of adbcDriverChecker.ts into your Val
Save the Val: Your Val will be automatically assigned a URL
Schedule it: Use Val.town's scheduling feature to run it periodically
Email configuration: Val.town's email() function sends to your verified Val.town email by default
CDN Scraping: Fetches the HTML from dbc-cdn.columnar.tech and extracts driver versions using regex patterns
Version Checking: For each driver, queries the upstream release API (currently GitHub for DuckDB)
Comparison: Normalizes version strings (removes 'v' prefix) and compares CDN vs upstream
Alerting: If any drivers are outdated, sends an email with:
Currently implemented:
Detected on CDN (ready to add):
Most ADBC drivers are part of the Apache Arrow ADBC project. To add more drivers:
Find the upstream release source (likely https://github.com/apache/arrow-adbc/releases)
Add a new checker function similar to getDuckDBLatestVersion()
Add the check to the checkDrivers() function
Example for Apache Arrow ADBC drivers:
async function getArrowADBCLatestVersion(): Promise<string> {
const response = await fetch(
"https://api.github.com/repos/apache/arrow-adbc/releases/latest",
{
headers: {
"Accept": "application/vnd.github+json",
"User-Agent": "ADBC-CDN-Checker",
},
}
);
const data = await response.json();
return data.tag_name;
}
You can test the script locally with Deno:
deno run --allow-net adbcDriverChecker.ts
Note: The email function is Val.town-specific, so you'll need to mock it or comment it out for local testing.
When drivers are outdated, you'll receive an email like:
ā ļø ADBC Driver Update Alert
1 driver(s) are out of date:
ā DuckDB
CDN Version: v1.4.1
Latest Version: v1.4.2
Check: https://github.com/duckdb/duckdb/releases
---
Checked at: 2025-11-12T10:30:00.000Z
CDN: https://dbc-cdn.columnar.tech
The script:
The CDN uses this structure:
dbc-cdn.columnar.tech/
āāā duckdb/
ā āāā v1.4.0/
ā āāā v1.4.1/
ā āāā v1.4.2/
āāā postgresql/
ā āāā 1.8.0/
āāā ...
Each version directory contains platform-specific binaries (linux_amd64, macos_arm64, etc.).
MIT