Skip to content

Commit 2db6c54

Browse files
committed
feat: Cache sqlite-database-integration versions for app session
Avoid repeatedly fetching the latest versions each time a site starts.
1 parent 4e777b1 commit 2db6c54

1 file changed

Lines changed: 14 additions & 2 deletions

File tree

‎src/lib/sqlite-versions.ts‎

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,18 +45,30 @@ async function getLatestSqliteVersion() {
4545
return sqliteVersions.latest;
4646
}
4747

48+
// Cache version fetches for the duration of the app session
49+
let sqliteVersionsCache: { versions: ( semver.SemVer | null )[]; latest: string } = {
50+
versions: [],
51+
latest: '',
52+
};
53+
4854
async function fetchSqliteVersions() {
55+
if ( sqliteVersionsCache.versions.length ) {
56+
return sqliteVersionsCache;
57+
}
58+
4959
try {
5060
const response = await fetch(
5161
'https://api.github.com/repos/WordPress/sqlite-database-integration/releases'
5262
);
5363
const data: Record< string, string >[] = await response.json();
5464
const versions = data.map( ( release ) => semver.coerce( release.tag_name ) );
55-
return {
65+
sqliteVersionsCache = {
5666
versions,
5767
latest: versions[ 0 ]?.version || '',
5868
};
5969
} catch ( _error ) {
60-
return { versions: [], latest: '' };
70+
// Discard the failed fetch, return the cache
6171
}
72+
73+
return sqliteVersionsCache;
6274
}

0 commit comments

Comments
 (0)