Compare commits

...

148 Commits

Author SHA1 Message Date
a0c6ae2cba 12.97.0 2021-11-19 20:39:43 +09:00
9a51ae5def New Crowdin updates (#7984)
* New translations ja-JP.yml (Czech)

* New translations ja-JP.yml (Chinese Simplified)

* New translations ja-JP.yml (Japanese, Kansai)

* New translations ja-JP.yml (Esperanto)

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (Chinese Traditional)

* New translations ja-JP.yml (Ukrainian)

* New translations ja-JP.yml (Spanish)

* New translations ja-JP.yml (Russian)

* New translations ja-JP.yml (Polish)

* New translations ja-JP.yml (Dutch)

* New translations ja-JP.yml (Korean)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (Arabic)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (Esperanto)

* New translations ja-JP.yml (Esperanto)

* New translations ja-JP.yml (Esperanto)

* New translations ja-JP.yml (Esperanto)

* New translations ja-JP.yml (Chinese Simplified)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (Esperanto)

* New translations ja-JP.yml (Esperanto)

* New translations ja-JP.yml (Esperanto)

* New translations ja-JP.yml (Esperanto)

* New translations ja-JP.yml (Esperanto)

* New translations ja-JP.yml (Esperanto)

* New translations ja-JP.yml (Esperanto)
2021-11-19 20:38:12 +09:00
f7c21868fe Update .eslintrc.js 2021-11-19 19:44:27 +09:00
5d968afa74 update linr 2021-11-19 19:36:12 +09:00
b6e3f1c490 Update .eslintrc.js 2021-11-19 19:05:03 +09:00
cb4d65b5c9 feat(client): keep line breaks of translated text to improve readability 2021-11-19 19:03:25 +09:00
a902576334 fix(client): better error handling of file upload 2021-11-19 18:57:34 +09:00
1c6463e66f feat(client): collapse sub note automatically 2021-11-19 18:56:30 +09:00
1cf5198372 Update CONTRIBUTING.md 2021-11-19 14:57:07 +09:00
a9a5673069 implement dev command 2021-11-19 14:48:59 +09:00
9d67857a34 fix(client): fix plugin activate and uninstall (#7991)
* fix(client): fix plugin activate and uninstall

* Fix(client): fix package activates
2021-11-19 00:38:20 +09:00
25fde3b5eb lint: add missing semicolon 2021-11-18 23:52:51 +09:00
0e3ca41b3c improve ide support 2021-11-18 23:52:41 +09:00
318759cfa4 fix 2021-11-18 23:36:04 +09:00
73b5c12927 introduce lint for client
Resolve #7998
2021-11-18 23:32:43 +09:00
c850cef711 Update CHANGELOG.md 2021-11-18 22:12:17 +09:00
12fad68f58 limit depth of reply posts (#7979)
* limit depth of reply posts

* some tweaks

Co-authored-by: syuilo <Syuilotan@yahoo.co.jp>
2021-11-18 22:11:44 +09:00
037db7c5ef lint: warn non-null-assertion to reduce unexpected behaviour 2021-11-18 20:12:50 +09:00
ea9aeef9d8 refactor(client): refactor dialog functions to improve type inference 2021-11-18 18:45:58 +09:00
63415f1074 Merge branch 'develop' of https://github.com/misskey-dev/misskey into develop 2021-11-18 17:41:21 +09:00
dded3912f8 ci: cache node_modules 2021-11-18 17:41:19 +09:00
d35f0247a2 Update CHANGELOG.md 2021-11-18 17:40:20 +09:00
76a7b5f067 fix(client):fix search all users (#7993) 2021-11-18 17:38:58 +09:00
c864d700d2 feat(client): アカウント削除に確認ダイアログを出すように 2021-11-14 13:27:46 +09:00
50e1040f1e fix(client): fix tooltip style 2021-11-14 13:13:22 +09:00
8a40026c5c fix(client): improve error handling 2021-11-14 13:13:05 +09:00
974250da6c Fix v12.96.x Docker (#7982) 2021-11-14 10:43:19 +09:00
7042933b3b Update build.js 2021-11-14 00:07:07 +09:00
8b7f5be878 fix for lint 2021-11-13 19:10:14 +09:00
01afdc410e Update .eslintrc.js 2021-11-13 19:10:08 +09:00
7f5299cf46 12.96.1 2021-11-13 17:08:04 +09:00
ac7f04e669 add alias to improve compatibility 2021-11-13 17:02:22 +09:00
65740da979 npm scriptの互換性を修正 2021-11-13 13:01:22 +09:00
4ab773eb92 12.96.0 2021-11-13 12:23:19 +09:00
66b512af5d Update CHANGELOG.md 2021-11-13 11:51:11 +09:00
0f9a6417b0 fix(client): reaction viewer layout (#7942)
The profile picture and name should be grouped together as they belong, and
it should be clear which picture belongs to which name.
2021-11-13 11:38:26 +09:00
6a9e52d83c New Crowdin updates (#7977)
* New translations ja-JP.yml (Turkish)

* New translations ja-JP.yml (Turkish)

* New translations ja-JP.yml (Turkish)

* New translations ja-JP.yml (Turkish)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (Indonesian)

* New translations ja-JP.yml (Indonesian)

* New translations ja-JP.yml (Indonesian)
2021-11-13 00:31:35 +09:00
1161d6cae2 Update CHANGELOG.md 2021-11-12 23:54:45 +09:00
187696c973 refactor(client): improve readability 2021-11-12 23:54:02 +09:00
4b7b51d5cc refactor(client): use composition api for tooltip logic 2021-11-12 23:53:10 +09:00
0e3213ff6d enhance: show renoters (#7954)
* refactor: deduplicate renote button into component

For now the renoters tooltip just uses the reaction viewer component
with a fixed emoji symbol instead.

* chore: remove unnecessary CSS

* fix: forgot to rename variable

* enhance: use own tooltip instead of reaction viewer

* clean up style

* fix additional renoters number

* rename file to better represent content
2021-11-12 23:15:14 +09:00
9b092e918a refactoring 2021-11-12 21:29:59 +09:00
cfa38e875c refactor 2021-11-12 21:11:21 +09:00
9ea7d75aa4 feat: 通報があったときに管理者へEメールで通知されるように
Resolve #7025
2021-11-12 21:11:15 +09:00
165d272552 Update CHANGELOG.md 2021-11-12 19:54:49 +09:00
9b876b30b2 update ms to 3.0.0 2021-11-12 19:47:04 +09:00
5e82064a7d clean up 2021-11-12 19:39:46 +09:00
90fade8e72 Update CHANGELOG.md 2021-11-12 19:33:49 +09:00
c038892795 fix: mention local users in replies (#7975)
* mention local users in replies

* fix merge
2021-11-12 19:31:56 +09:00
926eb34680 fix errors 2021-11-12 19:07:59 +09:00
e6e33faefb fix errors 2021-11-12 18:54:42 +09:00
0a2e046b28 refactoring: グローバルコンポーネントを認識するように 2021-11-12 18:41:56 +09:00
36a632dc02 clean up 2021-11-12 18:20:06 +09:00
c9ce150fe8 Merge branch 'develop' of https://github.com/misskey-dev/misskey into develop 2021-11-12 15:11:29 +09:00
6496835515 viaMobileフラグ廃止
Close #7965
2021-11-12 15:11:20 +09:00
b404ce463f refactor 2021-11-12 15:08:36 +09:00
b875b0faa2 Bump cypress from 8.5.0 to 9.0.0 (#7972)
Bumps [cypress](https://github.com/cypress-io/cypress) from 8.5.0 to 9.0.0.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Changelog](https://github.com/cypress-io/cypress/blob/develop/.releaserc.base.js)
- [Commits](https://github.com/cypress-io/cypress/compare/v8.5.0...v9.0.0)

---
updated-dependencies:
- dependency-name: cypress
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-11-12 14:45:01 +09:00
4786214e2a fix bug 2021-11-12 13:39:57 +09:00
0484976afa fix e2e test 2021-11-12 12:58:11 +09:00
19cc9f7fb0 test 2021-11-12 12:43:55 +09:00
7706c38d3d fix test 2021-11-12 12:07:37 +09:00
9acc36185b Update Dockerfile 2021-11-12 11:46:17 +09:00
be89516707 add clean script 2021-11-12 11:42:47 +09:00
e5acd1afb9 typo 2021-11-12 11:03:28 +09:00
f6e7f389d6 improve lint 2021-11-12 10:58:13 +09:00
b9eaf906e7 fix lint errors 2021-11-12 10:52:10 +09:00
84df0714d8 use eslint 2021-11-12 10:35:41 +09:00
c7650846a2 add install/build scripts 2021-11-12 10:24:19 +09:00
ea97d6a028 Update CONTRIBUTING.md 2021-11-12 02:03:28 +09:00
0e4a111f81 refactoring
Resolve #7779
2021-11-12 02:02:25 +09:00
037837b551 update deps 2021-11-11 19:41:33 +09:00
c5eb3021c0 🎨 2021-11-08 03:43:14 +09:00
3b8b03d8b4 feat(client): 通知のリアクションアイコンをホバーで拡大できるように 2021-11-08 03:38:48 +09:00
1afe46b19a 🎨 2021-11-07 23:17:51 +09:00
fe281f1786 fix 2021-11-07 21:10:41 +09:00
24ef4d3da2 feat: インスタンスプロフィールレンダリング
Resolve #7788
2021-11-07 21:01:06 +09:00
68192126e6 feat: improve email validation 2021-11-07 20:16:01 +09:00
a28c515ef6 feat: make possible to configure following/followers visibility (#7959)
* feat: make possible to configure following/followers visibility

* add test

* ap

* add ap test

* set Cache-Control

* hide following/followers count
2021-11-07 18:04:32 +09:00
07526ada45 perf: delete-account処理を軽くする (#7958)
* Revert "#7892"

This reverts commit 71d9c2a53d.

* アカウント削除処理でノート削除を重複して行なわないようにする

* ドライブファイル削除時に参照しているノートを削除しないようにする

* 不要となったコードを削除する
2021-11-06 18:57:49 +09:00
71d9c2a53d #7892 2021-11-05 17:59:46 +09:00
c0144db75c Merge branch 'develop' of https://github.com/misskey-dev/misskey into develop 2021-11-05 16:19:01 +09:00
5e8c95bde8 🎨 2021-11-05 16:18:59 +09:00
8630542146 ドキュメントをmisskey-hubに移行 2021-11-05 16:18:52 +09:00
a674657bcb fix(client): Add missing localization string (#7944)
* 欠けるi18nストリングの追加

* Update ja-JP.yml

Co-authored-by: syuilo <Syuilotan@yahoo.co.jp>
2021-11-05 12:32:47 +09:00
c625a3fa5b Update abuses.vue 2021-11-05 12:32:35 +09:00
ae6f0d49c2 Update CHANGELOG.md 2021-11-05 12:22:52 +09:00
575a8bd9c8 コントロールパネルのジョブキューに個々のジョブが表示されないのを修正 (#7941) 2021-11-05 11:55:00 +09:00
3db7551ad3 fix html conversion issue with code blocks (#7943) 2021-11-05 11:54:26 +09:00
37b535df30 fix missing i18n string (#7945) 2021-11-05 10:49:50 +09:00
f30df92597 Update CHANGELOG.md 2021-11-05 10:49:30 +09:00
9b18104343 limit menu list size (#7950)
This can be an issue for example when adding an object to the room.
2021-11-05 10:48:37 +09:00
e2862ed097 enhane: 完全ログアウト時にすべてのタブがウェルカムページへ移動するように (#7928)
* enhane: unison-reloadに指定したパスに移動できるように

* null

* null

* null

* add comments
2021-11-05 00:09:13 +09:00
1c38c7010d refactor: Introduce list of MFM Functions (#7882)
* introduce list of MFM Functions

* add note
2021-11-01 23:47:13 +09:00
34ea3cf226 add some locales
Resolve #7940
2021-10-31 23:18:55 +09:00
944250f7fd 12.95.0 2021-10-31 20:21:42 +09:00
ab0253ab07 Update CHANGELOG.md 2021-10-31 20:21:04 +09:00
758e054c92 🎨 2021-10-31 20:19:49 +09:00
187b44c7f3 New Crowdin updates (#7913)
* New translations ja-JP.yml (Arabic)

* New translations ja-JP.yml (Arabic)

* New translations stream.md (Arabic)

* New translations ja-JP.yml (Arabic)

* New translations links.md (Arabic)

* New translations ja-JP.yml (Arabic)

* New translations ja-JP.yml (Arabic)

* New translations timeline.md (English)

* New translations pages.md (English)

* New translations timeline.md (English)

* New translations keyboard-shortcut.md (English)

* New translations theme.md (English)

* New translations theme.md (English)

* New translations ja-JP.yml (Arabic)

* New translations glossary.md (Arabic)

* New translations note.md (Arabic)

* New translations ja-JP.yml (Arabic)

* New translations ja-JP.yml (Arabic)

* New translations ja-JP.yml (Arabic)

* New translations note.md (Arabic)

* New translations share-page.md (Arabic)

* New translations ja-JP.yml (Arabic)

* New translations ja-JP.yml (Arabic)

* New translations ja-JP.yml (Arabic)

* New translations ja-JP.yml (Arabic)

* New translations ja-JP.yml (Arabic)

* New translations ja-JP.yml (Arabic)

* New translations ja-JP.yml (Arabic)

* New translations ja-JP.yml (Arabic)

* New translations ja-JP.yml (Arabic)

* New translations ja-JP.yml (Arabic)

* New translations ja-JP.yml (Arabic)

* New translations ja-JP.yml (Arabic)

* New translations ja-JP.yml (Arabic)

* New translations ja-JP.yml (Arabic)

* New translations ja-JP.yml (Esperanto)

* New translations share-page.md (Esperanto)

* New translations share-page.md (Esperanto)

* New translations share-page.md (Esperanto)

* New translations share-page.md (Esperanto)

* New translations share-page.md (Esperanto)

* New translations share-page.md (Esperanto)

* New translations share-page.md (Esperanto)

* New translations custom-emoji.md (Portuguese)

* New translations theme.md (Portuguese)

* New translations widgets.md (Portuguese)

* New translations ja-JP.yml (Arabic)

* New translations ja-JP.yml (Arabic)

* New translations ja-JP.yml (Arabic)

* New translations ja-JP.yml (Arabic)

* New translations ja-JP.yml (Arabic)

* New translations ja-JP.yml (Arabic)

* New translations ja-JP.yml (Arabic)

* New translations ja-JP.yml (Arabic)

* New translations ja-JP.yml (Arabic)

* New translations ja-JP.yml (Arabic)

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (German)
2021-10-31 20:17:39 +09:00
587ea5b424 Merge branch 'develop' of https://github.com/misskey-dev/misskey into develop 2021-10-31 19:37:21 +09:00
1a883f4f05 fix(client): コントロールパネルのカスタム絵文字タブが切り替わらないように見える問題を修正 2021-10-31 19:37:18 +09:00
540e6e4f99 fix(client): ページ編集時のドロップダウンメニューなどが動作しない問題を修正 2021-10-31 19:35:35 +09:00
baf3d8f3ee Update emojis.vue (#7915) 2021-10-31 19:22:19 +09:00
7a66c9b5f3 chore(client): Fix #7923
Close #7924
2021-10-31 19:19:28 +09:00
15cd563612 stop context menu handling for videos (#7927) 2021-10-31 19:12:19 +09:00
e2556189de fix: 削除したノートやユーザーがリモートから参照されると復活することがあるのを修正 (#7918)
* Fix #7557

* CHANGELOG

* Fix user

* CHANGELOG

* Tune CHANGELOG

* Tune CHANGELOG

* resolver

* Remove check

* Remove import

* CHANGELOG

* Tune

Co-authored-by: syuilo <Syuilotan@yahoo.co.jp>
2021-10-31 18:01:16 +09:00
9236a8fd6c ユーザー情報のhasUnreadChannelが常にfalseになってしまっているのを修正 (#7938) 2021-10-31 16:55:25 +09:00
303c5abfb4 feat: クライアントでログインするアカウントidを指定するクエリ(loginId=:userId) (#7929)
* feat: ログインするアカウントのIDをクエリ文字列で指定する機能

* await?

* rename
2021-10-31 16:01:50 +09:00
fc65190ef7 feat: thread mute (#7930)
* feat: thread mute

* chore: fix comment

* fix test

* fix

* refactor
2021-10-31 15:30:22 +09:00
f47a564819 fix: Fix #7895 (#7937)
* Fix #7895

* CHANGELOG
2021-10-31 15:18:46 +09:00
fa0814f939 fix e2e test 2021-10-28 22:00:38 +09:00
ddd931a0a3 fix e2e test 2021-10-28 17:12:57 +09:00
46010187c3 fix e2e test 2021-10-28 16:06:06 +09:00
877bd52ed7 Update test.yml 2021-10-28 01:34:31 +09:00
d964c5f27f remove circleci configuration 2021-10-28 01:24:55 +09:00
d35b02fa23 Improve CI 2021-10-28 01:16:13 +09:00
21ece52a9f fix test 2021-10-28 00:57:49 +09:00
c2ae160d23 refactor 2021-10-27 23:42:09 +09:00
9c74c5c5dc 要らなさそう 2021-10-26 01:11:07 +09:00
2e80cebc11 Remove CircleCI configuration 2021-10-26 01:10:27 +09:00
f418eaecf9 12.94.1 2021-10-25 03:57:00 +09:00
901436a095 fix(client): ユーザーページのナビゲーションが失敗する問題を修正 2021-10-25 03:56:20 +09:00
a905188e95 12.94.0 2021-10-25 02:34:46 +09:00
a21070c01b New Crowdin updates (#7912)
* New translations ja-JP.yml (Chinese Simplified)

* New translations stream.md (Chinese Simplified)

* New translations stream.md (Chinese Simplified)
2021-10-25 02:34:29 +09:00
5d0ee544f4 chore: clean up 2021-10-25 02:30:31 +09:00
e52a9e0a65 feat(client): Improve image viewer
Resolve #7545
Resolve #6811
Close #7808
2021-10-25 02:28:18 +09:00
67bf6ff3ce 🎨 2021-10-25 00:13:54 +09:00
000bee6327 update deps 2021-10-24 21:17:20 +09:00
19a232cad7 New Crowdin updates (#7904)
* New translations ja-JP.yml (Arabic)

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (Russian)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (Korean)

* New translations ja-JP.yml (Chinese Simplified)

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (Indonesian)

* New translations ja-JP.yml (Esperanto)
2021-10-24 21:12:32 +09:00
a744f75eb9 Update CHANGELOG.md 2021-10-24 21:11:33 +09:00
5cf07fc50f enhance: Provide Twemoji SVGs from Misskey server (#2) (#7897)
* Selfhosting Twemoji

* ちっ

* うざっ

* あ

* add test

Co-authored-by: mei23 <m@m544.net>
2021-10-24 21:10:45 +09:00
1143606bc8 Update CHANGELOG.md 2021-10-24 21:09:24 +09:00
09f4885f89 feat(client): メンションにユーザーのアバターを表示するように
Resolve #350
2021-10-24 21:02:50 +09:00
dfd92efa89 🎨 2021-10-24 20:16:55 +09:00
c3fcfad910 🎨 2021-10-24 15:05:37 +09:00
652588abed refactor client 2021-10-24 14:50:00 +09:00
2b4d5b73b9 Update tooltip.vue 2021-10-24 14:39:24 +09:00
c08d959b59 🎨 2021-10-24 14:39:08 +09:00
7783c1e0e1 🎨 2021-10-24 13:54:31 +09:00
6afa67089a Update reactions-viewer.reaction.vue (#7909) 2021-10-24 13:28:23 +09:00
26928ab407 Remove apexcharts
Resolve #7907
2021-10-24 12:32:41 +09:00
4f04421cb3 refactor clinet 2021-10-24 04:03:07 +09:00
4d1c723496 refactor clinet 2021-10-23 23:22:20 +09:00
ae5d537197 🎨 2021-10-23 22:43:42 +09:00
2d21685d22 🎨 2021-10-23 22:41:34 +09:00
d4c0d85cbc 🎨 2021-10-23 22:09:48 +09:00
781b57585b 12.93.2 2021-10-23 11:36:39 +09:00
a0b036a119 🎨 2021-10-23 11:34:41 +09:00
c6afc61c94 fix(client): ウィジェットを追加できない問題を修正
Fix #7905
2021-10-23 11:17:41 +09:00
3158 changed files with 29145 additions and 77823 deletions

View File

@ -1,49 +0,0 @@
version: 2.1
executors:
docker:
working_directory: /tmp/workspace
docker:
- image: docker:latest
jobs:
docker:
parameters:
with_deploy:
type: boolean
default: false
executor: docker
steps:
- checkout
- setup_remote_docker:
version: 19.03.13
- run:
name: Build
command: |
docker build -t misskey/misskey .
- when:
condition: <<parameters.with_deploy>>
steps:
- run:
name: Deploy
command: |
if [ "$DOCKERHUB_USERNAME$DOCKERHUB_PASSWORD" ]
then
apk update && apk add jq
docker tag misskey/misskey misskey/misskey:$(cat package.json | jq -r .version)
docker login -u $DOCKERHUB_USERNAME -p $DOCKERHUB_PASSWORD
docker push -a misskey/misskey
else
echo -e '\033[0;33mAborted deploying to Docker Hub\033[0;39m'
fi
workflows:
version: 2
docker:
jobs:
- docker:
name: auto-build
with_deploy: true
filters:
branches:
only: master

View File

@ -1,12 +0,0 @@
url: 'http://misskey.local'
port: 8080
db:
host: localhost
port: 5432
db: test-misskey
user: postgres
pass: ''
redis:
host: localhost
port: 6379
id: aid

View File

@ -1,12 +0,0 @@
url: 'http://misskey.local'
port: 8080
db:
host: localhost
port: 5432
db: test-misskey
user: postgres
pass: ''
redis:
host: localhost
port: 6379
id: aid

View File

@ -1,13 +0,0 @@
{
"parserOptions": {
"parser": "@typescript-eslint/parser"
},
"extends": [
"eslint:recommended"
],
"rules": {
"no-console": 0,
"no-unused-vars": 0,
"no-empty": 0
}
}

38
.github/CODEOWNERS vendored
View File

@ -1,38 +0,0 @@
# PATH OWNERS
/.autogen/ @acid-chicken
/.circleci/ @syuilo @acid-chicken
/.config/ @syuilo @AyaMorisawa @mei23 @acid-chicken @rinsuki
# /.config/mongo_initdb_example.js @khws4v1
/.github/ @syuilo @AyaMorisawa @acid-chicken
/.vscode/ @acid-chicken
/assets/ @syuilo # @tamaina
/docs/ @syuilo
/docs/*.en.md @AyaMorisawa # @skid9000
# /docs/*.fr.md @BoFFire
# /docs/docker.*.md @khws4v1
/locales/ @syuilo
/src/ @syuilo @AyaMorisawa @mei23 @acid-chicken @rinsuki
# /src/crypto_key.cc @akihikodaki
# /src/crypto_key.d.ts @akihikodaki
/.dockerignore @syuilo # @khws4v1
/.editorconfig @syuilo @AyaMorisawa
/.eslintrc @syuilo
/.gitattributes @syuilo
/.gitignore @syuilo
/.npmrc @syuilo
/.vsls.json @AyaMorisawa
/CHANGELOG.md @syuilo
/CODE_OF_CONDUCT.md @syuilo
/CONTRIBUTING.md @syuilo
/Dockerfile @syuilo @AyaMorisawa @acid-chicken # @khws4v1
/LICENSE @syuilo
/README.md @syuilo @AyaMorisawa @acid-chicken # @nikhiljha
# /binding.gyp @akihikodaki
/crowdin.yml @syuilo
# /docker-compose.yml @khws4v1
/gulpfile.ts @syuilo @AyaMorisawa
/jsconfig.json @syuilo @AyaMorisawa
/package.json @syuilo @AyaMorisawa
/tsconfig.json @syuilo @AyaMorisawa
/tslint.json @syuilo @AyaMorisawa
/webpack.config.ts @syuilo @AyaMorisawa

View File

@ -1,5 +1,8 @@
url: 'http://misskey.local'
# ローカルでテストするときにポートを被らないようにするためデフォルトのものとは変える(以下同じ)
port: 61812
db:
host: localhost
port: 54312

25
.github/workflows/lint.yml vendored Normal file
View File

@ -0,0 +1,25 @@
name: Lint
on:
push:
branches:
- master
- develop
pull_request:
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
submodules: true
- uses: actions/setup-node@v1
with:
node-version: 12.x
- uses: actions/cache@v2
with:
path: '**/node_modules'
key: ${{ runner.os }}-modules-${{ hashFiles('**/yarn.lock') }}
- run: yarn install
- run: yarn lint

View File

@ -1,59 +0,0 @@
name: Node.js CI
on:
push:
branches:
- master
- develop
pull_request:
jobs:
build_and_test:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [14.x, 16.x]
services:
postgres:
image: postgres:12.2-alpine
ports:
- 54312:5432
env:
POSTGRES_DB: test-misskey
POSTGRES_HOST_AUTH_METHOD: trust
redis:
image: redis:4.0-alpine
ports:
- 56312:6379
steps:
- uses: actions/checkout@v2
with:
submodules: true
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node-version }}
- name: Install dependencies
run: yarn install
- name: Check yarn.lock
run: git diff --exit-code yarn.lock
- name: Copy Configure
run: cp test/test.yml .config
- name: Build
run: yarn build
- name: Test
run: yarn test
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
submodules: true
- uses: actions/setup-node@v1
with:
node-version: 12.x
- run: yarn install
- run: yarn lint

91
.github/workflows/test.yml vendored Normal file
View File

@ -0,0 +1,91 @@
name: Test
on:
push:
branches:
- master
- develop
pull_request:
jobs:
mocha:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [16.x]
services:
postgres:
image: postgres:12.2-alpine
ports:
- 54312:5432
env:
POSTGRES_DB: test-misskey
POSTGRES_HOST_AUTH_METHOD: trust
redis:
image: redis:4.0-alpine
ports:
- 56312:6379
steps:
- uses: actions/checkout@v2
with:
submodules: true
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node-version }}
- name: Install dependencies
run: yarn install
- name: Check yarn.lock
run: git diff --exit-code yarn.lock
- name: Copy Configure
run: cp .github/misskey/test.yml .config
- name: Build
run: yarn build
- name: Test
run: yarn mocha
e2e:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [16.x]
services:
postgres:
image: postgres:12.2-alpine
ports:
- 54312:5432
env:
POSTGRES_DB: test-misskey
POSTGRES_HOST_AUTH_METHOD: trust
redis:
image: redis:4.0-alpine
ports:
- 56312:6379
steps:
- uses: actions/checkout@v2
with:
submodules: true
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node-version }}
- uses: actions/cache@v2
with:
path: '**/node_modules'
key: ${{ runner.os }}-modules-${{ hashFiles('**/yarn.lock') }}
- name: Install dependencies
run: yarn install
- name: Check yarn.lock
run: git diff --exit-code yarn.lock
- name: Copy Configure
run: cp .github/misskey/test.yml .config
- name: Build
run: yarn build
- name: Test
run: yarn e2e

4
.gitignore vendored
View File

@ -6,7 +6,7 @@
/.idea
# Node.js
/node_modules
node_modules
report.*.json
# Cypress
@ -20,7 +20,7 @@ cypress/videos
# misskey
/build
/built
built
/data
/.cache-loader
/db

View File

@ -1,5 +0,0 @@
{
"ignoredFiles": [
"test/resources/*"
]
}

View File

@ -3,7 +3,7 @@
"editorconfig.editorconfig",
"eg2.vscode-npm-script",
"ms-vscode.typescript-javascript-grammar",
"ms-vscode.vscode-typescript-tslint-plugin",
"dbaeumer.vscode-eslint",
"johnsoncodehk.volar",
"sysoev.language-stylus"
]

View File

@ -7,6 +7,81 @@
-->
## 12.97.0 (2021/11/19)
### Improvements
- クライアント: 返信先やRenoteに対しても自動折りたたみされるように
- クライアント: 長いスレッドの表示を改善
- クライアント: 翻訳にもMFMを適用し、元の文章の改行などを保持するように
- クライアント: アカウント削除に確認ダイアログを出すように
### Bugfixes
- クライアント: ユーザー検索の「全て」が動作しない問題を修正
- クライアント: リアクション一覧、Renote一覧ツールチップのスタイルを修正
## 12.96.1 (2021/11/13)
### Improvements
- npm scriptの互換性を向上
## 12.96.0 (2021/11/13)
### Improvements
- フォロー/フォロワーを非公開にできるように
- インスタンスプロフィールレンダリング ready
- 通知のリアクションアイコンをホバーで拡大できるように
- RenoteボタンをホバーでRenoteしたユーザー一覧を表示するように
- 返信の際にメンションを含めるように
- 通報があったときに管理者へEメールで通知されるように
- メールアドレスのバリデーションを強化
### Bugfixes
- アカウント削除処理があると高負荷になる問題を修正
- クライアント: 長いメニューが画面からはみ出す問題を修正
- クライアント: コントロールパネルのジョブキューに個々のジョブが表示されないのを修正
- クライアント: fix missing i18n string
- fix html conversion issue with code blocks
### Changes
- ノートにモバイルからの投稿か否かの情報を含めないように
## 12.95.0 (2021/10/31)
### Improvements
- スレッドミュート機能
### Bugfixes
- リレー向けのActivityが一部実装で除外されてしまうことがあるのを修正
- 削除したノートやユーザーがリモートから参照されると復活することがあるのを修正
- クライアント: ページ編集時のドロップダウンメニューなどが動作しない問題を修正
- クライアント: コントロールパネルのカスタム絵文字タブが切り替わらないように見える問題を修正
- API: ユーザー情報の hasUnreadChannel が常に false になっている問題を修正
## 12.94.1 (2021/10/25)
### Improvements
### Bugfixes
- クライアント: ユーザーページのナビゲーションが失敗する問題を修正
## 12.94.0 (2021/10/25)
### Improvements
- クライアント: 画像ビューアを強化
- クライアント: メンションにユーザーのアバターを表示するように
- クライアント: デザインの調整
- クライアント: twemojiをセルフホスティングするように
### Bugfixes
- クライアント: CWで画像が隠されたとき、画像の高さがおかしいことになる問題を修正
### NOTE
- このバージョンから、iOS 15未満のサポートがされなくなります。対象のバージョンをお使いの方は、iOSのバージョンアップを行ってください。
## 12.93.2 (2021/10/23)
### Bugfixes
- クライアント: ウィジェットを追加できない問題を修正
## 12.93.1 (2021/10/23)
### Bugfixes

View File

@ -49,9 +49,10 @@ If your language is not listed in Crowdin, please open an issue.
![Crowdin](https://d322cqt584bo4o.cloudfront.net/misskey/localized.svg)
## Documentation
* Documents for instance admins are located in [`/docs`](/docs).
* Documents for end users are located in [`/src/docs`](/src/docs).
## Development
During development, it is useful to use the `npm run dev` command.
This command monitors the server-side and client-side source files and automatically builds them if they are modified.
In addition, it will also automatically start the Misskey server process.
## Testing
- Test codes are located in [`/test`](/test).
@ -180,7 +181,7 @@ MongoDBは`null`で返してきてたので、その感覚で`if (x === null)`
### Migration作成方法
```
npx ts-node ./node_modules/typeorm/cli.js migration:generate -n 変更の名前
npx ts-node ./node_modules/typeorm/cli.js migration:generate -n 変更の名前 -o
```
作成されたスクリプトは不必要な変更を含むため除去してください。

View File

@ -26,6 +26,9 @@ ENTRYPOINT ["/sbin/tini", "--"]
COPY --from=builder /misskey/node_modules ./node_modules
COPY --from=builder /misskey/built ./built
COPY --from=builder /misskey/packages/backend/node_modules ./packages/backend/node_modules
COPY --from=builder /misskey/packages/backend/built ./packages/backend/built
COPY --from=builder /misskey/packages/client/node_modules ./packages/client/node_modules
COPY . ./
CMD ["npm", "run", "migrateandstart"]

View File

@ -4,7 +4,6 @@
<div align="center">
[![CircleCI](https://img.shields.io/circleci/project/github/misskey-dev/misskey.svg?style=for-the-badge&logo=circleci)](https://circleci.com/gh/misskey-dev/misskey)
[![Dependencies](https://img.shields.io/david/misskey-dev/misskey.svg?style=for-the-badge&logo=npm)](https://david-dm.org/misskey-dev/misskey)
[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=for-the-badge&logo=github)](http://makeapullrequest.com)
[![Awesome Humane Tech](https://raw.githubusercontent.com/humanetech-community/awesome-humane-tech/main/humane-tech-badge.svg?sanitize=true)](https://github.com/humanetech-community/awesome-humane-tech)

View File

@ -2,6 +2,3 @@ files:
- source: /locales/ja-JP.yml
translation: /locales/%locale%.yml
update_option: update_as_unapproved
- source: /src/docs/ja-JP/**/*.md
translation: /src/docs/%locale%/**/%original_file_name%
update_option: update_as_unapproved

View File

@ -1,3 +1,3 @@
{
"baseUrl": "http://localhost"
"baseUrl": "http://localhost:61812"
}

View File

@ -128,7 +128,8 @@ describe('After user signup', () => {
cy.get('[data-cy-signin-username] input').type('alice');
cy.get('[data-cy-signin-password] input').type('alice1234{enter}');
cy.contains('アカウントが凍結されています');
// TODO: cypressにブラウザの言語指定できる機能が実装され次第英語のみテストするようにする
cy.contains(/アカウントが凍結されています|This account has been suspended due to/gi);
});
});

62
gulpfile.js Normal file
View File

@ -0,0 +1,62 @@
/**
* Gulp tasks
*/
const fs = require('fs');
const gulp = require('gulp');
const replace = require('gulp-replace');
const terser = require('gulp-terser');
const cssnano = require('gulp-cssnano');
const locales = require('./locales');
const meta = require('./package.json');
gulp.task('copy:backend:views', () =>
gulp.src('./packages/backend/src/server/web/views/**/*').pipe(gulp.dest('./packages/backend/built/server/web/views'))
);
gulp.task('copy:client:fonts', () =>
gulp.src('./packages/client/node_modules/three/examples/fonts/**/*').pipe(gulp.dest('./built/_client_dist_/fonts/'))
);
gulp.task('copy:client:locales', cb => {
fs.mkdirSync('./built/_client_dist_/locales', { recursive: true });
const v = { '_version_': meta.version };
for (const [lang, locale] of Object.entries(locales)) {
fs.writeFileSync(`./built/_client_dist_/locales/${lang}.${meta.version}.json`, JSON.stringify({ ...locale, ...v }), 'utf-8');
}
cb();
});
gulp.task('build:backend:script', () => {
return gulp.src(['./packages/backend/src/server/web/boot.js', './packages/backend/src/server/web/bios.js', './packages/backend/src/server/web/cli.js'])
.pipe(replace('VERSION', JSON.stringify(meta.version)))
.pipe(replace('LANGS', JSON.stringify(Object.keys(locales))))
.pipe(terser({
toplevel: true
}))
.pipe(gulp.dest('./packages/backend/built/server/web/'));
});
gulp.task('build:backend:style', () => {
return gulp.src(['./packages/backend/src/server/web/style.css', './packages/backend/src/server/web/bios.css', './packages/backend/src/server/web/cli.css'])
.pipe(cssnano({
zindex: false
}))
.pipe(gulp.dest('./packages/backend/built/server/web/'));
});
gulp.task('build', gulp.parallel(
'copy:client:locales', 'copy:backend:views', 'build:backend:script', 'build:backend:style', 'copy:client:fonts'
));
gulp.task('default', gulp.task('build'));
gulp.task('watch', () => {
gulp.watch([
'./packages/*/src/**/*',
], { ignoreInitial: false }, gulp.task('build'));
});

View File

@ -1,80 +0,0 @@
/**
* Gulp tasks
*/
import * as fs from 'fs';
import * as gulp from 'gulp';
import rimraf from 'rimraf';
const replace = require('gulp-replace');
const terser = require('gulp-terser');
const cssnano = require('gulp-cssnano');
const locales: { [x: string]: any } = require('./locales');
const meta = require('./package.json');
gulp.task('build:copy:views', () =>
gulp.src('./src/server/web/views/**/*').pipe(gulp.dest('./built/server/web/views'))
);
gulp.task('build:copy:fonts', () =>
gulp.src('./node_modules/three/examples/fonts/**/*').pipe(gulp.dest('./built/assets/fonts/'))
);
gulp.task('build:copy:locales', cb => {
fs.mkdirSync('./built/assets/locales', { recursive: true });
const v = { '_version_': meta.version };
for (const [lang, locale] of Object.entries(locales)) {
fs.writeFileSync(`./built/assets/locales/${lang}.${meta.version}.json`, JSON.stringify({ ...locale, ...v }), 'utf-8');
}
cb();
});
gulp.task('build:client:script', () => {
return gulp.src(['./src/server/web/boot.js', './src/server/web/bios.js', './src/server/web/cli.js'])
.pipe(replace('VERSION', JSON.stringify(meta.version)))
.pipe(replace('LANGS', JSON.stringify(Object.keys(locales))))
.pipe(terser({
toplevel: true
}))
.pipe(gulp.dest('./built/server/web/'));
});
gulp.task('build:client:style', () => {
return gulp.src(['./src/server/web/style.css', './src/server/web/bios.css', './src/server/web/cli.css'])
.pipe(cssnano({
zindex: false
}))
.pipe(gulp.dest('./built/server/web/'));
});
gulp.task('build:copy', gulp.parallel('build:copy:locales', 'build:copy:views', 'build:client:script', 'build:client:style', 'build:copy:fonts', () =>
gulp.src([
'./src/emojilist.json',
'./src/**/assets/**/*',
'!./src/client/assets/**/*'
]).pipe(gulp.dest('./built/'))
));
gulp.task('clean', cb =>
rimraf('./built', cb)
);
gulp.task('cleanall', gulp.parallel('clean', cb =>
rimraf('./node_modules', cb)
));
gulp.task('build', gulp.parallel(
'build:copy',
));
gulp.task('default', gulp.task('build'));
gulp.task('watch', () => {
gulp.watch([
'./src/**/*',
'!./src/client/**/*'
], { ignoreInitial: false }, gulp.task('build'));
});

View File

@ -1,17 +0,0 @@
/*
import * as fs from 'fs';
if (fs.existsSync('./built')) {
import('./built/index.js').then(built => built());
} else {
console.log('Built code is not found. Probably an error occurred during a build or you just forgot to build.');
}
*/
const fs = require('fs');
if (fs.existsSync('./built')) {
require('./built').default();
} else {
console.log('Built code is not found. Probably an error occurred during a build or you just forgot to build.');
}

File diff suppressed because it is too large Load Diff

View File

@ -52,6 +52,7 @@ searchUser: "Vyhledat uživatele"
reply: "Odpovědět"
loadMore: "Zobrazit více"
showMore: "Zobrazit více"
youGotNewFollower: "Máte nového následovníka"
mention: "Zmínění"
mentions: "Zmínění"
importAndExport: "Import a export"
@ -163,6 +164,7 @@ clearQueue: "Vyčistit frontu"
clearQueueConfirmTitle: "Jste si jisti že zrušit všechny úlohy ve frontě?"
clearCachedFiles: "Vyprázdnit mezipaměť"
blockedInstances: "Blokované instance"
noUsers: "Žádní uživatelé"
editProfile: "Upravit můj profil"
pinLimitExceeded: "Nemůžete připnout další poznámky."
intro: "Instalace Misskey byla dokončena! Prosím vytvořte admina."
@ -170,6 +172,7 @@ done: "Hotovo"
processing: "Zpracovávám"
preview: "Náhled"
default: "Výchozí"
noCustomEmojis: "Bez Emoji"
blocked: "Blokováno"
suspended: "Suspendováno"
all: "Vše"
@ -402,6 +405,9 @@ smtpPass: "Heslo"
clearCache: "Vyprázdnit mezipaměť"
info: "Informace"
user: "Uživatelé"
_email:
_follow:
title: "Máte nového následovníka"
_mfm:
mention: "Zmínění"
quote: "Citovat"
@ -464,6 +470,7 @@ _pages:
types:
array: "Seznamy"
_notification:
youWereFollowed: "Máte nového následovníka"
youWereInvitedToGroup: "Pozvat do skupiny"
_types:
follow: "Sledovaní"

View File

@ -620,6 +620,8 @@ reportAbuse: "Melden"
reportAbuseOf: "{name} melden"
fillAbuseReportDescription: "Bitte gib zusätzliche Informationen zu dieser Meldung an. Falls es sich um eine spezielle Notiz handelt, bitte gib dessen URL an."
abuseReported: "Die Meldung wurde versendet. Vielen Dank."
reporteeOrigin: "Herkunft des Gemeldeten"
reporterOrigin: "Herkunft des Meldenden"
send: "Senden"
abuseMarkAsResolved: "Meldung als gelöst markieren"
openInNewTab: "In neuem Tab öffnen"
@ -795,10 +797,27 @@ itsOff: "Ausgeschaltet"
emailRequiredForSignup: "Angaben einer Email-Adresse als benötigt markieren"
unread: "Ungelesen"
filter: "Filter"
controllPanel: "Systemsteuerung"
controlPanel: "Systemsteuerung"
manageAccounts: "Benutzerkonten verwalten"
makeReactionsPublic: "Reaktionsverlauf veröffentlichen"
makeReactionsPublicDescription: "Jeder wird die Liste deiner gesendeten Reaktionen einsehen können."
classic: "Classic"
muteThread: "Thread stummschalten"
unmuteThread: "Threadstummschaltung aufheben"
ffVisibility: "Sichtbarkeit von Gefolgten/Followern"
ffVisibilityDescription: "Konfiguriere wer sehen kann, wem du folgst sowie wer dir folgt."
continueThread: "Weiteren Threadverlauf anzeigen"
deleteAccountConfirm: "Dein Benutzerkonto wird unwiderruflich gelöscht. Trotzdem fortfahren?"
_emailUnavailable:
used: "Diese Email-Adresse wird bereits verwendet"
format: "Das Format dieser Email-Adresse ist ungültig"
disposable: "Wegwerf-Email-Adressen können nicht verwendet werden"
mx: "Dieser Email-Server ist ungültig"
smtp: "Dieser Email-Server antwortet nicht"
_ffVisibility:
public: "Öffentlich"
followers: "Nur für Follower sichtbar"
private: "Privat"
_signup:
almostThere: "Fast geschafft"
emailAddressInfo: "Bitte gib deine Email-Adresse ein."
@ -810,13 +829,6 @@ _accountDelete:
requestAccountDelete: "Löschung des Benutzerkontos anfordern"
started: "Löschung wurde eingeleitet."
inProgress: "Löschung in Bearbeitung"
_docs:
continueReading: "Mehr lesen"
features: "Funktionen"
generalTopics: "Allgemeine Themen"
advancedTopics: "Erweiterte Themen"
admin: "Administration"
translateWarn: "Dies ist ein übersetztes Dokument. Es kann zu Unterschieden mit dem Original kommen."
_ad:
back: "Zurück"
reduceFrequencyOfThisAd: "Diese Werbung weniger anzeigen"

View File

@ -620,6 +620,8 @@ reportAbuse: "Report"
reportAbuseOf: "Report {name}"
fillAbuseReportDescription: "Please fill in details regarding this report. If it is about a specific note, please include its URL."
abuseReported: "Your report has been sent. Thank you very much."
reporteeOrigin: "Reportee Origin"
reporterOrigin: "Reporter Origin"
send: "Send"
abuseMarkAsResolved: "Mark report as resolved"
openInNewTab: "Open in new tab"
@ -795,10 +797,27 @@ itsOff: "Disabled"
emailRequiredForSignup: "Require email address for sign-up"
unread: "Unread"
filter: "Filter"
controllPanel: "Control Panel"
controlPanel: "Control Panel"
manageAccounts: "Manage Accounts"
makeReactionsPublic: "Set reaction history to public"
makeReactionsPublicDescription: "This will make the list of all your past reactions publicly visible."
classic: "Classic"
muteThread: "Mute thread"
unmuteThread: "Unmute thread"
ffVisibility: "Follows/Followers Visibility"
ffVisibilityDescription: "Allows you to configure who can see who you follow and who follows you."
continueThread: "View thread continuation"
deleteAccountConfirm: "This will irreversibly delete your account. Proceed?"
_emailUnavailable:
used: "This email address is already being used"
format: "The format of this email address is invalid"
disposable: "Disposable email addresses may not be used"
mx: "This email server is invalid"
smtp: "This email server is not responding"
_ffVisibility:
public: "Public"
followers: "Visible to followers only"
private: "Private"
_signup:
almostThere: "Almost there"
emailAddressInfo: "Please enter your email address."
@ -810,13 +829,6 @@ _accountDelete:
requestAccountDelete: "Request account deletion"
started: "Deletion has been started."
inProgress: "Deletion is currently in progress"
_docs:
continueReading: "Read more"
features: "Features"
generalTopics: "General topics"
advancedTopics: "Advanced Topics"
admin: "Administration"
translateWarn: "This is a translated document. Its contents may differ from the original."
_ad:
back: "Back"
reduceFrequencyOfThisAd: "Show this ad less"

View File

@ -2,7 +2,7 @@
_lang_: "Esperanto"
headlineMisskey: "Jen la reto konektata de notoj"
introMisskey: "Bonvenon! Misskey estas malfermitkoda malcentraliza etbloga servo.\nKreu \"noto\"n por paroli vian penson al iuj ĉirkaŭ vi. 📡\nLa funkcion \"reago\" ebligas esprimi rapide vian senton pri ies noto en Fediverso. 👍\nBonvole esploru novan mondon. 🚀"
monthAndDay: "{{day}}/{{month}}"
monthAndDay: "La {day}a de la {month}a"
search: "Serĉi"
notifications: "Sciigoj"
username: "Uzantnomo"
@ -23,7 +23,7 @@ otherSettings: "Aliaj agordoj"
openInWindow: "Malfermi en fenestro"
profile: "Profilo"
timeline: "Templinio"
noAccountDescription: "Neniu priskribo"
noAccountDescription: "Neniu sinprezento"
login: "Ensaluti"
loggingIn: "Ensalutado…"
logout: "Elsaluti"
@ -36,15 +36,15 @@ favorite: "Preferi"
favorites: "Preferaĵoj"
unfavorite: "Malpreferi"
favorited: "Aldonita al via listo de preferaĵoj."
alreadyFavorited: "Ĝi jam estis aldonita al via listo de preferaĵoj."
cantFavorite: "Ne aldonita al via listo de preferaĵoj."
alreadyFavorited: "Jam aldonita al via listo de preferaĵoj."
cantFavorite: "Ĝi ne povis esti aldonita al via listo de preferaĵoj."
pin: "Alpingli"
unpin: "Depingli"
copyContent: "Kopii enhavon"
copyLink: "Kopii ligilon"
delete: "Forviŝi"
deleteAndEdit: "Redakti foriginte"
deleteAndEditConfirm: "Ĉu vi certas, ke vi volas forigi kaj redakti la noton? Tio forviŝos reagojn, plusendojn, kaj respondojn ĉiujn de ĝi."
deleteAndEdit: "Forviŝi kaj redakti"
deleteAndEditConfirm: "Ĉu vi certas ke vi volas redakti forviŝinte la noton? Tio forviŝos ankaŭ ĉiujn reagojn, plusendojn, kaj respondojn apartenantajn al ĝi."
addToList: "Aldoni al listo"
sendMessage: "Sendi mesaĝon"
copyUsername: "Kopii uzantnomon"
@ -56,7 +56,7 @@ youGotNewFollower: "eksekvis vin"
receiveFollowRequest: "Peto de sekvado estas ricevita"
followRequestAccepted: "La peto de sekvado akceptita"
mention: "Mencioj"
mentions: "Al vi"
mentions: "Mencioj"
directNotes: "Rekte senditaj"
importAndExport: "Importi/eksporti"
import: "Importi"
@ -79,11 +79,13 @@ somethingHappened: "Problemo okazis"
retry: "Provi denove"
enterListName: "Entajpu nomon de la listo"
privacy: "Privateco"
makeFollowManuallyApprove: "Eksekvi vin devas peti al vi"
defaultNoteVisibility: "Implicitaĵo de videbleco"
follow: "Sekvi"
followRequest: "Peti de sekvado"
followRequests: "Petoj de sekvado"
unfollow: "Ne plu sekvi"
followRequestPending: "Atendado akcepti vian peton de eksekvado"
enterEmoji: "Entajpu emoĵion"
renote: "Plusendi la noton"
unrenote: "Malfari plusendadon"
@ -98,11 +100,12 @@ clickToShow: "Klaku por malkaŝu"
sensitive: "Enhavo ne estas deca por laborejo (NSFW)"
add: "Aldoni"
reaction: "Reagoj"
rememberNoteVisibility: "Rememoru videblecon de la noto laste sendita "
reactionSettingDescription: "Agordi la reagojn kiujn vi volas prefere montrigi ĉe la elektilo de reagoj"
rememberNoteVisibility: "Rememori la agordon de videbleco de la noto laste sendita "
attachCancel: "Deigi aldonaĵon"
markAsSensitive: "Troviĝi NSFW"
unmarkAsSensitive: "Ne troviĝi NSFW"
enterFileName: "Entajpu nomon de dosiero"
enterFileName: "Entajpu nomon de la dosiero"
mute: "Silentigi"
unmute: "Malsilentigi"
block: "Bloki"
@ -127,7 +130,7 @@ addEmoji: "Aldoni emoĵion"
settingGuide: "Agordaj rekomendoj"
cacheRemoteFiles: "Stapli transajn dosierojn"
flagAsBot: "Agordo por robota uzanto"
flagAsCat: "Agordo de katiĝa uzanto"
flagAsCat: "Agi kat-iĝon"
addAccount: "Aldoni konton"
showOnRemote: "Vidi ĉe la surloka nodo"
general: "Ĝenerala"
@ -141,13 +144,14 @@ host: "Gastigo"
selectUser: "Elekti uzanton"
recipient: "Ricevonto"
annotation: "Komentarioj"
federation: "Kunfederaĵo"
federation: "Federaĵo"
instances: "Nodoj"
latestRequestSentAt: "Lastatempa sendo"
latestRequestReceivedAt: "Lastatempa ricevo"
latestStatus: "Laŭstato"
perHour: "Po horo"
perDay: "Po tago"
charts: "Diagramoj"
perHour: "por horo"
perDay: "por tago"
blockThisInstance: "Bloki la nodon"
operations: "Agoj"
software: "Programaro"
@ -156,36 +160,37 @@ metadata: "Metadatumoj"
withNFiles: "{n} dosiero(j)"
monitor: "Monitoro"
network: "Reto"
disk: "Diskilo"
disk: "Disko"
instanceInfo: "Informoj pri la nodo"
statistics: "Statistikoj"
clearCachedFiles: "Malplenigi la staplon"
clearCachedFilesConfirm: "Ĉu vi certas, ke vi volas forviŝi ĉiujn transajn dosierojn en la staplo?"
blockedInstances: "Blokitaj nodoj"
muteAndBlock: "Silentigitoj kaj blokitoj"
mutedUsers: "Silentigitaj uzantoj"
blockedUsers: "Blokitaj uzantoj"
noUsers: "Sen uzantoj"
noUsers: "Neniu uzanto"
editProfile: "Redakti profilon"
noteDeleteConfirm: "Ĉu vi certas ke vi volas forviŝi la noton?"
pinLimitExceeded: "Vi povas alpingli ne pli noton."
pinLimitExceeded: "Vi ne povas alpingli pli"
done: "Fini"
processing: "Prilaborado…"
preview: "Antaŭmontro"
default: "Defaŭlta"
noCustomEmojis: "Neniu emoĵio"
federating: "Nun kunfederanta"
blocked: "Blokita"
suspended: "Suspendita"
noJobs: "Neniu laboro"
federating: "Federantaj"
blocked: "Blokitaj"
suspended: "Suspenditaj"
all: "Ĉiuj"
subscribing: "Abonata"
publishing: "Al kiu dissendas"
subscribing: "Abonitaj"
publishing: "Abonintaj"
notResponding: "Alvokato ne disponeblas"
instanceFollowing: "Sekvatoj en la nodo"
instanceFollowers: "Sekvantoj el la nodo"
instanceUsers: "Uzantoj de tiu ĉi nodo"
instanceUsers: "Uzantoj de la nodo"
changePassword: "Ŝanĝi pasvorton"
security: "Sekureco"
retypedNotMatch: "Enigitoj ne estas konformaj."
retypedNotMatch: "La enigitoj ne estas konformaj."
currentPassword: "Aktuala pasvorto"
newPassword: "Nova pasvorto"
newPasswordRetype: "Reentajpu la novan pasvorton"
@ -193,38 +198,47 @@ attachFile: "Aldoni dosieron"
more: "Plu!"
featured: "Maksimumi"
usernameOrUserId: "Uzantnomo aŭ identigilo de uzanto"
noSuchUser: "Neniuj uzantoj trovitaj."
noSuchUser: "Neniuj uzantoj trovitaj"
lookup: "Informpeti"
announcements: "Novaĵoj"
imageUrl: "URL de bildo"
imageUrl: "URL de la bildo"
remove: "Forigi"
removed: "Forviŝis"
removed: "Forigita"
removeAreYouSure: "Ĉu vi certas ke vi volas forigi \"{x}\"'(o)n?"
deleteAreYouSure: "Ĉu vi certas ke vi volas forviŝi \"{x}\"'(o)n?"
resetAreYouSure: "Ĉu vi certas restarigi?"
saved: "Konservita"
messaging: "Retbabili"
upload: "Alŝuti"
fromDrive: "De la disko"
fromUrl: "De URL"
uploadFromUrl: "Alŝuti de URL"
uploadFromUrlDescription: "URL de dosiero kiun vi volas alŝuti"
uploadFromUrlDescription: "URL de la dosiero kiun vi volas alŝuti"
uploadFromUrlRequested: "La alŝutado estis patita"
explore: "Esplori"
games: "Miskiaj Ludoj"
messageRead: "Legita"
noMoreHistory: "Ne plu de la historio"
startMessaging: "Komenci babiladon"
nUsersRead: "Legita de {n} homoj"
agreeTo: "Mi akceptas {0}'(o)n"
tos: "Kondiĉoj de uzado"
start: "Komenciĝi"
home: "Hejma"
remoteUserCaution: "Ĉi tiuj infomoj ne estas tute ekzaktaj pro transa uzanto."
remoteUserCaution: "Ĉi tiuj infomoj estas ne tute ekzaktaj pro transa uzanto."
activity: "Aktiveco"
images: "Bildoj"
birthday: "Naskiĝdato"
yearsOld: "{age} jaroj aĝa"
registeredDate: "Dato de registriĝo"
location: "Loko"
theme: "Koloraro"
themeForLightMode: "Luma kolararo en la luma modo"
themeForDarkMode: "Malluma kolararo en la malluma modo"
light: "Luma"
dark: "Malluma"
lightThemes: "Luma koloraro"
darkThemes: "Malluma koloraro"
drive: "Disko"
fileName: "Dosiernomo"
selectFile: "Elekti dosieron"
@ -240,15 +254,18 @@ addFile: "Aldoni dosieron"
emptyDrive: "La disko malplenas"
emptyFolder: "La dosierujo malplenas"
unableToDelete: "Ne forigebla"
inputNewFileName: "Entajpu nova nomon de la dosiero"
inputNewFolderName: "Entajpu nova nomon de la dosierujo"
inputNewFileName: "Entajpu novan nomon de la dosiero"
inputNewDescription: "Entajpu novan priskribon"
inputNewFolderName: "Entajpu novan nomon de la dosierujo"
hasChildFilesOrFolders: "La dosierujo ne estas forviŝebla, ĉar ĝi ne malplenas."
copyUrl: "Kopii URL"
rename: "Alinomi"
avatar: "Ikono"
banner: "Standardo"
nsfw: "Enhavo ne estas deca por laborejo (NSFW)"
disconnectedFromServer: "Malkonektita de servilo"
reload: "Reŝargi"
doNothing: "Ignori"
watch: "Observi"
unwatch: "Malobservi"
accept: "Permesi"
@ -265,6 +282,7 @@ dayX: "{day}a"
monthX: "La {month}a monato"
yearX: "La jaro {year}"
pages: "Paĝoj"
integration: "Integri"
connectService: "Konekti"
disconnectService: "Farkonektiĝi"
enableLocalTimeline: "Ebligi lokan templinion"
@ -281,6 +299,8 @@ basicInfo: "Baza informo"
pinnedUsers: "Alpinglita uzanto"
pinnedPages: "Alpinglitaj paĝoj"
pinnedNotes: "Alpinglita noto"
hcaptcha: "hCaptcha"
enableHcaptcha: "Ebligi hCaptcha"
hcaptchaSiteKey: "Reteja ŝlosilo"
hcaptchaSecretKey: "Sekreta ŝlosilo"
recaptcha: "reCAPTCHA"
@ -290,6 +310,7 @@ recaptchaSecretKey: "Sekreta ŝlosilo"
antennas: "Antenoj"
manageAntennas: "Administri antenojn"
name: "Nomo"
antennaSource: "Fonto de la anteno"
notifyAntenna: "Oni sciigos novajn notojn"
withFileAntenna: "Nur kun aldonaĵo"
withReplies: "Inkluzive respondoj"
@ -311,6 +332,7 @@ userList: "Listoj"
about: "Informoj"
aboutMisskey: "Pri Misskey"
administrator: "Administranto"
token: "Ĵetono"
twoStepAuthentication: "Dua-faktora aŭtentiko"
moderator: "Kontrolisto"
nUsersMentioned: "{n} uzanto(j) menciis"
@ -331,6 +353,8 @@ close: "Fermi"
group: "Grupo"
groups: "Grupoj"
createGroup: "Krei grupon"
ownedGroups: "Administrataj grupoj"
joinedGroups: "La grupoj kiujn la uzanto aliĝis"
invites: "Inviti"
groupName: "Grupa nomo"
members: "Membroj"
@ -390,6 +414,7 @@ showInPage: "Vidi en paĝo"
popout: "Superigi"
volume: "Laŭteco"
masterVolume: "Baza laŭteco"
details: "Detaloj"
chooseEmoji: "Elekti emoĵion"
recentUsed: "Lastatempaj uzitaj"
install: "Instali"
@ -400,11 +425,13 @@ installedDate: "Dato de instalado"
lastUsedDate: "Lastfoje uzita je"
state: "Stato"
sort: "Ordigado"
scratchpad: "Malneta redaktilo"
output: "Elmeto"
script: "Skripto"
disablePagesScript: "Malebligi AiScripto en la paĝoj"
deleteAllFiles: "Forviŝi ĉiujn dosierojn"
deleteAllFilesConfirm: "Ĉu vi certas, ke vi volas forviŝi ĉiujn dosierojn?"
removeAllFollowing: "Ĉesi sekvi ĉiujn sekvatojn"
userSuspended: "Ĉi tiu uzanto estas flostigita."
userSilenced: "Ĉi tiu uzanto estas mutigita."
menu: "Menuo"
@ -512,7 +539,7 @@ editCode: "Redakti kodon"
emailNotification: "Sciigoj per retpoŝto"
inChannelSearch: "Serĉi en kanalo"
useReactionPickerForContextMenu: "Malfermi reago-elektilon per dekstro-klaki"
typingUsers: "{users} nun entajpas…"
typingUsers: "{users} nun skribas…"
clear: "Vakigi"
goBack: "Reiri antaŭ"
addDescription: "Priskribi"
@ -542,13 +569,14 @@ troubleshooting: "Problemsolvi"
learnMore: "Lernu pli"
translate: "Traduki"
translatedFrom: "Tradukita el {x}"
controllPanel: "Ŝaltpodio"
_docs:
continueReading: "Legi plu"
features: "Funkcioj"
admin: "Administro"
controlPanel: "Ŝaltpodio"
classic: "Klasika"
_signup:
emailAddressInfo: "Entajpu vian retpoŝton"
_ad:
back: "Nuligi"
_forgotPassword:
enterEmail: "Entajpu la retpoŝton kiun vi registrigis al via konto. Ligilo por restarigi pasvorton estos sendita al la retpoŝto."
_gallery:
liked: "Ŝatitaj notoj"
like: "Ŝati"
@ -647,7 +675,7 @@ _ago:
secondsAgo: "Antaŭ {n} sekundo(j)"
minutesAgo: "Antaŭ {n} minutoj"
hoursAgo: "Antaŭ {n} horo(j)"
daysAgo: "Antaŭ {n} tagoj"
daysAgo: "Antaŭ {n} tago(j)"
weeksAgo: "Antaŭ {n} semajnoj"
monthsAgo: "Antaŭ {n} monatoj"
yearsAgo: "Antaŭ {n} jaroj"
@ -701,7 +729,7 @@ _widgets:
timeline: "Templinio"
clock: "Horloĝo"
activity: "Aktiveco"
federation: "Kunfederaĵo"
federation: "Federaĵo"
slideshow: "Bildoprezento"
button: "Butono"
onlineUsers: "Surkonektita uzanto"
@ -760,6 +788,8 @@ _timelines:
_rooms:
translate: "Movi"
chooseImage: "Elekti bildon"
_roomType:
default: "Defaŭlta"
_furnitures:
bed: "Lito"
low-table: "Malaltotablo"
@ -789,10 +819,12 @@ _pages:
featured: "Ravaĵoj"
contents: "Enhavo"
content: "Paĝo en bloko"
title: "Temlinio"
url: "URL de paĝo"
alignCenter: "Centrigi"
chooseBlock: "Aldoni blokon"
contentBlocks: "Enhavo"
inputBlocks: "Enigo"
blocks:
text: "Teksto"
textarea: "Areo de teksto"
@ -801,7 +833,11 @@ _pages:
_post:
canvasId: "Kanvasa identigilo"
textInput: "Enmeto el teksto"
_textInput:
text: "Titolo"
textareaInput: "Enmeto el teksto en multaj linioj"
_textareaInput:
text: "Titolo"
numberInput: "Nombra enmeto"
_numberInput:
text: "Titolo"
@ -809,6 +845,8 @@ _pages:
id: "Kanvasa identigilo"
_note:
id: "Identigilo de noto"
_switch:
text: "Titolo"
_counter:
text: "Titolo"
_button:
@ -816,6 +854,8 @@ _pages:
_action:
_pushEvent:
event: "Nomo de la evento"
_radioButton:
title: "Titolo"
script:
categories:
text: "Manipulo de teksto"
@ -861,6 +901,9 @@ _pages:
stringArray: "List de teksto"
emptySlot: "Malplena junto"
argVariables: "Eniga junto"
_relayStatus:
requesting: "Atendado de aprobon"
accepted: "Konfirmita"
_notification:
fileUploaded: "La dosiero sukcese alŝutiĝis."
youGotMention: "{name} mencis"
@ -890,5 +933,5 @@ _deck:
tl: "Templinio"
antenna: "Antenoj"
list: "Listoj"
mentions: "Al vi"
mentions: "Mencioj"
direct: "Rekte"

View File

@ -739,8 +739,6 @@ resolved: "Resuelto"
unresolved: "Sin resolver"
_accountDelete:
accountDelete: "Eliminar Cuenta"
_docs:
admin: "Administrar"
_ad:
back: "Deseleccionar"
_gallery:

View File

@ -795,8 +795,17 @@ itsOff: "Désactivé"
emailRequiredForSignup: "Une adresse e-mail est nécessaire pour créer un compte"
unread: "Non lu"
filter: "Filtre"
controllPanel: "Panneau de contrôle"
controlPanel: "Panneau de contrôle"
manageAccounts: "Gérer les comptes"
classic: "Classique"
_emailUnavailable:
format: "Le format de cette adresse de courriel est invalide"
mx: "Ce serveur de courriels est invalide"
smtp: "Ce serveur de courriels ne répond pas"
_ffVisibility:
public: "Public"
followers: "Visible uniquement pour les abonné·e·s"
private: "Privé"
_signup:
almostThere: "Bientôt fini"
emailAddressInfo: "Insérez votre adresse e-mail."
@ -808,13 +817,6 @@ _accountDelete:
requestAccountDelete: "Demander la suppression de votre compte"
started: "La procédure de suppression a commencé."
inProgress: "Suppression en cours"
_docs:
continueReading: "Lire plus"
features: "Fonctionnalités"
generalTopics: "Sujets généraux"
advancedTopics: "Sujets avancés"
admin: "Gestion"
translateWarn: "Ceci est une traduction dont le contenu peut différer du texte original."
_ad:
back: "Retour"
reduceFrequencyOfThisAd: "Voir cette publicité moins souvent"

View File

@ -81,6 +81,8 @@ somethingHappened: "Terjadi kesalahan"
retry: "Coba lagi"
pageLoadError: "Gagal memuat halaman."
pageLoadErrorDescription: "Umumnya disebabkan jaringan atau tembolok perambah. Cobalah bersihkan tembolok peramban lalu tunggu sesaat sebelum mencoba kembali."
serverIsDead: "Tidak ada respon dari server. Mohon tunggu dan coba beberapa saat lagi."
youShouldUpgradeClient: "Untuk melihat halaman ini, mohon muat ulang untuk memutakhirkan klienmu."
enterListName: "Masukkan nama daftar"
privacy: "Privasi"
makeFollowManuallyApprove: "Permintaan mengikuti membutuhkan persetujuan"
@ -529,6 +531,8 @@ removeAllFollowing: "Tahan semua mengikuti"
removeAllFollowingDescription: "Batal mengikuti semua akun dari {host}. Mohon jalankan ini ketika instansi sudah tidak ada lagi."
userSuspended: "Pengguna ini telah dibekukan."
userSilenced: "Pengguna ini telah dibungkam."
yourAccountSuspendedTitle: "Akun ini dibekukan"
yourAccountSuspendedDescription: "Akun ini dibekukan karena melanggar ketentuan penggunaan layanan server atau semacamnya. Hubungi admin apabila ingin tahu alasan lebih lanjut. Mohon untuk tidak membuat akun baru."
menu: "Menu"
divider: "Pembagi"
addItem: "Tambahkan item"
@ -616,6 +620,8 @@ reportAbuse: "Laporkan"
reportAbuseOf: "Laporkan {name}"
fillAbuseReportDescription: "Mohon isi rincian laporan. Jika laporan ini mengenai catatan yang spesifik, mohon lampirkan serta URL catatan tersebut."
abuseReported: "Laporan kamu telah dikirimkan. Terima kasih."
reporteeOrigin: "Yang dilaporkan"
reporterOrigin: "Pelapor"
send: "Kirim"
abuseMarkAsResolved: "Tandai laporan sebagai selesai"
openInNewTab: "Buka di tab baru"
@ -762,6 +768,7 @@ middle: "Sedang"
low: "Rendah"
emailNotConfiguredWarning: "Alamat surel tidak disetel."
ratio: "Rasio"
previewNoteText: "Tampilkan pratinjau"
customCss: "Custom CSS"
customCssWarn: "Pengaturan ini seharusnya digunakan jika kamu tahu cara kerjanya. Memasukkan nilai yang tidak tepat dapat menyebabkan klien tidak berfungsi semestinya."
global: "Global"
@ -779,8 +786,40 @@ translate: "Terjemahkan"
translatedFrom: "Terjemahkan dari {x}"
accountDeletionInProgress: "Penghapusan akun sedang dalam proses"
usernameInfo: "Nama yang mengidentifikasikan akun kamu dari yang lain pada server ini. Kamu dapat menggunakan alfabet (a~z, A~Z), digit (0~9) atau garis bawah (_). Username tidak dapat diubah setelahnya."
aiChanMode: "Mode Ai"
keepCw: "Biarkan Peringatan Konten"
controllPanel: "Panel kontrol"
pubSub: "Akun Pub/Sub"
lastCommunication: "Komunikasi terakhir"
resolved: "Selesai"
unresolved: "Belum selesai"
itsOn: "Aktif"
itsOff: "Nonaktif"
emailRequiredForSignup: "Membutuhkan alamat surel untuk mendaftar"
unread: "Belum dibaca"
filter: "Saring"
controlPanel: "Panel kontrol"
manageAccounts: "Kelola Akun"
makeReactionsPublic: "Tampilkan riwayat reaksi ke publik"
makeReactionsPublicDescription: "Pengaturan ini akan membuat daftar dari semua reaksi masa lalu kamu ditampilkan secara publik."
classic: "Klasik"
muteThread: "Bisukan thread"
unmuteThread: "Suarakan thread"
ffVisibility: "Visibilitas Mengikuti/Pengikut"
ffVisibilityDescription: "Mengatur siapa yang dapat melihat pengikutmu dan yang kamu ikuti."
_emailUnavailable:
used: "Alamat surel ini telah digunakan"
format: "Format tidak valid."
disposable: "Alamat surel temporer tidak dapat digunakan"
mx: "Server alamat surel ini tidak valid"
smtp: "Server alamat surel ini tidak merespon"
_ffVisibility:
public: "Terbitkan"
followers: "Tampil untuk pengikut saja"
private: "Tersembunyi"
_signup:
almostThere: "Hampir selesai"
emailAddressInfo: "Mohon masukkan alamat surel kamu."
emailSent: "Konfirmasi surel telah dikirimkan ke alamat surel kamu ({email}). Mohon klik tautan yang tercantum di dalamnya untuk menyelesaikan pembuatan akun."
_accountDelete:
accountDelete: "Hapus akun"
mayTakeTime: "Karena penghapusan akun merupakan proses yang berat dan intensif, kemungkinan dapat membutuhkan waktu untuk menyelesaikan tergantung daripada berapa banyak konten yang kamu buat dan berapa banyak berkas yang telah kamu unggah."
@ -788,13 +827,6 @@ _accountDelete:
requestAccountDelete: "Minta penghapusan akun"
started: "Penghapusan telah dimulai"
inProgress: "Penghapusan sedang dalam proses"
_docs:
continueReading: "Baca lebih lanjut"
features: "Fitur"
generalTopics: "Topik umum"
advancedTopics: "Topik tingkat lanjut"
admin: "Manajemen"
translateWarn: "Ini merupakan dokumen terjemahan. Konten di dalamnya kemungkinan dapat berbeda dari yang aslinya."
_ad:
back: "Kembali"
reduceFrequencyOfThisAd: "Tampilkan iklan ini lebih sedikit"
@ -895,6 +927,8 @@ _mfm:
fontDescription: "Setel font yang ditampilkan untuk konten."
rainbow: "Pelangi"
rainbowDescription: "Membuat konten muncul dalam warna pelangi."
sparkle: "Kelap-kelip"
sparkleDescription: "Memberikan konten efek partikel kelap-kelip."
_reversi:
reversi: "Reversi"
gameSettings: "Pengaturan permainan"
@ -1121,6 +1155,10 @@ _permissions:
"write:user-groups": "Sunting atau hapus grup pengguna"
"read:channels": "Lihat saluran"
"write:channels": "Sunting saluran"
"read:gallery": "Lihat galeri"
"write:gallery": "Sunting galeri"
"read:gallery-likes": "Lihat daftar postingan galeri yang disukai"
"write:gallery-likes": "Sunting daftar postingan galeri yang disukai"
_auth:
shareAccess: "Apakah kamu ingin mengijinkan \"{name}\" untuk mengakses akun ini?"
shareAccessAsk: "Apakah kamu ingin mengijinkan aplikasi ini untuk mengakses akun kamu?"

View File

@ -19,9 +19,11 @@ const languages = [
'da-DK',
'de-DE',
'en-US',
'eo-UY',
'es-ES',
'fr-FR',
'id-ID',
'it-IT',
'ja-JP',
'ja-KS',
'kab-KAB',

View File

@ -745,10 +745,8 @@ global: "Federata"
sent: "Inviare"
hashtags: "Hashtag"
troubleshooting: "Risoluzione problemi"
_docs:
continueReading: "Leggi di più"
features: "Funzionalità"
admin: "Gestione"
_ffVisibility:
public: "Pubblico"
_ad:
back: "Indietro"
reduceFrequencyOfThisAd: "Visualizza questa pubblicità meno spesso"

View File

@ -620,6 +620,8 @@ reportAbuse: "通報"
reportAbuseOf: "{name}を通報する"
fillAbuseReportDescription: "通報理由の詳細を記入してください。対象のートがある場合はそのURLも記入してください。"
abuseReported: "内容が送信されました。ご報告ありがとうございました。"
reporteeOrigin: "通報先"
reporterOrigin: "通報元"
send: "送信"
abuseMarkAsResolved: "対応済みにする"
openInNewTab: "新しいタブで開く"
@ -795,10 +797,29 @@ itsOff: "オフになっています"
emailRequiredForSignup: "アカウント登録にメールアドレスを必須にする"
unread: "未読"
filter: "フィルタ"
controllPanel: "コントロールパネル"
controlPanel: "コントロールパネル"
manageAccounts: "アカウントを管理"
makeReactionsPublic: "リアクション一覧を公開する"
makeReactionsPublicDescription: "あなたがしたリアクション一覧を誰でも見れるようにします。"
classic: "クラシック"
muteThread: "スレッドをミュート"
unmuteThread: "スレッドのミュートを解除"
ffVisibility: "つながりの公開範囲"
ffVisibilityDescription: "自分のフォロー/フォロワー情報の公開範囲を設定できます。"
continueThread: "さらにスレッドを見る"
deleteAccountConfirm: "アカウントが削除されます。よろしいですか?"
_emailUnavailable:
used: "既に使用されています"
format: "形式が正しくありません"
disposable: "恒久的に使用可能なアドレスではありません"
mx: "正しいメールサーバーではありません"
smtp: "メールサーバーが応答しません"
_ffVisibility:
public: "公開"
followers: "フォロワーだけに公開"
private: "非公開"
_signup:
almostThere: "ほとんど完了です"
@ -813,14 +834,6 @@ _accountDelete:
started: "削除処理が開始されました。"
inProgress: "削除が進行中"
_docs:
continueReading: "続きを読む"
features: "機能"
generalTopics: "一般的なトピック"
advancedTopics: "高度なトピック"
admin: "管理"
translateWarn: "このドキュメントは翻訳されたものです。オリジナルとは内容が異なる場合があります。"
_ad:
back: "戻る"
reduceFrequencyOfThisAd: "この広告の表示頻度を下げる"

View File

@ -653,8 +653,6 @@ low: "低い"
global: "グローバル"
sent: "送信"
hashtags: "ハッシュタグ"
_docs:
admin: "管理"
_ad:
back: "戻る"
_gallery:

View File

@ -787,7 +787,9 @@ pubSub: "Pub/Sub 계정"
lastCommunication: "마지막 통신"
resolved: "해결됨"
unresolved: "해결되지 않음"
controllPanel: "제어판"
controlPanel: "제어판"
_ffVisibility:
public: "게시"
_accountDelete:
accountDelete: "계정 삭제"
mayTakeTime: "계정 삭제는 서버에 부하를 가하기 때문에, 작성한 콘텐츠나 업로드한 파일의 수가 많으면 완료까지 시간이 걸릴 수 있습니다."
@ -795,13 +797,6 @@ _accountDelete:
requestAccountDelete: "계정 삭제 요청"
started: "삭제 작업이 시작되었습니다."
inProgress: "삭제 진행 중"
_docs:
continueReading: "계속 읽기"
features: "기능"
generalTopics: "일반 주제"
advancedTopics: "심화 주제"
admin: "관리"
translateWarn: "이 문서는 번역되었기 때문에 원본과는 내용이 다를 수 있습니다."
_ad:
back: "뒤로"
reduceFrequencyOfThisAd: "이 광고의 표시 빈도 낮추기"

View File

@ -1,3 +1,5 @@
---
_lang_: "Nederlands"
headlineMisskey: "Netwerk verbonden door notities"
muteThread: "Discussies dempen "
unmuteThread: "Dempen van discussie ongedaan maken"

View File

@ -738,8 +738,8 @@ ratio: "Stosunek"
global: "Globalna"
sent: "Wyślij"
hashtags: "Hashtag"
_docs:
admin: "Zarządzanie"
_ffVisibility:
public: "Publikuj"
_ad:
back: "Wróć"
reduceFrequencyOfThisAd: "Pokazuj tę reklamę rzadziej"

View File

@ -620,6 +620,8 @@ reportAbuse: "Жалоба"
reportAbuseOf: "Пожаловаться на пользователя {name}"
fillAbuseReportDescription: "Опишите, пожалуйста, причину жалобы подробнее. Если речь о конкретной заметке, будьте добры приложить ссылку на неё."
abuseReported: "Жалоба отправлена. Большое спасибо за информацию."
reporteeOrigin: "Куда сообщать"
reporterOrigin: "Сообщено"
send: "Отправить"
abuseMarkAsResolved: "Отметить жалобу как решённую"
openInNewTab: "Открыть в новой вкладке"
@ -766,6 +768,7 @@ middle: "Средне"
low: "Низкий"
emailNotConfiguredWarning: "Не указан адрес электронной почты"
ratio: "Соотношение"
previewNoteText: "Предварительный просмотр текста"
customCss: "Индивидуальный CSS"
customCssWarn: "Используйте эту настройку только если знаете, что делаете. Ошибки здесь чреваты тем, что сайт перестанет нормально работать у вас."
global: "Всеобщая"
@ -780,19 +783,43 @@ learnMore: "Подробнее"
misskeyUpdated: "Misskey обновился!"
whatIsNew: "Что новенького?"
translate: "Перевод"
translatedFrom: "{x}Перевод с английского"
accountDeletionInProgress: "В настоящее время выполняется удаление учетной записи"
usernameInfo: "Имя, которое отличает вашу учетную запись от других на этом сервере. Вы можете использовать алфавит (a~z, A~Z), цифры (0~9) или символы подчеркивания (_). Имена пользователей не могут быть изменены позже."
aiChanMode: "ИИ режим"
keepCw: "Сохраняйте Предупреждения о содержимом"
controllPanel: "Панель управления"
lastCommunication: "Последнее сообщение"
resolved: "Решен"
unresolved: "Неразрешенные"
itsOff: "Он выключен!"
emailRequiredForSignup: "Требуется адрес электронной почты для регистрации аккаунта"
unread: "Непрочитанное"
filter: "Фильтры"
controlPanel: "Панель управления"
manageAccounts: "Управление аккаунтом"
_docs:
continueReading: "Читать подробнее"
features: "Возможности"
generalTopics: "Основные темы"
advancedTopics: "Дополнительные темы"
admin: "Управление"
translateWarn: "Это перевод документа. Он может неточно отражать содержимое оригинала."
makeReactionsPublic: "Опубликовать список реакций"
makeReactionsPublicDescription: "Список сделанных вами реакций доступен для просмотра всем желающим."
classic: "Классика"
unmuteThread: "Отключить звук"
ffVisibilityDescription: "Вы можете установить объем вашей следующей/последней информации."
_emailUnavailable:
used: "Уже используется"
format: "Неправильный формат"
smtp: "Почтовый сервер не отвечает"
_ffVisibility:
public: "Опубликовать"
private: "Частный"
_signup:
almostThere: "Почти готово!"
emailAddressInfo: "Пожалуйста, введите адрес электронной почты, который вы используете."
emailSent: "На указанный вами адрес электронной почты ({email}) было отправлено письмо с подтверждением. Перейдите по ссылке в электронном письме, чтобы завершить создание учетной записи."
_accountDelete:
accountDelete: "Удалить свой аккаунт"
mayTakeTime: "Удаление учетной записи - это тяжелый процесс, который может занять много времени, если у вас создано много контента или загружено много файлов."
sendEmail: "Мы отправим уведомление на зарегистрированный вами адрес электронной почты, когда ваша учетная запись будет удалена."
requestAccountDelete: "Запросить удаление вашей учетной записи"
started: "Процесс удаления начался."
inProgress: "Удаление в процессе"
_ad:
back: "Выход"
reduceFrequencyOfThisAd: "Реже показывать эту рекламу"
@ -893,6 +920,8 @@ _mfm:
fontDescription: "Так можно писать произвольным шрифтом."
rainbow: "Радуга"
rainbowDescription: "Заставлять содержимое отображаться в цветах радуги."
sparkle: "Блеск"
sparkleDescription: "Добавьте эффект искрящихся частиц."
_reversi:
reversi: "Реверси"
gameSettings: "Настройки игры"
@ -1119,6 +1148,10 @@ _permissions:
"write:user-groups": "Изменять и удалять группы пользователей"
"read:channels": "Смотреть каналы"
"write:channels": "Изменять каналы"
"read:gallery": "Смотреть галерею"
"write:gallery": "Работа с галереей"
"read:gallery-likes": "Посмотреть галерею лайков"
"write:gallery-likes": "Манипулируйте понравившейся галереей"
_auth:
shareAccess: "Дать доступ для «{name}» к вашей учётной записи?"
shareAccessAsk: "Уверены, что хотите дать приложению доступ к своей учётной записи?"

62
locales/tr-TR.yml Normal file
View File

@ -0,0 +1,62 @@
---
_lang_: "Türkçe"
introMisskey: "Açık kaynaklı bir dağıtılmış mikroblog hizmeti olan Misskey'e hoş geldiniz.\nMisskey, neler olup bittiğini paylaşmak ve herkese sizden bahsetmek için \"notlar\" oluşturmanıza olanak tanıyan, açık kaynaklı, dağıtılmış bir mikroblog hizmetidir.\nHerkesin notlarına kendi tepkilerinizi hızlıca eklemek için \"Tepkiler\" özelliğini de kullanabilirsiniz👍.\nYeni bir dünyayı keşfedin🚀."
monthAndDay: "{month}Ay {day}Gün"
search: "Arama"
notifications: "Bildirim"
username: "Kullanıcı Adı"
password: "Şifre"
forgotPassword: "şifremi unuttum"
ok: "TAMAM"
gotIt: "Anladım"
cancel: "İptal"
enterUsername: "Kullanıcı adınızı giriniz"
noNotes: "Notlar mevcut değil."
noNotifications: "Bildirim bulunmuyor"
settings: "Ayarlar"
basicSettings: "Temel Ayarlar"
otherSettings: "Diğer Ayarlar"
openInWindow: "Bir pencere ile aç"
profile: "Profil"
timeline: "Zaman çizelgesi"
noAccountDescription: "Bu kullanıcı henüz biyografisini yazmadı"
login: "Giriş Yap "
logout: ıkış Yap"
signup: "Kayıt Ol"
uploading: "Yükleniyor"
users: "Kullanıcı"
addUser: "Kullanıcı Ekle"
favorite: "Favoriler"
favorites: "Favoriler"
unfavorite: "Favorilerden Kaldır"
favorited: "Favorilerime eklendi."
alreadyFavorited: "Zaten favorilerinizde kayıtlı."
pin: "Sabitlenmiş"
unpin: "Sabitlemeyi kaldır"
copyContent: "İçeriği kopyala"
copyLink: "Bağlantıyı Kopyala"
delete: "Sil"
deleteAndEdit: "Sil ve yeniden düzenle"
deleteAndEditConfirm: "Bu notu silip yeniden düzenlemek istiyor musunuz? Bu nota ilişkin tüm Tepkiler, Yeniden Notlar ve Yanıtlar da silinecektir."
addToList: "Listeye ekle"
sendMessage: "Mesaj Gönder"
copyUsername: "Kullanıcı Adını Kopyala"
searchUser: "Kullanıcıları ara"
pinned: "Sabitlenmiş"
remove: "Sil"
smtpUser: "Kullanıcı Adı"
smtpPass: "Şifre"
user: "Kullanıcı"
_mfm:
search: "Arama"
_sfx:
notification: "Bildirim"
_widgets:
notifications: "Bildirim"
timeline: "Zaman çizelgesi"
_profile:
username: "Kullanıcı Adı"
_deck:
_columns:
notifications: "Bildirim"
tl: "Zaman çizelgesi"

View File

@ -692,8 +692,6 @@ middle: "Середній"
global: "Глобальна"
sent: "Відправити"
hashtags: "Хештеґ"
_docs:
admin: "Управління"
_ad:
back: "Назад"
_gallery:

View File

@ -1,20 +1,20 @@
---
_lang_: "中文(简体)"
headlineMisskey: "通过帖子连接在一起的网络"
introMisskey: "欢迎Misskey是一个开源的、去中心化的“微博客”服务。\n通过编写「帖」来和大家分享你的以及你周围的事情吧!📡\n通过「回应」功能可以让你快速地对大家的帖表达反馈👍\n来探索新的世界吧🚀"
introMisskey: "欢迎Misskey是一个开源的、去中心化的“微博客”服务。\n通过编写「帖」来和大家分享你的以及你周围的事情吧!📡\n通过「回应」功能可以让你快速地对大家的帖表达反馈👍\n来探索新的世界吧🚀"
monthAndDay: "{month}月 {day}日"
search: "搜索"
notifications: "通知"
username: "用户名"
password: "密码"
forgotPassword: "重置密码"
fetchingAsApObject: "联合查询"
forgotPassword: "忘记密码"
fetchingAsApObject: "联合查询"
ok: "OK"
gotIt: "我明白了"
cancel: "取消"
enterUsername: "输入用户名"
renotedBy: "{user} 转发了"
noNotes: "没有帖"
renotedBy: "{user} 转"
noNotes: "没有帖"
noNotifications: "无通知"
instance: "实例"
settings: "设置"
@ -124,9 +124,9 @@ unblockConfirm: "确定要解除拉黑吗?"
suspendConfirm: "要冻结吗?"
unsuspendConfirm: "要解除冻结吗?"
selectList: "选择列表"
selectAntenna: "天线选择"
selectAntenna: "选择天线"
selectWidget: "选择小工具"
editWidgets: "编辑小工具"
editWidgets: "编辑部件"
editWidgetsExit: "完成编辑"
customEmojis: "自定义表情符号"
emoji: "表情符号"
@ -139,9 +139,9 @@ cacheRemoteFiles: "远程文件缓存"
cacheRemoteFilesDescription: "当禁用此设定时远程文件将直接从远程实例载入。禁用后会减小储存空间需求,但是会增加流量,因为缩略图不会被生成。"
flagAsBot: "这是一个机器人账号"
flagAsBotDescription: "如果此帐户由程序控制请启用此项。启用后此标志可以帮助其他开发人员防止机器人之间产生无限互动的行为并让Misskey的内部系统将此帐户识别为机器人。"
flagAsCat: "这个账户一只猫"
flagAsCatDescription: "如果您想表明此帐户是一只猫,请打开此标志。\n开启后会在您的头像上出现猫耳朵并将你的帖子中的「na」替换为「nya」日文同理。"
autoAcceptFollowed: "自动允许关注者的关注"
flagAsCat: "这个账户设定为一只猫"
flagAsCatDescription: "如果您想表明此帐户是一只猫,请打开此标志。"
autoAcceptFollowed: "自动允许关注"
addAccount: "添加账户"
loginFailed: "登录失败"
showOnRemote: "转到所在实例显示"
@ -620,6 +620,8 @@ reportAbuse: "举报"
reportAbuseOf: "举报{name}"
fillAbuseReportDescription: "请填写举报的详细原因。如果有对方发的帖子请同时填写URL地址。"
abuseReported: "内容已发送。感谢您的报告。"
reporteeOrigin: "举报来源"
reporterOrigin: "举报者来源"
send: "发送"
abuseMarkAsResolved: "处理完毕"
openInNewTab: "在新标签页中打开"
@ -795,8 +797,27 @@ itsOff: "已关闭"
emailRequiredForSignup: "注册账户需要电子邮件地址"
unread: "未读"
filter: "筛选"
controllPanel: "控制面板"
controlPanel: "控制面板"
manageAccounts: "管理账户"
makeReactionsPublic: "将回应设置为公开"
makeReactionsPublicDescription: "将您发表过的回应设置成公开可见。"
classic: "经典"
muteThread: "屏蔽帖子列表"
unmuteThread: "取消屏蔽帖子列表"
ffVisibility: "连接的可见范围"
ffVisibilityDescription: "您可以设置您的关注/关注者信息的公开范围"
continueThread: "查看更多帖子"
deleteAccountConfirm: "将要删除账户。是否确认?"
_emailUnavailable:
used: "已经被使用过"
format: "无效的格式"
disposable: "不是永久可用的地址"
mx: "邮件服务器不正确"
smtp: "邮件服务器没有响应"
_ffVisibility:
public: "发布"
followers: "只有关注你的用户能看到"
private: "私密"
_signup:
almostThere: "即将完成"
emailAddressInfo: "请输入您所使用的电子邮件地址"
@ -808,13 +829,6 @@ _accountDelete:
requestAccountDelete: "请求删除账户"
started: "账户删除过程已开始。"
inProgress: "正在删除"
_docs:
continueReading: "继续阅读"
features: "特性"
generalTopics: "通常提示"
advancedTopics: "进阶提示"
admin: "管理"
translateWarn: "本文档是翻译后的文档。内容可能与原文有所不同。"
_ad:
back: "返回"
reduceFrequencyOfThisAd: "减少此广告的频率"

View File

@ -754,8 +754,8 @@ ratio: "%"
global: "公開"
sent: "發送"
hashtags: "#tag"
_docs:
admin: "管理"
_ffVisibility:
public: "發佈"
_ad:
back: "返回"
reduceFrequencyOfThisAd: "降低此廣告的頻率 "

View File

@ -1,13 +0,0 @@
import {MigrationInterface, QueryRunner} from "typeorm";
export class PinnedUsers1557476068003 implements MigrationInterface {
public async up(queryRunner: QueryRunner): Promise<any> {
await queryRunner.query(`ALTER TABLE "meta" ADD "pinnedUsers" character varying(256) array NOT NULL DEFAULT '{}'::varchar[]`);
}
public async down(queryRunner: QueryRunner): Promise<any> {
await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "pinnedUsers"`);
}
}

View File

@ -1,13 +0,0 @@
import {MigrationInterface, QueryRunner} from "typeorm";
export class UserListJoining1558266512381 implements MigrationInterface {
public async up(queryRunner: QueryRunner): Promise<any> {
await queryRunner.query(`CREATE UNIQUE INDEX "IDX_90f7da835e4c10aca6853621e1" ON "user_list_joining" ("userId", "userListId") `);
}
public async down(queryRunner: QueryRunner): Promise<any> {
await queryRunner.query(`DROP INDEX "IDX_90f7da835e4c10aca6853621e1"`);
}
}

View File

@ -1,13 +0,0 @@
import {MigrationInterface, QueryRunner} from "typeorm";
export class PasswordLessLogin1562422242907 implements MigrationInterface {
public async up(queryRunner: QueryRunner): Promise<any> {
await queryRunner.query(`ALTER TABLE "user_profile" ADD COLUMN "usePasswordLessLogin" boolean DEFAULT false NOT NULL`);
}
public async down(queryRunner: QueryRunner): Promise<any> {
await queryRunner.query(`ALTER TABLE "user_profile" DROP COLUMN "usePasswordLessLogin"`);
}
}

View File

@ -1,13 +0,0 @@
import {MigrationInterface, QueryRunner} from "typeorm";
export class PageTitleHideOption1562448332510 implements MigrationInterface {
public async up(queryRunner: QueryRunner): Promise<any> {
await queryRunner.query(`ALTER TABLE "page" ADD "hideTitleWhenPinned" boolean NOT NULL DEFAULT false`);
}
public async down(queryRunner: QueryRunner): Promise<any> {
await queryRunner.query(`ALTER TABLE "page" DROP COLUMN "hideTitleWhenPinned"`);
}
}

View File

@ -1,13 +0,0 @@
import {MigrationInterface, QueryRunner} from "typeorm";
export class room1565634203341 implements MigrationInterface {
public async up(queryRunner: QueryRunner): Promise<any> {
await queryRunner.query(`ALTER TABLE "user_profile" ADD "room" jsonb NOT NULL DEFAULT '{}'`);
}
public async down(queryRunner: QueryRunner): Promise<any> {
await queryRunner.query(`ALTER TABLE "user_profile" DROP COLUMN "room"`);
}
}

View File

@ -1,13 +0,0 @@
import {MigrationInterface, QueryRunner} from "typeorm";
export class CustomEmojiCategory1571220798684 implements MigrationInterface {
public async up(queryRunner: QueryRunner): Promise<any> {
await queryRunner.query(`ALTER TABLE "emoji" ADD "category" character varying(128)`, undefined);
}
public async down(queryRunner: QueryRunner): Promise<any> {
await queryRunner.query(`ALTER TABLE "emoji" DROP COLUMN "category"`, undefined);
}
}

View File

@ -1,14 +0,0 @@
import {MigrationInterface, QueryRunner} from "typeorm";
export class TalkFederationId1576269851876 implements MigrationInterface {
name = 'TalkFederationId1576269851876'
public async up(queryRunner: QueryRunner): Promise<any> {
await queryRunner.query(`ALTER TABLE "messaging_message" ADD "uri" character varying(512)`, undefined);
}
public async down(queryRunner: QueryRunner): Promise<any> {
await queryRunner.query(`ALTER TABLE "messaging_message" DROP COLUMN "uri"`, undefined);
}
}

View File

@ -1,14 +0,0 @@
import {MigrationInterface, QueryRunner} from "typeorm";
export class ProxyRemoteFiles1576869585998 implements MigrationInterface {
name = 'ProxyRemoteFiles1576869585998'
public async up(queryRunner: QueryRunner): Promise<any> {
await queryRunner.query(`ALTER TABLE "meta" ADD "proxyRemoteFiles" boolean NOT NULL DEFAULT false`, undefined);
}
public async down(queryRunner: QueryRunner): Promise<any> {
await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "proxyRemoteFiles"`, undefined);
}
}

View File

@ -1,14 +0,0 @@
import {MigrationInterface, QueryRunner} from "typeorm";
export class v1221579270193251 implements MigrationInterface {
name = 'v1221579270193251'
public async up(queryRunner: QueryRunner): Promise<any> {
await queryRunner.query(`ALTER TABLE "announcement_read" ADD "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL`, undefined);
}
public async down(queryRunner: QueryRunner): Promise<any> {
await queryRunner.query(`ALTER TABLE "announcement_read" DROP COLUMN "createdAt"`, undefined);
}
}

View File

@ -1,14 +0,0 @@
import {MigrationInterface, QueryRunner} from "typeorm";
export class v1231579282808087 implements MigrationInterface {
name = 'v1231579282808087'
public async up(queryRunner: QueryRunner): Promise<any> {
await queryRunner.query(`ALTER TABLE "announcement" ADD "updatedAt" TIMESTAMP WITH TIME ZONE`, undefined);
}
public async down(queryRunner: QueryRunner): Promise<any> {
await queryRunner.query(`ALTER TABLE "announcement" DROP COLUMN "updatedAt"`, undefined);
}
}

View File

@ -1,14 +0,0 @@
import {MigrationInterface, QueryRunner} from "typeorm";
export class v1291580154400017 implements MigrationInterface {
name = 'v1291580154400017'
public async up(queryRunner: QueryRunner): Promise<any> {
await queryRunner.query(`ALTER TABLE "antenna" ADD "withReplies" boolean NOT NULL DEFAULT false`, undefined);
}
public async down(queryRunner: QueryRunner): Promise<any> {
await queryRunner.query(`ALTER TABLE "antenna" DROP COLUMN "withReplies"`, undefined);
}
}

View File

@ -1,14 +0,0 @@
import {MigrationInterface, QueryRunner} from "typeorm";
export class v12131580543501339 implements MigrationInterface {
name = 'v12131580543501339'
public async up(queryRunner: QueryRunner): Promise<any> {
await queryRunner.query(`CREATE INDEX "IDX_NOTE_TAGS" ON "note" USING gin ("tags")`, undefined);
}
public async down(queryRunner: QueryRunner): Promise<any> {
await queryRunner.query(`DROP INDEX "IDX_NOTE_TAGS"`, undefined);
}
}

View File

@ -1,14 +0,0 @@
import {MigrationInterface, QueryRunner} from "typeorm";
export class driveUserFolderIdIndex1581708415836 implements MigrationInterface {
name = 'driveUserFolderIdIndex1581708415836'
public async up(queryRunner: QueryRunner): Promise<any> {
await queryRunner.query(`CREATE INDEX "IDX_55720b33a61a7c806a8215b825" ON "drive_file" ("userId", "folderId", "id") `, undefined);
}
public async down(queryRunner: QueryRunner): Promise<any> {
await queryRunner.query(`DROP INDEX "IDX_55720b33a61a7c806a8215b825"`, undefined);
}
}

View File

@ -1,14 +0,0 @@
import {MigrationInterface, QueryRunner} from "typeorm";
export class featuredInjecttion1582019042083 implements MigrationInterface {
name = 'featuredInjecttion1582019042083'
public async up(queryRunner: QueryRunner): Promise<any> {
await queryRunner.query(`ALTER TABLE "user_profile" ADD "injectFeaturedNote" boolean NOT NULL DEFAULT true`, undefined);
}
public async down(queryRunner: QueryRunner): Promise<any> {
await queryRunner.query(`ALTER TABLE "user_profile" DROP COLUMN "injectFeaturedNote"`, undefined);
}
}

View File

@ -1,14 +0,0 @@
import {MigrationInterface, QueryRunner} from "typeorm";
export class antennaExclude1582210532752 implements MigrationInterface {
name = 'antennaExclude1582210532752'
public async up(queryRunner: QueryRunner): Promise<any> {
await queryRunner.query(`ALTER TABLE "antenna" ADD "excludeKeywords" jsonb NOT NULL DEFAULT '[]'`, undefined);
}
public async down(queryRunner: QueryRunner): Promise<any> {
await queryRunner.query(`ALTER TABLE "antenna" DROP COLUMN "excludeKeywords"`, undefined);
}
}

View File

@ -1,14 +0,0 @@
import {MigrationInterface, QueryRunner} from "typeorm";
export class noteReactionLength1582875306439 implements MigrationInterface {
name = 'noteReactionLength1582875306439'
public async up(queryRunner: QueryRunner): Promise<any> {
await queryRunner.query(`ALTER TABLE "note_reaction" ALTER COLUMN "reaction" TYPE character varying(130)`, undefined);
}
public async down(queryRunner: QueryRunner): Promise<any> {
await queryRunner.query(`ALTER TABLE "note_reaction" ALTER COLUMN "reaction" TYPE character varying(128)`, undefined);
}
}

View File

@ -1,15 +0,0 @@
/* tslint:disable:quotemark class-name indent */
import {MigrationInterface, QueryRunner} from "typeorm";
export class apUrl1585772678853 implements MigrationInterface {
name = 'apUrl1585772678853'
public async up(queryRunner: QueryRunner): Promise<any> {
await queryRunner.query(`ALTER TABLE "note" ADD "url" character varying(512)`, undefined);
}
public async down(queryRunner: QueryRunner): Promise<any> {
await queryRunner.query(`ALTER TABLE "note" DROP COLUMN "url"`, undefined);
}
}

View File

@ -1,14 +0,0 @@
import {MigrationInterface, QueryRunner} from 'typeorm';
export class AddObjectStorageUseProxy1586624197029 implements MigrationInterface {
name = 'AddObjectStorageUseProxy1586624197029'
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "meta" ADD "objectStorageUseProxy" boolean NOT NULL DEFAULT true`, undefined);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "objectStorageUseProxy"`, undefined);
}
}

View File

@ -1,12 +0,0 @@
import {MigrationInterface, QueryRunner} from "typeorm";
export class remoteReaction1586641139527 implements MigrationInterface {
name = 'remoteReaction1586641139527'
public async up(queryRunner: QueryRunner): Promise<any> {
await queryRunner.query(`ALTER TABLE "note_reaction" ALTER COLUMN "reaction" TYPE character varying(260)`, undefined);
}
public async down(queryRunner: QueryRunner): Promise<any> {
await queryRunner.query(`ALTER TABLE "note_reaction" ALTER COLUMN "reaction" TYPE character varying(130)`, undefined);
}
}

View File

@ -1,14 +0,0 @@
import {MigrationInterface, QueryRunner} from "typeorm";
export class pageAiScript1586708940386 implements MigrationInterface {
name = 'pageAiScript1586708940386'
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "page" ADD "script" character varying(16384) NOT NULL DEFAULT ''`, undefined);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "page" DROP COLUMN "script"`, undefined);
}
}

View File

@ -1,14 +0,0 @@
import {MigrationInterface, QueryRunner} from "typeorm";
export class blurhash1595075960584 implements MigrationInterface {
name = 'blurhash1595075960584'
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "drive_file" ADD "blurhash" character varying(128)`);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "drive_file" DROP COLUMN "blurhash"`);
}
}

View File

@ -1,14 +0,0 @@
import {MigrationInterface, QueryRunner} from "typeorm";
export class instanceIconUrl1595676934834 implements MigrationInterface {
name = 'instanceIconUrl1595676934834'
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "instance" ADD "iconUrl" character varying(256) DEFAULT null`);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "instance" DROP COLUMN "iconUrl"`);
}
}

View File

@ -1,14 +0,0 @@
import {MigrationInterface, QueryRunner} from "typeorm";
export class channel21596786425167 implements MigrationInterface {
name = 'channel21596786425167'
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "channel_following" ADD "readCursor" TIMESTAMP WITH TIME ZONE NOT NULL`);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "channel_following" DROP COLUMN "readCursor"`);
}
}

View File

@ -1,14 +0,0 @@
import {MigrationInterface, QueryRunner} from "typeorm";
export class objectStorageSetPublicRead1597230137744 implements MigrationInterface {
name = 'objectStorageSetPublicRead1597230137744'
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "meta" ADD "objectStorageSetPublicRead" boolean NOT NULL DEFAULT false`);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "objectStorageSetPublicRead"`);
}
}

View File

@ -1,14 +0,0 @@
import {MigrationInterface, QueryRunner} from "typeorm";
export class addSensitiveIndex1597385880794 implements MigrationInterface {
name = 'addSensitiveIndex1597385880794'
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`CREATE INDEX "IDX_a7eba67f8b3fa27271e85d2e26" ON "drive_file" ("isSensitive") `);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`DROP INDEX "IDX_a7eba67f8b3fa27271e85d2e26"`);
}
}

View File

@ -1,16 +0,0 @@
import {MigrationInterface, QueryRunner} from "typeorm";
export class ChannelNoteIdDescIndex1597893996136 implements MigrationInterface {
name = 'ChannelNoteIdDescIndex1597893996136'
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`DROP INDEX "IDX_f22169eb10657bded6d875ac8f"`);
await queryRunner.query(`CREATE INDEX "IDX_note_on_channelId_and_id_desc" ON "note" ("channelId", "id" desc)`);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`DROP INDEX "IDX_note_on_channelId_and_id_desc"`);
await queryRunner.query(`CREATE INDEX "IDX_f22169eb10657bded6d875ac8f" ON "note" ("channelId") `);
}
}

View File

@ -1,14 +0,0 @@
import {MigrationInterface, QueryRunner} from "typeorm";
export class instanceThemeColor1603776877564 implements MigrationInterface {
name = 'instanceThemeColor1603776877564'
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "instance" ADD "themeColor" character varying(64) DEFAULT null`);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "instance" DROP COLUMN "themeColor"`);
}
}

View File

@ -1,14 +0,0 @@
import {MigrationInterface, QueryRunner} from "typeorm";
export class instanceFavicon1603781553011 implements MigrationInterface {
name = 'instanceFavicon1603781553011'
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "instance" ADD "faviconUrl" character varying(256) DEFAULT null`);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "instance" DROP COLUMN "faviconUrl"`);
}
}

View File

@ -1,14 +0,0 @@
import {MigrationInterface, QueryRunner} from "typeorm";
export class deleteAutoWatch1604821689616 implements MigrationInterface {
name = 'deleteAutoWatch1604821689616'
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "user_profile" DROP COLUMN "autoWatch"`);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "user_profile" ADD "autoWatch" boolean NOT NULL DEFAULT false`);
}
}

View File

@ -1,15 +0,0 @@
import {MigrationInterface, QueryRunner} from "typeorm";
export class clipDescription1605408848373 implements MigrationInterface {
name = 'clipDescription1605408848373'
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "clip" ADD "description" character varying(2048) DEFAULT null`);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "clip" DROP COLUMN "description"`);
}
}

View File

@ -1,14 +0,0 @@
import {MigrationInterface, QueryRunner} from "typeorm";
export class instancePinnedPages1605585339718 implements MigrationInterface {
name = 'instancePinnedPages1605585339718'
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "meta" ADD "pinnedPages" character varying(512) array NOT NULL DEFAULT '{"/featured", "/channels", "/explore", "/pages", "/about-misskey"}'::varchar[]`);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "pinnedPages"`);
}
}

View File

@ -1,14 +0,0 @@
import {MigrationInterface, QueryRunner} from "typeorm";
export class instancePinnedClip1607151207216 implements MigrationInterface {
name = 'instancePinnedClip1607151207216'
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "meta" ADD "pinnedClipId" character varying(32)`);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "pinnedClipId"`);
}
}

