mirror of
https://github.com/peaceiris/actions-hugo.git
synced 2026-06-06 11:38:44 +02:00
189731ef00
## Summary
Update all direct npm dependencies and devDependencies to the current
npm latest versions and pin them exactly instead of using caret or tilde
ranges.
## Changes
- Pin all direct runtime and development package versions in
`package.json` and refresh `package-lock.json`.
- Migrate ESLint from `.eslintrc.json` to flat config for ESLint 10.
- Update Jest and TypeScript configuration and test mocks to support the
latest ESM-only packages.
- Add response status handling and typed JSON access for the latest
`node-fetch` types.
## Checklist
- [x] I have read the latest README and followed the instructions.
- [x] I have added or updated tests for behavior changes.
- [x] I have updated README.md and action.yml when inputs or runtime
behavior changed.
- [x] I have run the relevant verification commands.
## Verification
- [x] `npm --userconfig=/private/tmp/empty-npmrc outdated --json
--include=dev` returned `{}`
- [x] `npm run all`
- [x] `npm run build`
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **Tests**
* Added comprehensive test mocks for Actions APIs and fetch, improved
integration tests, and updated assertions for more precise error
validation.
* Configured Jest to map external modules to local test mocks.
* **Chores**
* Migrated ESLint to the flat config format and replaced prior ESLint
config.
* Updated project dependencies and modernized TypeScript compiler
settings.
* **Refactor**
* Adjusted exported tool constants and made error handling more explicit
in version-fetching logic.
[](https://app.coderabbit.ai/change-stack/peaceiris/actions-hugo/pull/689)
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
---------
Co-authored-by: Codex <noreply@openai.com>
41 lines
1.0 KiB
TypeScript
41 lines
1.0 KiB
TypeScript
import fetch, {FetchError} from 'node-fetch';
|
|
|
|
interface BrewFormulaResponse {
|
|
versions: {
|
|
stable: string;
|
|
};
|
|
}
|
|
|
|
interface GitHubReleaseResponse {
|
|
tag_name: string;
|
|
}
|
|
|
|
export function getURL(org: string, repo: string, api: string): string {
|
|
let url = '';
|
|
|
|
if (api === 'brew') {
|
|
url = `https://formulae.brew.sh/api/formula/${repo}.json`;
|
|
} else if (api === 'github') {
|
|
url = `https://api.github.com/repos/${org}/${repo}/releases/latest`;
|
|
}
|
|
|
|
return url;
|
|
}
|
|
|
|
export async function getLatestVersion(org: string, repo: string, api: string): Promise<string> {
|
|
const url = getURL(org, repo, api);
|
|
const response = await fetch(url);
|
|
if (!response.ok) {
|
|
throw new FetchError(`request to ${url} failed with status ${response.status}`, 'system');
|
|
}
|
|
|
|
const json = await response.json();
|
|
let latestVersion = '';
|
|
if (api === 'brew') {
|
|
latestVersion = (json as BrewFormulaResponse).versions.stable;
|
|
} else if (api === 'github') {
|
|
latestVersion = (json as GitHubReleaseResponse).tag_name;
|
|
}
|
|
return latestVersion;
|
|
}
|