eternal-flame-AD
63a98f3b41
Some checks failed
Lint / pnpm_install (pull_request) Successful in 1m30s
Lint / pnpm_install (push) Successful in 1m9s
Publish Docker image / Build (push) Successful in 4m58s
Publish Docker image / Build (pull_request) Successful in 4m6s
Test (production install and build) / production (22.11.0) (pull_request) Successful in 1m21s
Test (production install and build) / production (22.11.0) (push) Successful in 1m1s
Lint / lint (backend) (pull_request) Successful in 2m1s
Lint / lint (frontend) (pull_request) Successful in 2m19s
Test (backend) / unit (22.11.0) (pull_request) Failing after 7m47s
Test (backend) / unit (22.11.0) (push) Failing after 7m57s
Lint / lint (frontend-shared) (pull_request) Successful in 2m20s
Lint / lint (frontend-embed) (pull_request) Successful in 2m34s
Lint / lint (misskey-bubble-game) (pull_request) Successful in 2m13s
Lint / lint (misskey-reversi) (pull_request) Successful in 2m25s
Lint / lint (misskey-js) (pull_request) Successful in 2m27s
Lint / lint (sw) (pull_request) Successful in 2m14s
Lint / typecheck (misskey-js) (pull_request) Successful in 1m24s
Lint / typecheck (backend) (pull_request) Successful in 1m56s
Lint / typecheck (sw) (pull_request) Successful in 1m29s
Lint / lint (backend) (push) Successful in 2m12s
Lint / lint (frontend) (push) Successful in 2m8s
Lint / lint (frontend-embed) (push) Successful in 2m6s
Lint / lint (frontend-shared) (push) Successful in 2m7s
Lint / lint (misskey-bubble-game) (push) Successful in 2m8s
Lint / lint (misskey-js) (push) Successful in 2m9s
Lint / lint (misskey-reversi) (push) Failing after 1m37s
Lint / lint (sw) (push) Successful in 2m16s
Lint / typecheck (backend) (push) Successful in 2m4s
Lint / typecheck (misskey-js) (push) Successful in 1m31s
Lint / typecheck (sw) (push) Successful in 1m53s
Signed-off-by: eternal-flame-AD <yume@yumechi.jp> |
||
---|---|---|
.. | ||
docs | ||
etc | ||
generator | ||
src | ||
test | ||
test-d | ||
.swcrc | ||
api-extractor.json | ||
build.js | ||
CONTRIBUTING.md | ||
eslint.config.js | ||
jest.config.cjs | ||
LICENSE | ||
package.json | ||
README.md | ||
tsconfig.json |
misskey.js
Strongly-typed official Misskey SDK for browsers/Node.js.
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
: 再接続中