View File

@ -1,14 +0,0 @@
import {MigrationInterface, QueryRunner} from "typeorm";
export class registry31610283021566 implements MigrationInterface {
name = 'registry31610283021566'
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "registry_item" ALTER COLUMN "value" DROP NOT NULL`);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "registry_item" ALTER COLUMN "value" SET NOT NULL`);
}
}

View File

@ -1,14 +0,0 @@
import {MigrationInterface, QueryRunner} from "typeorm";
export class objectStorageS3ForcePathStyle1611547387175 implements MigrationInterface {
name = 'objectStorageS3ForcePathStyle1611547387175'
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "meta" ADD "objectStorageS3ForcePathStyle" boolean NOT NULL DEFAULT true`);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "objectStorageS3ForcePathStyle"`);
}
}

View File

@ -1,14 +0,0 @@
import {MigrationInterface, QueryRunner} from "typeorm";
export class announcementEmail1612619156584 implements MigrationInterface {
name = 'announcementEmail1612619156584'
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "user_profile" ADD "receiveAnnouncementEmail" boolean NOT NULL DEFAULT true`);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "user_profile" DROP COLUMN "receiveAnnouncementEmail"`);
}
}

View File

@ -1,14 +0,0 @@
import {MigrationInterface, QueryRunner} from "typeorm";
export class emailNotificationTypes1613155914446 implements MigrationInterface {
name = 'emailNotificationTypes1613155914446'
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "user_profile" ADD "emailNotificationTypes" jsonb NOT NULL DEFAULT '["follow","receiveFollowRequest","groupInvited"]'`);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "user_profile" DROP COLUMN "emailNotificationTypes"`);
}
}

