From c572bbe4ca7bc801bcb3406106c3fb13d87cda0f Mon Sep 17 00:00:00 2001 From: AJ ONeal Date: Wed, 11 Mar 2026 01:55:09 -0600 Subject: [PATCH] ref(transform-releases): read from cache files instead of upstream APIs The legacy release API endpoint now reads from _cache/YYYY-MM/{pkg}.json instead of require()ing {pkg}/releases.js and fetching upstream. Cache data is re-normalized through normalize.js (with pre-classified fields cleared first) to preserve the legacy API format where darwin is reported as 'macos', versions lack 'v' prefix, etc. Removed: Releases.get(), stale/expired age timers, background renewal, promise chaining, sleep/timeout workarounds. --- _webi/transform-releases.js | 139 +++++++++--------------------------- 1 file changed, 34 insertions(+), 105 deletions(-) diff --git a/_webi/transform-releases.js b/_webi/transform-releases.js index d6e33d4..e17e4ea 100644 --- a/_webi/transform-releases.js +++ b/_webi/transform-releases.js @@ -2,35 +2,13 @@ var Releases = module.exports; +var Fs = require('node:fs/promises'); var path = require('path'); var _normalize = require('./normalize.js'); var cache = {}; -//var staleAge = 5 * 1000; -//var expiredAge = 15 * 1000; -var staleAge = 5 * 60 * 1000; -var expiredAge = 15 * 60 * 1000; -let installerDir = path.join(__dirname, '..'); - -Releases.get = async function (pkgdir) { - let get; - try { - get = require(`${pkgdir}/releases.js`); - // TODO update all releases files with module.exports.xxxx = 'foo'; - if (!get.latest) { - get.latest = get; - } - } catch (e) { - let err = new Error('no releases.js for', pkgdir.split(/[\/\\]+/).pop()); - err.code = 'E_NO_RELEASE'; - throw err; - } - - let all = await get.latest(); - - return _normalize(all); -}; +var CACHE_DIR = path.join(__dirname, '..', '_cache'); // TODO needs a proper test, and more accurate (though perhaps far less simple) code function createFormatsSorter(formats) { @@ -87,99 +65,50 @@ function createFormatsSorter(formats) { } async function getCachedReleases(pkg) { - // returns { download: '