Sharkey/packages/misskey-js
Marie 46f9bcc8dc
chore: make features in meta not optional on detailed
Why did Misskey set the optional boolean on features between 2024.6 and 2024.8 considering it will always have values when called via detailed
2024-09-14 00:18:16 +02:00
..
docs docs: Remove forum references and use Github Discussions (#12158) 2023-11-02 19:57:43 +09:00
etc chore: make features in meta not optional on detailed 2024-09-14 00:18:16 +02:00
generator feat(misskey-js): multipart/form-dataのリクエストに対応 (#14147) 2024-07-07 14:08:18 +09:00
src chore: make features in meta not optional on detailed 2024-09-14 00:18:16 +02:00
test feat(misskey-js): `POST admin/roles/create`の型を具象化 (#14167) 2024-07-10 20:40:04 +09:00
test-d chore: fix some comments (#14394) 2024-08-12 14:03:16 +09:00
.swcrc fix swcrc 2023-12-14 11:35:17 +09:00
CONTRIBUTING.md docs: Remove forum references and use Github Discussions (#12158) 2023-11-02 19:57:43 +09:00
LICENSE chore: publish misskey-js automatically (#13014) 2024-01-23 00:19:43 +09:00
README.md docs(misskey-js): fix broken i-want-you image link in README.md (#14265) 2024-07-19 16:47:12 +09:00
api-extractor.json fix: misskey-js、bubble-game、reversiのビルドをesbuildに統合する (#13600) 2024-03-30 15:28:19 +09:00
build.js fix: error with trying to handle SIGKILL (#14208) 2024-07-14 21:29:35 +09:00
eslint.config.js [Re] refactor(misskey-js): 警告をすべて解決 (#14277) 2024-07-25 16:40:14 +09:00
jest.config.cjs fix: 2024-01-22 10:50時点のdevelopにてCIがコケている (#13060) 2024-01-22 18:01:54 +09:00
package.json Release: 2024.8.0 2024-08-18 08:08:38 +00:00
tsconfig.json refactor(misskey-js): enable exactOptionalPropertyTypes (#14203) 2024-07-14 15:52:43 +09:00

README.md

misskey.js

Strongly-typed official Misskey SDK for browsers/Node.js.

Test codecov

NPM

JavaScript(TypeScript)用の公式MisskeySDKです。ブラウザ/Node.js上で動作します。

以下が提供されています:

  • ユーザー認証
  • APIリクエスト
  • ストリーミング
  • ユーティリティ関数
  • Misskeyの各種型定義

対応するMisskeyのバージョンは12以上です。

Install

npm i misskey-js

Usage

インポートは以下のようにまとめて行うと便利です。

import * as Misskey from 'misskey-js';

便宜上、以後のコード例は上記のように* as Misskeyとしてインポートしている前提のものになります。

ただし、このインポート方法だとTree-Shakingできなくなるので、コードサイズが重要なユースケースでは以下のような個別インポートをお勧めします。

import { api as misskeyApi } from 'misskey-js';

Authenticate

todo

API request

APIを利用する際は、利用するサーバーの情報とアクセストークンを与えてAPIClientクラスのインスタンスを初期化し、そのインスタンスのrequestメソッドを呼び出してリクエストを行います。

const cli = new Misskey.api.APIClient({
	origin: 'https://misskey.test',
	credential: 'TOKEN',
});

const meta = await cli.request('meta', { detail: true });

requestの第一引数には呼び出すエンドポイント名、第二引数にはパラメータオブジェクトを渡します。レスポンスはPromiseとして返ります。

Streaming

misskey.jsのストリーミングでは、二つのクラスが提供されます。 ひとつは、ストリーミングのコネクション自体を司るStreamクラスと、もうひとつはストリーミング上のチャンネルの概念を表すChannelクラスです。 ストリーミングを利用する際は、まずStreamクラスのインスタンスを初期化し、その後でStreamインスタンスのメソッドを利用してChannelクラスのインスタンスを取得する形になります。

const stream = new Misskey.Stream('https://misskey.test', { token: 'TOKEN' });
const mainChannel = stream.useChannel('main');
mainChannel.on('notification', notification => {
	console.log('notification received', notification);
});

コネクションが途切れても自動で再接続されます。

チャンネルへの接続

チャンネルへの接続はStreamクラスのuseChannelメソッドを使用します。

パラメータなし

const stream = new Misskey.Stream('https://misskey.test', { token: 'TOKEN' });

const mainChannel = stream.useChannel('main');

パラメータあり

const stream = new Misskey.Stream('https://misskey.test', { token: 'TOKEN' });

const messagingChannel = stream.useChannel('messaging', {
	otherparty: 'xxxxxxxxxx',
});

チャンネルから切断

Channelクラスのdisposeメソッドを呼び出します。

const stream = new Misskey.Stream('https://misskey.test', { token: 'TOKEN' });

const mainChannel = stream.useChannel('main');

mainChannel.dispose();

メッセージの受信

ChannelクラスはEventEmitterを継承しており、メッセージがサーバーから受信されると受け取ったイベント名でペイロードをemitします。

const stream = new Misskey.Stream('https://misskey.test', { token: 'TOKEN' });
const mainChannel = stream.useChannel('main');
mainChannel.on('notification', notification => {
	console.log('notification received', notification);
});

メッセージの送信

Channelクラスのsendメソッドを使用してメッセージをサーバーに送信することができます。

const stream = new Misskey.Stream('https://misskey.test', { token: 'TOKEN' });
const messagingChannel = stream.useChannel('messaging', {
	otherparty: 'xxxxxxxxxx',
});

messagingChannel.send('read', {
	id: 'xxxxxxxxxx'
});

コネクション確立イベント

Streamクラスの_connected_イベントが利用可能です。

const stream = new Misskey.Stream('https://misskey.test', { token: 'TOKEN' });
stream.on('_connected_', () => {
	console.log('connected');
});

コネクション切断イベント

Streamクラスの_disconnected_イベントが利用可能です。

const stream = new Misskey.Stream('https://misskey.test', { token: 'TOKEN' });
stream.on('_disconnected_', () => {
	console.log('disconnected');
});

コネクションの状態

Streamクラスのstateプロパティで確認できます。

  • initializing: 接続確立前
  • connected: 接続完了
  • reconnecting: 再接続中