mirror of
https://github.com/ThatGuySam/doesitarm.git
synced 2026-05-15 06:35:20 -07:00
Replace all in-scope axios callsites with a new helpers/http.js wrapper over native fetch, including JSON/text GET, JSON POST, HEAD checks, and transient 5xx retry behavior; update all browser, build, script, and proxy API clients to use it; add focused unit tests; and remove axios from package dependencies. Constraint: Preserve API/build and deployment behavior while lowering transport surface area. Rejected: inline fetch replacements at each callsite | rejected to avoid inconsistent error/retry semantics. Confidence: high Scope-risk: moderate Directive: Keep helper in place as the transport boundary and update tests when changing request semantics. Tested: pnpm run -s typecheck, pnpm -s run test-prebuild, pnpm -s run test, pnpm -s run test:browser, pnpm -s run netlify-build, smoke GETs on /apple-silicon-app-test and /apple-silicon-app-test/?version=2 Not-tested: branch/netlify deployment health in CI pipeline after merge
45 lines
999 B
TypeScript
45 lines
999 B
TypeScript
import fs from 'fs-extra'
|
|
import {
|
|
getJson,
|
|
shouldRetryError
|
|
} from '~/helpers/http.js'
|
|
|
|
import {
|
|
sitemapEndpointsPath
|
|
} from '~/helpers/pagefind/config.js'
|
|
|
|
async function fetchJsonWithRetries (
|
|
url: string,
|
|
{
|
|
attempts = 3,
|
|
delayMs = 1000
|
|
}: {
|
|
attempts?: number
|
|
delayMs?: number
|
|
} = {}
|
|
) {
|
|
return await getJson( url, {
|
|
attempts,
|
|
delayMs
|
|
} )
|
|
}
|
|
|
|
export async function loadSitemapEndpoints () {
|
|
if ( await fs.pathExists( sitemapEndpointsPath ) ) {
|
|
return await fs.readJson( sitemapEndpointsPath )
|
|
}
|
|
|
|
if ( !process.env.PUBLIC_API_DOMAIN ) {
|
|
throw new Error(`Missing ${ sitemapEndpointsPath } and PUBLIC_API_DOMAIN is not set`)
|
|
}
|
|
|
|
const apiUrl = new URL( process.env.PUBLIC_API_DOMAIN )
|
|
apiUrl.pathname = sitemapEndpointsPath.replace(/^\.?\/?static\//, '/')
|
|
|
|
return await fetchJsonWithRetries( apiUrl.toString() )
|
|
}
|
|
|
|
export {
|
|
fetchJsonWithRetries,
|
|
shouldRetryError
|
|
}
|