hn-api-sdk
v1.7.0
Published
HackerNews API with TypeScript, generated by tsdk
Downloads
24
Maintainers
Readme
Hackernews API sdk
Use tsdk to generate hacker news API sdk, based on the offical API documentation:
https://github.com/HackerNews/API
Features
- TypeScript types
- Support SWR hooks
Documentation
https://hn-api-sdk.tsdk.dev
Getting Started
Install:
npm install hn-api-sdkUsage (2 steps):
Step 1, create ./user-api.ts and ./user-api-hooks.ts:
Create user-api.ts (use fetch)
import xior, { XiorError } from "xior";
import { setHandler, setXiorInstance, xiorHandler } from "hn-api-sdk";
export * from "hn-api-sdk/lib/user-api";
export * from "hn-api-sdk/lib/apiconf-refs";
export * from "hn-api-sdk/lib/shared-refs";
export const baseURL = `https://hacker-news.firebaseio.com`;
const xiorInstance = xior.create({
baseURL,
headers: {},
});
xiorInstance.interceptors.request.use(
(config) => {
return config;
},
(error) => {
return Promise.reject(error);
}
);
xiorInstance.interceptors.response.use(
async (response) => {
return response;
},
async (error: XiorError) => {
return Promise.reject(error?.message);
}
);
setXiorInstance(xiorInstance);
setHandler(xiorHandler);Or use axios as the client, create user-api.ts:
import axios, { AxiosError } from "axios";
import { setHandler, setAxiosInstance, axiosHandler } from "hn-api-sdk";
export * from "hn-api-sdk/lib/user-api";
export * from "hn-api-sdk/lib/apiconf-refs";
export * from "hn-api-sdk/lib/shared-refs";
export const baseURL = `https://hacker-news.firebaseio.com`;
const axiosInstance = axios.create({
baseURL,
headers: {},
});
axiosInstance.interceptors.request.use(
(config) => {
return config;
},
(error) => {
return Promise.reject(error);
}
);
axiosInstance.interceptors.response.use(
async (response) => {
return response;
},
async (error: AxiosError) => {
return Promise.reject(error?.message);
}
);
setAxiosInstance(axiosInstance);
setHandler(axiosHandler);Create user-api-hooks.ts
import "./user-api";
export * from "hn-api-sdk/lib/user-api-hooks";Step 2, import module from ./user-api.ts:
import {
GetUserDetail,
GetStories,
GetStory,
GetComment,
GetAsk,
GetJob,
GetPoll,
GetPart,
GetMaxItemId,
GetChangedItemsAndProfiles,
} from "./user-api";
GetUserDetail({ id: "jl" }).then((res) => {
console.log(res.id, res.about, res.submitted);
});Development
First, install dependencies:
Recommend use
pnpm
pnpm install
pnpm run readyThen, sync hn-api-sdk packakge files:
pnpm --filter=api sync-sdkPublish to npm
pnpm --filter=hn-api-sdk start-publishNpm package
https://www.npmjs.com/package/hn-api-sdk
Thanks
- https://transform.tools/json-to-typescript
- https://github.com/HackerNews/API
- https://tsdk.dev
