This commit is contained in:
kakkokari-gtyih 2023-07-18 18:15:20 +09:00
commit 815fcf4757
94 changed files with 1043 additions and 3013 deletions

2
.vscode/settings.json vendored Normal file
View File

@ -0,0 +1,2 @@
{
}

View File

@ -0,0 +1,22 @@
<template>
<table>
<thead>
<tr>
<th>Permisson</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr v-for="permission in permissions">
<td><code>{{ permission }}</code></td>
<td>{{ $t(`_api._permissions.${permission}`) }}</td>
</tr>
</tbody>
</table>
</template>
<script setup lang="ts">
import { permissions } from 'misskey-js';
</script>
<style scoped></style>

View File

@ -31,7 +31,11 @@ try {
}
} catch(_) {
if(realHref !== '') {
if (!realHref.startsWith('.') || !realHref.startsWith('http')) {
realHref = localePath(realHref);
} else {
realHref = '../' + realHref;
}
}
}
</script>

View File

@ -29,14 +29,16 @@ const { locale } = useI18n();
const route = useRoute();
const slugs = (route.params.slug as string[]).filter((v) => v !== '');
withDefaults(defineProps<{
const props = withDefaults(defineProps<{
ignoreDirBasedNav?: boolean;
isDir?: boolean;
}>(), {
ignoreDirBasedNav: false,
isDir: false
});
const currentPath = `/${locale.value}/docs/${slugs.join('/')}`;
const currentDirectory = `/${locale.value}/docs/${slugs.slice(0, -1).join('/')}`;
const currentDirectory = props.isDir ? `/${locale.value}/docs/${slugs.join('/')}` : `/${locale.value}/docs/${slugs.slice(0, -1).join('/')}`;
const [prev, next] = await queryContent().only(['_path', 'title']).where({ _path: { $contains: 'docs' }, _partial: false }).findSurround(currentPath);
</script>

View File

@ -3,7 +3,25 @@
When you add files/text to the ja-JP directory (of misskey-dev/misskey-hub), it will automatically be applied to other language files.
Translations added in ja-JP file should contain the original Japanese strings.
# 移行作業
## 移行作業
- `.docs-legacy/`内にvuepress時代のファイルを格納
- `docs/`内にディレクトリ構造を作成中
## 新規に作成したページ
- `/2.for-users/2.onboarding/index.md` 以外
- `/4.for-developers/play/` 以下
- `/4.for-developers/api/index.md` を分割
## APIリファレンスについて
API リファレンスは移動する予定ですmisskey-jsから自動生成
## 新しくDocsを作成するかたへ
Nuxtに変更したことに伴い、Canonical URLの統一のため、末尾にスラッシュが付くようになっています。
内部のリンクの切り分け処理が複雑になっているため、**絶対パスを使うようにしてください。**
なお、リンクは自動的に言語ごとのものに変換されますので、**マークダウン内で`/ja/`などの言語プレフィックスを付与しないようにしてください。**

View File

@ -1,33 +0,0 @@
---
description: 'アプリケーションが要求する権限の一覧'
---
# 権限の一覧
| Permisson | Description |
| --------------------- | ---------------------------- |
| `read:account` | アカウントの情報を見る |
| `write:account` | アカウントの情報を変更する |
| `read:blocks` | ブロックを見る |
| `write:blocks` | ブロックを操作する |
| `read:drive` | ドライブを見る |
| `write:drive` | ドライブを操作する |
| `read:favorites` | お気に入りを見る |
| `write:favorites` | お気に入りを操作する |
| `read:following` | フォローの情報を見る |
| `write:following` | フォロー・フォロー解除する |
| `read:messaging` | チャットを見る |
| `write:messaging` | チャットを操作する |
| `read:mutes` | ミュートを見る |
| `write:mutes` | ミュートを操作する |
| `write:notes` | ノートを作成・削除する |
| `read:notifications` | 通知を見る |
| `write:notifications` | 通知を操作する |
| `write:reactions` | リアクションを操作する |
| `write:votes` | 投票する |
| `read:pages` | ページを見る |
| `write:pages` | ページを操作する |
| `write:page-likes` | ページのいいねを操作する |
| `read:page-likes` | ページのいいねを見る |
| `write:gallery-likes` | ギャラリーのいいねを操作する |
| `read:gallery-likes` | ギャラリーのいいねを見る |

View File

@ -1,11 +0,0 @@
# 広告
Misskeyではサーバーによる広告をタイムラインなどに表示できる機能があります。
広告の右上に表示されるアイコンをクリックすることで、当該の広告の表示頻度を下げることができます。
:::tip
広告の総数が少ない場合は、表示頻度を下げた後も連続で表示される可能性があります。
:::
## 広告の設定(管理者)
サーバーのコントロールパネルから広告の追加、編集、削除を行えます。
広告には任意の画像、遷移先URL、形状、表示割合を設定できます。

View File

@ -1,4 +0,0 @@
# アンテナ
アンテナは、自由に条件を設定して、合致するノートを自動で収集することができる機能です。
条件を設定したアンテナが作成された状態で、条件に合致するノートが投稿されると、リアルタイムでそのアンテナのタイムラインにノートが追加されます。

View File

@ -1,57 +0,0 @@
# チャート
Misskeyはサーバーの様々なデータソースに対するチャートを生成し表示する機能を備えています。
チャートを利用することで、サーバーの利用状況や連合の状況、各ユーザーのアクティビティなどを視覚的に把握することができます。
サーバーのチャートはサーバー情報ページから表示することができます。
以下は各チャートとその各項目の説明です。
## 連合チャート
連合しているサーバー化ついてのチャートです。
### Pub
アクティビティを配送しているサーバーの数。
言い換えると、自サーバーのユーザーをフォローしているリモートユーザーの所属サーバーのユニークなカウントを表します。
### Sub
アクティビティを受信しているサーバーの数。
言い換えると、自サーバーのユーザーがフォローしているリモートユーザーの所属サーバーのユニークなカウントを表します。
### Received
アクティビティを送ってきたサーバーの数。
### Delivered
アクティビティを配送したサーバーの数。
### Stalled
アクティビティを配送する際、エラーになったサーバーの数。
## アクティブユーザー数チャート
自サーバーのユーザーの利用状況についてのチャートです。
### Read & Write
閲覧と書き込みを行ったユーザーの数。
### Read
閲覧を行ったユーザーの数。
### Write
書き込みを行ったユーザーの数。
### < Week
閲覧を行ったユーザーのうち、アカウント作成日時が1週間未満であるユーザーの数。
### < Month
閲覧を行ったユーザーのうち、アカウント作成日時が1ヶ月未満であるユーザーの数。
### < Year
閲覧を行ったユーザーのうち、アカウント作成日時が1年未満であるユーザーの数。
### > Week
閲覧を行ったユーザーのうち、アカウント作成日時が1週間以上前であるユーザーの数。
### > Month
閲覧を行ったユーザーのうち、アカウント作成日時が1ヶ月以上前であるユーザーの数。
### > Year
閲覧を行ったユーザーのうち、アカウント作成日時が1年以上前であるユーザーの数。

View File

@ -1,8 +0,0 @@
# クリップ
クリップは、複数のノートをまとめることができる機能です。自分のノート・他者のノートは問いません。
クリップは複数作ることができ、それぞれに名前や説明を設定して管理することが可能です。また、クリップを他のユーザーに公開するかどうかも選択することができます。
クリップを作るには、クリップ管理ページから「追加」をクリックします。
クリップにノートを追加するには、対象のノートのメニューから「クリップ」をクリックし、追加先のクリップを選択します。

View File

@ -1,7 +0,0 @@
# カスタム絵文字
カスタム絵文字は、サーバーで用意された画像を絵文字のように使える機能です。
ノート、リアクション、チャット、自己紹介、名前などの場所で使うことができます。
カスタム絵文字をそれらの場所で使うには、絵文字ピッカーボタン(ある場合)を押すか、`:`を入力して絵文字サジェストを表示します。
テキスト内に`:foo:`のような形式の文字列が見つかると、`foo`の部分がカスタム絵文字名と解釈され、表示時には対応したカスタム絵文字に置き換わります。
サーバーにどのようなカスタム絵文字が用意されているかは、Misskey Webの **サーバー情報** にある **カスタム絵文字** `/about#emojis`にアクセスすると見ることができます。

View File

@ -1,21 +0,0 @@
# デッキ
デッキは利用可能なUIのひとつです。「カラム」と呼ばれるビューを複数並べて表示させることで、カスタマイズ性が高く、情報量の多いUIが構築できることが特徴です。
なお、メインカラムを追加しておくと、ノートやプロフィールをページで表示した際、メインカラムに内容が表示されます。
## カラムの追加
デッキの背景を右クリックし、「カラムを追加」して任意のカラムを追加できます。
## カラムの移動
カラムは、ドラッグアンドドロップで他のカラムと位置を入れ替えることが出来るほか、カラムメニュー(カラムのヘッダー右クリック)から位置を移動させることもできます。
## カラムの水平分割
カラムは左右だけでなく、上下に並べることもできます。
カラムメニューを開き、「左に重ねる」を選択すると、左のカラムの下に現在のカラムが移動します。
上下分割を解除するには、カラムメニューの「右に出す」を選択します。
## カラムの設定
カラムメニューの「編集」を選択するとカラムの設定を編集できます。カラムの名前を変えたり、幅を変えたりできます。
## デッキの設定
デッキに関する設定は、[settings/deck](/settings/deck)で行えます。

View File

@ -1,23 +0,0 @@
# ドライブ
ドライブは、Misskey上でファイルを管理できる機能です。
:::tip
技術的に言うと、Misskeyのシステム上、すべてのファイルが一元管理されており、それをユーザーにも公開したインターフェイスがドライブと捉えることができます。
:::
Misskey Webのドライブページから任意のファイルをアップロードできるほか、アバターに設定した画像や、ートに添付したファイルなどもすべてドライブにアップロードされます。
ドライブにアップロードされたファイルは、いつでもダウンロードすることができるほか、ノート作成時に「ドライブからファイルを添付」することでファイルを再利用することもできます。
ドライブ内にフォルダを作り、複数のファイルをまとめて整理することもできます。
:::warning
現時点で、ドライブからファイルを削除すると、そのファイルが添付された **すべてのコンテンツ(ノート、ページなど)** も同時に消えます。
:::
## 閲覧注意 (NSFW)
閲覧注意またはNSFW (Not safe for work) は、ドライブのファイルに設定することができるフラグです。
閲覧注意フラグを設定されたファイルは、表示される際に閲覧者の操作なしには表示されなくなります。
このフラグは、例えば職場や公共の場で閲覧するのに適切でないと思われる画像などに設定し、そのような画像が突然表示されてしまうことを防ぐ目的で使われます。
このフラグは手動でオンオフを切り替えられるほか、モデレーターの判断で設定される場合もあります。

View File

@ -1,7 +0,0 @@
# お気に入り
[ノート](./note)をお気に入りとして登録できる機能です。
お気に入り登録したノートは、[お気に入りページ](./my/favorites)で一覧することができます。
お気に入りに登録したことは相手に通知されず、お気に入りは自分しか見ることができません。
ノートをお気に入り登録するには、ノートメニューの「お気に入り」を押します。お気に入り解除するには、ノートメニューの「お気に入り解除」を押します。

View File

@ -1,3 +0,0 @@
# フォロー
ユーザーをフォローすると、タイムラインにそのユーザーの投稿が表示されるようになります。ただし、他のユーザーに対する返信は含まれません。
ユーザーをフォローするには、ユーザーページの「フォロー」ボタンをクリックします。フォローを解除するには、もう一度クリックします。

View File

@ -1,12 +0,0 @@
# ハッシュタグ
ハッシュタグとは、投稿に検索可能なタグをつけることができる機能の一つです。
世界ではじめてのハッシュタグ── #barcamp は、[2007年8月24日の午前4:25](https://twitter.com/chrismessina/status/223115412?lang=en)にクリス・メッシナ氏[@chrismessina@mastodon.xyz](https://mastodon.xyz/@chrismessina)によって考案されました。後にこの「ポンド記号`#`を用いて検索を容易にする」という案は、英語で「刻む、ハックする」を意味する「ハッシュ」と、「札」を意味する「タグ」を合わせた造語──「ハッシュタグ」として生まれ変わり、Twitter社に公式採用されました。ちなみにクリス・メッシナ氏が`#`を選んだ理由は、IRCのチャンネル名が`#`で始まることからの連想だからだそうです。
![Screenshot of Chris Messina's first hashtag tweet that says "how do you feel about using # (pound) for groups. As in #barcamp [msg]?"](/docs/messina_first_2007.png)
FediverseでのハッシュタグはTwitterやInstagramなどといった中央集権的なサービスとでのものと多少仕様が異なります。Fediverseでは全文検索が難しい場合などがあり、特定の投稿を探し出すのは困難ですが、投稿にハッシュタグがついていれば、その投稿をハッシュタグをたどって容易に見つけ出すことができます。また、投稿にハッシュタグをつけるだけで様々なサイトに自動で届けてくれるハッシュタグリレーと呼ばれるサービスなどが連合宇宙には存在し、ここではハッシュタグにそこそこの重みがあったりするのです。

View File

@ -1,3 +0,0 @@
# 機能
<MkIndex :sort="(a, b) => b.name - a.name"></MkIndex>

View File

@ -1 +0,0 @@
# メンション

View File

@ -1,136 +0,0 @@
---
description: 'MFMは、Misskeyの様々な場所で使用できる専用のマークアップ言語です。'
---
# MFM
MFMは、Markup language For Misskeyの略で、Misskeyの様々な場所で使用できる専用のマークアップ言語です。
:::tip
一部の構文はMarkdownやHTMLと互換性があります。
:::
## MFMが使用可能な場所の例
- ノート本文
- CW注釈
- ユーザーの名前
- ユーザーの自己紹介
## 構文
### メンション
アットマーク + ユーザー名で、特定のユーザーを示すことができます。
:::tip
メンションについての詳細は[こちら](./mention.md)を参照してください。
:::
```:no-line-numbers
@alice
```
```:no-line-numbers
@alice@example.com
```
### ハッシュタグ
ナンバーサイン + タグで、ハッシュタグを示すことができます。
:::tip
ハッシュタグについての詳細は[こちら](./hashtag.md)を参照してください。
:::
```:no-line-numbers
#misskey
```
### URL
URLを示すことができます。
```:no-line-numbers
https://example.com
```
### リンク
文章の特定の範囲を、URLに紐づけることができます。
```:no-line-numbers
[example link](https://example.com)
```
### カスタム絵文字
コロンでカスタム絵文字名を囲むと、カスタム絵文字を表示させることができます。
:::tip
カスタム絵文字についての詳細は[こちら](./custom-emoji.md)を参照してください。
:::
```:no-line-numbers
:misskey:
```
### 太字
文字を太く表示して強調することができます。
```:no-line-numbers
**太字**
```
### 目立たなくする
内容を小さく・薄く表示させることができます。
```:no-line-numbers
<small>MisskeyでFediverseの世界が広がります</small>
```
### 引用
内容が引用であることを示すことができます。
```:no-line-numbers
> MisskeyでFediverseの世界が広がります
```
### 中央寄せ
内容を中央寄せで表示させることができます。
```:no-line-numbers
<center>MisskeyでFediverseの世界が広がります</center>
```
### コード(インライン)
プログラムなどのコードをインラインでシンタックスハイライトします。
```:no-line-numbers
`<: "Hello, world!"`
```
### コード(ブロック)
複数行のプログラムなどのコードをブロックでシンタックスハイライトします。
```:no-line-numbers
~ (#i, 100) {
<: ? ((i % 15) = 0) "FizzBuzz"
.? ((i % 3) = 0) "Fizz"
.? ((i % 5) = 0) "Buzz"
. i
}
```
### 反転
内容を上下または左右に反転させます。
```:no-line-numbers
$[flip MisskeyでFediverseの世界が広がります]
$[flip.v MisskeyでFediverseの世界が広がります]
$[flip.h,v MisskeyでFediverseの世界が広がります]
```
### フォント
内容のフォントを指定することができます。
```:no-line-numbers
$[font.serif MisskeyでFediverseの世界が広がります]
$[font.monospace MisskeyでFediverseの世界が広がります]
$[font.cursive MisskeyでFediverseの世界が広がります]
$[font.fantasy MisskeyでFediverseの世界が広がります]
```
### ぼかし
内容をぼかすことができます。ポインターを上に乗せるとはっきり見えるようになります。
```:no-line-numbers
$[blur MisskeyでFediverseの世界が広がります]
```
### プレーン
内側の構文を全て無効にします。
```:no-line-numbers
<plain>**bold** @mention #hashtag `code` $[x2 🍮]</plain>
```
## 開発者向け情報
MFMのパーサー実装はライブラリとして公開されており、簡単にクライアントにMFMを組み込むことが可能です。
- [misskey-dev/mfm.js](https://github.com/misskey-dev/mfm.js) - JavaScriptパーサー実装

View File

@ -1,53 +0,0 @@
# ミュートとブロック
好みではないユーザーがいる場合は、ミュートを行うことでそのユーザーが自分から見えないようにすることができます。
また、より強力な措置として、ブロックを行うことでそのユーザーから自分のコンテンツが見えないようになるほか、自分に対して関わることができないようにすることができます。
ミュートされていることは相手は分かりませんが、ブロックされていることは相手に分かります。どちらを選ぶかはご自身の判断で行ってください。
:::tip
ミュートとブロックは併用できます。
:::
:::warning
利用規約に違反するような、迷惑なユーザーがいる場合は運営者に報告することも検討してください。
:::
Misskey Webでは、設定>ミュートとブロック から、自分がミュートまたはブロックしているユーザー一覧を確認することができます。
## ミュート
ユーザーをミュートすると、そのユーザーに関する次のコンテンツがMisskeyに表示されなくなります:
- タイムラインや投稿の検索結果内の、そのユーザーの投稿(およびそれらの投稿に対する返信やRenote)
- そのユーザーからの通知
- メッセージ履歴一覧内の、そのユーザーとのメッセージ履歴
- など
Misskey Webでユーザーをミュートするには、対象のユーザーのユーザーページのメニューを開き、「ミュート」ボタンを押します。
:::tip
ミュートを行ったことは相手に通知されず、ミュートされていることを知ることもできません。
:::
## ブロック
ユーザーをブロックすると、そのユーザーからあなたのコンテンツが見えないようになり、またあなたに対して以下のようなアクションをすることができなくなります。
- フォローする
- ユーザーリストに追加する
- 返信する、Renoteする
- リアクションする、アンケートに投票する
- メッセージを送信する
- など
また、
- ブロックする際に既にそのユーザーからフォローされていた場合はフォローが解除されます。
- ブロックする際に既にそのユーザーがあなたをユーザーリストに入れていた場合はそのリストからあなたが削除されます。
Misskey Webでユーザーをブロックするには、対象のユーザーのユーザーページのメニューを開き、「ブロック」ボタンを押します。
:::warning
ブロックを行ったこと自体は相手に通知されませんが、フォローを行ったりなどの上記のアクションが行えなくなるので間接的にブロックされていることは分かります。
:::
:::warning
相手から自分のコンテンツが見えなくなりますが、相手がアカウントを切り替えたりログアウト状態になれば見ることができます。あくまで簡易的、補助的なものとしてお考えください。
:::

View File

@ -1,83 +0,0 @@
# ノート
ートは、Misskeyに投稿される、文章、ファイル、アンケートなどを含むコンテンツで、Misskeyの中心的概念です。また、そのートを作成する行為自体もートと呼ばれます。
:::tip
ノートという名称は、英語で「短い記録」を意味する Note が由来になっています。
:::
ノートが作成されると、[タイムライン](./timeline)に追加され、自分の[フォロワー](./follow)やサーバーのユーザーが見れるようになります。
ノートには、[リアクション](./reaction)を行うことができます。また、返信や引用もできます。
ノートを[お気に入り](./favorite)登録することで、後で簡単に見返すことができます。
## ノートを作成する
Misskey Webでートを作成するには、画面上にある鉛筆マークのボタンを押して、作成フォームを開きます。作成フォームに内容を入力し、「ート」ボタンを押すことでートが作成されます。
ノートには、画像、動画など任意のファイルや、[アンケート](./poll)を添付することができます。また、本文中には[MFM](./mfm)が使用でき、[メンション](./mention)や[ハッシュタグ](./hashtag)を含めることもできます。
他にも、CWや公開範囲といった設定も行えます(詳細は後述)。
:::tip
Misskey Webでは、コンピューターのクリップボードに画像データがある状態で、フォーム内のテキストボックスにペーストするとその画像を添付することができます。
:::
:::tip
Misskey Webでは、テキストボックス内で<kbd class="key">Ctrl + Enter</kbd>を押すことでも投稿できます。
:::
## Renote
既にあるートを引用、もしくはそのートを新しいートとして共有する行為、またそれによって作成されたートをRenoteと呼びます。
自分がフォローしているユーザーの、気に入ったノートを自分のフォロワーに共有したい場合や、過去の自分のノートを再度共有したい場合に使います。
同じートに対して無制限にRenoteを行うことができますが、あまり連続して使用すると迷惑になる場合もあるので、注意しましょう。
:::warning
公開範囲がフォロワーやダイレクトのートはRenoteできません。
:::
Misskey WebでRenoteを削除するには、Renoteの時刻表示の隣にある「...」を押し、「Renote解除」を選択します。
## CW
Contents Warningの略で、ートの内容を、閲覧者の操作なしには表示しないようにできる機能です。主に長大な内容を隠すためや、ネタバレ防止などに使うことができます。
Misskey WebでCWを設定するには、フォームの「内容を隠す」ボタン(目のアイコン)を押します。すると新しい入力エリアが表れるので、そこに内容の要約を記入します。
## 公開範囲
ノートごとに、そのノートが公開される範囲を設定することができます。
Misskey Webで公開範囲を設定するには、フォームの「ート」ボタンの左にあるアイコンを押します。
公開範囲には、以下の種類があります。
### パブリック
全ての人に対してノートが公開されるほか、サーバーの全てのタイムライン(ホームタイムライン、ローカルタイムライン、ソーシャルタイムライン、グローバルタイムライン)にノートが流れます。
:::warning
アカウントが[サイレンス](./silence)状態の時は、この公開範囲は使用できません。
:::
### ホーム
全ての人に対してノートが公開されますが、フォロワー以外のローカルタイムライン、ソーシャルタイムライン、グローバルタイムラインにはノートは流れません。
### フォロワー
自分のフォロワーに対してのみノートを公開します。フォロワーの全てのタイムラインに流れます。
### ダイレクト
指定したユーザーに対してのみノートを公開します。指定したユーザーの全てのタイムラインに流れます。
### 「ローカルのみ」オプション
このオプションを有効にすると、リモートにノートを連合しなくなります。
### 公開範囲の比較
<table>
<tr><th></th><th>パブリック</th><th>ホーム</th><th>フォロワー</th><th>ダイレクト</th></tr>
<tr><th>フォロワーのLTL/STL/GTL</th><td></td><td></td><td></td><td></td></tr>
<tr><th>非フォロワーのLTL/STL/GTL</th><td></td><td></td><td></td><td></td></tr>
</table>
## ピン留め
ノートをピン留めすると、ユーザーページに常にそのノートを表示しておくことができます。
Misskey Webでピン留めを行うには、ートのメニューを開き、「ピン留め」を選択します。
:::tip
複数のノートを同時にピン留めすることも可能です。
:::
## ウォッチ
ノートをウォッチすると、自分以外のノートへのリアクションや返信などの通知を受け取ることができます。
Misskey Webでウォッチするには、ートのメニューを開き、「ウォッチ」を選択します。

View File

@ -1,38 +0,0 @@
# オンラインステータス
ユーザーの**オンラインステータス**は、そのユーザーのMisskey利用の状態を表すものです。
オンラインステータスは、ユーザーページなどでユーザーアイコンの隅にインジケーターとして表示されます。
<table>
<tr>
<th></th>
<th>状態</th>
<th>説明</th>
</tr>
<tr>
<td>🟢緑</td>
<td>オンライン</td>
<td>今まさにMisskeyを使用していると考えられる状態</td>
</tr>
<tr>
<td>🟡黄</td>
<td>アクティブ</td>
<td>今は退席しているものの、Misskeyの利用自体は行われている状態</td>
</tr>
<tr>
<td>🔴赤</td>
<td>オフライン</td>
<td>Misskeyを利用していないと考えられる状態</td>
</tr>
<tr>
<td>⚫灰</td>
<td>不明</td>
<td>ステータスを非公開にしている、もしくはリモートユーザー等でステータスが不明の状態</td>
</tr>
</table>
オンラインステータスは自動的に変わり、手動で設定することは出来ません。
設定により、オンラインステータスを非公開にすることができます。
:::warning
ユーザーのサジェストなど、一部の機能においてはオンラインステータスを元に処理される場合があるため、ステータスを非公開にすると他のユーザーから見つけにくくなることがあります。
:::

View File

@ -1,65 +0,0 @@
# ページ
Misskey上でートとは別にページを作成できます。v13では静的ページに特化しています。
:::warning
v13よりページによる動的ページ作成の代わりにMisskey Playが使用できます。
:::
## ページ設定
ページに関する項目を設定します。次の項目を入力できます。
- タイトル
- ページの要約
- ページURL
- 中央寄せ
- フォント
- ピン留めされているときにタイトルを非表示
- アイキャッチ画像
### タイトル
このページのタイトルを入力します。一覧に表示されます。
### ページの要約
簡単な説明を入力します。一覧に表示されます。
### ページURL
`https://サーバー名/@ユーザー/pages/●●●``●●●` を任意に設定できます。
### 中央寄せ
有効にすると、中央に寄せて表示します。
### フォント
**セリフ** と **サンセリフ** を選択します。
### ピン留めされているときにタイトルを非表示
ピン留めされているときにタイトルを非表示にします。
### アイキャッチ画像
**アイキャッチ画像を設定** より画像を設定できます。一覧表示などで表示する事が可能です。
## コンテンツ
ページ本体を編集します。次のブロックを一つまたは複数組み合わせてページを生成できます。
- セクション
- テキスト
- 画像
- ノート埋め込み
### セクション
タイトルを設定する事で見出しとして表示します。更に中のブロックを設定できます。
### テキスト
テキスト本文を入力します。MFMやカスタム絵文字を使用できます。
### 画像
画像を表示します。ドライブより画像を設定します。
### ノート埋め込み
ノート ID を入れる事で、そのートを表示します。他のサーバーを埋め込みたい場合は検索でそのURLを入れ、表示させた時のIDを貼り付けて下さい。

View File

@ -1,4 +0,0 @@
# プラグイン
Misskey Webにはプラグイン機能があり、ユーザーがMisskey Webの機能を拡張することができます。
プラグインの作成方法については[こちらのドキュメント](../advanced/create-plugin.md)を参照してください。

View File

@ -1,18 +0,0 @@
# リアクション
他の人のノートに、絵文字を付けて簡単にあなたの反応を伝えられる機能です。
Misskey Webでリアクションするには、ートの + アイコンをクリックしてピッカーを表示し、絵文字を選択します。
リアクションには[カスタム絵文字](./custom-emoji.md)も使用できます。
## リアクションピッカーのカスタマイズ
Misskey Webでは、ピッカーに表示される絵文字を自分好みにカスタマイズすることができます。
設定の「リアクション」で設定します。
## リモート投稿へのリアクションについて
リアクションはMisskeyオリジナルの機能であるため、リモートサーバーがMisskeyでない限りは、ほとんどの場合「Like」としてアクティビティが送信されます。一般的にはLikeは「お気に入り」として実装されているようです。
## リモートからのリアクションについて
リモートから「Like」アクティビティを受信したとき、Misskeyでは「👍」のリアクションとして解釈されます。
## 自分のリアクション一覧を見る
Misskey Webでは、自分のプロフィールページの「リアクション」タブを開くことで、自分の行ったリアクション一覧を見ることができます。
設定から、このリアクション一覧を公開するようにすることもできます。

View File

@ -1,53 +0,0 @@
# 共有フォーム
Misskey Webの`/share`を開くと、共有用の投稿フォームを開くことができます。この共有フォームを利用すると、外部のWebページから、ページの内容をユーザーにMisskeyで共有してもらいたいときに便利です。
URLにクエリパラメータとして共有内容をはじめとするいくつかのオプションを指定できます。
## クエリパラメータ
:::tip
すべてのパラメータは**オプション**であり、必須ではありません。
:::
| 名前 | 説明 |
| ---- | ---- |
| `title` | タイトル。本文の先頭に[ … ]と挿入されます。 |
| `text` | 本文。 |
| `url` | URL。本文の末尾に挿入されます。 |
### リプライ情報
以下のいずれかを指定すると、指定のノートに対するリプライにすることができます。
| 名前 | 説明 |
| ---- | ---- |
| `replyId` | リプライ先のートID。 |
| `replyUri` | リプライ先のURL。リモートのートオブジェクトを指定 |
### Renote情報
以下のいずれかを指定すると、指定のートに対するRenote(引用)にすることができます。
| 名前 | 説明 |
| ---- | ---- |
| `renoteId` | Renote先のートID。 |
| `renoteUri` | Renote先のURL。リモートのートオブジェクトを指定 |
### 公開範囲
以下のオプションで公開範囲の指定を行えます。
| 名前 | 説明 |
| ---- | ---- |
| `visibility` | `public`, `home`, `followers`, `specified` のいずれか |
| `localOnly` | 0(false) or 1(true) |
| `visibleUserIds` | 対象ユーザーID(カンマ区切り) |
| `visibleAccts` | 対象ユーザー[acct](../glossary.md#acct)(カンマ区切り) |
:::warning
`visibility`に`specified`を指定した場合は、`visibleUserIds`または`visibleAccts`の指定も必要です。
:::
### 添付ファイル
以下のオプションで添付ファイルの指定を行えます。
| 名前 | 説明 |
| ---- | ---- |
| `fileIds` | 添付するファイルのID(カンマ区切り) |

View File

@ -1,7 +0,0 @@
# サイレンス
サイレンスは、アカウントに設定される状態のひとつです。
アカウントがサイレンス状態になると、ノートの公開範囲をパブリックにできなくなります。
ホーム、フォロワー、ダイレクトは選択可能なため、サイレンスを受けた場合でもフォロワーやあなたのユーザーページを直接訪れた場合は投稿を閲覧できますが、GTL(連合タイムライン)やLTL(ローカルタイムライン)には投稿が流れません。
アカウントのサイレンス状態は、サーバーのモデレーターによって有効化/無効化されます。

View File

@ -1,95 +0,0 @@
# テーマ
テーマを設定して、Misskeyクライアントの見た目を変更できます。
## テーマの設定
設定 > テーマ
## テーマを作成する
テーマコードはJSON5で記述されたテーマオブジェクトです。
テーマは以下のようなオブジェクトです。
``` js
{
id: '17587283-dd92-4a2c-a22c-be0637c9e22a',
name: 'Danboard',
author: 'syuilo',
base: 'light',
props: {
accent: 'rgb(218, 141, 49)',
bg: 'rgb(218, 212, 190)',
fg: 'rgb(115, 108, 92)',
panel: 'rgb(236, 232, 220)',
renote: 'rgb(100, 152, 106)',
link: 'rgb(100, 152, 106)',
mention: '@accent',
hashtag: 'rgb(100, 152, 106)',
header: 'rgba(239, 227, 213, 0.75)',
navBg: 'rgb(216, 206, 182)',
inputBorder: 'rgba(0, 0, 0, 0.1)',
},
}
```
* `id` ... テーマの一意なID。UUIDをおすすめします。
* `name` ... テーマ名
* `author` ... テーマの作者
* `desc` ... テーマの説明(オプション)
* `base` ... 明るいテーマか、暗いテーマか
* `light`にすると明るいテーマになり、`dark`にすると暗いテーマになります。
* テーマはここで設定されたベーステーマを継承します。
* `props` ... テーマのスタイル定義。これから説明します。
### テーマのスタイル定義
`props`下にはテーマのスタイルを定義します。
キーがCSSの変数名になり、バリューで中身を指定します。
なお、この`props`オブジェクトはベーステーマから継承されます。
ベーステーマは、このテーマの`base`が`light`なら[_light.json5]で、`dark`なら[_dark.json5]です。
つまり、このテーマ内の`props`に`panel`というキーが無くても、そこにはベーステーマの`panel`があると見なされます。
[_light.json5]: https://github.com/misskey-dev/misskey/blob/develop/packages/frontend/src/themes/_light.json5
[_dark.json5]: https://github.com/misskey-dev/misskey/blob/develop/packages/frontend/src/themes/_dark.json5
#### バリューで使える構文
* 16進数で表された色
* 例: `#00ff00`
* `rgb(r, g, b)`形式で表された色
* 例: `rgb(0, 255, 0)`
* `rgb(r, g, b, a)`形式で表された透明度を含む色
* 例: `rgba(0, 255, 0, 0.5)`
* 他のキーの値の参照
* `@{キー名}`と書くと他のキーの値の参照になります。`{キー名}`は参照したいキーの名前に置き換えます。
* 例: `@panel`
* 定数(後述)の参照
* `${定数名}`と書くと定数の参照になります。`{定数名}`は参照したい定数の名前に置き換えます。
* 例: `$main`
* 関数(後述)
* `:{関数名}<{引数}<{色}`
#### 定数
「CSS変数として出力はしたくないが、他のCSS変数の値として使いまわしたい」値があるときは、定数を使うと便利です。
キー名を`$`で始めると、そのキーはCSS変数として出力されません。
#### 関数
「ボタンの上にカーソルを合わせたときだけ色を明るくしたい」のように、既存の色から少し変更した色を使いたい場合に、関数を使うと便利です。
`:{関数名}<{引数}<{色や他のキーの参照}`の形で使うことができます。
```js
props: {
accent: '#86b300',
accentDarken: ':darken<10<#86b300',
accentLighten: ':lighten<10<@accent'
}
```
##### 使用できる関数
* `lighten` ... 渡された色の輝度(0~100)に対して引数(0~100)を加算した色を返します。
* `darken` ... 渡された色の輝度(0~100)に対して引数(0~100)を減算した色を返します。
* `alpha` ... 渡された色の透明度を引数(0.0~1.0)に設定した色を返します。
* 0.0のとき完全に透明、1.0で完全に不透明になります。
* `hue` ... 渡された色の色相(-360~360)に対して引数(-360~360)の値だけ回転させた色を返します。
* `saturate` ... 渡された色の彩度(0~100)に対して引数(0~100)を加算した色を返します。

View File

@ -1,14 +0,0 @@
# スレッドミュート
:::tip
バージョン 12.95.0 以降の機能です。
:::
スレッドミュートは、指定したノートのスレッドをミュートします。スレッドとは、起点のノートから繋がった全てのリプライのことです。
スレッドをミュートすると、そのスレッドへの新たなリプライおよびリプライに含まれるあなた宛てのメンションが、通知されなくなるほか「あなた宛て」にも載らなくなります。
Misskey Webでスレッドをミュートするには、対象のスレッドに属する任意のートもしくは起点のートのメニューを開き、「スレッドをミュート」を選択します。
:::warning
スレッド内のどのノートからミュート操作を行ったかに関わらず、そのスレッド全体がミュートされます。
:::

View File

@ -1,33 +0,0 @@
# タイムライン
タイムラインは、[ノート](./note)が時系列で表示される機能です。
タイムラインには以下で示す種類があり、種類によって表示されるノートも異なります。
なお、タイムラインの種類によってはサーバーにより無効になっている場合があります。
## ホーム
自分のフォローしているユーザーの投稿が流れます。HTLと略されます。
## ローカル
全てのローカルユーザーの「ホーム」指定されていない投稿が流れます。LTLと略されます。
## ソーシャル
自分のフォローしているユーザーの投稿と、全てのローカルユーザーの「ホーム」指定されていない投稿が流れます。STLと略されます。
## グローバル
全てのローカルユーザーの「ホーム」指定されていない投稿と、サーバーに届いた全てのリモートユーザーの「ホーム」指定されていない投稿が流れます。GTLと略されます。
## 比較
| ソース | | | タイムライン | | |
|-----------------------|------------|--------|---------|------------|------------|
| ユーザー | 公開範囲 | ホーム | ローカル | ソーシャル | グローバル |
| ローカル (フォロー) | 公開 | ✔ | ✔ | ✔ | ✔ |
| | ホーム | ✔ | | ✔ | |
| | フォロワー | ✔ | | ✔ | |
| リモート (フォロー) | 公開 | ✔ | | ✔ | ✔ |
| | ホーム | ✔ | | ✔ | |
| | フォロワー | ✔ | | ✔ | |
| ローカル (未フォロー) | 公開 | | ✔ | ✔ | ✔ |
| | ホーム | | | | |
| | フォロワー | | | | |
| リモート (未フォロー) | 公開 | | | | ✔ |
| | ホーム | | | | |
| | フォロワー | | | | |

View File

@ -1,145 +0,0 @@
# Webhook
:::tip
バージョン 12.109.0 以降の機能です。
:::
:::warning
実験的な機能であるため、動作が不安定だったり今後仕様が変更される可能性があります。
:::
MisskeyにはWebhookが用意されています。Webhookを利用すると、Misskey上の様々なイベントをリアルタイムに受け取ることが可能です。
設定>Webhook でWebhookの管理を行えます。
Webhookが登録されると、指定したイベントが発生した際に、指定したURLにHTTPリクエストが送信されます。リクエストのメソッドはPOSTで、ボディはJSONです。
さらに、リクエストヘッダーには`X-Misskey-Hook-Secret`という名前で、登録時に設定したシークレットが含まれます。このシークレットが正しいか検証することで、リクエストが正規のものか判定することができます。
リクエストペイロードは以下のプロパティが入ります。
<MkSchemaViewerItemObject :schema="{
type: 'object',
properties: {
hookId: {
type: 'string',
description: 'Webhook ID',
},
userId: {
type: 'string',
description: 'Webhook作成者のユーザーID',
},
eventId: {
type: 'string',
description: 'イベントのID',
},
createdAt: {
type: 'integer',
description: 'イベントが発生した日時(UNIX time、ミリ秒)',
},
type: {
type: 'string',
description: 'イベントの種類',
},
body: {
type: 'object',
description: 'イベントのペイロード',
},
}
}"/>
送信先サーバーが5xxエラーを返すか、応答しなかった場合は時間を開けてリクエストが再送されます。
Webhookは管理画面から個別にアクティブ状態を設定でき、一時的にリクエストの送信を停止させることができます。
## イベント
イベントごとに説明とペイロードを示します。
### follow
自分が誰かをフォローした際に発生します。
<MkSchemaViewerItemObject :schema="{
type: 'object',
properties: {
user: {
$ref: 'misskey://User',
description: 'フォローしたユーザー',
},
}
}"/>
### followed
自分が誰かからフォローされた際に発生します。
<MkSchemaViewerItemObject :schema="{
type: 'object',
properties: {
user: {
$ref: 'misskey://User',
description: 'フォローを行ったユーザー',
},
}
}"/>
### unfollow
自分が誰かをフォロー解除した際に発生します。
<MkSchemaViewerItemObject :schema="{
type: 'object',
properties: {
user: {
$ref: 'misskey://User',
description: 'フォロー解除したユーザー',
},
}
}"/>
### note
自分がノートを投稿した際に発生します。
<MkSchemaViewerItemObject :schema="{
type: 'object',
properties: {
note: {
$ref: 'misskey://Note',
description: '作成されたノート',
},
}
}"/>
### reply
自分のノートに返信された際に発生します。
<MkSchemaViewerItemObject :schema="{
type: 'object',
properties: {
note: {
$ref: 'misskey://Note',
description: '返信',
},
}
}"/>
### renote
自分のートがRenoteされた際に発生します。
<MkSchemaViewerItemObject :schema="{
type: 'object',
properties: {
note: {
$ref: 'misskey://Note',
description: 'Renote',
},
}
}"/>
### mention
自分にメンションされた際に発生します。
<MkSchemaViewerItemObject :schema="{
type: 'object',
properties: {
note: {
$ref: 'misskey://Note',
description: 'メンションを含むノート',
},
}
}"/>

