mirror of
https://github.com/LemmyNet/lemmy-js-client.git
synced 2026-07-27 18:23:38 +00:00
No description
- TypeScript 98.5%
- Shell 0.8%
- JavaScript 0.7%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| .github | ||
| .husky | ||
| scripts | ||
| src | ||
| .gitignore | ||
| .prettierignore | ||
| .prettierrc.json | ||
| .woodpecker.yml | ||
| CHANGELOG.md | ||
| cliff.toml | ||
| eslint.config.mjs | ||
| LICENSE | ||
| package.json | ||
| pnpm-lock.yaml | ||
| pnpm-workspace.yaml | ||
| putTypesInIndex.js | ||
| README.md | ||
| renovate.json | ||
| tsconfig.json | ||
| tsoa.json | ||
lemmy-js-client
A javascript / typescript http client and type system for Lemmy.
Installation
pnpm install lemmy-js-client
Usage
HTTP Client
import { LemmyHttp, Login } from "lemmy-js-client";
// Build the client
const baseUrl = "https://lemmy.ml";
const headers = {["x-real-ip": ...]};
const client: LemmyHttp = new LemmyHttp(baseUrl, {
headers,
useRequestState: true
});
// Build the login form
const loginForm: Login = {
username_or_email: "my_name",
password: "my_pass",
};
// Login and set the client headers with your jwt
const loginRes = await client.login(loginForm);
// Make sure its successful
if (loginRes.state === "success") {
const jwt = login.data.jwt;
client.setHeaders({ Authorization: `Bearer ${jwt}` });
} else if (loginRes.state === "failed") {
const err = login.err;
}
// Fetch top posts for the day
const getPostsForm: GetPosts = {
sort: "TopDay",
type_: "Local",
};
const postsRes = await client.getPosts(getPostsForm);
// Handle the different request states
switch (postsRes.state) {
case "empty": {
break;
}
case "loading": {
break;
}
case "failed": {
const err = postsRes.err;
break;
}
case "success": {
const data = postsRes.data;
break;
}
}
Development
Use pnpm add to develop and test changes locally:
pnpm add path/to/lemmy-js-client
Alternatively, use yalc publish and yalc add lemmy-js-client
Generating typescript types from lemmy structs
Run ./scripts/copy_generated_types_from_lemmy.sh
OpenAPI
To generate OpenAPI docs, run pnpm tsoa
This creates two files:
redoc-static.html- A static html rendering of the OpenAPI docs.tsoa_build/swagger.json- An OpenAPI / Swagger json file.
To contribute, check out the tsoa docs.