bigbuffet-rw/packages/pl-api
mkljczk 15d7d4dfc3 pl-api: fix
Signed-off-by: mkljczk <git@mkljczk.pl>
2024-12-05 11:18:43 +01:00
..
lib pl-api: fix 2024-12-05 11:18:43 +01:00
.eslintignore Add pl-api to workspace 2024-08-28 13:43:23 +02:00
.eslintrc.json pl-api:: Fix eslint config 2024-10-03 10:38:32 +02:00
.gitignore pl-api: Update docs, build docs as part of CI 2024-10-29 20:12:14 +01:00
index.html Add pl-api to workspace 2024-08-28 13:43:23 +02:00
package.json bump pl-api version 2024-12-04 18:50:00 +01:00
README.md pl-api: Update readme 2024-11-29 20:20:24 +01:00
tsconfig-build.json Add pl-api to workspace 2024-08-28 13:43:23 +02:00
tsconfig.json Add pl-api to workspace 2024-08-28 13:43:23 +02:00
typedoc.config.mjs pl-api: works on docs 2024-10-29 22:26:53 +01:00
vite.config.ts externalize pl-api deps 2024-10-16 18:46:14 +02:00
yarn.lock pl-api: Use isows for isomorphic websockets 2024-11-29 15:40:21 +01:00

pl-api

GitHub License NPM Version NPM Downloads

A JavaScript library for interacting with Mastodon API-compatible servers, focused on support for projects extending the official Mastodon API.

pl-api attempts to abstract out the implementation details when supporting different backends, implementing the same features in different ways. It uses Valibot to ensure type safety and normalize API responses.

Example:

import { PlApiClient, type CreateApplicationParams } from 'pl-api';

const { ACCESS_TOKEN } = process.env;

const client = new PlApiClient('https://mastodon.example/', ACCESS_TOKEN, {
  fetchInstance: true,
  onInstanceFetchSuccess: () => console.log('Instance fetched'),
});

await client.statuses.createStatus({
  status: 'Hello, world!',
  language: 'en',
});

Some sort of documentation is available on https://pl.mkljczk.pl/pl-api-docs

This project should be considered unstable before the 1.0.0 release. I will not provide any changelog or information on breaking changes until then.

Supported projects

Currently, pl-api includes compatibility definitions for 12 independent Mastodon API implementations and 5 variants of them (like, forks). As the combination of software name and version is not the only way pl-api infers feature availability, some feature definitions will also work on other software.

For unsupported projects, it falls back to a basic feature set, though every method of PlApiClient may be used anyway.

Projects using pl-api

  • pl-fe is a web client for Mastodon-compatible servers forked from Soapbox. It uses pl-api for API interactions.
  • pl-hooks is a work-in-progress library utilizing pl-api.

License

pl-api utilizes parts of code from Soapbox and bases off official Mastodon documentation.

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License along with this program. If not, see https://www.gnu.org/licenses/.