View File

@ -1,138 +0,0 @@
# ウィジェット
ウィジェットは、MisskeyのUI上に設置できる小型の情報表示、操作が行えるパーツです。
ウィジェットを編集するには、ウィジェット編集モードに切り替えます。切り替え方法はUIによって異なります。
ウィジェット編集モードでは、ウィジェットの追加、削除、並び替え、およびそれぞれのウィジェットの設定を行えます。
## 利用可能なウィジェット一覧
- プロフィール
- サーバー情報
- 付箋
- タイムライン
- カレンダー
- RSSリーダー
- RSSティッカー
- トレンド
- 時計
- アクティビティ
- フォト
- デジタル時計
- UNIX時計
- 連合
- サーバークラウド
- 投稿フォーム
- スライドショー
- サーバーメトリクス
- オンラインユーザー
- ジョブキュー
- ボタン
- AiScriptコンソール
- AiScript App
- 藍
- ユーザーリスト
- クリッカー
### プロフィール
名前・ユーザー名・アバター画像・バナー画像を表示します。複数アカウントを使用している時に使用しているユーザー名が見やすくなります。
### サーバー情報
サーバー名・ドメイン・アイコン画像・バナー画像を表示します。
### 付箋
テキストを保存しておけます。
### タイムライン
ライムラインを表示します。ホーム・ローカル・ソーシャル・グローバルを切り替え表示できます。
### カレンダー
今日の年月日・曜日、今日・今月・今年をパーセント表示します。デフォルトUIでは最初から表示されています。
### RSSリーダー
RSS フィードタイトルを一覧表示します。
### RSSティッカー
RSS フィードを順次スクロール表示します。
### トレンド
最近よく使用されているハッシュタグを表示します。
### 時計
アナログ時計で現在時間を表示します。
### アクティビティ
稼働状況をドット表示します。
### フォト
最近のドライブ中身を表示します。
### デジタル時計
デジタル時計で現在時刻を表示します。
### UNIX時計
UNIX時間で現在時刻を表示します。
### 連合
主に通信している他のサーバーを表示します。
### サーバークラウド
他のサーバーを球状に表示します。
### 投稿フォーム
ノートを投稿するッフォーム を固定表示します。
### スライドショー
ドライブ内の特定フォルダ内を順次表示します。
### サーバーメトリクス
サーバのCPU・メモリ・ネット送受・ストレージ容量を表示します。サーバ環境によっては表示できない場合があります。
### オンラインユーザー
現在オンタイン状態になっているユーザー数表示します。
### ジョブキュー
他サーバーとの送受しているノートなどのキュー状態を表示します。
### ボタン
ボタンを表示します。動作は AIScript で記載していきます。
### AiScriptコンソール
AiScript を実行できるコンソールを表示します。
### AiScript App
AIScript ソースを用いてアプリを表示します。Misskey Play と同じ UI を使用できます。v13 より追加されています。
### 藍
藍を表示します。カーソルに合わせて視線を変えたりします。
### ユーザーリスト
リストを表示します。もっと! - リスト で設定できます。
### クリッカー
クッキーを表示します。表示されたクッキーをクリック・タップして下さい。