View File

@ -1,14 +0,0 @@
import {MigrationInterface, QueryRunner} from "typeorm";
export class userLang1613181457597 implements MigrationInterface {
name = 'userLang1613181457597'
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "user_profile" ADD "lang" character varying(32)`);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "user_profile" DROP COLUMN "lang"`);
}
}

View File

@ -1,15 +0,0 @@
import {MigrationInterface, QueryRunner} from "typeorm";
export class useBigintForDriveUsage1613503367223 implements MigrationInterface {
name = 'useBigintForDriveUsage1613503367223'
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "instance" ALTER COLUMN "driveUsage" TYPE bigint`);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "instance" DROP COLUMN "driveUsage"`);
await queryRunner.query(`ALTER TABLE "instance" ADD "driveUsage" integer NOT NULL DEFAULT 0`);
}
}

View File

@ -1,218 +0,0 @@
import {MigrationInterface, QueryRunner} from "typeorm";
export class chartV21615965918224 implements MigrationInterface {
name = 'chartV21615965918224'
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`DELETE FROM "__chart__active_users" WHERE "span" = 'day'`);
await queryRunner.query(`DELETE FROM "__chart__drive" WHERE "span" = 'day'`);
await queryRunner.query(`DELETE FROM "__chart__federation" WHERE "span" = 'day'`);
await queryRunner.query(`DELETE FROM "__chart__hashtag" WHERE "span" = 'day'`);
await queryRunner.query(`DELETE FROM "__chart__instance" WHERE "span" = 'day'`);
await queryRunner.query(`DELETE FROM "__chart__network" WHERE "span" = 'day'`);
await queryRunner.query(`DELETE FROM "__chart__notes" WHERE "span" = 'day'`);
await queryRunner.query(`DELETE FROM "__chart__per_user_drive" WHERE "span" = 'day'`);
await queryRunner.query(`DELETE FROM "__chart__per_user_following" WHERE "span" = 'day'`);
await queryRunner.query(`DELETE FROM "__chart__per_user_notes" WHERE "span" = 'day'`);
await queryRunner.query(`DELETE FROM "__chart__per_user_reaction" WHERE "span" = 'day'`);
await queryRunner.query(`DELETE FROM "__chart__test" WHERE "span" = 'day'`);
await queryRunner.query(`DELETE FROM "__chart__test_grouped" WHERE "span" = 'day'`);
await queryRunner.query(`DELETE FROM "__chart__test_unique" WHERE "span" = 'day'`);
await queryRunner.query(`DELETE FROM "__chart__users" WHERE "span" = 'day'`);
await queryRunner.query(`DROP INDEX "IDX_15e91a03aeeac9dbccdf43fc06"`);
await queryRunner.query(`DROP INDEX "IDX_20f57cc8f142c131340ee16742"`);
await queryRunner.query(`DROP INDEX "IDX_c26e2c1cbb6e911e0554b27416"`);
await queryRunner.query(`DROP INDEX "IDX_3fa0d0f17ca72e3dc80999a032"`);
await queryRunner.query(`DROP INDEX "IDX_6e1df243476e20cbf86572ecc0"`);
await queryRunner.query(`DROP INDEX "IDX_06690fc959f1c9fdaf21928222"`);
await queryRunner.query(`DROP INDEX "IDX_e447064455928cf627590ef527"`);
await queryRunner.query(`DROP INDEX "IDX_2d416e6af791a82e338c79d480"`);
await queryRunner.query(`DROP INDEX "IDX_e9cd07672b37d8966cf3709283"`);
await queryRunner.query(`DROP INDEX "IDX_fcc181fb8283009c61cc4083ef"`);
await queryRunner.query(`DROP INDEX "IDX_49975586f50ed7b800fdd88fbd"`);
await queryRunner.query(`DROP INDEX "IDX_6d6f156ceefc6bc5f273a0e370"`);
await queryRunner.query(`DROP INDEX "IDX_c12f0af4a66cdd30c2287ce8aa"`);
await queryRunner.query(`DROP INDEX "IDX_d0a4f79af5a97b08f37b547197"`);
await queryRunner.query(`DROP INDEX "IDX_f5448d9633cff74208d850aabe"`);
await queryRunner.query(`DROP INDEX "IDX_f8dd01baeded2ffa833e0a610a"`);
await queryRunner.query(`DROP INDEX "IDX_08fac0eb3b11f04c200c0b40dd"`);
await queryRunner.query(`DROP INDEX "IDX_9ff6944f01acb756fdc92d7563"`);
await queryRunner.query(`DROP INDEX "IDX_e69096589f11e3baa98ddd64d0"`);
await queryRunner.query(`DROP INDEX "IDX_0c9a159c5082cbeef3ca6706b5"`);
await queryRunner.query(`DROP INDEX "IDX_924fc196c80ca24bae01dd37e4"`);
await queryRunner.query(`DROP INDEX "IDX_328f259961e60c4fa0bfcf55ca"`);
await queryRunner.query(`DROP INDEX "IDX_42ea9381f0fda8dfe0fa1c8b53"`);
await queryRunner.query(`DROP INDEX "IDX_f2aeafde2ae6fbad38e857631b"`);
await queryRunner.query(`DROP INDEX "IDX_f92dd6d03f8d994f29987f6214"`);
await queryRunner.query(`DROP INDEX "IDX_57b5458d0d3d6d1e7f13d4e57f"`);
await queryRunner.query(`DROP INDEX "IDX_4db3b84c7be0d3464714f3e0b1"`);
await queryRunner.query(`DROP INDEX "IDX_8d2cbbc8114d90d19b44d626b6"`);
await queryRunner.query(`DROP INDEX "IDX_046feeb12e9ef5f783f409866a"`);
await queryRunner.query(`DROP INDEX "IDX_f68a5ab958f9f5fa17a32ac23b"`);
await queryRunner.query(`DROP INDEX "IDX_65633a106bce43fc7c5c30a5c7"`);
await queryRunner.query(`DROP INDEX "IDX_edeb73c09c3143a81bcb34d569"`);
await queryRunner.query(`DROP INDEX "IDX_e316f01a6d24eb31db27f88262"`);
await queryRunner.query(`DROP INDEX "IDX_2be7ec6cebddc14dc11e206686"`);
await queryRunner.query(`DROP INDEX "IDX_a5133470f4825902e170328ca5"`);
await queryRunner.query(`DROP INDEX "IDX_84e661abb7bd1e51b690d4b017"`);
await queryRunner.query(`DROP INDEX "IDX_5c73bf61da4f6e6f15bae88ed1"`);
await queryRunner.query(`DROP INDEX "IDX_d70c86baedc68326be11f9c0ce"`);
await queryRunner.query(`DROP INDEX "IDX_66e1e1ecd2f29e57778af35b59"`);
await queryRunner.query(`DROP INDEX "IDX_92255988735563f0fe4aba1f05"`);
await queryRunner.query(`DROP INDEX "IDX_c5870993e25c3d5771f91f5003"`);
await queryRunner.query(`DROP INDEX "IDX_f170de677ea75ad4533de2723e"`);
await queryRunner.query(`DROP INDEX "IDX_7c184198ecf66a8d3ecb253ab3"`);
await queryRunner.query(`DROP INDEX "IDX_f091abb24193d50c653c6b77fc"`);
await queryRunner.query(`DROP INDEX "IDX_a770a57c70e668cc61590c9161"`);
await queryRunner.query(`ALTER TABLE "__chart__active_users" DROP COLUMN "span"`);
await queryRunner.query(`DROP TYPE "public"."__chart__active_users_span_enum"`);
await queryRunner.query(`ALTER TABLE "__chart__active_users" DROP COLUMN "unique"`);
await queryRunner.query(`ALTER TABLE "__chart__active_users" DROP COLUMN "___local_count"`);
await queryRunner.query(`ALTER TABLE "__chart__active_users" DROP COLUMN "___remote_count"`);
await queryRunner.query(`ALTER TABLE "__chart__drive" DROP COLUMN "span"`);
await queryRunner.query(`DROP TYPE "public"."__chart__drive_span_enum"`);
await queryRunner.query(`ALTER TABLE "__chart__drive" DROP COLUMN "unique"`);
await queryRunner.query(`ALTER TABLE "__chart__federation" DROP COLUMN "span"`);
await queryRunner.query(`DROP TYPE "public"."__chart__federation_span_enum"`);
await queryRunner.query(`ALTER TABLE "__chart__federation" DROP COLUMN "unique"`);
await queryRunner.query(`ALTER TABLE "__chart__hashtag" DROP COLUMN "span"`);
await queryRunner.query(`DROP TYPE "public"."__chart__hashtag_span_enum"`);
await queryRunner.query(`ALTER TABLE "__chart__hashtag" DROP COLUMN "unique"`);
await queryRunner.query(`ALTER TABLE "__chart__hashtag" DROP COLUMN "___local_count"`);
await queryRunner.query(`ALTER TABLE "__chart__hashtag" DROP COLUMN "___remote_count"`);
await queryRunner.query(`ALTER TABLE "__chart__instance" DROP COLUMN "span"`);
await queryRunner.query(`DROP TYPE "public"."__chart__instance_span_enum"`);
await queryRunner.query(`ALTER TABLE "__chart__instance" DROP COLUMN "unique"`);
await queryRunner.query(`ALTER TABLE "__chart__network" DROP COLUMN "span"`);
await queryRunner.query(`DROP TYPE "public"."__chart__network_span_enum"`);
await queryRunner.query(`ALTER TABLE "__chart__network" DROP COLUMN "unique"`);
await queryRunner.query(`ALTER TABLE "__chart__notes" DROP COLUMN "span"`);
await queryRunner.query(`DROP TYPE "public"."__chart__notes_span_enum"`);
await queryRunner.query(`ALTER TABLE "__chart__notes" DROP COLUMN "unique"`);
await queryRunner.query(`ALTER TABLE "__chart__per_user_drive" DROP COLUMN "span"`);
await queryRunner.query(`DROP TYPE "public"."__chart__per_user_drive_span_enum"`);
await queryRunner.query(`ALTER TABLE "__chart__per_user_drive" DROP COLUMN "unique"`);
await queryRunner.query(`ALTER TABLE "__chart__per_user_following" DROP COLUMN "span"`);
await queryRunner.query(`DROP TYPE "public"."__chart__per_user_following_span_enum"`);
await queryRunner.query(`ALTER TABLE "__chart__per_user_following" DROP COLUMN "unique"`);
await queryRunner.query(`ALTER TABLE "__chart__per_user_notes" DROP COLUMN "span"`);
await queryRunner.query(`DROP TYPE "public"."__chart__per_user_notes_span_enum"`);
await queryRunner.query(`ALTER TABLE "__chart__per_user_notes" DROP COLUMN "unique"`);
await queryRunner.query(`ALTER TABLE "__chart__per_user_reaction" DROP COLUMN "span"`);
await queryRunner.query(`DROP TYPE "public"."__chart__per_user_reaction_span_enum"`);
await queryRunner.query(`ALTER TABLE "__chart__per_user_reaction" DROP COLUMN "unique"`);
await queryRunner.query(`ALTER TABLE "__chart__test_grouped" DROP COLUMN "span"`);
await queryRunner.query(`DROP TYPE "public"."__chart__test_grouped_span_enum"`);
await queryRunner.query(`ALTER TABLE "__chart__test_grouped" DROP COLUMN "unique"`);
await queryRunner.query(`ALTER TABLE "__chart__test_unique" DROP COLUMN "span"`);
await queryRunner.query(`DROP TYPE "public"."__chart__test_unique_span_enum"`);
await queryRunner.query(`ALTER TABLE "__chart__test_unique" DROP COLUMN "unique"`);
await queryRunner.query(`ALTER TABLE "__chart__test_unique" DROP COLUMN "___foo"`);
await queryRunner.query(`ALTER TABLE "__chart__test" DROP COLUMN "span"`);
await queryRunner.query(`DROP TYPE "public"."__chart__test_span_enum"`);
await queryRunner.query(`ALTER TABLE "__chart__test" DROP COLUMN "unique"`);
await queryRunner.query(`ALTER TABLE "__chart__users" DROP COLUMN "span"`);
await queryRunner.query(`DROP TYPE "public"."__chart__users_span_enum"`);
await queryRunner.query(`ALTER TABLE "__chart__users" DROP COLUMN "unique"`);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "__chart__users" ADD "unique" jsonb NOT NULL DEFAULT '{}'`);
await queryRunner.query(`CREATE TYPE "public"."__chart__users_span_enum" AS ENUM('hour', 'day')`);
await queryRunner.query(`ALTER TABLE "__chart__users" ADD "span" "__chart__users_span_enum" NOT NULL`);
await queryRunner.query(`ALTER TABLE "__chart__test" ADD "unique" jsonb NOT NULL DEFAULT '{}'`);
await queryRunner.query(`CREATE TYPE "public"."__chart__test_span_enum" AS ENUM('hour', 'day')`);
await queryRunner.query(`ALTER TABLE "__chart__test" ADD "span" "__chart__test_span_enum" NOT NULL`);
await queryRunner.query(`ALTER TABLE "__chart__test_unique" ADD "___foo" bigint NOT NULL`);
await queryRunner.query(`ALTER TABLE "__chart__test_unique" ADD "unique" jsonb NOT NULL DEFAULT '{}'`);
await queryRunner.query(`CREATE TYPE "public"."__chart__test_unique_span_enum" AS ENUM('hour', 'day')`);
await queryRunner.query(`ALTER TABLE "__chart__test_unique" ADD "span" "__chart__test_unique_span_enum" NOT NULL`);
await queryRunner.query(`ALTER TABLE "__chart__test_grouped" ADD "unique" jsonb NOT NULL DEFAULT '{}'`);
await queryRunner.query(`CREATE TYPE "public"."__chart__test_grouped_span_enum" AS ENUM('hour', 'day')`);
await queryRunner.query(`ALTER TABLE "__chart__test_grouped" ADD "span" "__chart__test_grouped_span_enum" NOT NULL`);
await queryRunner.query(`ALTER TABLE "__chart__per_user_reaction" ADD "unique" jsonb NOT NULL DEFAULT '{}'`);
await queryRunner.query(`CREATE TYPE "public"."__chart__per_user_reaction_span_enum" AS ENUM('hour', 'day')`);
await queryRunner.query(`ALTER TABLE "__chart__per_user_reaction" ADD "span" "__chart__per_user_reaction_span_enum" NOT NULL`);
await queryRunner.query(`ALTER TABLE "__chart__per_user_notes" ADD "unique" jsonb NOT NULL DEFAULT '{}'`);
await queryRunner.query(`CREATE TYPE "public"."__chart__per_user_notes_span_enum" AS ENUM('hour', 'day')`);
await queryRunner.query(`ALTER TABLE "__chart__per_user_notes" ADD "span" "__chart__per_user_notes_span_enum" NOT NULL`);
await queryRunner.query(`ALTER TABLE "__chart__per_user_following" ADD "unique" jsonb NOT NULL DEFAULT '{}'`);
await queryRunner.query(`CREATE TYPE "public"."__chart__per_user_following_span_enum" AS ENUM('hour', 'day')`);
await queryRunner.query(`ALTER TABLE "__chart__per_user_following" ADD "span" "__chart__per_user_following_span_enum" NOT NULL`);
await queryRunner.query(`ALTER TABLE "__chart__per_user_drive" ADD "unique" jsonb NOT NULL DEFAULT '{}'`);
await queryRunner.query(`CREATE TYPE "public"."__chart__per_user_drive_span_enum" AS ENUM('hour', 'day')`);
await queryRunner.query(`ALTER TABLE "__chart__per_user_drive" ADD "span" "__chart__per_user_drive_span_enum" NOT NULL`);
await queryRunner.query(`ALTER TABLE "__chart__notes" ADD "unique" jsonb NOT NULL DEFAULT '{}'`);
await queryRunner.query(`CREATE TYPE "public"."__chart__notes_span_enum" AS ENUM('hour', 'day')`);
await queryRunner.query(`ALTER TABLE "__chart__notes" ADD "span" "__chart__notes_span_enum" NOT NULL`);
await queryRunner.query(`ALTER TABLE "__chart__network" ADD "unique" jsonb NOT NULL DEFAULT '{}'`);
await queryRunner.query(`CREATE TYPE "public"."__chart__network_span_enum" AS ENUM('hour', 'day')`);
await queryRunner.query(`ALTER TABLE "__chart__network" ADD "span" "__chart__network_span_enum" NOT NULL`);
await queryRunner.query(`ALTER TABLE "__chart__instance" ADD "unique" jsonb NOT NULL DEFAULT '{}'`);
await queryRunner.query(`CREATE TYPE "public"."__chart__instance_span_enum" AS ENUM('hour', 'day')`);
await queryRunner.query(`ALTER TABLE "__chart__instance" ADD "span" "__chart__instance_span_enum" NOT NULL`);
await queryRunner.query(`ALTER TABLE "__chart__hashtag" ADD "___remote_count" bigint NOT NULL`);
await queryRunner.query(`ALTER TABLE "__chart__hashtag" ADD "___local_count" bigint NOT NULL`);
await queryRunner.query(`ALTER TABLE "__chart__hashtag" ADD "unique" jsonb NOT NULL DEFAULT '{}'`);
await queryRunner.query(`CREATE TYPE "public"."__chart__hashtag_span_enum" AS ENUM('hour', 'day')`);
await queryRunner.query(`ALTER TABLE "__chart__hashtag" ADD "span" "__chart__hashtag_span_enum" NOT NULL`);
await queryRunner.query(`ALTER TABLE "__chart__federation" ADD "unique" jsonb NOT NULL DEFAULT '{}'`);
await queryRunner.query(`CREATE TYPE "public"."__chart__federation_span_enum" AS ENUM('hour', 'day')`);
await queryRunner.query(`ALTER TABLE "__chart__federation" ADD "span" "__chart__federation_span_enum" NOT NULL`);
await queryRunner.query(`ALTER TABLE "__chart__drive" ADD "unique" jsonb NOT NULL DEFAULT '{}'`);
await queryRunner.query(`CREATE TYPE "public"."__chart__drive_span_enum" AS ENUM('hour', 'day')`);
await queryRunner.query(`ALTER TABLE "__chart__drive" ADD "span" "__chart__drive_span_enum" NOT NULL`);
await queryRunner.query(`ALTER TABLE "__chart__active_users" ADD "___remote_count" bigint NOT NULL`);
await queryRunner.query(`ALTER TABLE "__chart__active_users" ADD "___local_count" bigint NOT NULL`);
await queryRunner.query(`ALTER TABLE "__chart__active_users" ADD "unique" jsonb NOT NULL DEFAULT '{}'`);
await queryRunner.query(`CREATE TYPE "public"."__chart__active_users_span_enum" AS ENUM('hour', 'day')`);
await queryRunner.query(`ALTER TABLE "__chart__active_users" ADD "span" "__chart__active_users_span_enum" NOT NULL`);
await queryRunner.query(`CREATE INDEX "IDX_a770a57c70e668cc61590c9161" ON "__chart__users" ("date", "group", "span") `);
await queryRunner.query(`CREATE INDEX "IDX_f091abb24193d50c653c6b77fc" ON "__chart__users" ("date", "span") `);
await queryRunner.query(`CREATE INDEX "IDX_7c184198ecf66a8d3ecb253ab3" ON "__chart__users" ("span") `);
await queryRunner.query(`CREATE INDEX "IDX_f170de677ea75ad4533de2723e" ON "__chart__test" ("date", "group", "span") `);
await queryRunner.query(`CREATE INDEX "IDX_c5870993e25c3d5771f91f5003" ON "__chart__test" ("date", "span") `);
await queryRunner.query(`CREATE INDEX "IDX_92255988735563f0fe4aba1f05" ON "__chart__test" ("span") `);
await queryRunner.query(`CREATE INDEX "IDX_66e1e1ecd2f29e57778af35b59" ON "__chart__test_unique" ("date", "group", "span") `);
await queryRunner.query(`CREATE INDEX "IDX_d70c86baedc68326be11f9c0ce" ON "__chart__test_unique" ("date", "span") `);
await queryRunner.query(`CREATE INDEX "IDX_5c73bf61da4f6e6f15bae88ed1" ON "__chart__test_unique" ("span") `);
await queryRunner.query(`CREATE INDEX "IDX_84e661abb7bd1e51b690d4b017" ON "__chart__test_grouped" ("date", "group", "span") `);
await queryRunner.query(`CREATE INDEX "IDX_a5133470f4825902e170328ca5" ON "__chart__test_grouped" ("date", "span") `);
await queryRunner.query(`CREATE INDEX "IDX_2be7ec6cebddc14dc11e206686" ON "__chart__test_grouped" ("span") `);
await queryRunner.query(`CREATE INDEX "IDX_e316f01a6d24eb31db27f88262" ON "__chart__per_user_reaction" ("date", "group", "span") `);
await queryRunner.query(`CREATE INDEX "IDX_edeb73c09c3143a81bcb34d569" ON "__chart__per_user_reaction" ("date", "span") `);
await queryRunner.query(`CREATE INDEX "IDX_65633a106bce43fc7c5c30a5c7" ON "__chart__per_user_reaction" ("span") `);
await queryRunner.query(`CREATE INDEX "IDX_f68a5ab958f9f5fa17a32ac23b" ON "__chart__per_user_notes" ("date", "group", "span") `);
await queryRunner.query(`CREATE INDEX "IDX_046feeb12e9ef5f783f409866a" ON "__chart__per_user_notes" ("date", "span") `);
await queryRunner.query(`CREATE INDEX "IDX_8d2cbbc8114d90d19b44d626b6" ON "__chart__per_user_notes" ("span") `);
await queryRunner.query(`CREATE INDEX "IDX_4db3b84c7be0d3464714f3e0b1" ON "__chart__per_user_following" ("date", "group", "span") `);
await queryRunner.query(`CREATE INDEX "IDX_57b5458d0d3d6d1e7f13d4e57f" ON "__chart__per_user_following" ("date", "span") `);
await queryRunner.query(`CREATE INDEX "IDX_f92dd6d03f8d994f29987f6214" ON "__chart__per_user_following" ("span") `);
await queryRunner.query(`CREATE INDEX "IDX_f2aeafde2ae6fbad38e857631b" ON "__chart__per_user_drive" ("date", "group", "span") `);
await queryRunner.query(`CREATE INDEX "IDX_42ea9381f0fda8dfe0fa1c8b53" ON "__chart__per_user_drive" ("date", "span") `);
await queryRunner.query(`CREATE INDEX "IDX_328f259961e60c4fa0bfcf55ca" ON "__chart__per_user_drive" ("span") `);
await queryRunner.query(`CREATE INDEX "IDX_924fc196c80ca24bae01dd37e4" ON "__chart__notes" ("date", "group", "span") `);
await queryRunner.query(`CREATE INDEX "IDX_0c9a159c5082cbeef3ca6706b5" ON "__chart__notes" ("date", "span") `);
await queryRunner.query(`CREATE INDEX "IDX_e69096589f11e3baa98ddd64d0" ON "__chart__notes" ("span") `);
await queryRunner.query(`CREATE INDEX "IDX_9ff6944f01acb756fdc92d7563" ON "__chart__network" ("date", "group", "span") `);
await queryRunner.query(`CREATE INDEX "IDX_08fac0eb3b11f04c200c0b40dd" ON "__chart__network" ("date", "span") `);
await queryRunner.query(`CREATE INDEX "IDX_f8dd01baeded2ffa833e0a610a" ON "__chart__network" ("span") `);
await queryRunner.query(`CREATE INDEX "IDX_f5448d9633cff74208d850aabe" ON "__chart__instance" ("date", "group", "span") `);
await queryRunner.query(`CREATE INDEX "IDX_d0a4f79af5a97b08f37b547197" ON "__chart__instance" ("date", "span") `);
await queryRunner.query(`CREATE INDEX "IDX_c12f0af4a66cdd30c2287ce8aa" ON "__chart__instance" ("span") `);
await queryRunner.query(`CREATE INDEX "IDX_6d6f156ceefc6bc5f273a0e370" ON "__chart__hashtag" ("date", "group", "span") `);
await queryRunner.query(`CREATE INDEX "IDX_49975586f50ed7b800fdd88fbd" ON "__chart__hashtag" ("date", "span") `);
await queryRunner.query(`CREATE INDEX "IDX_fcc181fb8283009c61cc4083ef" ON "__chart__hashtag" ("span") `);
await queryRunner.query(`CREATE INDEX "IDX_e9cd07672b37d8966cf3709283" ON "__chart__federation" ("date", "group", "span") `);
await queryRunner.query(`CREATE INDEX "IDX_2d416e6af791a82e338c79d480" ON "__chart__federation" ("date", "span") `);
await queryRunner.query(`CREATE INDEX "IDX_e447064455928cf627590ef527" ON "__chart__federation" ("span") `);
await queryRunner.query(`CREATE INDEX "IDX_06690fc959f1c9fdaf21928222" ON "__chart__drive" ("date", "group", "span") `);
await queryRunner.query(`CREATE INDEX "IDX_6e1df243476e20cbf86572ecc0" ON "__chart__drive" ("date", "span") `);
await queryRunner.query(`CREATE INDEX "IDX_3fa0d0f17ca72e3dc80999a032" ON "__chart__drive" ("span") `);
await queryRunner.query(`CREATE INDEX "IDX_c26e2c1cbb6e911e0554b27416" ON "__chart__active_users" ("date", "group", "span") `);
await queryRunner.query(`CREATE INDEX "IDX_20f57cc8f142c131340ee16742" ON "__chart__active_users" ("date", "span") `);
await queryRunner.query(`CREATE INDEX "IDX_15e91a03aeeac9dbccdf43fc06" ON "__chart__active_users" ("span") `);
}
}

View File

@ -1,14 +0,0 @@
import {MigrationInterface, QueryRunner} from "typeorm";
export class userHideOnlineStatus1618639857000 implements MigrationInterface {
name = 'userHideOnlineStatus1618639857000'
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "user" ADD "hideOnlineStatus" boolean NOT NULL DEFAULT false`);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "user" DROP COLUMN "hideOnlineStatus"`);
}
}

View File

@ -1,14 +0,0 @@
import {MigrationInterface, QueryRunner} from "typeorm";
export class ad21620364649428 implements MigrationInterface {
name = 'ad21620364649428'
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "ad" ADD "ratio" integer NOT NULL DEFAULT '1'`);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "ad" DROP COLUMN "ratio"`);
}
}

View File

@ -1,16 +0,0 @@
import {MigrationInterface, QueryRunner} from "typeorm";
export class addNoteIndexes1621479946000 implements MigrationInterface {
name = 'addNoteIndexes1621479946000'
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`CREATE INDEX "IDX_NOTE_MENTIONS" ON "note" USING gin ("mentions")`, undefined);
await queryRunner.query(`CREATE INDEX "IDX_NOTE_VISIBLE_USER_IDS" ON "note" USING gin ("visibleUserIds")`, undefined);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`DROP INDEX "IDX_NOTE_MENTIONS"`, undefined);
await queryRunner.query(`DROP INDEX "IDX_NOTE_VISIBLE_USER_IDS"`, undefined);
}
}

View File

@ -1,13 +0,0 @@
import {MigrationInterface, QueryRunner} from "typeorm";
export class userProfileDescriptionLength1622679304522 implements MigrationInterface {
name = 'userProfileDescriptionLength1622679304522';
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "user_profile" ALTER COLUMN "description" TYPE character varying(2048)`, undefined);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "user_profile" ALTER COLUMN "description" TYPE character varying(1024)`, undefined);
}
}

View File

@ -1,12 +0,0 @@
import {MigrationInterface, QueryRunner} from "typeorm";
export class logMessageLength1622681548499 implements MigrationInterface {
name = 'logMessageLength1622681548499';
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "log" ALTER COLUMN "message" TYPE character varying(2048)`, undefined);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "log" ALTER COLUMN "message" TYPE character varying(1024)`, undefined);
}
}

View File

@ -1,14 +0,0 @@
import {MigrationInterface, QueryRunner} from "typeorm";
export class deeplIntegration1629024377804 implements MigrationInterface {
name = 'deeplIntegration1629024377804'
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "meta" ADD "deeplAuthKey" character varying(128)`);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "deeplAuthKey"`);
}
}

View File

@ -1,14 +0,0 @@
import {MigrationInterface, QueryRunner} from "typeorm";
export class fixChannelUserId1629288472000 implements MigrationInterface {
name = 'fixChannelUserId1629288472000'
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "channel" ALTER COLUMN "userId" DROP NOT NULL;`);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "channel" ALTER COLUMN "userId" SET NOT NULL;`);
}
}

View File

@ -1,15 +0,0 @@
import {MigrationInterface, QueryRunner} from "typeorm";
export class isUserDeleted1629512953000 implements MigrationInterface {
name = 'isUserDeleted1629512953000'
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "user" ADD "isDeleted" boolean NOT NULL DEFAULT false`);
await queryRunner.query(`COMMENT ON COLUMN "user"."isDeleted" IS 'Whether the User is deleted.'`);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "user" DROP COLUMN "isDeleted"`);
}
}

View File

@ -1,14 +0,0 @@
import {MigrationInterface, QueryRunner} from "typeorm";
export class deeplIntegration21629778475000 implements MigrationInterface {
name = 'deeplIntegration21629778475000'
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "meta" ADD "deeplIsPro" boolean NOT NULL DEFAULT false`);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "deeplIsPro"`);
}
}

View File

@ -1,14 +0,0 @@
import {MigrationInterface, QueryRunner} from "typeorm";
export class emailRequiredForSignup1633068642000 implements MigrationInterface {
name = 'emailRequiredForSignup1633068642000'
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "meta" ADD "emailRequiredForSignup" boolean NOT NULL DEFAULT false`);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "emailRequiredForSignup"`);
}
}

View File

@ -1,14 +0,0 @@
import {MigrationInterface, QueryRunner} from "typeorm";
export class userPublicReactions1634486652000 implements MigrationInterface {
name = 'userPublicReactions1634486652000'
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "user_profile" ADD "publicReactions" boolean NOT NULL DEFAULT false`);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "user_profile" DROP COLUMN "publicReactions"`);
}
}

View File

@ -1,13 +0,0 @@
import {MigrationInterface, QueryRunner} from "typeorm";
export class deleteLog1634902659689 implements MigrationInterface {
name = 'deleteLog1634902659689'
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`DROP TABLE "log"`);
}
public async down(queryRunner: QueryRunner): Promise<void> {
}
}

View File

@ -1,260 +1,53 @@
{
"name": "misskey",
"author": "syuilo <syuilotan@yahoo.co.jp>",
"version": "12.93.1",
"version": "12.96.1",
"codename": "indigo",
"repository": {
"type": "git",
"url": "https://github.com/misskey-dev/misskey.git"
},
"main": "./index.js",
"private": true,
"scripts": {
"start": "node --experimental-json-modules ./index.js",
"start:test": "cross-env NODE_ENV=test node --experimental-json-modules ./index.js",
"postinstall": "node ./scripts/install-packages.js",
"build": "node ./scripts/build.js",
"start": "cd packages/backend && node --experimental-json-modules ./built/index.js",
"start:test": "cd packages/backend && cross-env NODE_ENV=test node --experimental-json-modules ./built/index.js",
"init": "npm run migrate",
"ormconfig": "node ./built/ormconfig.js",
"migrate": "ts-node ./node_modules/typeorm/cli.js migration:run",
"ormconfig": "node ./packages/backend/ormconfig.js",
"migrate": "cd packages/backend && npx typeorm migration:run",
"migrateandstart": "npm run migrate && npm run start",
"build": "npm run build-webpack && npm run build-ts && npm run build-gulp",
"build-webpack": "webpack",
"build-ts": "tsc -p src/tsconfig.json || echo done. && tsc-alias -p src/tsconfig.json",
"build-gulp": "gulp build",
"watch": "concurrently \"npm:watch-*\"",
"watch-webpack": "webpack --watch",
"watch-ts": "tsc -w -p src/tsconfig.json && tsc-alias -w -p src/tsconfig.json",
"watch-gulp": "gulp watch",
"clean": "gulp clean",
"cleanall": "gulp cleanall",
"lint": "tslint 'src/**/*.ts'",
"gulp": "gulp build",
"watch": "npm run dev",
"dev": "node ./scripts/dev.js",
"lint": "node ./scripts/lint.js",
"cy:open": "cypress open",
"cy:run": "cypress run",
"e2e": "start-server-and-test start:test http://localhost cy:run",
"test": "cross-env TS_NODE_FILES=true TS_NODE_TRANSPILE_ONLY=true TS_NODE_PROJECT=\"./test/tsconfig.json\" mocha",
"format": "gulp format"
},
"resolutions": {
"chokidar": "^3.3.1",
"lodash": "^4.17.21"
"e2e": "start-server-and-test start:test http://localhost:61812 cy:run",
"mocha": "cd packages/backend && cross-env TS_NODE_FILES=true TS_NODE_TRANSPILE_ONLY=true TS_NODE_PROJECT=\"./test/tsconfig.json\" npx mocha",
"test": "npm run mocha",
"format": "gulp format",
"clean": "node ./scripts/clean.js",
"clean-all": "node ./scripts/clean-all.js",
"cleanall": "npm run clean-all"
},
"dependencies": {
"@elastic/elasticsearch": "7.11.0",
"@koa/cors": "3.1.0",
"@koa/multer": "3.0.0",
"@koa/router": "9.0.1",
"@sentry/browser": "5.29.2",
"@sentry/tracing": "5.29.2",
"@sinonjs/fake-timers": "7.1.2",
"@syuilo/aiscript": "0.11.1",
"@types/bcryptjs": "2.4.2",
"@types/bull": "3.15.5",
"@types/cbor": "6.0.0",
"@types/dateformat": "3.0.1",
"@types/escape-regexp": "0.0.0",
"@types/glob": "7.1.4",
"@types/gulp": "4.0.9",
"@types/gulp-rename": "2.0.1",
"@types/is-url": "1.2.30",
"@types/js-yaml": "4.0.3",
"@types/jsdom": "16.2.13",
"@types/jsonld": "1.5.6",
"@types/katex": "0.11.1",
"@types/koa": "2.13.4",
"@types/koa__cors": "3.0.3",
"@types/koa__multer": "2.0.3",
"@types/koa__router": "8.0.8",
"@types/koa-bodyparser": "4.3.3",
"@types/koa-cors": "0.0.2",
"@types/koa-favicon": "2.0.21",
"@types/koa-logger": "3.1.2",
"@types/koa-mount": "4.0.1",
"@types/koa-send": "4.1.3",
"@types/koa-views": "7.0.0",
"@types/markdown-it": "12.2.3",
"@types/matter-js": "0.17.5",
"@types/mocha": "8.2.3",
"@types/node": "16.10.3",
"@types/node-fetch": "2.5.12",
"@types/nodemailer": "6.4.4",
"@types/nprogress": "0.2.0",
"@types/oauth": "0.9.1",
"@types/parse5": "6.0.1",
"@types/parsimmon": "1.10.6",
"@types/portscanner": "2.1.1",
"@types/pug": "2.0.5",
"@types/punycode": "2.1.0",
"@types/qrcode": "1.4.1",
"@types/random-seed": "0.3.3",
"@types/ratelimiter": "3.4.2",
"@types/redis": "2.8.32",
"@types/rename": "1.0.4",
"@types/request-stats": "3.0.0",
"@types/rimraf": "3.0.2",
"@types/seedrandom": "2.4.28",
"@types/sharp": "0.29.2",
"@types/sinonjs__fake-timers": "6.0.4",
"@types/speakeasy": "2.0.6",
"@types/throttle-debounce": "2.1.0",
"@types/tinycolor2": "1.4.3",
"@types/tmp": "0.2.1",
"@types/uuid": "8.3.1",
"@types/web-push": "3.3.2",
"@types/webpack": "5.28.0",
"@types/webpack-stream": "3.2.12",
"@types/websocket": "1.0.4",
"@types/ws": "8.2.0",
"@typescript-eslint/parser": "5.0.0",
"@vue/compiler-sfc": "3.2.20",
"abort-controller": "3.0.0",
"apexcharts": "3.28.3",
"autobind-decorator": "2.4.0",
"autosize": "4.0.4",
"autwh": "0.1.0",
"aws-sdk": "2.1003.0",
"bcryptjs": "2.4.3",
"blurhash": "1.1.4",
"broadcast-channel": "4.2.0",
"bull": "3.29.3",
"cacheable-lookup": "6.0.3",
"cafy": "15.2.1",
"cbor": "8.0.2",
"chalk": "4.1.2",
"chart.js": "3.5.1",
"chartjs-adapter-date-fns": "2.0.0",
"chartjs-plugin-zoom": "1.1.1",
"cli-highlight": "2.1.11",
"compare-versions": "3.6.0",
"concurrently": "6.3.0",
"content-disposition": "0.5.3",
"crc-32": "1.2.0",
"css-loader": "6.4.0",
"cssnano": "5.0.8",
"date-fns": "2.25.0",
"dateformat": "4.5.1",
"escape-regexp": "0.0.1",
"eslint": "8.0.1",
"eslint-plugin-vue": "7.19.1",
"eventemitter3": "4.0.7",
"feed": "4.2.2",
"file-type": "16.5.3",
"fluent-ffmpeg": "2.1.2",
"glob": "7.2.0",
"got": "11.8.2",
"execa": "5.1.1",
"gulp": "4.0.2",
"gulp-cssnano": "2.1.3",
"gulp-rename": "2.0.0",
"gulp-replace": "1.1.3",
"gulp-terser": "2.1.0",
"gulp-tslint": "8.1.4",
"hpagent": "0.1.2",
"http-signature": "1.3.5",
"idb-keyval": "5.1.3",
"insert-text-at-cursor": "0.3.0",
"ip-cidr": "3.0.4",
"is-svg": "4.3.1",
"js-yaml": "4.1.0",
"jsdom": "16.7.0",
"json5": "2.2.0",
"json5-loader": "4.0.1",
"jsonld": "5.2.0",
"jsrsasign": "8.0.20",
"katex": "0.13.18",
"koa": "2.13.3",
"koa-bodyparser": "4.3.0",
"koa-favicon": "2.1.0",
"koa-json-body": "5.3.0",
"koa-logger": "3.2.1",
"koa-mount": "4.0.0",
"koa-send": "5.0.1",
"koa-slow": "2.1.0",
"koa-views": "7.0.1",
"langmap": "0.0.16",
"markdown-it": "12.2.0",
"markdown-it-anchor": "7.1.0",
"matter-js": "0.17.1",
"mfm-js": "0.20.0",
"misskey-js": "0.0.6",
"mocha": "8.4.0",
"ms": "2.1.3",
"multer": "1.4.3",
"nested-property": "4.0.0",
"node-fetch": "2.6.1",
"nodemailer": "6.7.0",
"os-utils": "0.0.14",
"parse5": "6.0.1",
"pg": "8.7.1",
"portscanner": "2.2.0",
"postcss": "8.3.9",
"postcss-loader": "6.2.0",
"prismjs": "1.25.0",
"private-ip": "2.3.0",
"probe-image-size": "7.2.1",
"promise-limit": "2.7.0",
"pug": "3.0.2",
"punycode": "2.1.1",
"pureimage": "0.3.5",
"qrcode": "1.4.4",
"random-seed": "0.3.0",
"ratelimiter": "3.4.1",
"re2": "1.16.0",
"redis": "3.1.2",
"redis-lock": "0.1.4",
"reflect-metadata": "0.1.13",
"rename": "1.0.4",
"request-stats": "3.0.0",
"require-all": "3.0.0",
"rimraf": "3.0.2",
"rndstr": "1.0.0",
"s-age": "1.1.2",
"sass": "1.43.2",
"sass-loader": "12.2.0",
"seedrandom": "3.0.5",
"sharp": "0.29.1",
"speakeasy": "2.0.0",
"strict-event-emitter-types": "2.0.0",
"stringz": "2.1.0",
"style-loader": "3.3.0",
"summaly": "2.4.1",
"syslog-pro": "1.0.0",
"systeminformation": "5.9.7",
"syuilo-password-strength": "0.0.1",
"textarea-caret": "3.1.0",
"three": "0.117.1",
"throttle-debounce": "3.0.1",
"tinycolor2": "1.4.2",
"tmp": "0.2.1",
"ts-loader": "9.2.6",
"ts-node": "10.3.0",
"tsc-alias": "1.3.10",
"tsconfig-paths": "3.11.0",
"tslint": "6.1.3",
"tslint-sonarts": "1.9.0",
"twemoji-parser": "13.1.0",
"typeorm": "0.2.38",
"typescript": "4.4.4",
"ulid": "2.3.0",
"uuid": "8.3.2",
"v-debounce": "0.1.2",
"vanilla-tilt": "1.7.2",
"vue": "3.2.20",
"vue-loader": "16.7.0",
"vue-prism-editor": "2.0.0-alpha.2",
"vue-router": "4.0.5",
"vue-style-loader": "4.1.3",
"vue-svg-loader": "0.17.0-beta.2",
"vuedraggable": "4.0.1",
"web-push": "3.4.5",
"webpack": "5.58.2",
"webpack-cli": "4.9.0",
"websocket": "1.0.34",
"ws": "8.2.3",
"xev": "2.0.1"
"js-yaml": "4.1.0"
},
"devDependencies": {
"@redocly/openapi-core": "1.0.0-beta.54",
"@types/fluent-ffmpeg": "2.1.17",
"@typescript-eslint/parser": "5.4.0",
"cross-env": "7.0.3",
"cypress": "8.5.0",
"start-server-and-test": "1.14.0"
"cypress": "9.0.0",
"start-server-and-test": "1.14.0",
"typescript": "4.5.2"
}
}

View File

@ -0,0 +1,4 @@
node_modules
/built
/.eslintrc.js
/@types/**/*

View File

@ -0,0 +1,9 @@
module.exports = {
parserOptions: {
tsconfigRootDir: __dirname,
project: ['./tsconfig.json'],
},
extends: [
'../shared/.eslintrc.js',
],
};

2
packages/backend/.npmrc Normal file
View File

@ -0,0 +1,2 @@
save-exact = true
package-lock = false

View File

@ -0,0 +1,6 @@
{
"typescript.tsdk": "node_modules\\typescript\\lib",
"path-intellisense.mappings": {
"@": "${workspaceRoot}/packages/backend/src/"
}
}

1
packages/backend/.yarnrc Normal file
View File

@ -0,0 +1 @@
network-timeout 600000

Some files were not shown because too many files have changed in this diff Show More