misskey/packages/misskey-js
riku6460 7b1efd6b97
feat: 個人宛てお知らせ機能 (#107)
* feat: 個人宛てお知らせ機能

* Remove unused import

* Update packages/backend/src/server/api/endpoints/admin/announcements/create.ts

Co-authored-by: riku6460 <17585784+riku6460@users.noreply.github.com>

* Update packages/frontend/src/pages/announcements.vue

Co-authored-by: riku6460 <17585784+riku6460@users.noreply.github.com>

* Restore breakline

* 一般向けAPIにはuserオブジェクトを提供しない

* fix

* Fix

* Update packages/misskey-js/src/entities.ts

Co-authored-by: riku6460 <17585784+riku6460@users.noreply.github.com>

* Fix

* Update misskey-js.api.md

* Fix lint

* 他のテーブルに合わせて character varying(32) にした

* count クエリを1つにまとめた

* user を pack するようにした

* いろいろ修正

* 個人宛てのお知らせの表示を改善

* Update misskey-js.api.md

* Merge migration scripts

* Fix

* Update packages/backend/migration/1688647797135-userannouncement.js

Co-authored-by: riku6460 <17585784+riku6460@users.noreply.github.com>

* Update packages/backend/src/models/entities/Announcement.ts

Co-authored-by: まっちゃとーにゅ <17376330+u1-liquid@users.noreply.github.com>

* Fix

* Update migration script

---------

Co-authored-by: CyberRex <hspwinx86@gmail.com>
Co-authored-by: まっちゃとーにゅ <17376330+u1-liquid@users.noreply.github.com>
2023-07-24 13:08:39 +09:00
..
docs chore: integrate misskey-js as a workspace item (git subtree) (#10409) 2023-03-30 09:33:19 +09:00
etc feat: 個人宛てお知らせ機能 (#107) 2023-07-24 13:08:39 +09:00
src feat: 個人宛てお知らせ機能 (#107) 2023-07-24 13:08:39 +09:00
test cleanup: trim trailing whitespace (#11136) 2023-07-08 07:08:16 +09:00
test-d cleanup: trim trailing whitespace (#11136) 2023-07-08 07:08:16 +09:00
.eslintignore chore: integrate misskey-js as a workspace item (git subtree) (#10409) 2023-03-30 09:33:19 +09:00
.eslintrc.cjs tweak misskey-js eslintrc 2023-03-31 09:18:58 +09:00
.swcrc tweak misskey-js config 2023-03-30 13:46:25 +09:00
api-extractor.json chore: integrate misskey-js as a workspace item (git subtree) (#10409) 2023-03-30 09:33:19 +09:00
CONTRIBUTING.md chore: integrate misskey-js as a workspace item (git subtree) (#10409) 2023-03-30 09:33:19 +09:00
jest.config.cjs tweak misskey-js config 2023-03-30 13:46:25 +09:00
LICENSE chore: integrate misskey-js as a workspace item (git subtree) (#10409) 2023-03-30 09:33:19 +09:00
package.json update deps 2023-07-15 16:07:30 +09:00
README.md chore: integrate misskey-js as a workspace item (git subtree) (#10409) 2023-03-30 09:33:19 +09:00
tsconfig.json refactor(backend): use node16 for moduleResolution (#10938) 2023-06-25 21:13:15 +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: 再接続中