View File

@ -1,20 +0,0 @@
# ワードミュート
ワードミュートの設定をすると、条件に合致したノートが表示されなくなります。
ワードミュートには、ソフトワードミュートとハードワードミュートの2種類があります。それぞれについて設定の方法と挙動を説明します。
## ソフトワードミュート
ソフトワードミュートは、クライアント(アプリ)側でミュートを判断するワードミュートです。
ノートが設定した条件に合致すると、「(ユーザー名)が何かを言いました」という表示で隠れます。
クリックすると元の通りに表示されます。
## ハードワードミュート
ハードワードミュートは、アンテナのようにサーバーが新しいノートの本文に対して条件に合致するかどうか判断し、タイムラインから対象となったノートを除外します。
つまり、ハードワードミュートには、以下のような特徴があります。
- 条件設定後、新しい投稿のみがミュートの対象になります。
- 条件を変更しても、過去にハードミュートされたノートはミュートされたままになります。
- 「○○が何かを言いました」でタイムラインが埋まることがありません。
- ソフトミュートに非対応のアプリでも、ハードミュートは適用されます。

View File

@ -1,124 +0,0 @@
---
description: 'Misskeyについてのドキュメントです。'
---
# Misskeyについて
Misskeyはオープンソースの分散型マイクロブログプラットフォームプロジェクトです。
開発は日本でsyuiloによって2014年から開始されました。
ドライブ、リアクションなどの豊富な機能や、高いカスタマイズ性を備えたUIを持つことが特徴です。
## 歴史
開発当初は掲示板がメインのサービスでしたが、ユーザーが短文を投稿し、それを時系列で流れるタイムライン機能を追加したところ人気が高まり、徐々にそれがメインとして開発が進むようになりました。
当初は分散型ではありませんでしたが、2018年にActivityPubを実装し分散型になったことで、より多くの方に認知され利用されるサービスになり、現在に至ります。
:::tip
Misskeyという名前は、syuiloが当時聴いていたMay'nというアーティストの楽曲、Brain Diverの歌詞に由来します。
:::
誰でも開発に参加することができ、現在でも活発に開発が続いています。
## 分散型とは何か?
<b>分散(distributed)型</b>とは、<b>非中央集権(decentralized)</b>とも呼ばれ、コミュニティが多数のサーバーに分散して存在し、それらが相互に<b>通信(連合、federation)</b>することでコンテンツ共有<b>ネットワーク(Fediverse)</b>を形成していることが特徴のサービスです。
単一のサーバーしか存在しない、もしくは複数存在しても互いに独立している場合は中央集権なサービスと言われ、例えばTwitterやFacebookなどほとんどのサービスがそれに該当します。
分散型のメリットは、自分に合った運営者やテーマのサーバーを選択できることです。自分でサーバーを作成することもできます。連合するおかげで、どのサーバーを選んでも、同じコミュニティにアクセスできます。
## 常にオープンソース
Misskeyはこれまでもこれからも、オープンソースであり続けます。オープンソースとは、簡単に言うと<b>ソフトウェアのソースコード(プログラム)が公開されている</b>ことです。ソースコードの修正や再配布が可能であることを定義に含めることもあります。
Misskeyのすべてのソースコードは[AGPL](https://github.com/misskey-dev/misskey/blob/develop/LICENSE)というオープンソースライセンスの下に[公開](https://github.com/misskey-dev)されていて、誰でも自由に閲覧、使用、修正、改変、再配布をすることができます。
オープンソースは、自分で好きなように変えたり、有害な処理が含まれていないことを確認することができたり、誰でも開発に参加できるなどの、様々なメリットがあります。
上述の分散型を実現するためにも、オープンソースであるということは必要不可欠な要素です。
再び引き合いに出しますが、TwitterやFacebookなどの利益を得ているほとんどのサービスはオープンソースではありません。
:::tip
技術的に言うと、MisskeyのソースコードはGitで管理されていて、リポジトリは[GitHub上でホスティングされています。](https://github.com/misskey-dev)
:::
## 開発に参加する、プロジェクトを支援する
Misskeyを気に入っていただけたら、ぜひプロジェクトを支援してください。プロジェクトに貢献するには、以下で紹介するようにいろいろな方法があります。方法によっては開発のスキルは不要なので、誰でも気軽に参加し貢献することができます。いつでもお待ちしています。
### 機能を追加したり、バグを修正する
ソフトウェアエンジニアのスキルをお持ちの方であれば、ソースコードを編集する形でプロジェクトに貢献することができます。
貢献についてのガイドは[こちら](https://github.com/misskey-dev/misskey/blob/develop/CONTRIBUTING.md)です。
### 議論に参加する
新しい機能、または既存の機能について意見を述べたり、不具合を報告したりすることでも貢献できます。
そのようなディスカッションは[GitHub](https://github.com/misskey-dev)上か、[フォーラム](https://forum.misskey.io/)等で行われます。
### テキストを翻訳する
Misskeyは様々な言語に対応しています(i18n -internationalizationの略- と呼ばれます)。元の言語は基本的に日本語ですが、有志によって他の言語へと翻訳されています。
その翻訳作業に加わっていただくことでもMisskeyに貢献できます。
Misskeyは[Crowdinというサービスを使用して翻訳の管理を行っています。](https://crowdin.com/project/misskey)
### 感想を投稿する
不具合報告等だけではなく、Misskeyの良い点、楽しい点といったポジティブな意見もぜひ共有してください。開発の励みになり、それは間接的ですがプロジェクトへの貢献です。
### ミスキストを増やす
ミスキストとは、Misskeyを使用する人のことです。
知り合いに紹介するなどしてMisskeyを広めていただければ、ミスキストが増え開発のモチベーションが上がります。
### 寄付をする
[こちらをご覧ください](./donate.md)
## よくある質問
### プロジェクトは何を目指していますか?
強いて言うと、漠然的になりますが広く使われる汎用的なプラットフォームになることを目指しています。
Misskeyは他のプロジェクトとは違い、何らかの思想(例えば、反中央集権)やビジョンに基づいて開発が行われているわけではなく、その点ではフラットです。
それが逆に、特定の方向性に縛られないフレキシブルさを生み出すことに繋がっていると感じています。
<!-- TODO: ここにロードマップへのリンク -->
### 企業によって開発されていますか?
いいえ。Misskeyの開発は個人で行われており、商業的でもないため、特定の企業の関りはありません。
開発メンバーも基本的にはボランティアです。
また、開発に対し企業のスポンサーがつくこともありますが、その場合でもやはり開発は個人のコミュニティが主体です。
### 誰が運営していますか?
Misskeyは分散型なため、各サーバーにそれぞれ異なった運営者がいます。従って、特定の個人や企業によって、Misskeyの全てが運営されているわけではありません。
また、開発チームが運営を行うわけでもないため、運営に関する連絡は、お使いのサーバーの運営者に行ってください。
サーバーの運営者は、サーバーの情報ページで確認することができます。
あなたがサーバーを作成すれば、あなたが運営者になります。
### どのサーバーを選べばいいですか?
[サーバー一覧が公開されています。](../instances.md)
サーバーによってコミュニティのテーマ(特定のこと、ものが好き 等)が決められている場合があるので、自分に合ったテーマのサーバーがあれば、そこを選ぶと良いかもしれません。
他にも、サーバーの規模、ユーザー層、国および言語、運営者が信頼できるかどうか、などの観点があります。
なお、Misskey公式のサーバーというものはありません。自身で新しくサーバーを作成するという選択肢もあります。
基本的にどのサーバーを選んだとしても、他の全てのサーバーのユーザーと繋がることができます。
### サーバーを建てるにはどうしたらいいですか?
Misskeyサーバーの作成に興味を持っていただきありがとうございます。
2022年現在、Misskeyのホスティングサービスは存在しないため、サーバーの作成にはある程度の知識が必要です。
サーバーの作成方法については[こちら](./install.md)をご覧ください。
### どのような技術を使用していますか?
Misskeyは開発が進むにつれ使用する技術も大きく変わってきました。開発当初はMySQL + PHP + jQueryといった構成でしたが、現在は以下のようになっています。
- サーバーサイド: Node.js
- データベース: PostgreSQL、Redis
- UIフレームワーク: Vue.js
- プログラミング言語: TypeScript
また、MFMやAiScriptなどの、Misskeyから派生して独自の技術も開発しています。
### Mastodonのフォークですか
いいえ。MisskeyはMastodonやその他のプロジェクトとは全く別のプロジェクトです。
開発に関しても、Misskeyの方が昔から開発されています。ただし、分散型になったのはMastodonの登場より後です。
同じActivityPubという分散のためのプロトコルを実装しているという点以外、両者に特に関りがあるわけでもありません。
### iOS/Androidのアプリはありますか
公式にはそういったOSのネイティブアプリを開発していませんが、サードパーティ製のアプリがいくつかあります。
詳しくは[こちら](./apps.md)をご覧ください。
ただ、サードパーティ製アプリはどうしても機能への対応が遅れてしまうため、とくに拘りがなければ公式のWebクライアントの利用をおすすめします。
なお、MisskeyのWebクライアントはPWAに対応しているので、ネイティブアプリのように動作させることも可能です。
詳しくは[こちら](todo)をご覧ください。
### Misskeyのロゴ、アイコンはどこで入手できますか
[こちら](../appendix/assets.md)
### 時折目にする猫耳の可愛い女の子は?
Misskeyの守り神、藍ちゃんです。アイチャンカワイイヤッター!
:::tip
藍ちゃんについては[こちら](https://xn--931a.moe/)です。
:::

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,14 @@
# Misskeyをはじめよう
ここでは、Misskeyでの活動を始めるチュートリアルを掲載しています。
おもに、
- 分散型プラットフォームの注意点
- サーバーとは?サーバーの選び方は?
- 登録の手順
- 最低限の基礎知識
などについて解説していますので、この通りに進めることで、とりあえずMisskeyを使い始めることができると思います。
それでは、早速始めましょう!(「次へ」を押して進んでください。)

View File

@ -1,12 +1,12 @@
---
description: "Misskeyサーバーへのユーザー登録や、基本的な操作について解説しています。"
---
# Misskeyを始めよう
# Misskeyサーバーをさがす
Misskeyはソフトウェアおよびそのプロジェクトです。
インターネットに公開されている、Misskeyを動かしているサーバーのことを**サーバー**と呼びます。
Misskeyを利用するには、どこかのサーバーにアカウントを作成し、そのサーバーを利用します。
[サーバー一覧](../instances.md)から、好きなサーバーを選ぶことができます。
[サーバー一覧](/servers/)から、好きなサーバーを選ぶことができます。
:::tip
どのサーバーを選んでも、他のサーバーのユーザーとやり取りすることができます。

View File

@ -0,0 +1,34 @@
# サーバーに登録する
登録するサーバーが決まったら、さっそくアカウントを作成しましょう。
:::tip
ここでは、Misskey.ioを例にとって紹介していますが、他のサーバーでも登録方法はおおむね同じです。
ただし、入力事項はサーバーによって異なることがあります。詳しくは、サーバー管理者にお問い合わせください。
:::
## 登録する
まずは、トップページから「**このサーバーに登録する**」ボタンを探し、クリックします。
![このサーバーに登録ボタン](/img/docs/for-users/onboarding/join-server/1.ja.png)
次に、画面の指示に従い、規約の確認や必要事項の記入を進めてください。
主に記入すべき事項は、以下の通りです。
- 招待コード(登録が招待制の場合のみ。お持ちでない場合は登録できません。)
- ユーザー名(**後から変更はできません。一度退会すると同じユーザー名を取得することはできません。**
- メールアドレス(必要ないサーバーもあります)
- パスワード
![必要事項の記入](/img/docs/for-users/onboarding/join-server/2.ja.png)
必要事項の記入が終わると、メールアドレスを登録するサーバーの場合、確認メールが届きますので、速やかにメール内のリンクをクリックしてください。
![確認メール](/img/docs/for-users/onboarding/join-server/3.ja.png)
以上で、Misskey サーバーへの登録が完了しました!
これであなたも[ミスキスト](../resources/glossary/#ミスキスト)!楽しいコミュニケーションをお楽しみください。

View File

@ -0,0 +1,23 @@
# Misskeyの基礎知識
アカウントを作成したあなたにとりあえず知っておいてほしいことをまとめました!
## ノート
Misskeyへの投稿は、「ート」と呼ばれます。Twitterなどの一般的なSNSに比べたくさんの機能がありますので、初めての投稿を行う前に必ず確認して、上手に投稿しましょう
:::tip
詳細は、「[ノート](/docs/for-users/features/note/)」をご覧ください。
:::
## タイムライン
Misskeyは、複数のタイムラインを持っています。名前だけでは少々わかりにくいかと思いますので、それぞれがどのような働きをするのかを知っておきましょう。
:::tip
詳細は、「[タイムライン](/docs/for-users/features/timeline/)」をご覧ください。
:::
## その他
その他にも、Misskeyには、使って楽しい機能が盛りだくさんすべての機能に関する説明は[こちら](/docs/for-users/features/)に記載されていますので、ぜひご覧ください!

View File

@ -4,7 +4,7 @@
世界ではじめてのハッシュタグ── #barcamp は、[2007年8月24日の午前4:25](https://twitter.com/chrismessina/status/223115412?lang=en)にクリス・メッシナ氏[@chrismessina@mastodon.xyz](https://mastodon.xyz/@chrismessina)によって考案されました。後にこの「ポンド記号`#`を用いて検索を容易にする」という案は、英語で「刻む、ハックする」を意味する「ハッシュ」と、「札」を意味する「タグ」を合わせた造語──「ハッシュタグ」として生まれ変わり、Twitter社に公式採用されました。ちなみにクリス・メッシナ氏が`#`を選んだ理由は、IRCのチャンネル名が`#`で始まることからの連想だからだそうです。
![Screenshot of Chris Messina's first hashtag tweet that says "how do you feel about using # (pound) for groups. As in #barcamp [msg]?"](/docs/messina_first_2007.png)
![Screenshot of Chris Messina's first hashtag tweet that says "how do you feel about using # (pound) for groups. As in #barcamp [msg]?"](/img/docs/for-users/features/hashtag/1.ja.png)
FediverseでのハッシュタグはTwitterやInstagramなどといった中央集権的なサービスとでのものと多少仕様が異なります。Fediverseでは全文検索が難しい場合などがあり、特定の投稿を探し出すのは困難ですが、投稿にハッシュタグがついていれば、その投稿をハッシュタグをたどって容易に見つけ出すことができます。また、投稿にハッシュタグをつけるだけで様々なサイトに自動で届けてくれるハッシュタグリレーと呼ばれるサービスなどが連合宇宙には存在し、ここではハッシュタグにそこそこの重みがあったりするのです。

View File

@ -0,0 +1,2 @@
title: "その他のリソース"
description: "機能面以外の知識や、困ったときの対処法を紹介しています。"

View File

@ -5,10 +5,8 @@ Misskey Hubは、Misskeyに関するナレッジなどのドキュメント、
Misskey Hubも[オープンソースで公開されています。](https://github.com/misskey-dev/misskey-hub)
:::tip
Misskey Hubは[VuePress](https://github.com/vuepress/vuepress-next)を使ってビルドされた静的サイトです。
Misskey HubはNuxtを使ってビルドされた静的サイトです。
:::
- [更新履歴](../updates.md)
## Misskey Hubに貢献する
ドキュメントの追加や、翻訳など歓迎です。

View File

@ -0,0 +1,2 @@
title: "サーバー運営者向け"
description: "サーバーの作成方法や、運営に際してのお役立ち情報を公開中。"

View File

@ -0,0 +1,2 @@
title: "Misskeyのインストールと保守"
description: "Misskeyのインストール方法や、その後の保守作業に役立つ情報を掲載しています。"

View File

@ -17,18 +17,6 @@ Cloudflare が最新の JavaScript を解釈せず、中のソースコードを
詳しくは [misskey-dev/misskey #9791](https://github.com/misskey-dev/misskey/issues/9791) をご覧ください。
:::
## Docker Composeを使ったインストール
[こちら](./install/docker.html)
## インストール方法一覧
## bashスクリプトを使ったインストール
[こちら](./install/bash.html)
## 全部自力でインストール
[基本編](./install/manual.html)\
[Ubuntu版詳細説明](./install/ubuntu-manual.html)
## YunoHostを使ったインストール
MisskeyはYunoHostでAppとしてインストールできます。詳しくは、[Yunohost向けのMisskeyパッケージのリポジトリ](https://github.com/YunoHost-Apps/misskey_ynh)をご覧ください。
## Kubernetes/TrueNASを使ったインストール
[こちら](./install/kubernetes.html)
<MkIndex />

View File

@ -119,7 +119,7 @@ systemdは、Docker Hubにイメージを上げるまでもないものの、フ
## nginxを使うかどうか
サーバー1台でMisskeyを構築する場合は、nginxの使用をお勧めします。
ロードバランサーを設置する場合にはnginxをインストールせず、[Misskeyのnginx設定](https://misskey-hub.net/docs/admin/nginx.html)を参考にロードバランサーを設定するのがよいと思います。
ロードバランサーを設置する場合にはnginxをインストールせず、[Misskeyのnginx設定](../resources/nginx/)を参考にロードバランサーを設定するのがよいと思います。
## Add more swaps!
スワップを設定している場合、メモリが合計で3GB以上でなければスクリプトが動作しないようになっています。

View File

@ -11,7 +11,7 @@ Docker Composeを使ったMisskey構築
一度使用を始めたサーバーのドメイン・ホスト名は、決して変更しないでください!
:::
:::tip 前提条件
:::tip{label='前提条件'}
- DockerおよびDocker Composeがインストールされていること。
:::

View File

@ -2,7 +2,7 @@
description: 'このガイドではMisskeyのインストール・セットアップ方法について解説します。'
---
Misskey構築の手引き
Misskeyを手動で構築する
================================================================
このガイドではMisskeyのインストール・セットアップ方法について解説します。
@ -11,8 +11,8 @@ Misskey構築の手引き
一度使用を始めたサーバーのドメイン・ホスト名は、決して変更しないでください!
:::
:::tip 前提条件
以下のソフトウェアがインストール・設定されていること
:::tip{label='前提条件'}
#### 以下のソフトウェアがインストール・設定されていること
- **[Node.js](https://nodejs.org/en/)** (20.4.x以上)
- **[PostgreSQL](https://www.postgresql.org/)** (15以上)
- **[Redis](https://redis.io/)**
@ -20,7 +20,7 @@ Misskey構築の手引き
Debian/Ubuntuをお使いであれば、`build-essential`パッケージをインストールしておくと良いです。
corepackが有効化されていること
#### corepackが有効化されていること
```sh
sudo corepack enable
```

View File

@ -2,13 +2,13 @@
## その他のMisskeyインストール方法
- [基本版 Misskey構築の手引き (manual.html)](./manual.html)
- [その他のインストール方法一覧](../install.html)
- [基本版 Misskey構築の手引き (manual)](./manual/)
- [その他のインストール方法一覧](./docs/for-admin/install/)
## シェルスクリプトのお知らせ
コピペばかりならシェルスクリプトでいいじゃん、と言うことで**シェルスクリプトでほぼ全部やってくれるやつを作ってみました!**\
[**シェルスクリプトの詳細と使用方法はこちらから!**](./bash.html)
[**シェルスクリプトの詳細と使用方法はこちらから!**](./bash/)
:::tip
シェルスクリプトでの開発環境へのインストールは想定されていません。
@ -22,9 +22,9 @@
## この記事について
この記事では、[Misskey構築の手引き (manual.html)](./manual.html)で紹介されている通り、systemdでMisskeyを動作させています。
この記事では、[Misskey構築の手引き (manual)](./manual/)で紹介されている通り、systemdでMisskeyを動作させています。
[docker-compose](./docker.html)なら、手作業でももうちょっと簡単に実行できるはずです。
[docker-compose](./docker/)なら、手作業でももうちょっと簡単に実行できるはずです。
:::danger
一度使用を始めたサーバーのドメイン・ホスト名は、決して変更しないでください!
@ -32,7 +32,7 @@
## はじめに
この記事では、[Misskey構築の手引き (manual.html)](./manual.html)を基に、一般的なUbuntuサーバーへMisskeyをインストールし公開する方法の一挙手一投足を解説する。
この記事では、[Misskey構築の手引き (manual)](./manual/)を基に、一般的なUbuntuサーバーへMisskeyをインストールし公開する方法の一挙手一投足を解説する。
Bashのコマンド入力、いくつかの設定ファイルの編集、そしてブラウザの操作だけで設定が完了するようにしている。インストールするソフトウェアについて簡単に説明しているが、気にする必要はない。
@ -73,7 +73,7 @@ nano /path/to/file
Misskeyはrootで実行しない方がよいため、専用のユーザーを作成する。
```
```sh
sudo adduser --disabled-password --disabled-login misskey
```
@ -113,7 +113,7 @@ PostgreSQLは、オブジェクト関係データベース管理システムで
シェルスクリプトを実行し、最新バージョンv15をインストールしよう。
```
```sh
sudo apt install -y postgresql-common
sudo sh /usr/share/postgresql-common/pgdg/apt.postgresql.org.sh -i -v 15;
@ -279,7 +279,7 @@ ufwは、netfilter(iptables)を人間が操作しやすいようにするアプ
CloudFlareは、自分のドメインに対してDNSサーバー・リバースプロキシ・CDNをいっぺんに提供してくれるたいへん便利なサービスである。\
CloudFlareを経由せずにサーバーを公開することも可能だが、たいへん便利なので導入することをお勧めする。
[**→ CDNの設定**](/docs/admin/cdn.html)
[**→ CDNの設定**](/docs/admin/cdn/)
[CloudFlareにサインアップ](https://dash.cloudflare.com/sign-up) し、購入したドメインを案内に従って登録する。
@ -425,7 +425,7 @@ exit
sudo nano /etc/nginx/conf.d/misskey.conf
```
[Misskey Hub](https://misskey-hub.net/docs/admin/nginx.html)の設定例をnanoへコピーペーストし、次の部分を自分のものに書き換える。
[Misskey Hub](https://misskey-hub.net/docs/admin/nginx/)の設定例をnanoへコピーペーストし、次の部分を自分のものに書き換える。
* 18行目と30行目のドメイン名
* 34-35行目の証明書へのパスをCertbotで取得したものに (基本的にexample.tldを置き換えるだけでOK)
@ -534,7 +534,7 @@ sudo nano /etc/systemd/system/misskey.service
次の内容を貼り付け、保存する。
```
```ini
[Unit]
Description=Misskey daemon
@ -584,7 +584,7 @@ Misskeyサーバーに自分のアカウントを登録・ログインし、設
## Misskeyのアップデート
[→ manual.html#Misskeyのアップデート方法](https://misskey-hub.net/docs/install/manual.html#misskey%E3%81%AE%E3%82%A2%E3%83%83%E3%83%95%E3%82%9A%E3%83%86%E3%82%99%E3%83%BC%E3%83%88%E6%96%B9%E6%B3%95)
[Misskeyのアップデート方法](../guides/manual/)
作業中はMisskeyを使うことができません。

View File

@ -0,0 +1,2 @@
title: "Misskeyの保守・トラブルシューティング"
description: "Misskeyサーバーの運営には定期的なメンテナンスが不可欠。役立つ情報や困ったときの対処法をご紹介します。"

View File

@ -5,7 +5,7 @@
MisskeyInstallBattle参加者が増えましたが、それに伴い時期を追うごとに重軽傷者が増加しています。\
この記事ではそのような負傷者を減らすため、過去に事故が起きてしまった個所の傾向と対策をわかりやすく解説します。
**まず最初に、[構築の手引き](/docs/install/manual.html)を熟読してください。**
**まず最初に、[構築の手引き](../guides/manual/)を熟読してください。**
また、拙著の[Ubuntu向けsystemd版解説](https://hide.ac/articles/iFwm5HDvH)、[Oracle Cloud版詳細解説](https://hide.ac/articles/csERs-7SU)も参考までにお読みいただけると幸いです。
@ -22,7 +22,7 @@ Ubuntu向け解説はコピペばかりでつまらない時間がかかる
シェルスクリプトに不具合があれば[製作者(aqz)](https://p1.a9z.dev/@aqz)にお知らせいただければと思います。
# インストールとビルド
[構築の手引き](/docs/install/manual.html)をよく読みましょう。
[構築の手引き](../guides/manual/)をよく読みましょう。
## ImageMagick関連
***ImageMagickは不要です***
@ -32,24 +32,24 @@ Misskeyのビルドには、経験則上、最低でも2GBのメモリが必要
サーバーをスケールアップする手もありますが、お使いのPCでビルドしてサーバーにデプロイするという手もあります。
## なんだかうまくいかない
- [構築の手引き](/docs/install/manual.html)をよく読みましょう。
- [構築の手引き](../guides/manual/)をよく読みましょう。
- node.jsのバージョンが古いかも
* 新しめのバージョンにしましょう。
- インストールやビルドの際にErrorとかWARNとかが出てくることがありますが、問題ない場合もあります。とりあえず`npm start`して動作確認しちゃいましょう。
- node-gypがインストールされていないかも
* `apt install build-essential`を試す。
* Windowsは[この記事](https://qiita.com/AkihiroTakamura/items/25ba516f8ec624e66ee7)も参考にしてみる。
- これでもだめそうだったら、最初から[構築の手引き](/docs/install/manual.html)の手順に従ってやり直してみてください。
- これでもだめそうだったら、最初から[構築の手引き](../guides/manual/)の手順に従ってやり直してみてください。
## バージョンアップ後に不具合が発生した
- [構築の手引き](/docs/install/manual.html)およびリリースノートをよく読みましょう。
- [構築の手引き](../guides/manual/)およびリリースノートをよく読みましょう。
- Misskeyのバージョンアップ時にはしっかり`pnpm install`や`pnpm run migrate`してください。それでも直らない場合、`pnpm run clean-all && pnpm install`を試し、`pnpm run build && pnpm run migrate && pnpm start`してみてください。
- これでもだめそうだったら、最初から[構築の手引き](/docs/install/manual.html)の手順に従ってやり直してみてください。
- これでもだめそうだったら、最初から[構築の手引き](../guides/manual/)の手順に従ってやり直してみてください。
---
# 設定
[構築の手引き](/docs/install/manual.html)をよく読みましょう。
[構築の手引き](../guides/manual/)をよく読みましょう。
`.config/default.yml`で設定を行います。
[`.config/example.yml`](https://github.com/misskey-dev/misskey/blob/develop/.config/example.yml)をコピーし、コメントに従って記述します。
@ -174,7 +174,7 @@ https:
# `npm start`やアクセス時によく遭遇するエラー
`npm start`でサーバーを立てられたものの、その後不具合に遭遇してしまう場合もあります。
まず、[構築の手引き](/docs/install/manual.html)をよく読みましょう。
まず、[構築の手引き](../guides/manual/)をよく読みましょう。
## YAMLのエラーが出る
`default.yml`の構文にミスがある可能性があります。

View File

@ -0,0 +1,2 @@
title: "モデレーション上のお役立ち情報"
description: "実際にサーバーを運営するにあたり役立つ情報についてまとめています。"

View File

@ -0,0 +1,13 @@
---
description: 'MisskeyはAPIを公開しています。APIを使ってMisskeyクライアント、Misskey連携Webサービス、Bot等(以下「アプリケーション」と呼びます)を開発することができます。'
---
# Misskey API
MisskeyはAPIを公開しています。APIを使ってMisskeyクライアント、Misskey連携Webサービス、Bot等(以下「アプリケーション」と呼びます)を開発することができます。
ストリーミングAPIもあるので、リアルタイム性のあるアプリケーションを作ることも可能です。
:::tip
Misskey公式SDKやサードパーティライブラリを使うことによって、このドキュメントで説明するいくつかの手順を簡略化できるなど、より便利にAPIを利用することができます。\
:::
<MkIndex />

View File

@ -0,0 +1,11 @@
---
description: 'アプリケーションが要求する権限の一覧'
---
# 権限の一覧
:::tip
このページは[misskey-js](https://github.com/misskey-dev/misskey/tree/develop/packages/misskey-js)から自動生成しているため、ドキュメントや翻訳が不完全な場合があります。
:::
<ApiPermissions></ApiPermissions>

View File

@ -0,0 +1,3 @@
# チャンネル一覧
<MkIndex />

View File

@ -0,0 +1,113 @@
# アクセストークンの取得
APIを使い始めるには、APIを利用するアカウントに紐づいた**アクセストークン**を取得する必要があります。
このドキュメントでは、アクセストークンを取得する手順を説明した後、基本的なAPIの使い方を説明します。
基本的に、APIはリクエストにはアクセストークンが必要となります。
アクセストークンは、ユーザーに紐づいた認証情報で、APIを利用するユーザーを識別するとともに、アクセストークンごとにどういった操作の権限を持っているかが管理されます。
:::tip
ユーザーとそのユーザーに紐づいたアクセストークンは一対多の関係であり、あるユーザーに対して複数のアクセストークンが発行され得ます。
:::
あなた自分自身のアクセストークンは簡単に取得できるほか、あなたのアプリケーションを使用することになる不特定のユーザーのアクセストークンを取得することもできます。
- 前者の場合: **「自分自身のアクセストークンを手動発行する」** に進む
- 後者の場合: **「アプリケーション利用者にアクセストークンの発行をリクエストする」** に進む
### 自分自身のアクセストークンを手動発行する
Misskey Webの「設定 > API」で、自分のアクセストークンを発行できます。
:::danger
アクセストークンは他人に知られないようにしてください。
:::
### アプリケーション利用者にアクセストークンの発行をリクエストする
アプリケーションを利用するユーザー(以下単に「ユーザー」と呼びます)のアクセストークンを取得するには、以下の手順で発行をリクエストします。
:::tip
以下に説明する方法は、アプリを作成せずインスタントにアクセストークンを発行する、MiAuthと呼ばれるものです。
[アプリ作成方式でのアクセストークン取得方法もあります(旧来型)。](./app)
:::
#### Step 1
UUIDを生成する。以後これを**セッションID**と呼びます。
:::danger
このセッションIDは毎回生成し、使いまわさないようにしてください。
:::
#### Step 2
アプリケーション認証フォームをユーザーのブラウザで表示させる。認証フォームは、以下の形式のURLで開くことができます:
```
https://{host}/miauth/{session}
```
ここで、
- `{host}`の部分は、ユーザーのサーバーのホストに置き換えます。通常ホストはユーザーが入力します。
- `{session}`の部分は、セッションIDに置き換えます。
また、URLにクエリパラメータとしていくつかのオプションを設定できます:
| 名前 | 説明 |
| ------------ | -------------------------------------------------------------------------------------------------------------------------------- |
| `name` | アプリケーション名。 |
| `icon` | アプリケーションのアイコン画像URL。 |
| `callback` | 認証が終わった後にリダイレクトするURL。<br>リダイレクト時には、`session`というクエリパラメータでセッションIDが付きます。 |
| `permission` | アプリケーションが要求する権限。<br>要求する権限を`,`で区切って列挙します。権限の一覧は[こちら](./permission.md)で確認できます。 |
:::tip{label='例'}
```
https://misskey.io/miauth/c1f6d42b-468b-4fd2-8274-e58abdedef6f?name=MyApp&callback=https%3A%2F%2Fmyapp.example.com%2Fcallback&permission=write:notes,write:following,read:drive
```
:::
#### Step 3
ユーザーがアプリケーションアクセスを許可した後、次の形式のURLにPOSTリクエストすると、レスポンスとしてアクセストークンを含むJSONが返ります。
```
https://{host}/api/miauth/{session}/check
```
ここで、
- `{host}`の部分は、ユーザーのサーバーのホストに置き換えます。
- `{session}`の部分は、セッションIDに置き換えます。
レスポンスに含まれるプロパティは以下の通りです:
| 名前 | 説明 |
| ------- | ---------------------------- |
| `token` | ユーザーのアクセストークン。 |
| `user` | ユーザーの情報。 |
## APIの利用
アクセストークンが取得できたら、各種エンドポイントにリクエストすることでAPIの利用が行えます。
:::tip
- HTTP APIはすべてPOSTで、リクエスト/レスポンスともにJSON形式ですdrive/files/createを除く
- 要求ヘッダーに`Content-Type: application/json`を指定します。
- アクセストークンは、`i`というパラメータ名でリクエストボディJSONに含めます。
- ベースURLは`https://{サーバーのドメイン}/api`です。
:::
アクセストークン付きのボディの例metaの場合:
```json
{
"i": "HogEFugA1341",
"detail": false
}
```
APIの詳細は、[APIリファレンス](./endpoints.html)を参照してください。
:::warning
MisskeyはRESTを採用していません。
:::
また、MisskeyはHTTP APIだけでなく、ストリーミングAPIも提供しています。ストリーミングAPIの詳細は[こちらのドキュメント](./streaming/index.md)を参照してください。

View File

@ -1,7 +1,13 @@
# Botの作成
[Misskey API](./api)を利用してBotの開発が可能です。
[Misskey API](/docs/for-developers/api/)を利用してBotの開発が可能です。
また、いくつかのBot実装が公開されているため、ぜひ参考にしてください。
- [syuilo/ai](https://github.com/syuilo/ai) ... Node.js上で動く、TypeScript製Bot実装
Botを作成したときは、プロフィール設定からBotフラグをオンにしておくことを強くおすすめします。
## 関連リソース
- [Misskey API](./api/)
<MkIndex />

View File

@ -0,0 +1,2 @@
title: "プラグイン・Playの作成"
description: "プラグインやPlayを作成する方法・各種リファレンスを公開中。"

View File

@ -6,7 +6,18 @@ Misskey Webクライアントのプラグイン機能を使うと、クライア
プラグインはAiScriptを使って記述されるスクリプトです。
## メタデータ
プラグインは、AiScriptのメタデータ埋め込み機能を使って、デフォルトとしてプラグインのメタデータを定義する必要があります。
プラグインは、AiScriptのメタデータ埋め込み機能を使って、デフォルトとしてプラグインのメタデータを定義する必要があります。メタデータの例は以下の通りです。
```js
/// @ 0.12.4
### {
name: "プラグイン名"
version: "4.2.1"
author: "作者名"
description: "説明文"
}
```
メタデータは次のプロパティを含むオブジェクトです。
### name
@ -43,4 +54,4 @@ string number boolean
## API
Misskey Webはプラグインに対してAPIを公開していて、それらを利用することでクライアントの機能を拡張できます。
どのようなAPIがあるかは[プラグインAPIリファレンス](./plugin-api-reference.md)を参照してください。
どのようなAPIがあるかは[プラグインAPIリファレンス](./plugin-api-reference/)を参照してください。

View File

@ -1,49 +1,49 @@
# プラグインAPIリファレンス
## Mk:dialog(title text type)
## `Mk:dialog(title text type)`
ダイアログを表示します。typeには以下の値が設定できます。\
info success warn error question\
省略すると info になります。
`info` `success` `warn` `error` `question`\
省略すると `info` になります。
## Mk:confirm(title text type)
## `Mk:confirm(title text type)`
確認ダイアログを表示します。typeには以下の値が設定できます。\
info success warn error question\
省略すると question になります。\
ユーザーが"OK"を選択した場合は true を、"キャンセル"を選択した場合は false が返ります。
`info` `success` `warn` `error` `question`\
省略すると `question` になります。\
ユーザーが"OK"を選択した場合は `true` を、"キャンセル"を選択した場合は `false` が返ります。
## Mk:api(endpoint params)
## `Mk:api(endpoint params)`
Misskey APIにリクエストします。第一引数にエンドポイント名、第二引数にパラメータオブジェクトを渡します。
## Mk:save(key value)
## `Mk:save(key value)`
任意の値に任意の名前を付けて永続化します。永続化した値は、AiScriptコンテキストが終了しても残り、Mk:loadで読み取ることができます。
## Mk:load(key)
## `Mk:load(key)`
Mk:saveで永続化した指定の名前の値を読み取ります。
## Plugin:register_post_form_action(title fn)
## `Plugin:register_post_form_action(title fn)`
投稿フォームにアクションを追加します。第一引数にアクション名、第二引数にアクションが選択された際のコールバック関数を渡します。\
コールバック関数には、第一引数に投稿フォームオブジェクトが渡されます。
## Plugin:register_note_action(title fn)
## `Plugin:register_note_action(title fn)`
ノートメニューに項目を追加します。第一引数に項目名、第二引数に項目が選択された際のコールバック関数を渡します。\
コールバック関数には、第一引数に対象のノートオブジェクトが渡されます。
## Plugin:register_user_action(title fn)
## `Plugin:register_user_action(title fn)`
ユーザーメニューに項目を追加します。第一引数に項目名、第二引数に項目が選択された際のコールバック関数を渡します。\
コールバック関数には、第一引数に対象のユーザーオブジェクトが渡されます。
## Plugin:register_note_view_interruptor(fn)
## `Plugin:register_note_view_interruptor(fn)`
UIに表示されるート情報を書き換えます。\
コールバック関数には、第一引数に対象のノートオブジェクトが渡されます。\
コールバック関数の返り値でノートが書き換えられます。
## Plugin:register_note_post_interruptor(fn)
## `Plugin:register_note_post_interruptor(fn)`
ノート投稿時にノート情報を書き換えます。\
コールバック関数には、第一引数に対象のノートオブジェクトが渡されます。\
コールバック関数の返り値でノートが書き換えられます。
## Plugin:open_url(url)
## `Plugin:open_url(url)`
第一引数に渡されたURLをブラウザの新しいタブで開きます。
## Plugin:config
## `Plugin:config`
プラグインの設定が格納されるオブジェクト。プラグイン定義のconfigで設定したキーで値が入ります。

View File

@ -2,12 +2,13 @@
import ViteYaml from '@modyfi/vite-plugin-yaml';
import svgLoader from 'vite-svg-loader';
import genSitemap from './scripts/gen-sitemap';
import { genApiTranslationFiles } from './scripts/gen-api-translations';
import { resolve } from 'path';
// 公開時のドメイン(末尾スラッシュなし)
const baseUrl = 'https://misskey-hub.net';
const locales = [
export const locales = [
{ code: 'ja', iso: 'ja-JP', name: '日本語' },
{ code: 'en', iso: 'en-US', name: 'English' },
{ code: 'ko', iso: 'ko-KR', name: '한국어' },
@ -49,7 +50,15 @@ export default defineNuxtConfig({
'date',
'description',
]
}
},
highlight: {
theme: {
// Default theme (same as single string)
default: 'github-light',
// Theme used if `html.dark`
dark: 'github-dark',
},
},
},
i18n: {
baseUrl,
@ -105,6 +114,9 @@ export default defineNuxtConfig({
'@/server/plugins/appendComment.ts',
],
},
hooks: {
'build:before': genApiTranslationFiles,
},
experimental: {
inlineSSRStyles: false,
payloadExtraction: true,

View File

@ -13,6 +13,7 @@
"@nuxt/content": "^2.7.0",
"@nuxtjs/color-mode": "^3.3.0",
"@nuxtjs/i18n": "8.0.0-beta.13",
"@types/js-yaml": "^4.0.5",
"@types/node": "^18",
"@types/rellax": "^1.7.4",
"@types/three": "^0.153.0",
@ -23,6 +24,7 @@
"github-markdown-css": "^5.2.0",
"meshline": "^3.1.6",
"mfm-js": "^0.23.3",
"misskey-js": "^0.0.16",
"nuxt": "^3.6.2",
"postcss": "^8.4.25",
"rellax": "^1.12.1",
@ -34,5 +36,8 @@
"tinycolor2": "^1.6.0",
"vite-svg-loader": "^4.0.0"
},
"packageManager": "pnpm@8.6.0"
"packageManager": "pnpm@8.6.0",
"dependencies": {
"js-yaml": "^4.1.0"
}
}

View File

@ -1,6 +1,6 @@
<template>
<div class="relative container mx-auto max-w-screen-xl p-6 lg:py-0 grid docs-root pb-12">
<div class="lg:hidden sticky top-16 -mx-6 -mt-6 bg-white px-6 bg-opacity-60 backdrop-blur-lg z-[9890] border-b text-sm">
<div v-if="data?.body" class="lg:hidden sticky top-16 -mx-6 -mt-6 bg-white px-6 bg-opacity-60 backdrop-blur-lg z-[9890] border-b text-sm">
<details :open="openState">
<summary class="py-4 cursor-pointer">{{ $t('_docs._toc.title') }}</summary>
<div class="pb-4 overflow-y-auto">
@ -14,14 +14,22 @@
</div>
</div>
<div class="pt-6 lg:p-6 w-full overflow-x-hidden">
<ContentRenderer :value="data" class="markdown-body w-full mb-6">
<template v-if="data?.body">
<ContentRenderer v-if="data.body.children.length > 0" :value="data" class="markdown-body w-full mb-6">
</ContentRenderer>
<DocsPrevNext :ignore-dir-based-nav="data?.ignoreDirBasedNav ?? false" />
</template>
<template v-else>
<div class="markdown-body">
<h1>{{ data?.title ?? data?._dir?.title }}</h1>
<MkIndex :is-dir="data?._file?.endsWith('index.md') || (!data?._file)" />
</div>
</template>
</div>
<div class="hidden lg:block text-sm">
<div class="sticky top-16 h-[calc(100vh-4rem)] overflow-y-auto py-6 pl-6">
<h3 class="font-bold mb-6">{{ $t('_docs._toc.title') }}</h3>
<DocsTocLinks :links="data?.body.toc.links" />
<DocsTocLinks v-if="data?.body" :links="data?.body.toc.links" class="break-words" />
</div>
</div>
</div>
@ -49,9 +57,10 @@ const slugs = (route.params.slug as string[]).filter((v) => v !== '');
const { data } = await useAsyncData(`blog-${locale.value}-${slugs.join('-')}`, () => queryContent(`/${locale.value}/docs/${slugs.join('/')}`).findOne());
const { data: navigation } = await useAsyncData('navigation', () => fetchContentNavigation(queryContent(`/${locale.value}/docs/${slugs[0]}`)));
/*
if (!data.value) {
throw createError({ statusCode: 404, statusMessage: 'page not found' });
}
}*/
route.meta.title = data.value?.title;
</script>

View File

@ -0,0 +1,18 @@
<template>
<div>
{{ keys }}
</div>
</template>
<script setup lang="ts">
import { Endpoints } from 'misskey-js';
function getEndpointKeys<T extends Record<string, unknown>>(obj: T): Array<keyof T> {
return Object.keys(obj) as Array<keyof T>;
}
const keys = getEndpointKeys({} as Endpoints)
</script>
<style scoped>
</style>

View File

@ -47,8 +47,8 @@
}
]" />
<DocsReadersNav section-id="forUsers" id="forUsers" />
<!--<DocsReadersNav section-id="forAdmin" id="forAdmin" />
<DocsReadersNav section-id="forDevelopers" id="forDevelopers" />-->
<DocsReadersNav section-id="forAdmin" id="forAdmin" />
<DocsReadersNav section-id="forDevelopers" id="forDevelopers" />
</div>
</div>
</div>

View File

@ -4,6 +4,11 @@ settings:
autoInstallPeers: true
excludeLinksFromLockfile: false
dependencies:
js-yaml:
specifier: ^4.1.0
version: 4.1.0
devDependencies:
'@modyfi/vite-plugin-yaml':
specifier: ^1.0.4
@ -17,6 +22,9 @@ devDependencies:
'@nuxtjs/i18n':
specifier: 8.0.0-beta.13
version: 8.0.0-beta.13(vue@3.3.4)
'@types/js-yaml':
specifier: ^4.0.5
version: 4.0.5
'@types/node':
specifier: ^18
version: 18.0.0
@ -47,6 +55,9 @@ devDependencies:
mfm-js:
specifier: ^0.23.3
version: 0.23.3
misskey-js:
specifier: ^0.0.16
version: 0.0.16
nuxt:
specifier: ^3.6.2
version: 3.6.2(@types/node@18.0.0)(sass@1.63.6)(typescript@5.1.6)
@ -1033,6 +1044,20 @@ packages:
- rollup
dev: true
/@mole-inc/bin-wrapper@8.0.1:
resolution: {integrity: sha512-sTGoeZnjI8N4KS+sW2AN95gDBErhAguvkw/tWdCjeM8bvxpz5lqrnd0vOJABA1A+Ic3zED7PYoLP/RANLgVotA==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
dependencies:
bin-check: 4.1.0
bin-version-check: 5.1.0
content-disposition: 0.5.4
ext-name: 5.0.0
file-type: 17.1.6
filenamify: 5.1.1
got: 11.8.6
os-filter-obj: 2.0.0
dev: true
/@netlify/functions@1.6.0:
resolution: {integrity: sha512-6G92AlcpFrQG72XU8YH8pg94eDnq7+Q0YJhb8x4qNpdGsvuzvrfHWBmqFGp/Yshmv4wex9lpsTRZOocdrA2erQ==}
engines: {node: '>=14.0.0'}
@ -1463,10 +1488,158 @@ packages:
rollup: 3.26.2
dev: true
/@sindresorhus/is@4.6.0:
resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==}
engines: {node: '>=10'}
dev: true
/@socket.io/component-emitter@3.1.0:
resolution: {integrity: sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==}
dev: true
/@swc/cli@0.1.62(@swc/core@1.3.56):
resolution: {integrity: sha512-kOFLjKY3XH1DWLfXL1/B5MizeNorHR8wHKEi92S/Zi9Md/AK17KSqR8MgyRJ6C1fhKHvbBCl8wboyKAFXStkYw==}
engines: {node: '>= 12.13'}
hasBin: true
peerDependencies:
'@swc/core': ^1.2.66
chokidar: ^3.5.1
peerDependenciesMeta:
chokidar:
optional: true
dependencies:
'@mole-inc/bin-wrapper': 8.0.1
'@swc/core': 1.3.56
commander: 7.2.0
fast-glob: 3.3.0
semver: 7.5.3
slash: 3.0.0
source-map: 0.7.4
dev: true
/@swc/core-darwin-arm64@1.3.56:
resolution: {integrity: sha512-DZcu7BzDaLEdWHabz9DRTP0yEBLqkrWmskFcD5BX0lGAvoIvE4duMnAqi5F2B3X7630QioHRCYFoRw2WkeE3Cw==}
engines: {node: '>=10'}
cpu: [arm64]
os: [darwin]
requiresBuild: true
dev: true
optional: true
/@swc/core-darwin-x64@1.3.56:
resolution: {integrity: sha512-VH5saqYFasdRXJy6RAT+MXm0+IjkMZvOkohJwUei+oA65cKJofQwrJ1jZro8yOJFYvUSI3jgNRGsdBkmo/4hMw==}
engines: {node: '>=10'}
cpu: [x64]
os: [darwin]
requiresBuild: true
dev: true
optional: true
/@swc/core-linux-arm-gnueabihf@1.3.56:
resolution: {integrity: sha512-LWwPo6NnJkH01+ukqvkoNIOpMdw+Zundm4vBeicwyVrkP+mC3kwVfi03TUFpQUz3kRKdw/QEnxGTj+MouCPbtw==}
engines: {node: '>=10'}
cpu: [arm]
os: [linux]
requiresBuild: true
dev: true
optional: true
/@swc/core-linux-arm64-gnu@1.3.56:
resolution: {integrity: sha512-GzsUy/4egJ4cMlxbM+Ub7AMi5CKAc+pxBxrh8MUPQbyStW8jGgnQsJouTnGy0LHawtdEnsCOl6PcO6OgvktXuQ==}
engines: {node: '>=10'}
cpu: [arm64]
os: [linux]
requiresBuild: true
dev: true
optional: true
/@swc/core-linux-arm64-musl@1.3.56:
resolution: {integrity: sha512-9gxL09BIiAv8zY0DjfnFf19bo8+P4T9tdhzPwcm+1yPJcY5yr1+YFWLNFzz01agtOj6VlZ2/wUJTaOfdjjtc+A==}
engines: {node: '>=10'}
cpu: [arm64]
os: [linux]
requiresBuild: true
dev: true
optional: true
/@swc/core-linux-x64-gnu@1.3.56:
resolution: {integrity: sha512-n0ORNknl50vMRkll3BDO1E4WOqY6iISlPV1ZQCRLWQ6YQ2q8/WAryBxc2OAybcGHBUFkxyACpJukeU1QZ/9tNw==}
engines: {node: '>=10'}
cpu: [x64]
os: [linux]
requiresBuild: true
dev: true
optional: true
/@swc/core-linux-x64-musl@1.3.56:
resolution: {integrity: sha512-r+D34WLAOAlJtfw1gaVWpHRwCncU9nzW9i7w9kSw4HpWYnHJOz54jLGSEmNsrhdTCz1VK2ar+V2ktFUsrlGlDA==}
engines: {node: '>=10'}
cpu: [x64]
os: [linux]
requiresBuild: true
dev: true
optional: true
/@swc/core-win32-arm64-msvc@1.3.56:
resolution: {integrity: sha512-29Yt75Is6X24z3x8h/xZC1HnDPkPpyLH9mDQiM6Cuc0I9mVr1XSriPEUB2N/awf5IE4SA8c+3IVq1DtKWbkJIw==}
engines: {node: '>=10'}
cpu: [arm64]
os: [win32]
requiresBuild: true
dev: true
optional: true
/@swc/core-win32-ia32-msvc@1.3.56:
resolution: {integrity: sha512-mplp0zbYDrcHtfvkniXlXdB04e2qIjz2Gq/XHKr4Rnc6xVORJjjXF91IemXKpavx2oZYJws+LNJL7UFQ8jyCdQ==}
engines: {node: '>=10'}
cpu: [ia32]
os: [win32]
requiresBuild: true
dev: true
optional: true
/@swc/core-win32-x64-msvc@1.3.56:
resolution: {integrity: sha512-zp8MBnrw/bjdLenO/ifYzHrImSjKunqL0C2IF4LXYNRfcbYFh2NwobsVQMZ20IT0474lKRdlP8Oxdt+bHuXrzA==}
engines: {node: '>=10'}
cpu: [x64]
os: [win32]
requiresBuild: true
dev: true
optional: true
/@swc/core@1.3.56:
resolution: {integrity: sha512-yz/EeXT+PMZucUNrYceRUaTfuNS4IIu5EDZSOlvCEvm4jAmZi7CYH1B/kvzEzoAOzr7zkQiDPNJftcQXLkjbjA==}
engines: {node: '>=10'}
requiresBuild: true
peerDependencies:
'@swc/helpers': ^0.5.0
peerDependenciesMeta:
'@swc/helpers':
optional: true
optionalDependencies:
'@swc/core-darwin-arm64': 1.3.56
'@swc/core-darwin-x64': 1.3.56
'@swc/core-linux-arm-gnueabihf': 1.3.56
'@swc/core-linux-arm64-gnu': 1.3.56
'@swc/core-linux-arm64-musl': 1.3.56
'@swc/core-linux-x64-gnu': 1.3.56
'@swc/core-linux-x64-musl': 1.3.56
'@swc/core-win32-arm64-msvc': 1.3.56
'@swc/core-win32-ia32-msvc': 1.3.56
'@swc/core-win32-x64-msvc': 1.3.56
dev: true
/@szmarczak/http-timer@4.0.6:
resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==}
engines: {node: '>=10'}
dependencies:
defer-to-connect: 2.0.1
dev: true
/@tokenizer/token@0.3.0:
resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==}
dev: true
/@trysound/sax@0.2.0:
resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==}
engines: {node: '>=10.13.0'}
@ -1476,6 +1649,15 @@ packages:
resolution: {integrity: sha512-lB9lMjuqjtuJrx7/kOkqQBtllspPIN+96OvTCeJ2j5FEzinoAXTdAMFnDAQT1KVPRlnYfBrqxtqP66vDM40xxQ==}
dev: true
/@types/cacheable-request@6.0.3:
resolution: {integrity: sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==}
dependencies:
'@types/http-cache-semantics': 4.0.1
'@types/keyv': 3.1.4
'@types/node': 18.0.0
'@types/responselike': 1.0.0
dev: true
/@types/debug@4.1.8:
resolution: {integrity: sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ==}
dependencies:
@ -1492,12 +1674,26 @@ packages:
'@types/unist': 3.0.0
dev: true
/@types/http-cache-semantics@4.0.1:
resolution: {integrity: sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==}
dev: true
/@types/http-proxy@1.17.11:
resolution: {integrity: sha512-HC8G7c1WmaF2ekqpnFq626xd3Zz0uvaqFmBJNRZCGEZCXkvSdJoNFn/8Ygbd9fKNQj8UzLdCETaI0UWPAjK7IA==}
dependencies:
'@types/node': 18.0.0
dev: true
/@types/js-yaml@4.0.5:
resolution: {integrity: sha512-FhpRzf927MNQdRZP0J5DLIdTXhjLYzeUTmLAu69mnVksLH9CJY3IuSeEgbKUki7GQZm0WqDkGzyxju2EZGD2wA==}
dev: true
/@types/keyv@3.1.4:
resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==}
dependencies:
'@types/node': 18.0.0
dev: true
/@types/mdast@3.0.11:
resolution: {integrity: sha512-Y/uImid8aAwrEA24/1tcRZwpxX3pIFTSilcNDKSPn+Y2iDywSEachzRuvgAYYLR3wpGXAsMbv5lvKLDZLeYPAw==}
dependencies:
@ -1528,6 +1724,12 @@ packages:
resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==}
dev: true
/@types/responselike@1.0.0:
resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==}
dependencies:
'@types/node': 18.0.0
dev: true
/@types/sax@1.2.4:
resolution: {integrity: sha512-pSAff4IAxJjfAXUG6tFkO7dsSbTmf8CtUpfhhZ5VhkRpC4628tJhh3+V6H1E+/Gs9piSzYKT5yzHO5M4GG9jkw==}
dependencies:
@ -1908,7 +2110,6 @@ packages:
/argparse@2.0.1:
resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
dev: true
/ast-kit@0.6.5:
resolution: {integrity: sha512-XCg0VWvmWU2T/6aMp8VRfJWZ6LZv1P0o8otWY7RAGtfKj0qGi45vtnKNkltJhu9tmbQNZxv+gJA4o7FtLDfmWg==}
@ -1965,6 +2166,31 @@ packages:
resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
dev: true
/bin-check@4.1.0:
resolution: {integrity: sha512-b6weQyEUKsDGFlACWSIOfveEnImkJyK/FGW6FAG42loyoquvjdtOIqO6yBFzHyqyVVhNgNkQxxx09SFLK28YnA==}
engines: {node: '>=4'}
dependencies:
execa: 0.7.0
executable: 4.1.1
dev: true
/bin-version-check@5.1.0:
resolution: {integrity: sha512-bYsvMqJ8yNGILLz1KP9zKLzQ6YpljV3ln1gqhuLkUtyfGi3qXKGuK2p+U4NAvjVFzDFiBBtOpCOSFNuYYEGZ5g==}
engines: {node: '>=12'}
dependencies:
bin-version: 6.0.0
semver: 7.5.3
semver-truncate: 3.0.0
dev: true
/bin-version@6.0.0:
resolution: {integrity: sha512-nk5wEsP4RiKjG+vF+uG8lFsEn4d7Y6FVDamzzftSunXOoOcOOkzcWdKVlGgFFwlUQCj63SgnUkLLGF8v7lufhw==}
engines: {node: '>=12'}
dependencies:
execa: 5.1.1
find-versions: 5.1.0
dev: true
/binary-extensions@2.2.0:
resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==}
engines: {node: '>=8'}
@ -2081,6 +2307,24 @@ packages:
engines: {node: '>=8'}
dev: true
/cacheable-lookup@5.0.4:
resolution: {integrity: sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==}
engines: {node: '>=10.6.0'}
dev: true
/cacheable-request@7.0.4:
resolution: {integrity: sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==}
engines: {node: '>=8'}
dependencies:
clone-response: 1.0.3
get-stream: 5.2.0
http-cache-semantics: 4.1.1
keyv: 4.5.3
lowercase-keys: 2.0.0
normalize-url: 6.1.0
responselike: 2.0.1
dev: true
/camelcase-css@2.0.1:
resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==}
engines: {node: '>= 6'}
@ -2199,6 +2443,12 @@ packages:
wrap-ansi: 7.0.0
dev: true
/clone-response@1.0.3:
resolution: {integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==}
dependencies:
mimic-response: 1.0.1
dev: true
/cluster-key-slot@1.1.2:
resolution: {integrity: sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==}
engines: {node: '>=0.10.0'}
@ -2288,6 +2538,13 @@ packages:
resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==}
dev: true
/content-disposition@0.5.4:
resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==}
engines: {node: '>= 0.6'}
dependencies:
safe-buffer: 5.2.1
dev: true
/convert-source-map@1.9.0:
resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==}
dev: true
@ -2322,6 +2579,14 @@ packages:
resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==}
dev: true
/cross-spawn@5.1.0:
resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==}
dependencies:
lru-cache: 4.1.5
shebang-command: 1.2.0
which: 1.3.1
dev: true
/cross-spawn@7.0.3:
resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
engines: {node: '>= 8'}
@ -2484,11 +2749,23 @@ packages:
character-entities: 2.0.2
dev: true
/decompress-response@6.0.0:
resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==}
engines: {node: '>=10'}
dependencies:
mimic-response: 3.1.0
dev: true
/deepmerge@4.3.1:
resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==}
engines: {node: '>=0.10.0'}
dev: true
/defer-to-connect@2.0.1:
resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==}
engines: {node: '>=10'}
dev: true
/define-lazy-prop@2.0.0:
resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==}
engines: {node: '>=8'}
@ -2828,6 +3105,23 @@ packages:
resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==}
dev: true
/eventemitter3@5.0.1:
resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==}
dev: true
/execa@0.7.0:
resolution: {integrity: sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw==}
engines: {node: '>=4'}
dependencies:
cross-spawn: 5.1.0
get-stream: 3.0.0
is-stream: 1.1.0
npm-run-path: 2.0.2
p-finally: 1.0.0
signal-exit: 3.0.7
strip-eof: 1.0.0
dev: true
/execa@5.1.1:
resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==}
engines: {node: '>=10'}
@ -2858,6 +3152,28 @@ packages:
strip-final-newline: 3.0.0
dev: true
/executable@4.1.1:
resolution: {integrity: sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==}
engines: {node: '>=4'}
dependencies:
pify: 2.3.0
dev: true
/ext-list@2.2.2:
resolution: {integrity: sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==}
engines: {node: '>=0.10.0'}
dependencies:
mime-db: 1.52.0
dev: true
/ext-name@5.0.0:
resolution: {integrity: sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==}
engines: {node: '>=4'}
dependencies:
ext-list: 2.2.2
sort-keys-length: 1.0.1
dev: true
/extend@3.0.2:
resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==}
dev: true
@ -2900,10 +3216,33 @@ packages:
resolution: {integrity: sha512-IQrh3lEPM93wVCEczc9SaAOvkmcoQn/G8Bo1e8ZPlY3X3bnAxWaBdvTdvM1hP62iZp0BXWDy4vTAy4fF0+Dlpg==}
dev: true
/file-type@17.1.6:
resolution: {integrity: sha512-hlDw5Ev+9e883s0pwUsuuYNu4tD7GgpUnOvykjv1Gya0ZIjuKumthDRua90VUn6/nlRKAjcxLUnHNTIUWwWIiw==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
dependencies:
readable-web-to-node-stream: 3.0.2
strtok3: 7.0.0
token-types: 5.0.1
dev: true
/file-uri-to-path@1.0.0:
resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==}
dev: true
/filename-reserved-regex@3.0.0:
resolution: {integrity: sha512-hn4cQfU6GOT/7cFHXBqeBg2TbrMBgdD0kcjLhvSQYYwm3s4B6cjvBfb7nBALJLAXqmU5xajSa7X2NnUud/VCdw==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
dev: true
/filenamify@5.1.1:
resolution: {integrity: sha512-M45CbrJLGACfrPOkrTp3j2EcO9OBkKUYME0eiqOCa7i2poaklU0jhlIaMlr8ijLorT0uLAzrn3qXOp5684CkfA==}
engines: {node: '>=12.20'}
dependencies:
filename-reserved-regex: 3.0.0
strip-outer: 2.0.0
trim-repeated: 2.0.0
dev: true
/fill-range@7.0.1:
resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
engines: {node: '>=8'}
@ -2911,6 +3250,13 @@ packages:
to-regex-range: 5.0.1
dev: true
/find-versions@5.1.0:
resolution: {integrity: sha512-+iwzCJ7C5v5KgcBuueqVoNiHVoQpwiUK5XFLjf0affFTep+Wcw93tPvmb8tqujDNmzhBDPddnWV/qgWSXgq+Hg==}
engines: {node: '>=12'}
dependencies:
semver-regex: 4.0.5
dev: true
/flat@5.0.2:
resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==}
hasBin: true
@ -3007,6 +3353,18 @@ packages:
resolution: {integrity: sha512-R5pcVO8Z1+pVDu8Ml3xaJCEkBiiy1VQN9za0YqH8GIi1nIqD4IzQhzY6dDzMRtdS1lyiGlucRzm8IN8wtLIXng==}
dev: true
/get-stream@3.0.0:
resolution: {integrity: sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==}
engines: {node: '>=4'}
dev: true
/get-stream@5.2.0:
resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==}
engines: {node: '>=8'}
dependencies:
pump: 3.0.0
dev: true
/get-stream@6.0.1:
resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==}
engines: {node: '>=10'}
@ -3116,6 +3474,23 @@ packages:
slash: 4.0.0
dev: true
/got@11.8.6:
resolution: {integrity: sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==}
engines: {node: '>=10.19.0'}
dependencies:
'@sindresorhus/is': 4.6.0
'@szmarczak/http-timer': 4.0.6
'@types/cacheable-request': 6.0.3
'@types/responselike': 1.0.0
cacheable-lookup: 5.0.4
cacheable-request: 7.0.4
decompress-response: 6.0.0
http2-wrapper: 1.0.3
lowercase-keys: 2.0.0
p-cancelable: 2.1.1
responselike: 2.0.1
dev: true
/graceful-fs@4.2.11:
resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
dev: true
@ -3255,6 +3630,10 @@ packages:
resolution: {integrity: sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==}
dev: true
/http-cache-semantics@4.1.1:
resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==}
dev: true
/http-errors@2.0.0:
resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==}
engines: {node: '>= 0.8'}
@ -3291,6 +3670,14 @@ packages:
engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'}
dev: true
/http2-wrapper@1.0.3:
resolution: {integrity: sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==}
engines: {node: '>=10.19.0'}
dependencies:
quick-lru: 5.1.1
resolve-alpn: 1.2.1
dev: true
/https-proxy-agent@5.0.1:
resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==}
engines: {node: '>= 6'}
@ -3456,6 +3843,11 @@ packages:
engines: {node: '>=0.12.0'}
dev: true
/is-plain-obj@1.1.0:
resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==}
engines: {node: '>=0.10.0'}
dev: true
/is-plain-obj@4.1.0:
resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==}
engines: {node: '>=12'}
@ -3482,6 +3874,11 @@ packages:
protocols: 2.0.1
dev: true
/is-stream@1.1.0:
resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==}
engines: {node: '>=0.10.0'}
dev: true
/is-stream@2.0.1:
resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==}
engines: {node: '>=8'}
@ -3526,7 +3923,6 @@ packages:
hasBin: true
dependencies:
argparse: 2.0.1
dev: true
/jsesc@2.5.2:
resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==}
@ -3534,6 +3930,10 @@ packages:
hasBin: true
dev: true
/json-buffer@3.0.1:
resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
dev: true
/json5@2.2.3:
resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
engines: {node: '>=6'}
@ -3563,6 +3963,12 @@ packages:
graceful-fs: 4.2.11
dev: true
/keyv@4.5.3:
resolution: {integrity: sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==}
dependencies:
json-buffer: 3.0.1
dev: true
/kleur@3.0.3:
resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==}
engines: {node: '>=6'}
@ -3685,11 +4091,23 @@ packages:
resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==}
dev: true
/lowercase-keys@2.0.0:
resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==}
engines: {node: '>=8'}
dev: true
/lru-cache@10.0.0:
resolution: {integrity: sha512-svTf/fzsKHffP42sujkO/Rjs37BCIsQVRCeNYIm9WN8rgT7ffoUnRtZCqU+6BqcSBdv8gwJeTz8knJpgACeQMw==}
engines: {node: 14 || >=16.14}
dev: true
/lru-cache@4.1.5:
resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==}
dependencies:
pseudomap: 1.0.2
yallist: 2.1.2
dev: true
/lru-cache@5.1.1:
resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
dependencies:
@ -4171,6 +4589,11 @@ packages:
picomatch: 2.3.1
dev: true
/mime-db@1.52.0:
resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
engines: {node: '>= 0.6'}
dev: true
/mime@1.6.0:
resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==}
engines: {node: '>=4'}
@ -4199,6 +4622,16 @@ packages:
engines: {node: '>=12'}
dev: true
/mimic-response@1.0.1:
resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==}
engines: {node: '>=4'}
dev: true
/mimic-response@3.1.0:
resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==}
engines: {node: '>=10'}
dev: true
/minimatch@3.0.8:
resolution: {integrity: sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==}
dependencies:
@ -4238,6 +4671,18 @@ packages:
yallist: 4.0.0
dev: true
/misskey-js@0.0.16:
resolution: {integrity: sha512-Qc2Hg6hRGQXkYrGlhLex6IxwcZrJlbHJLEqc/gaEe1QsPvITYcEfpvhpBuB53TrDYbWrsUpxA6NSX4ssXWV+aQ==}
dependencies:
'@swc/cli': 0.1.62(@swc/core@1.3.56)
'@swc/core': 1.3.56
eventemitter3: 5.0.1
reconnecting-websocket: 4.4.0
transitivePeerDependencies:
- '@swc/helpers'
- chokidar
dev: true
/mkdirp@1.0.4:
resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==}
engines: {node: '>=10'}
@ -4442,6 +4887,18 @@ packages:
engines: {node: '>=0.10.0'}
dev: true
/normalize-url@6.1.0:
resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==}
engines: {node: '>=10'}
dev: true
/npm-run-path@2.0.2:
resolution: {integrity: sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==}
engines: {node: '>=4'}
dependencies:
path-key: 2.0.1
dev: true
/npm-run-path@4.0.1:
resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==}
engines: {node: '>=8'}
@ -4649,6 +5106,23 @@ packages:
yargs-parser: 21.1.1
dev: true
/os-filter-obj@2.0.0:
resolution: {integrity: sha512-uksVLsqG3pVdzzPvmAHpBK0wKxYItuzZr7SziusRPoz67tGV8rL1szZ6IdeUrbqLjGDwApBtN29eEE3IqGHOjg==}
engines: {node: '>=4'}
dependencies:
arch: 2.2.0
dev: true
/p-cancelable@2.1.1:
resolution: {integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==}
engines: {node: '>=8'}
dev: true
/p-finally@1.0.0:
resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==}
engines: {node: '>=4'}
dev: true
/parse-entities@4.0.1:
resolution: {integrity: sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==}
dependencies:
@ -4696,6 +5170,11 @@ packages:
engines: {node: '>=0.10.0'}
dev: true
/path-key@2.0.1:
resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==}
engines: {node: '>=4'}
dev: true
/path-key@3.1.1:
resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
engines: {node: '>=8'}
@ -4719,6 +5198,11 @@ packages:
resolution: {integrity: sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==}
dev: true
/peek-readable@5.0.0:
resolution: {integrity: sha512-YtCKvLUOvwtMGmrniQPdO7MwPjgkFBtFIrmfSbYmYuq3tKDV/mcfAhBth1+C3ru7uXIZasc/pHnb+YDYNkkj4A==}
engines: {node: '>=14.16'}
dev: true
/perfect-debounce@1.0.0:
resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==}
dev: true
@ -5150,10 +5634,26 @@ packages:
resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==}
dev: true
/pseudomap@1.0.2:
resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==}
dev: true
/pump@3.0.0:
resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==}
dependencies:
end-of-stream: 1.4.4
once: 1.4.0
dev: true
/queue-microtask@1.2.3:
resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
dev: true
/quick-lru@5.1.1:
resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==}
engines: {node: '>=10'}
dev: true
/radix3@1.0.1:
resolution: {integrity: sha512-y+AcwZ3HcUIGc9zGsNVf5+BY/LxL+z+4h4J3/pp8jxSmy1STaCocPS3qrj4tA5ehUSzqtqK+0Aygvz/r/8vy4g==}
dev: true
@ -5204,6 +5704,13 @@ packages:
util-deprecate: 1.0.2
dev: true
/readable-web-to-node-stream@3.0.2:
resolution: {integrity: sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==}
engines: {node: '>=8'}
dependencies:
readable-stream: 3.6.2
dev: true
/readdir-glob@1.1.3:
resolution: {integrity: sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==}
dependencies:
@ -5217,6 +5724,10 @@ packages:
picomatch: 2.3.1
dev: true
/reconnecting-websocket@4.4.0:
resolution: {integrity: sha512-D2E33ceRPga0NvTDhJmphEgJ7FUYF0v4lr1ki0csq06OdlxKfugGzN0dSkxM/NfqCxYELK4KcaTOUOjTV6Dcng==}
dev: true
/redis-errors@1.2.0:
resolution: {integrity: sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==}
engines: {node: '>=4'}
@ -5359,6 +5870,10 @@ packages:
resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==}
dev: true
/resolve-alpn@1.2.1:
resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==}
dev: true
/resolve-from@5.0.0:
resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==}
engines: {node: '>=8'}
@ -5373,6 +5888,12 @@ packages:
supports-preserve-symlinks-flag: 1.0.0
dev: true
/responselike@2.0.1:
resolution: {integrity: sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==}
dependencies:
lowercase-keys: 2.0.0
dev: true
/reusify@1.0.4:
resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
@ -5457,6 +5978,18 @@ packages:
resolution: {integrity: sha512-4AsO/FrViE/iDNEPaAQlb77tf0csuq27EsVpy6ett584EcRTp6pTDLoGWVxCD77y5iU5FauOvhsI4o1APwPoSQ==}
dev: true
/semver-regex@4.0.5:
resolution: {integrity: sha512-hunMQrEy1T6Jr2uEVjrAIqjwWcQTgOAcIM52C8MY1EZSD3DDNft04XzvYKPqjED65bNVVko0YI38nYeEHCX3yw==}
engines: {node: '>=12'}
dev: true
/semver-truncate@3.0.0:
resolution: {integrity: sha512-LJWA9kSvMolR51oDE6PN3kALBNaUdkxzAGcexw8gjMA8xr5zUqK0JiR3CgARSqanYF3Z1YHvsErb1KDgh+v7Rg==}
engines: {node: '>=12'}
dependencies:
semver: 7.5.3
dev: true
/semver@6.3.0:
resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==}
hasBin: true
@ -5523,6 +6056,13 @@ packages:
resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==}
dev: true
/shebang-command@1.2.0:
resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==}
engines: {node: '>=0.10.0'}
dependencies:
shebang-regex: 1.0.0
dev: true
/shebang-command@2.0.0:
resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
engines: {node: '>=8'}
@ -5530,6 +6070,11 @@ packages:
shebang-regex: 3.0.0
dev: true
/shebang-regex@1.0.0:
resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==}
engines: {node: '>=0.10.0'}
dev: true
/shebang-regex@3.0.0:
resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
engines: {node: '>=8'}
@ -5558,6 +6103,11 @@ packages:
sax: 1.2.4
dev: true
/slash@3.0.0:
resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
engines: {node: '>=8'}
dev: true
/slash@4.0.0:
resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==}
engines: {node: '>=12'}
@ -5596,6 +6146,20 @@ packages:
- supports-color
dev: true
/sort-keys-length@1.0.1:
resolution: {integrity: sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw==}
engines: {node: '>=0.10.0'}
dependencies:
sort-keys: 1.1.2
dev: true
/sort-keys@1.1.2:
resolution: {integrity: sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==}
engines: {node: '>=0.10.0'}
dependencies:
is-plain-obj: 1.1.0
dev: true
/source-map-js@1.0.2:
resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
engines: {node: '>=0.10.0'}
@ -5675,6 +6239,11 @@ packages:
ansi-regex: 5.0.1
dev: true
/strip-eof@1.0.0:
resolution: {integrity: sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==}
engines: {node: '>=0.10.0'}
dev: true
/strip-final-newline@2.0.0:
resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==}
engines: {node: '>=6'}
@ -5691,6 +6260,19 @@ packages:
acorn: 8.10.0
dev: true
/strip-outer@2.0.0:
resolution: {integrity: sha512-A21Xsm1XzUkK0qK1ZrytDUvqsQWict2Cykhvi0fBQntGG5JSprESasEyV1EZ/4CiR5WB5KjzLTrP/bO37B0wPg==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
dev: true
/strtok3@7.0.0:
resolution: {integrity: sha512-pQ+V+nYQdC5H3Q7qBZAz/MO6lwGhoC2gOAjuouGf/VO0m7vQRh8QNMl2Uf6SwAtzZ9bOw3UIeBukEGNJl5dtXQ==}
engines: {node: '>=14.16'}
dependencies:
'@tokenizer/token': 0.3.0
peek-readable: 5.0.0
dev: true
/stylehacks@6.0.0(postcss@8.4.25):
resolution: {integrity: sha512-+UT589qhHPwz6mTlCLSt/vMNTJx8dopeJlZAlBMJPWA3ORqu6wmQY7FBXf+qD+FsqoBJODyqNxOUP3jdntFRdw==}
engines: {node: ^14 || ^16 || >=18.0}
@ -5875,6 +6457,14 @@ packages:
engines: {node: '>=0.6'}
dev: true
/token-types@5.0.1:
resolution: {integrity: sha512-Y2fmSnZjQdDb9W4w4r1tswlMHylzWIeOKpx0aZH9BgGtACHhrk3OkT52AzwcuqTRBZtvvnTjDBh8eynMulu8Vg==}
engines: {node: '>=14.16'}
dependencies:
'@tokenizer/token': 0.3.0
ieee754: 1.2.1
dev: true
/tosource@2.0.0-alpha.3:
resolution: {integrity: sha512-KAB2lrSS48y91MzFPFuDg4hLbvDiyTjOVgaK7Erw+5AmZXNq4sFRVn8r6yxSLuNs15PaokrDRpS61ERY9uZOug==}
engines: {node: '>=10'}
@ -5888,6 +6478,13 @@ packages:
resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==}
dev: true
/trim-repeated@2.0.0:
resolution: {integrity: sha512-QUHBFTJGdOwmp0tbOG505xAgOp/YliZP/6UgafFXYZ26WT1bvQmSMJUvkeVSASuJJHbqsFbynTvkd5W8RBTipg==}
engines: {node: '>=12'}
dependencies:
escape-string-regexp: 5.0.0
dev: true
/trough@2.1.0:
resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==}
dev: true
@ -6495,6 +7092,13 @@ packages:
webidl-conversions: 3.0.1
dev: true
/which@1.3.1:
resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==}
hasBin: true
dependencies:
isexe: 2.0.0
dev: true
/which@2.0.2:
resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
engines: {node: '>= 8'}
@ -6564,6 +7168,10 @@ packages:
engines: {node: '>=10'}
dev: true
/yallist@2.1.2:
resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==}
dev: true
/yallist@3.1.1:
resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
dev: true

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 199 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

View File

@ -0,0 +1,32 @@
// API用翻訳ファイル自動生成
import { locales } from "@/nuxt.config";
import * as misskey from "misskey-js";
import yaml from "js-yaml";
import path from "path";
// オブジェクト obj1 にないキーだけを、元オブジェクトにマージする関数
function mergeObjects(obj1: Record<string, any>, obj2: Record<string, any>): Record<string, any> {
for (var key in obj2) {
if (!obj1.hasOwnProperty(key)) {
obj1[key] = obj2[key];
} else if (typeof obj1[key] === 'object' && typeof obj2[key] === 'object') {
mergeObjects(obj1[key], obj2[key]);
}
}
return obj1;
}
export function genApiTranslationFiles() {
const out: Record<string, any> = {
_permissions: {},
_entities: {},
};
// 権限
misskey.permissions.forEach((permission) => {
out._permissions[permission] = 'Untranslated / 未翻訳';
});
// エンティティ(TODO)
}