yumechi-no-kuni/packages/misskey-js
eternal-flame-AD 770226a040
All checks were successful
Lint / pnpm_install (push) Successful in 1m49s
Publish Docker image / Build (push) Successful in 4m41s
Test (backend) / unit (20.16.0) (push) Successful in 6m45s
Test (production install and build) / production (20.16.0) (push) Successful in 1m48s
Lint / lint (backend) (push) Successful in 2m8s
Test (backend) / e2e (20.16.0) (push) Successful in 10m18s
Lint / lint (frontend) (push) Successful in 3m21s
Lint / lint (frontend-embed) (push) Successful in 2m12s
Lint / lint (frontend-shared) (push) Successful in 2m12s
Lint / lint (misskey-bubble-game) (push) Successful in 2m13s
Lint / lint (misskey-js) (push) Successful in 2m13s
Lint / lint (misskey-reversi) (push) Successful in 2m11s
Lint / lint (sw) (push) Successful in 2m10s
Lint / typecheck (backend) (push) Successful in 1m59s
Lint / typecheck (misskey-js) (push) Successful in 1m36s
Lint / typecheck (sw) (push) Successful in 1m22s
Lint / pnpm_install (pull_request) Successful in 1m14s
Publish Docker image / Build (pull_request) Successful in 3m53s
Test (backend) / unit (20.16.0) (pull_request) Successful in 6m33s
Test (production install and build) / production (20.16.0) (pull_request) Successful in 1m5s
Lint / lint (backend) (pull_request) Successful in 1m59s
Lint / lint (frontend) (pull_request) Successful in 2m0s
Test (backend) / e2e (20.16.0) (pull_request) Successful in 10m26s
Lint / lint (frontend-embed) (pull_request) Successful in 2m3s
Lint / lint (frontend-shared) (pull_request) Successful in 2m8s
Lint / lint (misskey-bubble-game) (pull_request) Successful in 2m1s
Lint / lint (misskey-js) (pull_request) Successful in 2m13s
Lint / lint (misskey-reversi) (pull_request) Successful in 2m6s
Lint / lint (sw) (pull_request) Successful in 2m6s
Lint / typecheck (misskey-js) (pull_request) Successful in 1m16s
Lint / typecheck (backend) (pull_request) Successful in 2m10s
Lint / typecheck (sw) (pull_request) Successful in 1m23s
Merge tag '2024.11.0-alpha.0' into develop
2024-11-08 21:55:43 -06:00
..
docs docs: Remove forum references and use Github Discussions (#12158) 2023-11-02 19:57:43 +09:00
etc fixup! fix(backend): Webhook Test一致性+リアクションhook実装 2024-10-28 19:54:14 -05:00
generator update deps (#14594) 2024-09-22 12:32:01 +09:00
src consistency 2024-10-28 20:11:04 -05: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
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
CONTRIBUTING.md docs: Remove forum references and use Github Discussions (#12158) 2023-11-02 19:57:43 +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
LICENSE chore: publish misskey-js automatically (#13014) 2024-01-23 00:19:43 +09:00
package.json Bump version to 2024.11.0-alpha.0 2024-11-09 02:28:02 +00: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
tsconfig.json refactor(misskey-js): enable exactOptionalPropertyTypes (#14203) 2024-07-14 15:52:43 +09:00

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: 再接続中