mirror of
https://github.com/ThatGuySam/doesitarm.git
synced 2026-05-18 06:44:46 -07:00
Finish axios migration via shared native HTTP helper
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
This commit is contained in:
parent
d39a2a1d6c
commit
d45b587434
25 changed files with 824 additions and 267 deletions
|
|
@ -1,16 +1,13 @@
|
|||
import fs from 'fs-extra'
|
||||
import axios from 'axios'
|
||||
import {
|
||||
getJson,
|
||||
shouldRetryError
|
||||
} from '~/helpers/http.js'
|
||||
|
||||
import {
|
||||
sitemapEndpointsPath
|
||||
} from '~/helpers/pagefind/config.js'
|
||||
|
||||
function shouldRetryError ( error: unknown ) {
|
||||
const status = ( error as { response?: { status?: number } } )?.response?.status
|
||||
|
||||
return typeof status === 'number' && status >= 500
|
||||
}
|
||||
|
||||
async function fetchJsonWithRetries (
|
||||
url: string,
|
||||
{
|
||||
|
|
@ -21,25 +18,10 @@ async function fetchJsonWithRetries (
|
|||
delayMs?: number
|
||||
} = {}
|
||||
) {
|
||||
let lastError: unknown
|
||||
|
||||
for ( let attempt = 1; attempt <= attempts; attempt += 1 ) {
|
||||
try {
|
||||
const response = await axios.get( url )
|
||||
|
||||
return response.data
|
||||
} catch ( error ) {
|
||||
lastError = error
|
||||
|
||||
if ( attempt >= attempts || !shouldRetryError( error ) ) {
|
||||
throw error
|
||||
}
|
||||
|
||||
await new Promise( resolve => setTimeout( resolve, delayMs ) )
|
||||
}
|
||||
}
|
||||
|
||||
throw lastError
|
||||
return await getJson( url, {
|
||||
attempts,
|
||||
delayMs
|
||||
} )
|
||||
}
|
||||
|
||||
export async function loadSitemapEndpoints () {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue