Merge branch 'develop' into feat/scylladb
This commit is contained in:
commit
413c51d4d2
738 changed files with 4258 additions and 21672 deletions
|
@ -235,6 +235,9 @@ reservedUsernames: [
|
||||||
# Proxy remote files (default: false)
|
# Proxy remote files (default: false)
|
||||||
#proxyRemoteFiles: true
|
#proxyRemoteFiles: true
|
||||||
|
|
||||||
|
# Use authorized fetch for outgoing requests
|
||||||
|
signToActivityPubGet: true
|
||||||
|
|
||||||
#allowedPrivateNetworks: [
|
#allowedPrivateNetworks: [
|
||||||
# '127.0.0.1/32'
|
# '127.0.0.1/32'
|
||||||
#]
|
#]
|
||||||
|
|
|
@ -94,9 +94,9 @@ An actual domain will be assigned so you can test the federation.
|
||||||
- The tag name must be the version
|
- The tag name must be the version
|
||||||
|
|
||||||
## Development
|
## Development
|
||||||
During development, it is useful to use the `yarn dev` command.
|
During development, it is useful to use the `pnpm run dev` command.
|
||||||
This command monitors the server-side and client-side source files and automatically builds them if they are modified.
|
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.
|
In addition, it will also automatically start the Firefish server process.
|
||||||
|
|
||||||
## Testing
|
## Testing
|
||||||
- Test codes are located in [`/test`](/test).
|
- Test codes are located in [`/test`](/test).
|
||||||
|
@ -119,20 +119,13 @@ yarn test
|
||||||
|
|
||||||
#### Run specify test
|
#### Run specify test
|
||||||
```
|
```
|
||||||
TS_NODE_FILES=true TS_NODE_TRANSPILE_ONLY=true TS_NODE_PROJECT="./test/tsconfig.json" yarn dlx mocha test/foo.ts --require ts-node/register
|
TS_NODE_FILES=true TS_NODE_TRANSPILE_ONLY=true TS_NODE_PROJECT="./test/tsconfig.json" pnpx mocha test/foo.ts --require ts-node/register
|
||||||
```
|
```
|
||||||
|
|
||||||
### e2e tests
|
|
||||||
TODO
|
|
||||||
|
|
||||||
## Continuous integration
|
|
||||||
Misskey uses GitHub Actions for executing automated tests.
|
|
||||||
Configuration files are located in [`/.github/workflows`](/.github/workflows).
|
|
||||||
|
|
||||||
## Vue
|
## Vue
|
||||||
Misskey uses Vue(v3) as its front-end framework.
|
Firefish uses Vue(v3) as its front-end framework.
|
||||||
- Use TypeScript.
|
- Use TypeScript.
|
||||||
- **When creating a new component, please use the Composition API (with [setup sugar](https://v3.vuejs.org/api/sfc-script-setup.html) and [ref sugar](https://github.com/vuejs/rfcs/discussions/369)) instead of the Options API.**
|
- **When creating a new component, please use the Composition API (with [setup syntax](https://v3.vuejs.org/api/sfc-script-setup.html) and [ref syntax](https://github.com/vuejs/rfcs/discussions/369)) instead of the Options API.**
|
||||||
- Some of the existing components are implemented in the Options API, but it is an old implementation. Refactors that migrate those components to the Composition API are also welcome.
|
- Some of the existing components are implemented in the Options API, but it is an old implementation. Refactors that migrate those components to the Composition API are also welcome.
|
||||||
|
|
||||||
## nirax
|
## nirax
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
## Install dev and compilation dependencies, build files
|
## Install dev and compilation dependencies, build files
|
||||||
FROM node:latest as build
|
FROM node:20 as build
|
||||||
WORKDIR /firefish
|
WORKDIR /firefish
|
||||||
|
|
||||||
# Install compilation dependencies
|
# Install compilation dependencies
|
||||||
|
@ -50,7 +50,7 @@ RUN env NODE_ENV=production sh -c "pnpm run --filter '!native-utils' build && pn
|
||||||
RUN pnpm i --prod --frozen-lockfile
|
RUN pnpm i --prod --frozen-lockfile
|
||||||
|
|
||||||
## Runtime container
|
## Runtime container
|
||||||
FROM node:latest
|
FROM node:20
|
||||||
WORKDIR /firefish
|
WORKDIR /firefish
|
||||||
|
|
||||||
# Install runtime dependencies
|
# Install runtime dependencies
|
||||||
|
|
|
@ -98,11 +98,11 @@ url: "https://{{ .Values.firefish.domain }}/"
|
||||||
#───┘ Port and TLS settings └───────────────────────────────────
|
#───┘ Port and TLS settings └───────────────────────────────────
|
||||||
|
|
||||||
#
|
#
|
||||||
# Misskey requires a reverse proxy to support HTTPS connections.
|
# Firefish requires a reverse proxy to support HTTPS connections.
|
||||||
#
|
#
|
||||||
# +----- https://example.tld/ ------------+
|
# +----- https://example.tld/ ------------+
|
||||||
# +------+ |+-------------+ +----------------+|
|
# +------+ |+-------------+ +----------------+|
|
||||||
# | User | ---> || Proxy (443) | ---> | Misskey (3000) ||
|
# | User | ---> || Proxy (443) | ---> | Firefish (3000) ||
|
||||||
# +------+ |+-------------+ +----------------+|
|
# +------+ |+-------------+ +----------------+|
|
||||||
# +---------------------------------------+
|
# +---------------------------------------+
|
||||||
#
|
#
|
||||||
|
@ -110,7 +110,7 @@ url: "https://{{ .Values.firefish.domain }}/"
|
||||||
# An encrypted connection with HTTPS is highly recommended
|
# An encrypted connection with HTTPS is highly recommended
|
||||||
# because tokens may be transferred in GET requests.
|
# because tokens may be transferred in GET requests.
|
||||||
|
|
||||||
# The port that your Misskey server should listen on.
|
# The port that your Firefish server should listen on.
|
||||||
port: 3000
|
port: 3000
|
||||||
|
|
||||||
# ┌──────────────────────────┐
|
# ┌──────────────────────────┐
|
||||||
|
|
|
@ -139,10 +139,10 @@ describe("After user singed in", () => {
|
||||||
|
|
||||||
it("note", () => {
|
it("note", () => {
|
||||||
cy.get("[data-cy-open-post-form]").click();
|
cy.get("[data-cy-open-post-form]").click();
|
||||||
cy.get("[data-cy-post-form-text]").type("Hello, Misskey!");
|
cy.get("[data-cy-post-form-text]").type("Hello, Firefish!");
|
||||||
cy.get("[data-cy-open-post-form-submit]").click();
|
cy.get("[data-cy-open-post-form-submit]").click();
|
||||||
|
|
||||||
cy.contains("Hello, Misskey!");
|
cy.contains("Hello, Firefish!");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -1550,7 +1550,7 @@ troubleshooting: Resolució de problemes
|
||||||
learnMore: Més informació
|
learnMore: Més informació
|
||||||
misskeyUpdated: Firefish s'ha actualitzat!
|
misskeyUpdated: Firefish s'ha actualitzat!
|
||||||
translate: Tradueix
|
translate: Tradueix
|
||||||
translatedFrom: Traduït desde {x}
|
translatedFrom: Traduït del {x}
|
||||||
aiChanMode: Ai-chan a la interfície d'usuari clàssica
|
aiChanMode: Ai-chan a la interfície d'usuari clàssica
|
||||||
keepCw: Mantenir els avisos de contingut
|
keepCw: Mantenir els avisos de contingut
|
||||||
pubSub: Comptes Pub/Sub
|
pubSub: Comptes Pub/Sub
|
||||||
|
|
|
@ -402,6 +402,8 @@ withReplies: "Antworten beinhalten"
|
||||||
connectedTo: "Mit folgenden Nutzerkonten verknüpft"
|
connectedTo: "Mit folgenden Nutzerkonten verknüpft"
|
||||||
notesAndReplies: "Beiträge und Antworten"
|
notesAndReplies: "Beiträge und Antworten"
|
||||||
withFiles: "Beiträge mit Dateien"
|
withFiles: "Beiträge mit Dateien"
|
||||||
|
attachedToNotes: "Beiträge mit dieser Datei"
|
||||||
|
showAttachedNotes: "Zeige Beiträge mit dieser Datei"
|
||||||
silence: "stummschalten"
|
silence: "stummschalten"
|
||||||
silenceConfirm: "Sind Sie sicher, dass Sie diesen Benutzer Stummschalten möchten?"
|
silenceConfirm: "Sind Sie sicher, dass Sie diesen Benutzer Stummschalten möchten?"
|
||||||
unsilence: "Stummschaltung aufheben"
|
unsilence: "Stummschaltung aufheben"
|
||||||
|
|
|
@ -168,11 +168,11 @@ cacheRemoteFiles: "Cache remote files"
|
||||||
cacheRemoteFilesDescription: "When this setting is disabled, remote files are loaded
|
cacheRemoteFilesDescription: "When this setting is disabled, remote files are loaded
|
||||||
directly from the remote server. Disabling this will decrease storage usage, but
|
directly from the remote server. Disabling this will decrease storage usage, but
|
||||||
increase traffic, as thumbnails will not be generated."
|
increase traffic, as thumbnails will not be generated."
|
||||||
flagAsBot: "Mark this account as a bot"
|
flagAsBot: "Mark this account as automated"
|
||||||
flagAsBotDescription: "Enable this option if this account is controlled by a program.
|
flagAsBotDescription: "Enable this option if this account is controlled by a program.
|
||||||
If enabled, it will act as a flag for other developers to prevent endless interaction
|
If enabled, it will act as a flag for other developers to prevent endless interaction
|
||||||
chains with other bots and adjust Firefish's internal systems to treat this account
|
chains with other automated accounts and adjust Firefish's internal systems to treat this
|
||||||
as a bot."
|
account as an automated account."
|
||||||
flagAsCat: "Are you a cat? 😺"
|
flagAsCat: "Are you a cat? 😺"
|
||||||
flagAsCatDescription: "You'll get cat ears and speak like a cat!"
|
flagAsCatDescription: "You'll get cat ears and speak like a cat!"
|
||||||
flagSpeakAsCat: "Speak as a cat"
|
flagSpeakAsCat: "Speak as a cat"
|
||||||
|
@ -429,6 +429,8 @@ withReplies: "Include replies"
|
||||||
connectedTo: "Following account(s) are connected"
|
connectedTo: "Following account(s) are connected"
|
||||||
notesAndReplies: "Posts and replies"
|
notesAndReplies: "Posts and replies"
|
||||||
withFiles: "Including files"
|
withFiles: "Including files"
|
||||||
|
attachedToNotes: "Posts with this file"
|
||||||
|
showAttachedNotes: "Show posts with this file"
|
||||||
silence: "Silence"
|
silence: "Silence"
|
||||||
silenceConfirm: "Are you sure that you want to silence this user?"
|
silenceConfirm: "Are you sure that you want to silence this user?"
|
||||||
unsilence: "Undo silencing"
|
unsilence: "Undo silencing"
|
||||||
|
@ -1115,7 +1117,7 @@ noGraze: "Please disable the \"Graze for Mastodon\" browser extension, as it int
|
||||||
with Firefish."
|
with Firefish."
|
||||||
silencedWarning: "This page is showing because these users are from servers your admin
|
silencedWarning: "This page is showing because these users are from servers your admin
|
||||||
silenced, so they may potentially be spam."
|
silenced, so they may potentially be spam."
|
||||||
isBot: "This account is a bot"
|
isBot: "This account is automated"
|
||||||
isLocked: "This account has follow approvals"
|
isLocked: "This account has follow approvals"
|
||||||
isModerator: "Moderator"
|
isModerator: "Moderator"
|
||||||
isAdmin: "Administrator"
|
isAdmin: "Administrator"
|
||||||
|
|
|
@ -114,7 +114,7 @@ you: "Vous"
|
||||||
clickToShow: "Cliquer pour afficher"
|
clickToShow: "Cliquer pour afficher"
|
||||||
sensitive: "Contenu sensible"
|
sensitive: "Contenu sensible"
|
||||||
add: "Ajouter"
|
add: "Ajouter"
|
||||||
reaction: "Réactions"
|
reaction: "Réaction"
|
||||||
reactionSetting: "Réactions à afficher dans le sélecteur de réactions"
|
reactionSetting: "Réactions à afficher dans le sélecteur de réactions"
|
||||||
reactionSettingDescription2: "Déplacer pour réorganiser, cliquer pour effacer, utiliser
|
reactionSettingDescription2: "Déplacer pour réorganiser, cliquer pour effacer, utiliser
|
||||||
« + » pour ajouter."
|
« + » pour ajouter."
|
||||||
|
@ -1148,7 +1148,7 @@ _wordMute:
|
||||||
langDescription: Cacher du fil de publication les publications qui correspondent
|
langDescription: Cacher du fil de publication les publications qui correspondent
|
||||||
à ces langues.
|
à ces langues.
|
||||||
muteLangs: Langages filtrés
|
muteLangs: Langages filtrés
|
||||||
muteLangsDescription: Séparer avec des espaces or des retours à la ligne pour une
|
muteLangsDescription: Séparer avec des espaces ou des retours à la ligne pour une
|
||||||
condition OU (OR).
|
condition OU (OR).
|
||||||
_instanceMute:
|
_instanceMute:
|
||||||
instanceMuteDescription2: "Séparer avec des sauts de lignes"
|
instanceMuteDescription2: "Séparer avec des sauts de lignes"
|
||||||
|
@ -2225,3 +2225,14 @@ indexable: Indexable
|
||||||
languageForTranslation: Langage post-traduction
|
languageForTranslation: Langage post-traduction
|
||||||
vibrate: Jouer les vibrations
|
vibrate: Jouer les vibrations
|
||||||
clickToShowPatterns: Cliquer pour montrer les patrons de modules
|
clickToShowPatterns: Cliquer pour montrer les patrons de modules
|
||||||
|
iconSet: Jeu d'icônes
|
||||||
|
_iconSets:
|
||||||
|
fill: Rempli
|
||||||
|
regular: Normal
|
||||||
|
bold: Gras
|
||||||
|
duotone: Deux tons
|
||||||
|
light: Fin
|
||||||
|
reactions: Réactions
|
||||||
|
replies: Réponses
|
||||||
|
quotes: Citations
|
||||||
|
renotes: Boosts
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
_lang_: Inglés
|
_lang_: Galego
|
||||||
introFirefish: Benvida! Firefish é unha plataforma de medios sociais de código aberto,
|
introFirefish: Benvida! Firefish é unha plataforma de medios sociais de código aberto,
|
||||||
descentralizada e gratuíta para sempre!🚀
|
descentralizada e gratuíta para sempre!🚀
|
||||||
monthAndDay: '{day}/{month}'
|
monthAndDay: '{day}/{month}'
|
||||||
|
|
|
@ -148,11 +148,11 @@ cacheRemoteFiles: "Tembolokkan berkas remote"
|
||||||
cacheRemoteFilesDescription: "Ketika pengaturan ini dinonaktifkan, berkas luar akan
|
cacheRemoteFilesDescription: "Ketika pengaturan ini dinonaktifkan, berkas luar akan
|
||||||
dimuat langsung dari server luar. Menonaktifkan ini akan mengurangi penggunaan penyimpanan,
|
dimuat langsung dari server luar. Menonaktifkan ini akan mengurangi penggunaan penyimpanan,
|
||||||
tapi dapat menyebabkan meningkatkan lalu lintas, mengingat keluku tidak akan dihasilkan."
|
tapi dapat menyebabkan meningkatkan lalu lintas, mengingat keluku tidak akan dihasilkan."
|
||||||
flagAsBot: "Atur akun ini sebagai Bot"
|
flagAsBot: "Tandai akun ini sebagai akun otomatis"
|
||||||
flagAsBotDescription: "Jika akun ini dikendalikan oleh program, tetapkanlah opsi ini.
|
flagAsBotDescription: "Jika akun ini dikendalikan oleh program, aktifkan opsi ini.
|
||||||
Jika diaktifkan, ini akan berfungsi sebagai tanda bagi pengembang lain untuk mencegah
|
Jika diaktifkan, ini akan berfungsi sebagai tanda bagi pengembang lain untuk mencegah
|
||||||
interaksi berantai dengan bot lain dan menyesuaikan sistem internal Firefish untuk
|
interaksi berantai dengan akun otomatis lain dan menyesuaikan sistem internal Firefish
|
||||||
memperlakukan akun ini sebagai bot."
|
untuk memperlakukan akun ini sebagai akun otomatis."
|
||||||
flagAsCat: "Atur akun ini sebagai kucing"
|
flagAsCat: "Atur akun ini sebagai kucing"
|
||||||
flagAsCatDescription: "Kamu akan mendapatkan telinga kucing dan berbicara seperti
|
flagAsCatDescription: "Kamu akan mendapatkan telinga kucing dan berbicara seperti
|
||||||
seekor kucing!"
|
seekor kucing!"
|
||||||
|
@ -2005,7 +2005,7 @@ signupsDisabled: Pendaftaran ke server ini nonaktif, tapi kamu dapat selalu mend
|
||||||
ke server lain! Jika kamu memiliki kode undangan server ini, harap masukkan di bawah
|
ke server lain! Jika kamu memiliki kode undangan server ini, harap masukkan di bawah
|
||||||
ini.
|
ini.
|
||||||
enableCustomKaTeXMacro: Aktifkan makro KaTeX khusus
|
enableCustomKaTeXMacro: Aktifkan makro KaTeX khusus
|
||||||
isBot: Akun ini bot
|
isBot: Akun ini akun otomatis
|
||||||
customMOTD: MOTD khusus (pesan layar percik)
|
customMOTD: MOTD khusus (pesan layar percik)
|
||||||
recommendedInstancesDescription: Server yang direkomendasikan dipisahkan dengan garis
|
recommendedInstancesDescription: Server yang direkomendasikan dipisahkan dengan garis
|
||||||
baru untuk tampil di linimasa rekomendasi.
|
baru untuk tampil di linimasa rekomendasi.
|
||||||
|
@ -2181,3 +2181,14 @@ openServerInfo: Tampilkan informasi server dengan mengeklik ticker server di seb
|
||||||
kiriman
|
kiriman
|
||||||
vibrate: Putar getaran
|
vibrate: Putar getaran
|
||||||
clickToShowPatterns: Klik untuk menampilkan pola modul
|
clickToShowPatterns: Klik untuk menampilkan pola modul
|
||||||
|
iconSet: Set ikon
|
||||||
|
_iconSets:
|
||||||
|
fill: Penuh
|
||||||
|
regular: Reguler
|
||||||
|
bold: Tebal
|
||||||
|
duotone: Duotone
|
||||||
|
light: Tipis
|
||||||
|
reactions: Reaksi
|
||||||
|
replies: Balasan
|
||||||
|
quotes: Kutipan
|
||||||
|
renotes: Postingan ulang
|
||||||
|
|
|
@ -147,11 +147,11 @@ cacheRemoteFiles: "Mantieni i file remoti nella cache"
|
||||||
cacheRemoteFilesDescription: "Disabilitando questa opzione, i file remoti verranno
|
cacheRemoteFilesDescription: "Disabilitando questa opzione, i file remoti verranno
|
||||||
scaricati direttamente dal loro server. L'opzione permette di risparmiare spazio
|
scaricati direttamente dal loro server. L'opzione permette di risparmiare spazio
|
||||||
ma aumenta il traffico di rete e non verranno generate anteprime."
|
ma aumenta il traffico di rete e non verranno generate anteprime."
|
||||||
flagAsBot: "Questo account è un bot"
|
flagAsBot: "Questo account è automatizzato"
|
||||||
flagAsBotDescription: "Se l'account esegue principalmente operazioni automatiche,
|
flagAsBotDescription: "Se l'account esegue principalmente operazioni automatiche,
|
||||||
attiva quest'opzione. Quando attivata, opera come un segnalatore per gli altri sviluppatori
|
attiva quest'opzione. Quando attivata, permette agli sviluppatori di prevenire catene
|
||||||
allo scopo di prevenire catene d’interazione senza fine con altri bot, e di adeguare
|
d’interazione senza fine con altri account automatizzati. Inoltre imposta Firefish
|
||||||
i sistemi interni di Firefish perché trattino questo account come un bot."
|
perché tratti questo account come automatizzato."
|
||||||
flagAsCat: "Sei un gatto? 😺"
|
flagAsCat: "Sei un gatto? 😺"
|
||||||
flagAsCatDescription: "Ti compariranno le orecchie e parlerai come un gatto!"
|
flagAsCatDescription: "Ti compariranno le orecchie e parlerai come un gatto!"
|
||||||
autoAcceptFollowed: "Accetta in automatico i follow dagli account che segui"
|
autoAcceptFollowed: "Accetta in automatico i follow dagli account che segui"
|
||||||
|
@ -2079,7 +2079,7 @@ noGraze: Per favore disattiva l'estenzione del browser "Graze for Mastodon", per
|
||||||
interferisce con Firefish.
|
interferisce con Firefish.
|
||||||
silencedWarning: Vedi questa pagina perché gli utenti sono su un server che il tuo
|
silencedWarning: Vedi questa pagina perché gli utenti sono su un server che il tuo
|
||||||
admin ha silenziato, quindi potrebbero essere spam.
|
admin ha silenziato, quindi potrebbero essere spam.
|
||||||
isBot: Questo account è un bot
|
isBot: Questo account è automatizzato
|
||||||
isLocked: Serve una approvazione per seguire questo account
|
isLocked: Serve una approvazione per seguire questo account
|
||||||
moveFromDescription: Questa operazione crea un alias del vecchio account in modo che
|
moveFromDescription: Questa operazione crea un alias del vecchio account in modo che
|
||||||
tu possa migrare su questo nuovo account. Fallo PRIMA di migrare il tuo vecchio
|
tu possa migrare su questo nuovo account. Fallo PRIMA di migrare il tuo vecchio
|
||||||
|
@ -2169,3 +2169,14 @@ openServerInfo: Mostra informazioni sul server cliccando sul riquadro del server
|
||||||
un post
|
un post
|
||||||
vibrate: Abilita la vibrazione
|
vibrate: Abilita la vibrazione
|
||||||
clickToShowPatterns: Clicca per vedere i pattern del modulo
|
clickToShowPatterns: Clicca per vedere i pattern del modulo
|
||||||
|
iconSet: Set di icone
|
||||||
|
_iconSets:
|
||||||
|
fill: Con riempimento
|
||||||
|
regular: Regolare
|
||||||
|
bold: Grassetto
|
||||||
|
duotone: Con due toni
|
||||||
|
light: Sottile
|
||||||
|
reactions: Reazioni
|
||||||
|
replies: Risposte
|
||||||
|
quotes: Citazioni
|
||||||
|
renotes: Boost
|
||||||
|
|
|
@ -149,8 +149,8 @@ addEmoji: "絵文字を追加"
|
||||||
settingGuide: "おすすめ設定"
|
settingGuide: "おすすめ設定"
|
||||||
cacheRemoteFiles: "リモートのファイルをキャッシュする"
|
cacheRemoteFiles: "リモートのファイルをキャッシュする"
|
||||||
cacheRemoteFilesDescription: "この設定を無効にすると、リモートファイルをキャッシュせず直リンクします。サーバーのストレージを節約できますが、サムネイルが生成されないので通信量が増加します。"
|
cacheRemoteFilesDescription: "この設定を無効にすると、リモートファイルをキャッシュせず直リンクします。サーバーのストレージを節約できますが、サムネイルが生成されないので通信量が増加します。"
|
||||||
flagAsBot: "Botとして設定"
|
flagAsBot: "自動化されたアカウントとして設定"
|
||||||
flagAsBotDescription: "このアカウントがBotである場合は、この設定をオンにします。オンにすると、反応の連鎖を防ぐためのフラグとして他の開発者に役立ったり、Firefishのシステム上での扱いがBotに合ったものになります。"
|
flagAsBotDescription: "このアカウントが自動で投稿する場合は、この設定をオンにします。オンにすると、反応の連鎖を防ぐためのフラグとして他の開発者に役立ったり、Firefishのシステム上での扱いが自動で投稿するアカウントに合ったものになります。"
|
||||||
flagAsCat: "あなたは…猫?😺"
|
flagAsCat: "あなたは…猫?😺"
|
||||||
flagAsCatDescription: "このアカウントが猫であることを示す猫モードを有効にするには、このフラグをオンにします。"
|
flagAsCatDescription: "このアカウントが猫であることを示す猫モードを有効にするには、このフラグをオンにします。"
|
||||||
flagSpeakAsCat: "猫語で話す"
|
flagSpeakAsCat: "猫語で話す"
|
||||||
|
@ -384,6 +384,8 @@ withReplies: "返信を含む"
|
||||||
connectedTo: "次のアカウントに接続されています"
|
connectedTo: "次のアカウントに接続されています"
|
||||||
notesAndReplies: "投稿と返信"
|
notesAndReplies: "投稿と返信"
|
||||||
withFiles: "ファイル付き"
|
withFiles: "ファイル付き"
|
||||||
|
attachedToNotes: "このファイルが添付された投稿"
|
||||||
|
showAttachedNotes: "このファイルが添付された投稿を見る"
|
||||||
silence: "サイレンス"
|
silence: "サイレンス"
|
||||||
silenceConfirm: "サイレンスしますか?"
|
silenceConfirm: "サイレンスしますか?"
|
||||||
unsilence: "サイレンス解除"
|
unsilence: "サイレンス解除"
|
||||||
|
@ -1954,7 +1956,7 @@ isModerator: モデレーター
|
||||||
audio: 音声
|
audio: 音声
|
||||||
image: 画像
|
image: 画像
|
||||||
video: 動画
|
video: 動画
|
||||||
isBot: このアカウントはBotです
|
isBot: このアカウントは自動で投稿します
|
||||||
isLocked: このアカウントのフォローは承認制です
|
isLocked: このアカウントのフォローは承認制です
|
||||||
isAdmin: 管理者
|
isAdmin: 管理者
|
||||||
isPatron: Firefish 後援者
|
isPatron: Firefish 後援者
|
||||||
|
|
|
@ -1444,7 +1444,12 @@ _tutorial:
|
||||||
step4_1: 投稿しとーみ
|
step4_1: 投稿しとーみ
|
||||||
step5_1: タイムライン! 文字と写真の宝石箱や~
|
step5_1: タイムライン! 文字と写真の宝石箱や~
|
||||||
step5_2: うちのサーバーでは{timelines}種類のタイムラインをご用意しとります。
|
step5_2: うちのサーバーでは{timelines}種類のタイムラインをご用意しとります。
|
||||||
step4_2: 最初は{introduction}に投稿したり、シンプルに「ここは賑やかどすなぁ。うちはそこまで喋れまへんが、どうぞよろしゅうに」などと投稿しはる方もいてます。
|
step4_2: 最初は{introduction}に投稿したり、シンプルに「ここは賑やかどすなぁ。ウチはそんなに喋れまへんが、どうぞよろしゅうに」などと投稿しはる方もいてます。
|
||||||
|
step5_7: グローバル{icon}タイムラインでは、接続しとるそこいらのサーバーからアレがガーッ流れてきてえらいこっちゃで。
|
||||||
|
step5_6: おすすめ{icon}タイムラインでは、うちの管理人がばりおすすめしとるサーバーの投稿を表示させとうよ。
|
||||||
|
step5_5: ソーシャル{icon}タイムラインでは、ホームタイムラインとローカルタイムラインの投稿が両方見られてホンマお得やわぁ。
|
||||||
|
step5_3: ホーム{icon}タイムラインでは、あんたはんがフォローしてはる兄ちゃんらの投稿が見られまんねん。
|
||||||
|
step5_4: ローカル{icon}タイムラインでは、このサーバーにおる人らの投稿を見られますわ。
|
||||||
_postForm:
|
_postForm:
|
||||||
_placeholders:
|
_placeholders:
|
||||||
b: なんかおましたか?
|
b: なんかおましたか?
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
_lang_: "Polski"
|
_lang_: "Polski"
|
||||||
headlineFirefish: "Otwartoźródłowa, zdecentralizowana sieć społecznościowa, która zawsze
|
headlineFirefish: "Otwartoźródłowa, zdecentralizowana sieć społecznościowa, która
|
||||||
będzie darmowa! 🚀"
|
zawsze będzie darmowa! 🚀"
|
||||||
introFirefish: "Hej! Firefish to otwartoźródłowa oraz zdecentralizowana sieć społecznościowa,
|
introFirefish: "Hej! Firefish to otwartoźródłowa oraz zdecentralizowana sieć społecznościowa,
|
||||||
która zawsze będzie darmowa! 🚀"
|
która zawsze będzie darmowa! 🚀"
|
||||||
monthAndDay: "{month}-{day}"
|
monthAndDay: "{month}-{day}"
|
||||||
|
@ -94,7 +94,7 @@ privacy: "Prywatność"
|
||||||
makeFollowManuallyApprove: "Prośby o możliwość obserwacji wymagają zatwierdzenia"
|
makeFollowManuallyApprove: "Prośby o możliwość obserwacji wymagają zatwierdzenia"
|
||||||
defaultNoteVisibility: "Domyślna widoczność"
|
defaultNoteVisibility: "Domyślna widoczność"
|
||||||
follow: "Obserwuj"
|
follow: "Obserwuj"
|
||||||
followRequest: "Poproś o możliwość obserwacji"
|
followRequest: "Poproś o możliwość obserwowania"
|
||||||
followRequests: "Prośby o możliwość obserwacji"
|
followRequests: "Prośby o możliwość obserwacji"
|
||||||
unfollow: "Przestań obserwować"
|
unfollow: "Przestań obserwować"
|
||||||
followRequestPending: "Oczekująca prośba o możliwość obserwacji"
|
followRequestPending: "Oczekująca prośba o możliwość obserwacji"
|
||||||
|
@ -147,9 +147,9 @@ cacheRemoteFilesDescription: "Gdy ta opcja jest wyłączona, zdalne pliki są ł
|
||||||
bezpośrednio ze zdalnego serwera. Wyłączenie tej opcji zmniejszy użycie powierzchni
|
bezpośrednio ze zdalnego serwera. Wyłączenie tej opcji zmniejszy użycie powierzchni
|
||||||
dyskowej, ale zwiększy transfer, ponieważ miniaturki nie będą generowane."
|
dyskowej, ale zwiększy transfer, ponieważ miniaturki nie będą generowane."
|
||||||
flagAsBot: "To konto jest botem"
|
flagAsBot: "To konto jest botem"
|
||||||
flagAsBotDescription: "Jeżeli ten kanał jest kontrolowany przez jakiś program, ustaw
|
flagAsBotDescription: "Ustaw tę opcję ten jeśli kanał kontrolowany jest przez jakiś
|
||||||
tę opcję. Jeżeli włączona, będzie działać jako flaga informująca innych programistów,
|
program. Po włączeniu, będzie działać jako flaga informująca innych programistów,
|
||||||
aby zapobiegać nieskończonej interakcji z różnymi botami i dostosowywać wewnętrzne
|
aby zapobiegać nieskończonej interakcji pomiędzy innymi botami i dostosowywać wewnętrzne
|
||||||
systemy Firefish, traktując konto jako bota."
|
systemy Firefish, traktując konto jako bota."
|
||||||
flagAsCat: "Czy jesteś kotem? 😺"
|
flagAsCat: "Czy jesteś kotem? 😺"
|
||||||
flagAsCatDescription: "Dostaniesz kocie uszka, oraz będziesz mówić jak kot!"
|
flagAsCatDescription: "Dostaniesz kocie uszka, oraz będziesz mówić jak kot!"
|
||||||
|
@ -158,7 +158,7 @@ autoAcceptFollowed: "Automatycznie przyjmuj prośby o możliwość obserwacji od
|
||||||
których obserwujesz"
|
których obserwujesz"
|
||||||
addAccount: "Dodaj konto"
|
addAccount: "Dodaj konto"
|
||||||
loginFailed: "Nie udało się zalogować"
|
loginFailed: "Nie udało się zalogować"
|
||||||
showOnRemote: "Zobacz na zdalnym serwerze"
|
showOnRemote: "Zobacz oryginalną treść"
|
||||||
general: "Ogólne"
|
general: "Ogólne"
|
||||||
wallpaper: "Tapeta"
|
wallpaper: "Tapeta"
|
||||||
setWallpaper: "Ustaw tapetę"
|
setWallpaper: "Ustaw tapetę"
|
||||||
|
@ -211,7 +211,7 @@ noUsers: "Brak użytkowników"
|
||||||
editProfile: "Edytuj profil"
|
editProfile: "Edytuj profil"
|
||||||
noteDeleteConfirm: "Czy na pewno chcesz usunąć ten wpis?"
|
noteDeleteConfirm: "Czy na pewno chcesz usunąć ten wpis?"
|
||||||
pinLimitExceeded: "Nie możesz przypiąć więcej wpisów"
|
pinLimitExceeded: "Nie możesz przypiąć więcej wpisów"
|
||||||
intro: "Zakończono instalację Firefish! Utwórz konto administratora."
|
intro: "Zakończono instalację Firefish! Utwórz teraz konto administratora."
|
||||||
done: "Gotowe"
|
done: "Gotowe"
|
||||||
processing: "Przetwarzanie"
|
processing: "Przetwarzanie"
|
||||||
preview: "Podgląd"
|
preview: "Podgląd"
|
||||||
|
@ -299,11 +299,11 @@ emptyDrive: "Dysk jest pusty"
|
||||||
emptyFolder: "Ten katalog jest pusty"
|
emptyFolder: "Ten katalog jest pusty"
|
||||||
unableToDelete: "Nie można usunąć"
|
unableToDelete: "Nie można usunąć"
|
||||||
inputNewFileName: "Wprowadź nową nazwę pliku"
|
inputNewFileName: "Wprowadź nową nazwę pliku"
|
||||||
inputNewDescription: "Proszę wpisać nowy napis"
|
inputNewDescription: "Podaj nowy napis"
|
||||||
inputNewFolderName: "Wprowadź nową nazwę katalogu"
|
inputNewFolderName: "Wprowadź nową nazwę katalogu"
|
||||||
circularReferenceFolder: "Katalog docelowy jest podkatalogiem katalogu, który chcesz
|
circularReferenceFolder: "Katalog docelowy jest podkatalogiem katalogu, który chcesz
|
||||||
przenieść."
|
przenieść."
|
||||||
hasChildFilesOrFolders: "Ponieważ ten katalog nie jest pusty, nie może być usunięty."
|
hasChildFilesOrFolders: "Katalog nie może być usunięty ponieważ nie jest pusty."
|
||||||
copyUrl: "Skopiuj adres URL"
|
copyUrl: "Skopiuj adres URL"
|
||||||
rename: "Zmień nazwę"
|
rename: "Zmień nazwę"
|
||||||
avatar: "Awatar"
|
avatar: "Awatar"
|
||||||
|
@ -578,8 +578,8 @@ disablePlayer: "Zamknij odtwarzacz wideo"
|
||||||
expandTweet: "Rozwiń tweet"
|
expandTweet: "Rozwiń tweet"
|
||||||
themeEditor: "Edytor motywu"
|
themeEditor: "Edytor motywu"
|
||||||
description: "Opis"
|
description: "Opis"
|
||||||
describeFile: "Dodaj podpis"
|
describeFile: "Dodaj opis"
|
||||||
enterFileDescription: "Wprowadź napis"
|
enterFileDescription: "Wprowadź opis"
|
||||||
author: "Autor"
|
author: "Autor"
|
||||||
leaveConfirm: "Są niezapisane zmiany. Czy chcesz je odrzucić?"
|
leaveConfirm: "Są niezapisane zmiany. Czy chcesz je odrzucić?"
|
||||||
manage: "Zarządzanie"
|
manage: "Zarządzanie"
|
||||||
|
@ -616,7 +616,7 @@ emptyToDisableSmtpAuth: "Pozostaw adres e-mail i hasło puste, aby wyłączyć w
|
||||||
SMTP"
|
SMTP"
|
||||||
smtpSecureInfo: "Wyłącz, jeżeli używasz STARTTLS"
|
smtpSecureInfo: "Wyłącz, jeżeli używasz STARTTLS"
|
||||||
testEmail: "Przetestuj dostarczanie wiadomości e-mail"
|
testEmail: "Przetestuj dostarczanie wiadomości e-mail"
|
||||||
wordMute: "Wyciszenie słowa"
|
wordMute: "Wyciszenie słów i języków"
|
||||||
instanceMute: "Wyciszenie serwera"
|
instanceMute: "Wyciszenie serwera"
|
||||||
userSaysSomething: "{name} powiedział* coś"
|
userSaysSomething: "{name} powiedział* coś"
|
||||||
makeActive: "Aktywuj"
|
makeActive: "Aktywuj"
|
||||||
|
@ -691,8 +691,7 @@ no: "Nie"
|
||||||
driveFilesCount: "Liczba plików na dysku"
|
driveFilesCount: "Liczba plików na dysku"
|
||||||
driveUsage: "Użycie przestrzeni dyskowej"
|
driveUsage: "Użycie przestrzeni dyskowej"
|
||||||
noCrawle: "Odrzuć indeksowanie przez crawlery"
|
noCrawle: "Odrzuć indeksowanie przez crawlery"
|
||||||
noCrawleDescription: "Proś wyszukiwarki internetowe, aby nie indeksowały Twojego profilu,
|
noCrawleDescription: "Proś wyszukiwarki internetowe, aby nie indeksowały Twoich treści."
|
||||||
wpisów, stron itd."
|
|
||||||
lockedAccountInfo: "Dopóki nie ustawisz widoczności wpisu na \"Obserwujący\", twoje
|
lockedAccountInfo: "Dopóki nie ustawisz widoczności wpisu na \"Obserwujący\", twoje
|
||||||
wpisy będą mogli widzieć wszyscy, nawet jeśli ustawisz manualne zatwierdzanie obserwujących."
|
wpisy będą mogli widzieć wszyscy, nawet jeśli ustawisz manualne zatwierdzanie obserwujących."
|
||||||
alwaysMarkSensitive: "Oznacz domyślnie jako NSFW"
|
alwaysMarkSensitive: "Oznacz domyślnie jako NSFW"
|
||||||
|
@ -759,7 +758,7 @@ useReactionPickerForContextMenu: "Otwórz wybornik reakcji prawym kliknięciem"
|
||||||
typingUsers: "{users} pisze/ą"
|
typingUsers: "{users} pisze/ą"
|
||||||
jumpToSpecifiedDate: "Przejdź do określonej daty"
|
jumpToSpecifiedDate: "Przejdź do określonej daty"
|
||||||
showingPastTimeline: "Obecnie wyświetla starą oś czasu"
|
showingPastTimeline: "Obecnie wyświetla starą oś czasu"
|
||||||
clear: "Wróć"
|
clear: "Wyczyść"
|
||||||
markAllAsRead: "Oznacz wszystkie jako przeczytane"
|
markAllAsRead: "Oznacz wszystkie jako przeczytane"
|
||||||
goBack: "Wróć"
|
goBack: "Wróć"
|
||||||
unlikeConfirm: "Na pewno chcesz usunąć polubienie?"
|
unlikeConfirm: "Na pewno chcesz usunąć polubienie?"
|
||||||
|
@ -800,7 +799,7 @@ gallery: "Galeria"
|
||||||
recentPosts: "Ostatnie wpisy"
|
recentPosts: "Ostatnie wpisy"
|
||||||
popularPosts: "Popularne wpisy"
|
popularPosts: "Popularne wpisy"
|
||||||
shareWithNote: "Udostępnij z wpisem"
|
shareWithNote: "Udostępnij z wpisem"
|
||||||
ads: "Reklamy"
|
ads: "Banery"
|
||||||
expiration: "Ankieta kończy się"
|
expiration: "Ankieta kończy się"
|
||||||
memo: "Notatki"
|
memo: "Notatki"
|
||||||
priority: "Priorytet"
|
priority: "Priorytet"
|
||||||
|
@ -852,7 +851,7 @@ ffVisibility: "Widoczność obserwowanych/obserwujących"
|
||||||
ffVisibilityDescription: "Pozwala skonfigurować, kto może zobaczyć, kogo obserwujesz
|
ffVisibilityDescription: "Pozwala skonfigurować, kto może zobaczyć, kogo obserwujesz
|
||||||
i kto Cię obserwuje."
|
i kto Cię obserwuje."
|
||||||
continueThread: "Kontynuuj wątek"
|
continueThread: "Kontynuuj wątek"
|
||||||
deleteAccountConfirm: "Spowoduje to nieodwracalne usunięcie Twojego konta. Kontynuować?"
|
deleteAccountConfirm: "Spowoduje to nieodwracalne usunięcie tego konta. Kontynuować?"
|
||||||
incorrectPassword: "Nieprawidłowe hasło."
|
incorrectPassword: "Nieprawidłowe hasło."
|
||||||
voteConfirm: "Potwierdzić swój głos na \"{choice}\"?"
|
voteConfirm: "Potwierdzić swój głos na \"{choice}\"?"
|
||||||
hide: "Ukryj"
|
hide: "Ukryj"
|
||||||
|
@ -1001,8 +1000,8 @@ _nsfw:
|
||||||
force: "Ukrywaj wszystkie media"
|
force: "Ukrywaj wszystkie media"
|
||||||
_mfm:
|
_mfm:
|
||||||
cheatSheet: "Ściąga MFM"
|
cheatSheet: "Ściąga MFM"
|
||||||
intro: "MFM jest językiem składniowym używanym przez m.in. Firefish, forki *key (w
|
intro: "MFM jest językiem składniowym używanym przez m.in. Firefish, forki *key
|
||||||
tym Firefish), oraz Akkomę, który może być użyty w wielu miejscach. Tu znajdziesz
|
(w tym Firefish), oraz Akkomę, który może być użyty w wielu miejscach. Tu znajdziesz
|
||||||
listę wszystkich możliwych elementów składni MFM."
|
listę wszystkich możliwych elementów składni MFM."
|
||||||
dummy: "Firefish rozszerza świat Fediwersum"
|
dummy: "Firefish rozszerza świat Fediwersum"
|
||||||
mention: "Wspomnij"
|
mention: "Wspomnij"
|
||||||
|
@ -1250,7 +1249,7 @@ _tutorial:
|
||||||
innej połączonej instancji."
|
innej połączonej instancji."
|
||||||
step6_1: "Więc, czym to jest to miejsce?"
|
step6_1: "Więc, czym to jest to miejsce?"
|
||||||
step6_2: "Cóż, nie dołączył*ś po prostu do Firefish. Dołączył*ś do portalu do Fediverse,
|
step6_2: "Cóż, nie dołączył*ś po prostu do Firefish. Dołączył*ś do portalu do Fediverse,
|
||||||
połączonej sieci tysięcy serwerów, zwanych instancjami."
|
sieci tysięcy połączonych ze sobą serwerów, zwanych instancjami."
|
||||||
step6_3: "Każdy serwer działa w inny sposób, i nie wszystkie serwery używają Firefish.
|
step6_3: "Każdy serwer działa w inny sposób, i nie wszystkie serwery używają Firefish.
|
||||||
Ten jednak używa! Jest to trochę skomplikowane, ale w krótkim czasie załapiesz
|
Ten jednak używa! Jest to trochę skomplikowane, ale w krótkim czasie załapiesz
|
||||||
o co chodzi."
|
o co chodzi."
|
||||||
|
@ -1816,8 +1815,8 @@ instanceSecurity: Bezpieczeństwo serwera
|
||||||
privateMode: Tryb prywatny
|
privateMode: Tryb prywatny
|
||||||
allowedInstances: Dopuszczone serwery
|
allowedInstances: Dopuszczone serwery
|
||||||
recommended: Polecane
|
recommended: Polecane
|
||||||
allowedInstancesDescription: Hosty serwerów, które mają być dopuszczone do federacji,
|
allowedInstancesDescription: Hosty serwerów, które mają być dopuszczone do federacji.
|
||||||
każdy oddzielony nowym wierszem (dotyczy tylko trybu prywatnego).
|
Każdy oddzielony nowym wierszem (dotyczy tylko trybu prywatnego).
|
||||||
seperateRenoteQuote: Oddziel przyciski podbicia i cytowania
|
seperateRenoteQuote: Oddziel przyciski podbicia i cytowania
|
||||||
refreshInterval: 'Częstotliwość aktualizacji '
|
refreshInterval: 'Częstotliwość aktualizacji '
|
||||||
slow: Wolna
|
slow: Wolna
|
||||||
|
@ -1916,14 +1915,14 @@ sendErrorReportsDescription: "Gdy ta opcja jest włączona, szczegółowe inform
|
||||||
błędach będą udostępnianie z Firefish gdy wystąpi problem, pomagając w ulepszaniu
|
błędach będą udostępnianie z Firefish gdy wystąpi problem, pomagając w ulepszaniu
|
||||||
Firefish.\nZawrze to informacje takie jak wersja twojego systemu operacyjnego, przeglądarki,
|
Firefish.\nZawrze to informacje takie jak wersja twojego systemu operacyjnego, przeglądarki,
|
||||||
Twoja aktywność na Firefish itd."
|
Twoja aktywność na Firefish itd."
|
||||||
privateModeInfo: Gdy ta opcja jest włączona, tylko serwery z białej listy mogą federować
|
privateModeInfo: Gdy ta opcja jest włączona, tylko serwery z listy serwerów dozwolonych
|
||||||
się z twoim serwerem. Wszystkie posty będą ukryte publicznie.
|
mogą federować się z twoim serwerem. Żadne posty nie będą publicznie dostępne.
|
||||||
oneHour: Godzina
|
oneHour: Godzina
|
||||||
oneDay: Dzień
|
oneDay: Dzień
|
||||||
oneWeek: Tydzień
|
oneWeek: Tydzień
|
||||||
recommendedInstances: Polecane serwery
|
recommendedInstances: Polecane serwery
|
||||||
recommendedInstancesDescription: Polecane serwery, mające pojawić się w odpowiedniej
|
recommendedInstancesDescription: Polecane serwery, mające pojawić się w odpowiedniej
|
||||||
osi czasu, oddzielane nowymi liniami. NIE dodawaj “https://”, TYLKO samą domenę.
|
osi czasu, oddzielane nowymi liniami.
|
||||||
rateLimitExceeded: Przekroczono ratelimit
|
rateLimitExceeded: Przekroczono ratelimit
|
||||||
cropImage: Kadruj zdjęcie
|
cropImage: Kadruj zdjęcie
|
||||||
cropImageAsk: Czy chcesz skadrować to zdjęcie?
|
cropImageAsk: Czy chcesz skadrować to zdjęcie?
|
||||||
|
@ -1948,7 +1947,7 @@ activeEmailValidationDescription: Włącza ściślejszą walidację adresów e-m
|
||||||
obejmuje sprawdzanie adresów jednorazowych oraz tego, czy rzeczywiście można się
|
obejmuje sprawdzanie adresów jednorazowych oraz tego, czy rzeczywiście można się
|
||||||
z nim komunikować. Jeśli wyłączone, walidowany jest tylko format wiadomości e-mail.
|
z nim komunikować. Jeśli wyłączone, walidowany jest tylko format wiadomości e-mail.
|
||||||
shuffle: Losuj
|
shuffle: Losuj
|
||||||
showAds: Pokazuj reklamy
|
showAds: Pokazuj banery
|
||||||
enterSendsMessage: Wciśnij Enter w komunikatorze, by wysłać wiadomość (domyślnie –
|
enterSendsMessage: Wciśnij Enter w komunikatorze, by wysłać wiadomość (domyślnie –
|
||||||
Ctrl + Enter)
|
Ctrl + Enter)
|
||||||
adminCustomCssWarn: To ustawienie powinno być używane tylko pod warunkiem, że wiesz
|
adminCustomCssWarn: To ustawienie powinno być używane tylko pod warunkiem, że wiesz
|
||||||
|
@ -2012,7 +2011,7 @@ silencedInstancesDescription: Wypisz nazwy hostów serwerów, które chcesz wyci
|
||||||
cannotUploadBecauseExceedsFileSizeLimit: Ten plik nie mógł być przesłany, ponieważ
|
cannotUploadBecauseExceedsFileSizeLimit: Ten plik nie mógł być przesłany, ponieważ
|
||||||
jego wielkość przekracza dozwolony limit.
|
jego wielkość przekracza dozwolony limit.
|
||||||
sendModMail: Wyślij Powiadomienie Moderacyjne
|
sendModMail: Wyślij Powiadomienie Moderacyjne
|
||||||
searchPlaceholder: Szukaj Firefish
|
searchPlaceholder: Szukaj w Firefish
|
||||||
jumpToPrevious: Przejdź do poprzedniej sekcji
|
jumpToPrevious: Przejdź do poprzedniej sekcji
|
||||||
listsDesc: Listy umożliwiają tworzenie osi czasu z określonymi użytkownikami. Dostęp
|
listsDesc: Listy umożliwiają tworzenie osi czasu z określonymi użytkownikami. Dostęp
|
||||||
do nich można uzyskać na stronie osi czasu.
|
do nich można uzyskać na stronie osi czasu.
|
||||||
|
@ -2028,3 +2027,15 @@ newer: nowsze
|
||||||
older: starsze
|
older: starsze
|
||||||
cw: Ostrzeżenie zawartości
|
cw: Ostrzeżenie zawartości
|
||||||
removeReaction: Usuń reakcję
|
removeReaction: Usuń reakcję
|
||||||
|
reactions: Reakcje
|
||||||
|
clipsDesc: Spinki to skategoryzowane zakładki, które można udostępniać. Możesz utworzyć
|
||||||
|
spinkę dla każdego wpisu w menu wpisu.
|
||||||
|
swipeOnMobile: Pozwalaj na przeciąganie pomiędzy stronami
|
||||||
|
image: Obrazek
|
||||||
|
xl: XL
|
||||||
|
replies: Odpowiedzi
|
||||||
|
video: Film
|
||||||
|
quotes: Cytaty
|
||||||
|
clickToShowPatterns: Kliknij aby pokazać wzory modułów
|
||||||
|
renotes: Boosty
|
||||||
|
audio: Dźwięk
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
_lang_: "Português"
|
_lang_: "Português (Portugal)"
|
||||||
headlineFirefish: "Uma rede ligada por notas"
|
headlineFirefish: "Uma rede ligada por notas"
|
||||||
introFirefish: "Bem-vindo! Firefish é um serviço de microblogue descentralizado de
|
introFirefish: "Bem-vindo! Firefish é um serviço de microblogue descentralizado de
|
||||||
código aberto, gratuito para sempre! 🚀"
|
código aberto, gratuito para sempre! 🚀"
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
|
_lang_: Português (Brasil)
|
||||||
username: Nome de usuário
|
username: Nome de usuário
|
||||||
ok: OK
|
ok: OK
|
||||||
_lang_: Inglês
|
|
||||||
headlineFirefish: Uma plataforma de mídia social descentralizada e de código aberto
|
headlineFirefish: Uma plataforma de mídia social descentralizada e de código aberto
|
||||||
que é gratuita para sempre! 🚀
|
que é gratuita para sempre! 🚀
|
||||||
search: Pesquisar
|
search: Pesquisar
|
||||||
|
|
|
@ -2151,3 +2151,14 @@ deletePasskeysConfirm: Это действие безвозвратно удал
|
||||||
на этом аккаунте. Продолжить?
|
на этом аккаунте. Продолжить?
|
||||||
inputNotMatch: Введённые данные не совпадают
|
inputNotMatch: Введённые данные не совпадают
|
||||||
addRe: Добавить "re:" в начале комментария в ответ на запись с предупреждением о содержимом
|
addRe: Добавить "re:" в начале комментария в ответ на запись с предупреждением о содержимом
|
||||||
|
detectPostLanguage: Автоматическое определение языка и отображение кнопки перевода
|
||||||
|
для сообщений на иностранных языках
|
||||||
|
indexableDescription: Разрешить встроенной поисковой системе искать ваши публичные
|
||||||
|
записи
|
||||||
|
reactions: Реакции
|
||||||
|
indexable: Индексируемый(-ая)
|
||||||
|
languageForTranslation: Язык перевода поста
|
||||||
|
replies: Ответы
|
||||||
|
quotes: Цитаты
|
||||||
|
clickToShowPatterns: Нажмите, чтобы показать модуль шаблонов
|
||||||
|
renotes: Репосты
|
||||||
|
|
|
@ -1994,3 +1994,10 @@ indexable: 登錄至貼文搜尋引擎
|
||||||
origin: 來源
|
origin: 來源
|
||||||
objectStorageS3ForcePathStyle: 使用基於路徑的端點(Endpoint)URL
|
objectStorageS3ForcePathStyle: 使用基於路徑的端點(Endpoint)URL
|
||||||
clickToShowPatterns: 點擊顯示模組模式(Module Pattern)
|
clickToShowPatterns: 點擊顯示模組模式(Module Pattern)
|
||||||
|
iconSet: 圖示的樣式
|
||||||
|
_iconSets:
|
||||||
|
fill: 填滿
|
||||||
|
regular: 標準
|
||||||
|
bold: 粗線
|
||||||
|
duotone: 雙色
|
||||||
|
light: 細線
|
||||||
|
|
42
package.json
42
package.json
|
@ -1,12 +1,12 @@
|
||||||
{
|
{
|
||||||
"name": "firefish",
|
"name": "firefish",
|
||||||
"version": "1.0.5-dev19",
|
"version": "1.0.5-dev21",
|
||||||
"codename": "aqua",
|
"codename": "aqua",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://git.joinfirefish.org/firefish/firefish.git"
|
"url": "https://git.joinfirefish.org/firefish/firefish.git"
|
||||||
},
|
},
|
||||||
"packageManager": "pnpm@8.9.2",
|
"packageManager": "pnpm@8.10.5",
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"rebuild": "pnpm run clean && pnpm run build",
|
"rebuild": "pnpm run clean && pnpm run build",
|
||||||
|
@ -21,7 +21,7 @@
|
||||||
"migrateandstart": "pnpm run migrate && pnpm run start",
|
"migrateandstart": "pnpm run migrate && pnpm run start",
|
||||||
"gulp": "gulp build",
|
"gulp": "gulp build",
|
||||||
"watch": "pnpm run dev",
|
"watch": "pnpm run dev",
|
||||||
"dev": "pnpm node ./scripts/dev.js",
|
"dev": "pnpm node ./scripts/dev.mjs",
|
||||||
"dev:staging": "NODE_OPTIONS=--max_old_space_size=3072 NODE_ENV=development pnpm run build && pnpm run start",
|
"dev:staging": "NODE_OPTIONS=--max_old_space_size=3072 NODE_ENV=development pnpm run build && pnpm run start",
|
||||||
"lint": "pnpm -r --parallel run lint",
|
"lint": "pnpm -r --parallel run lint",
|
||||||
"debug": "pnpm run build:debug && pnpm run start",
|
"debug": "pnpm run build:debug && pnpm run start",
|
||||||
|
@ -32,42 +32,42 @@
|
||||||
"mocha": "pnpm --filter backend run mocha",
|
"mocha": "pnpm --filter backend run mocha",
|
||||||
"test": "pnpm run mocha",
|
"test": "pnpm run mocha",
|
||||||
"format": "pnpm -r --parallel run format",
|
"format": "pnpm -r --parallel run format",
|
||||||
"clean": "pnpm node ./scripts/clean.js",
|
"clean": "pnpm node ./scripts/clean.mjs",
|
||||||
"clean-all": "pnpm node ./scripts/clean-all.js",
|
"clean-all": "pnpm node ./scripts/clean-all.mjs",
|
||||||
"cleanall": "pnpm run clean-all"
|
"cleanall": "pnpm run clean-all"
|
||||||
},
|
},
|
||||||
"resolutions": {
|
"resolutions": {
|
||||||
"chokidar": "^3.3.1"
|
"chokidar": "^3.3.1"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@bull-board/api": "5.8.0",
|
"@bull-board/api": "5.9.1",
|
||||||
"@bull-board/ui": "5.8.0",
|
"@bull-board/ui": "5.9.1",
|
||||||
"@napi-rs/cli": "^2.16.2",
|
"@napi-rs/cli": "^2.16.5",
|
||||||
"@tensorflow/tfjs": "^4.10.0",
|
"@tensorflow/tfjs": "^4.13.0",
|
||||||
"js-yaml": "4.1.0",
|
"js-yaml": "4.1.0",
|
||||||
"seedrandom": "^3.0.5"
|
"seedrandom": "^3.0.5"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@biomejs/biome": "1.0.0",
|
"@biomejs/biome": "1.3.3",
|
||||||
"@biomejs/cli-darwin-arm64": "^1.0.0",
|
"@biomejs/cli-darwin-arm64": "^1.3.3",
|
||||||
"@biomejs/cli-darwin-x64": "^1.0.0",
|
"@biomejs/cli-darwin-x64": "^1.3.3",
|
||||||
"@biomejs/cli-linux-arm64": "^1.0.0",
|
"@biomejs/cli-linux-arm64": "^1.3.3",
|
||||||
"@biomejs/cli-linux-x64": "^1.0.0",
|
"@biomejs/cli-linux-x64": "^1.3.3",
|
||||||
"@types/gulp": "4.0.13",
|
"@types/gulp": "4.0.17",
|
||||||
"@types/gulp-rename": "2.0.2",
|
"@types/gulp-rename": "2.0.5",
|
||||||
"@types/node": "20.5.8",
|
"@types/node": "20.9.0",
|
||||||
"add": "2.0.6",
|
"add": "2.0.6",
|
||||||
"cross-env": "7.0.3",
|
"cross-env": "7.0.3",
|
||||||
"cypress": "10.11.0",
|
"cypress": "13.5.1",
|
||||||
"execa": "5.1.1",
|
"execa": "8.0.1",
|
||||||
"gulp": "4.0.2",
|
"gulp": "4.0.2",
|
||||||
"gulp-cssnano": "2.1.3",
|
"gulp-cssnano": "2.1.3",
|
||||||
"gulp-rename": "2.0.0",
|
"gulp-rename": "2.0.0",
|
||||||
"gulp-replace": "1.1.4",
|
"gulp-replace": "1.1.4",
|
||||||
"gulp-terser": "2.1.0",
|
"gulp-terser": "2.1.0",
|
||||||
"install-peers": "^1.0.4",
|
"install-peers": "^1.0.4",
|
||||||
"pnpm": "8.9.2",
|
"pnpm": "8.10.5",
|
||||||
"start-server-and-test": "1.15.2",
|
"start-server-and-test": "2.0.3",
|
||||||
"typescript": "5.2.2"
|
"typescript": "5.2.2"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,37 +24,38 @@
|
||||||
},
|
},
|
||||||
"optionalDependencies": {
|
"optionalDependencies": {
|
||||||
"@swc/core-android-arm64": "1.3.11",
|
"@swc/core-android-arm64": "1.3.11",
|
||||||
"@tensorflow/tfjs-node": "3.21.1"
|
"@tensorflow/tfjs-node": "4.13.0"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@bull-board/api": "5.8.0",
|
"@bull-board/api": "5.9.1",
|
||||||
"@bull-board/koa": "5.8.0",
|
"@bull-board/koa": "5.9.1",
|
||||||
"@bull-board/ui": "5.8.0",
|
"@bull-board/ui": "5.9.1",
|
||||||
"@discordapp/twemoji": "14.1.2",
|
"@discordapp/twemoji": "14.1.2",
|
||||||
"@elastic/elasticsearch": "7.17.0",
|
"@elastic/elasticsearch": "8.10.0",
|
||||||
"@koa/cors": "3.4.3",
|
"@koa/cors": "4.0.0",
|
||||||
"@koa/multer": "3.0.2",
|
"@koa/multer": "3.0.2",
|
||||||
"@koa/router": "9.0.1",
|
"@koa/router": "12.0.1",
|
||||||
|
"@ladjs/koa-views": "9.0.0",
|
||||||
"@peertube/http-signature": "1.7.0",
|
"@peertube/http-signature": "1.7.0",
|
||||||
"@redocly/openapi-core": "1.0.2",
|
"@redocly/openapi-core": "1.4.1",
|
||||||
"@sinonjs/fake-timers": "9.1.2",
|
"@sinonjs/fake-timers": "11.2.2",
|
||||||
"@syuilo/aiscript": "0.11.1",
|
"@tensorflow/tfjs": "^4.13.0",
|
||||||
"@tensorflow/tfjs": "^4.2.0",
|
|
||||||
"adm-zip": "^0.5.10",
|
"adm-zip": "^0.5.10",
|
||||||
"ajv": "8.12.0",
|
"ajv": "8.12.0",
|
||||||
"archiver": "6.0.0",
|
"archiver": "6.0.1",
|
||||||
"argon2": "^0.31.1",
|
"argon2": "^0.31.2",
|
||||||
"autolinker": "4.0.0",
|
"autolinker": "4.0.0",
|
||||||
"autwh": "0.1.0",
|
"autwh": "0.1.0",
|
||||||
"aws-sdk": "2.1413.0",
|
"aws-sdk": "2.1498.0",
|
||||||
"axios": "^1.4.0",
|
"axios": "^1.6.2",
|
||||||
"bcryptjs": "2.4.3",
|
"bcryptjs": "2.4.3",
|
||||||
"blurhash": "2.0.5",
|
"blurhash": "2.0.5",
|
||||||
"cassandra-driver": "4.7.1",
|
"cassandra-driver": "4.7.1",
|
||||||
"bull": "4.11.3",
|
"bull": "4.11.5",
|
||||||
"cacheable-lookup": "TheEssem/cacheable-lookup",
|
"cacheable-lookup": "TheEssem/cacheable-lookup",
|
||||||
|
"cbor-x": "^1.5.4",
|
||||||
"chalk": "5.3.0",
|
"chalk": "5.3.0",
|
||||||
"chalk-template": "0.4.0",
|
"chalk-template": "1.1.0",
|
||||||
"chokidar": "^3.5.3",
|
"chokidar": "^3.5.3",
|
||||||
"cli-highlight": "2.1.11",
|
"cli-highlight": "2.1.11",
|
||||||
"color-convert": "2.0.1",
|
"color-convert": "2.0.1",
|
||||||
|
@ -64,19 +65,19 @@
|
||||||
"deep-email-validator": "0.1.21",
|
"deep-email-validator": "0.1.21",
|
||||||
"escape-regexp": "0.0.1",
|
"escape-regexp": "0.0.1",
|
||||||
"feed": "4.2.2",
|
"feed": "4.2.2",
|
||||||
"file-type": "18.5.0",
|
"file-type": "18.7.0",
|
||||||
"firefish-js": "workspace:*",
|
"firefish-js": "workspace:*",
|
||||||
"fluent-ffmpeg": "2.1.2",
|
"fluent-ffmpeg": "2.1.2",
|
||||||
"got": "13.0.0",
|
"got": "13.0.0",
|
||||||
"gunzip-maybe": "^1.4.2",
|
"gunzip-maybe": "^1.4.2",
|
||||||
"happy-dom": "^11.0.2",
|
"happy-dom": "^12.10.3",
|
||||||
"hpagent": "1.2.0",
|
"hpagent": "1.2.0",
|
||||||
"ioredis": "5.3.2",
|
"ioredis": "5.3.2",
|
||||||
"ip-cidr": "3.1.0",
|
"ip-cidr": "3.1.0",
|
||||||
"is-svg": "5.0.0",
|
"is-svg": "5.0.0",
|
||||||
"js-yaml": "4.1.0",
|
"js-yaml": "4.1.0",
|
||||||
"json5": "2.2.3",
|
"json5": "2.2.3",
|
||||||
"jsonld": "8.2.1",
|
"jsonld": "8.3.1",
|
||||||
"jsrsasign": "10.8.6",
|
"jsrsasign": "10.8.6",
|
||||||
"koa": "2.14.2",
|
"koa": "2.14.2",
|
||||||
"koa-body": "^6.0.1",
|
"koa-body": "^6.0.1",
|
||||||
|
@ -88,33 +89,32 @@
|
||||||
"koa-remove-trailing-slashes": "2.0.3",
|
"koa-remove-trailing-slashes": "2.0.3",
|
||||||
"koa-send": "5.0.1",
|
"koa-send": "5.0.1",
|
||||||
"koa-slow": "2.1.0",
|
"koa-slow": "2.1.0",
|
||||||
"koa-views": "7.0.2",
|
|
||||||
"megalodon": "workspace:*",
|
"megalodon": "workspace:*",
|
||||||
"meilisearch": "0.34.1",
|
"meilisearch": "0.35.0",
|
||||||
"mfm-js": "0.23.3",
|
"mfm-js": "0.23.3",
|
||||||
"mime-types": "2.1.35",
|
"mime-types": "2.1.35",
|
||||||
"msgpackr": "1.9.7",
|
"msgpackr": "^1.9.9",
|
||||||
"multer": "1.4.4-lts.1",
|
"multer": "1.4.5-lts.1",
|
||||||
"native-utils": "link:native-utils",
|
"native-utils": "link:native-utils",
|
||||||
"nested-property": "4.0.0",
|
"nested-property": "4.0.0",
|
||||||
"node-fetch": "3.3.2",
|
"node-fetch": "3.3.2",
|
||||||
"nodemailer": "6.9.4",
|
"nodemailer": "6.9.7",
|
||||||
"nsfwjs": "2.4.2",
|
"nsfwjs": "2.4.2",
|
||||||
"opencc-js": "^1.0.5",
|
"opencc-js": "^1.0.5",
|
||||||
"os-utils": "0.0.14",
|
"os-utils": "0.0.14",
|
||||||
"otpauth": "^9.1.4",
|
"otpauth": "^9.2.0",
|
||||||
"parse5": "7.1.2",
|
"parse5": "7.1.2",
|
||||||
"pg": "8.11.3",
|
"pg": "8.11.3",
|
||||||
"private-ip": "3.0.1",
|
"private-ip": "3.0.1",
|
||||||
"probe-image-size": "7.2.3",
|
"probe-image-size": "7.2.3",
|
||||||
"promise-limit": "2.7.0",
|
"promise-limit": "2.7.0",
|
||||||
"punycode": "2.3.0",
|
"punycode": "2.3.1",
|
||||||
"pureimage": "0.4.8",
|
"pureimage": "0.4.13",
|
||||||
"qrcode": "1.5.3",
|
"qrcode": "1.5.3",
|
||||||
"qs": "6.11.2",
|
"qs": "6.11.2",
|
||||||
"random-seed": "0.3.0",
|
"random-seed": "0.3.0",
|
||||||
"ratelimiter": "3.4.1",
|
"ratelimiter": "3.4.1",
|
||||||
"re2": "1.20.3",
|
"re2": "1.20.8",
|
||||||
"redis-semaphore": "5.5.0",
|
"redis-semaphore": "5.5.0",
|
||||||
"reflect-metadata": "0.1.13",
|
"reflect-metadata": "0.1.13",
|
||||||
"rename": "1.0.4",
|
"rename": "1.0.4",
|
||||||
|
@ -123,82 +123,85 @@
|
||||||
"sanitize-html": "2.11.0",
|
"sanitize-html": "2.11.0",
|
||||||
"seedrandom": "^3.0.5",
|
"seedrandom": "^3.0.5",
|
||||||
"semver": "7.5.4",
|
"semver": "7.5.4",
|
||||||
"sharp": "0.32.5",
|
"sharp": "0.32.6",
|
||||||
"sonic-channel": "^1.3.1",
|
"sonic-channel": "^1.3.1",
|
||||||
"stringz": "2.1.0",
|
"stringz": "2.1.0",
|
||||||
"summaly": "2.7.0",
|
"summaly": "2.7.0",
|
||||||
"syslog-pro": "1.0.0",
|
"syslog-pro": "1.0.0",
|
||||||
"systeminformation": "5.21.3",
|
"systeminformation": "5.21.17",
|
||||||
"tar-stream": "^3.1.6",
|
"tar-stream": "^3.1.6",
|
||||||
"tesseract.js": "^4.1.1",
|
"tesseract.js": "^5.0.3",
|
||||||
"tinycolor2": "1.6.0",
|
"tinycolor2": "1.6.0",
|
||||||
"tinyld": "^1.3.4",
|
"tinyld": "^1.3.4",
|
||||||
"tmp": "0.2.1",
|
"tmp": "0.2.1",
|
||||||
"twemoji-parser": "14.0.0",
|
"twemoji-parser": "14.0.0",
|
||||||
"typeorm": "0.3.17",
|
"typeorm": "0.3.17",
|
||||||
"ulid": "2.3.0",
|
"ulid": "2.3.0",
|
||||||
"uuid": "9.0.0",
|
"uuid": "9.0.1",
|
||||||
"web-push": "3.6.5",
|
"web-push": "3.6.6",
|
||||||
"websocket": "1.0.34",
|
"websocket": "1.0.34",
|
||||||
"xev": "3.0.2"
|
"xev": "3.0.2"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@swc/cli": "^0.1.62",
|
"@swc/cli": "^0.1.63",
|
||||||
"@swc/core": "1.3.78",
|
"@swc/core": "1.3.78",
|
||||||
"@types/adm-zip": "^0.5.0",
|
"@types/adm-zip": "^0.5.4",
|
||||||
"@types/bcryptjs": "2.4.2",
|
"@types/bcryptjs": "2.4.6",
|
||||||
"@types/escape-regexp": "0.0.1",
|
"@types/color-convert": "^2.0.3",
|
||||||
"@types/fluent-ffmpeg": "2.1.21",
|
"@types/content-disposition": "^0.5.8",
|
||||||
"@types/js-yaml": "4.0.5",
|
"@types/escape-regexp": "0.0.3",
|
||||||
"@types/jsonld": "1.5.9",
|
"@types/fluent-ffmpeg": "2.1.24",
|
||||||
"@types/jsrsasign": "10.5.8",
|
"@types/js-yaml": "4.0.9",
|
||||||
"@types/koa": "2.13.8",
|
"@types/jsonld": "1.5.12",
|
||||||
"@types/koa-bodyparser": "4.3.10",
|
"@types/jsrsasign": "10.5.12",
|
||||||
"@types/koa-cors": "0.0.2",
|
"@types/koa": "2.13.11",
|
||||||
"@types/koa-favicon": "2.0.21",
|
"@types/koa-bodyparser": "4.3.12",
|
||||||
"@types/koa-logger": "3.1.2",
|
"@types/koa-cors": "0.0.5",
|
||||||
"@types/koa-mount": "4.0.2",
|
"@types/koa-favicon": "2.1.3",
|
||||||
"@types/koa-send": "4.1.3",
|
"@types/koa-logger": "3.1.5",
|
||||||
"@types/koa-views": "7.0.0",
|
"@types/koa-mount": "4.0.5",
|
||||||
"@types/koa__cors": "3.3.0",
|
"@types/koa-send": "4.1.6",
|
||||||
"@types/koa__multer": "2.0.4",
|
"@types/koa__cors": "4.0.3",
|
||||||
"@types/koa__router": "8.0.11",
|
"@types/koa__multer": "2.0.7",
|
||||||
"@types/mocha": "9.1.1",
|
"@types/koa__router": "12.0.4",
|
||||||
"@types/node": "18.11.18",
|
"@types/mocha": "10.0.4",
|
||||||
"@types/node-fetch": "3.0.3",
|
"@types/node": "20.9.0",
|
||||||
"@types/nodemailer": "6.4.9",
|
"@types/node-fetch": "2.6.9",
|
||||||
"@types/oauth": "0.9.1",
|
"@types/nodemailer": "6.4.14",
|
||||||
"@types/probe-image-size": "^7.2.0",
|
"@types/oauth": "0.9.4",
|
||||||
"@types/pug": "2.0.6",
|
"@types/opencc-js": "^1.0.3",
|
||||||
"@types/punycode": "2.1.0",
|
"@types/pg": "^8.10.9",
|
||||||
"@types/qrcode": "1.5.1",
|
"@types/probe-image-size": "^7.2.3",
|
||||||
"@types/qs": "6.9.7",
|
"@types/pug": "2.0.9",
|
||||||
"@types/random-seed": "0.3.3",
|
"@types/punycode": "2.1.2",
|
||||||
"@types/ratelimiter": "3.4.4",
|
"@types/qrcode": "1.5.5",
|
||||||
"@types/redis": "4.0.11",
|
"@types/qs": "6.9.10",
|
||||||
"@types/rename": "1.0.4",
|
"@types/random-seed": "0.3.5",
|
||||||
"@types/sanitize-html": "2.9.0",
|
"@types/ratelimiter": "3.4.6",
|
||||||
"@types/semver": "7.5.0",
|
"@types/rename": "1.0.7",
|
||||||
"@types/sinonjs__fake-timers": "8.1.2",
|
"@types/sanitize-html": "2.9.4",
|
||||||
"@types/tinycolor2": "1.4.3",
|
"@types/semver": "7.5.5",
|
||||||
"@types/tmp": "0.2.3",
|
"@types/sinonjs__fake-timers": "8.1.5",
|
||||||
"@types/uuid": "9.0.2",
|
"@types/syslog-pro": "^1.0.3",
|
||||||
"@types/web-push": "3.3.2",
|
"@types/tinycolor2": "1.4.6",
|
||||||
"@types/websocket": "1.0.5",
|
"@types/tmp": "0.2.6",
|
||||||
"@types/ws": "8.5.5",
|
"@types/uuid": "9.0.7",
|
||||||
|
"@types/web-push": "3.6.3",
|
||||||
|
"@types/websocket": "1.0.9",
|
||||||
|
"@types/ws": "8.5.9",
|
||||||
"cross-env": "7.0.3",
|
"cross-env": "7.0.3",
|
||||||
"eslint": "^8.46.0",
|
"eslint": "^8.53.0",
|
||||||
"execa": "6.1.0",
|
"execa": "8.0.1",
|
||||||
"json5-loader": "4.0.1",
|
"json5-loader": "4.0.1",
|
||||||
"mocha": "10.2.0",
|
"mocha": "10.2.0",
|
||||||
"pug": "3.0.2",
|
"pug": "3.0.2",
|
||||||
"strict-event-emitter-types": "2.0.0",
|
"strict-event-emitter-types": "2.0.0",
|
||||||
"swc-loader": "^0.2.3",
|
"swc-loader": "^0.2.3",
|
||||||
"ts-loader": "9.4.4",
|
"ts-loader": "9.5.1",
|
||||||
"ts-node": "10.9.1",
|
"ts-node": "10.9.1",
|
||||||
"tsconfig-paths": "4.2.0",
|
"tsconfig-paths": "4.2.0",
|
||||||
"typescript": "5.1.6",
|
"typescript": "5.2.2",
|
||||||
"webpack": "^5.88.2",
|
"webpack": "^5.89.0",
|
||||||
"ws": "8.13.0"
|
"ws": "8.14.2"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,10 +10,9 @@ import semver from "semver";
|
||||||
import Logger from "@/services/logger.js";
|
import Logger from "@/services/logger.js";
|
||||||
import loadConfig from "@/config/load.js";
|
import loadConfig from "@/config/load.js";
|
||||||
import type { Config } from "@/config/types.js";
|
import type { Config } from "@/config/types.js";
|
||||||
import { lessThan } from "@/prelude/array.js";
|
import { envOption } from "@/env.js";
|
||||||
import { envOption } from "../env.js";
|
|
||||||
import { showMachineInfo } from "@/misc/show-machine-info.js";
|
import { showMachineInfo } from "@/misc/show-machine-info.js";
|
||||||
import { db, initDb } from "../db/postgre.js";
|
import { db, initDb } from "@/db/postgre.js";
|
||||||
|
|
||||||
const _filename = fileURLToPath(import.meta.url);
|
const _filename = fileURLToPath(import.meta.url);
|
||||||
const _dirname = dirname(_filename);
|
const _dirname = dirname(_filename);
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
import cluster from "node:cluster";
|
import cluster from "node:cluster";
|
||||||
import { initDb } from "../db/postgre.js";
|
import { initDb } from "@/db/postgre.js";
|
||||||
import config from "@/config/index.js";
|
|
||||||
import os from "node:os";
|
import os from "node:os";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import config from "@/config/index.js";
|
import config from "@/config/index.js";
|
||||||
import {
|
import {
|
||||||
DB_MAX_NOTE_TEXT_LENGTH,
|
|
||||||
DB_MAX_IMAGE_COMMENT_LENGTH,
|
DB_MAX_IMAGE_COMMENT_LENGTH,
|
||||||
|
DB_MAX_NOTE_TEXT_LENGTH,
|
||||||
} from "@/misc/hard-limits.js";
|
} from "@/misc/hard-limits.js";
|
||||||
|
|
||||||
export const MAX_NOTE_TEXT_LENGTH = Math.min(
|
export const MAX_NOTE_TEXT_LENGTH = Math.min(
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import Xev from "xev";
|
import Xev from "xev";
|
||||||
import { deliverQueue, inboxQueue } from "../queue/queues.js";
|
import { deliverQueue, inboxQueue } from "@/queue/queues.js";
|
||||||
|
|
||||||
const ev = new Xev();
|
const ev = new Xev();
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@ import si from "systeminformation";
|
||||||
import Xev from "xev";
|
import Xev from "xev";
|
||||||
import * as osUtils from "os-utils";
|
import * as osUtils from "os-utils";
|
||||||
import { fetchMeta } from "@/misc/fetch-meta.js";
|
import { fetchMeta } from "@/misc/fetch-meta.js";
|
||||||
import meilisearch from "../db/meilisearch.js";
|
import meilisearch from "@/db/meilisearch.js";
|
||||||
|
|
||||||
const ev = new Xev();
|
const ev = new Xev();
|
||||||
|
|
||||||
|
|
|
@ -77,6 +77,9 @@ import { entities as charts } from "@/services/chart/entities.js";
|
||||||
import { dbLogger } from "./logger.js";
|
import { dbLogger } from "./logger.js";
|
||||||
import { redisClient } from "./redis.js";
|
import { redisClient } from "./redis.js";
|
||||||
|
|
||||||
|
// TODO?: should we avoid importing things from built directory?
|
||||||
|
import { nativeInitDatabase } from "native-utils/built/index.js";
|
||||||
|
|
||||||
const sqlLogger = dbLogger.createSubLogger("sql", "gray", false);
|
const sqlLogger = dbLogger.createSubLogger("sql", "gray", false);
|
||||||
|
|
||||||
class MyCustomLogger implements Logger {
|
class MyCustomLogger implements Logger {
|
||||||
|
|
2
packages/backend/src/global.d.ts
vendored
2
packages/backend/src/global.d.ts
vendored
|
@ -1,2 +1,2 @@
|
||||||
// rome-ignore lint/suspicious/noExplicitAny: i have no idea
|
// biome-ignore lint/suspicious/noExplicitAny: i have no idea
|
||||||
type FIXME = any;
|
type FIXME = any;
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/**
|
/**
|
||||||
* Misskey Entry Point!
|
* Firefish Entry Point
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { EventEmitter } from "node:events";
|
import { EventEmitter } from "node:events";
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import { redisClient } from "../db/redis.js";
|
import { redisClient } from "@/db/redis.js";
|
||||||
import { Mutex } from "redis-semaphore";
|
import { Mutex } from "redis-semaphore";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import fetch from "node-fetch";
|
import fetch from "node-fetch";
|
||||||
import { URLSearchParams } from "node:url";
|
import { URLSearchParams } from "node:url";
|
||||||
import { getAgentByUrl } from "./fetch.js";
|
import { getAgentByUrl } from "@/misc/fetch.js";
|
||||||
import config from "@/config/index.js";
|
import config from "@/config/index.js";
|
||||||
|
|
||||||
export async function verifyRecaptcha(secret: string, response: string) {
|
export async function verifyRecaptcha(secret: string, response: string) {
|
||||||
|
|
|
@ -2,11 +2,11 @@ import type { Antenna } from "@/models/entities/antenna.js";
|
||||||
import type { Note } from "@/models/entities/note.js";
|
import type { Note } from "@/models/entities/note.js";
|
||||||
import type { User } from "@/models/entities/user.js";
|
import type { User } from "@/models/entities/user.js";
|
||||||
import { Blockings, UserProfiles } from "@/models/index.js";
|
import { Blockings, UserProfiles } from "@/models/index.js";
|
||||||
import { getFullApAccount } from "./convert-host.js";
|
import { getFullApAccount } from "@/misc/convert-host.js";
|
||||||
import * as Acct from "@/misc/acct.js";
|
import * as Acct from "@/misc/acct.js";
|
||||||
import type { Packed } from "./schema.js";
|
import type { Packed } from "@/misc/schema.js";
|
||||||
import { Cache } from "./cache.js";
|
import { Cache } from "@/misc/cache.js";
|
||||||
import { getWordHardMute } from "./check-word-mute.js";
|
import { getWordHardMute } from "@/misc/check-word-mute.js";
|
||||||
|
|
||||||
const blockingCache = new Cache<User["id"][]>("blocking", 60 * 5);
|
const blockingCache = new Cache<User["id"][]>("blocking", 60 * 5);
|
||||||
const mutedWordsCache = new Cache<string[][] | undefined>("mutedWords", 60 * 5);
|
const mutedWordsCache = new Cache<string[][] | undefined>("mutedWords", 60 * 5);
|
||||||
|
|
|
@ -7,7 +7,6 @@ import {
|
||||||
ManyToOne,
|
ManyToOne,
|
||||||
} from "typeorm";
|
} from "typeorm";
|
||||||
import { User } from "./user.js";
|
import { User } from "./user.js";
|
||||||
import { Note } from "./note.js";
|
|
||||||
import { id } from "../id.js";
|
import { id } from "../id.js";
|
||||||
|
|
||||||
@Entity()
|
@Entity()
|
||||||
|
|
|
@ -1,14 +1,5 @@
|
||||||
import {
|
import { Entity, Index, Column, PrimaryGeneratedColumn } from "typeorm";
|
||||||
PrimaryColumn,
|
|
||||||
Entity,
|
|
||||||
Index,
|
|
||||||
JoinColumn,
|
|
||||||
Column,
|
|
||||||
ManyToOne,
|
|
||||||
PrimaryGeneratedColumn,
|
|
||||||
} from "typeorm";
|
|
||||||
import { id } from "../id.js";
|
import { id } from "../id.js";
|
||||||
import { Note } from "./note.js";
|
|
||||||
import type { User } from "./user.js";
|
import type { User } from "./user.js";
|
||||||
|
|
||||||
@Entity()
|
@Entity()
|
||||||
|
|
|
@ -1,9 +1,7 @@
|
||||||
import {} from "typeorm";
|
|
||||||
import { db } from "@/db/postgre.js";
|
import { db } from "@/db/postgre.js";
|
||||||
|
|
||||||
import { Announcement } from "./entities/announcement.js";
|
import { Announcement } from "./entities/announcement.js";
|
||||||
import { AnnouncementRead } from "./entities/announcement-read.js";
|
import { AnnouncementRead } from "./entities/announcement-read.js";
|
||||||
import { Instance } from "./entities/instance.js";
|
|
||||||
import { Poll } from "./entities/poll.js";
|
import { Poll } from "./entities/poll.js";
|
||||||
import { PollVote } from "./entities/poll-vote.js";
|
import { PollVote } from "./entities/poll-vote.js";
|
||||||
import { Meta } from "./entities/meta.js";
|
import { Meta } from "./entities/meta.js";
|
||||||
|
|
|
@ -2,12 +2,10 @@ import { db } from "@/db/postgre.js";
|
||||||
import { DriveFile } from "@/models/entities/drive-file.js";
|
import { DriveFile } from "@/models/entities/drive-file.js";
|
||||||
import type { User } from "@/models/entities/user.js";
|
import type { User } from "@/models/entities/user.js";
|
||||||
import { toPuny } from "@/misc/convert-host.js";
|
import { toPuny } from "@/misc/convert-host.js";
|
||||||
import { awaitAll, Promiseable } from "@/prelude/await-all.js";
|
import { awaitAll } from "@/prelude/await-all.js";
|
||||||
import type { Packed } from "@/misc/schema.js";
|
import type { Packed } from "@/misc/schema.js";
|
||||||
import config from "@/config/index.js";
|
import config from "@/config/index.js";
|
||||||
import { query, appendQuery } from "@/prelude/url.js";
|
import { query, appendQuery } from "@/prelude/url.js";
|
||||||
import { Meta } from "@/models/entities/meta.js";
|
|
||||||
import { fetchMeta } from "@/misc/fetch-meta.js";
|
|
||||||
import { Users, DriveFolders } from "../index.js";
|
import { Users, DriveFolders } from "../index.js";
|
||||||
import { deepClone } from "@/misc/clone.js";
|
import { deepClone } from "@/misc/clone.js";
|
||||||
import { ScyllaDriveFile } from "@/db/scylla.js";
|
import { ScyllaDriveFile } from "@/db/scylla.js";
|
||||||
|
|
|
@ -6,8 +6,8 @@ import { Notes } from "@/models/index.js";
|
||||||
import { MoreThan } from "typeorm";
|
import { MoreThan } from "typeorm";
|
||||||
import { index } from "@/services/note/create.js";
|
import { index } from "@/services/note/create.js";
|
||||||
import { Note } from "@/models/entities/note.js";
|
import { Note } from "@/models/entities/note.js";
|
||||||
import meilisearch from "../../../db/meilisearch.js";
|
|
||||||
import { fetchPostCount, parseScyllaNote, scyllaClient } from "@/db/scylla.js";
|
import { fetchPostCount, parseScyllaNote, scyllaClient } from "@/db/scylla.js";
|
||||||
|
import meilisearch from "@/db/meilisearch.js";
|
||||||
|
|
||||||
const logger = queueLogger.createSubLogger("index-all-notes");
|
const logger = queueLogger.createSubLogger("index-all-notes");
|
||||||
|
|
||||||
|
|
|
@ -1,14 +1,12 @@
|
||||||
import type Bull from "bull";
|
import type Bull from "bull";
|
||||||
import * as fs from "node:fs";
|
import * as fs from "node:fs";
|
||||||
|
|
||||||
import { ulid } from "ulid";
|
|
||||||
import mime from "mime-types";
|
import mime from "mime-types";
|
||||||
import archiver from "archiver";
|
import archiver from "archiver";
|
||||||
import { queueLogger } from "../../logger.js";
|
import { queueLogger } from "../../logger.js";
|
||||||
import { addFile } from "@/services/drive/add-file.js";
|
import { addFile } from "@/services/drive/add-file.js";
|
||||||
import { format as dateFormat } from "date-fns";
|
import { format as dateFormat } from "date-fns";
|
||||||
import { Users, Emojis } from "@/models/index.js";
|
import { Users, Emojis } from "@/models/index.js";
|
||||||
import {} from "@/queue/types.js";
|
|
||||||
import { createTemp, createTempDir } from "@/misc/create-temp.js";
|
import { createTemp, createTempDir } from "@/misc/create-temp.js";
|
||||||
import { downloadUrl } from "@/misc/download-url.js";
|
import { downloadUrl } from "@/misc/download-url.js";
|
||||||
import config from "@/config/index.js";
|
import config from "@/config/index.js";
|
||||||
|
|
|
@ -5,7 +5,7 @@ import * as Acct from "@/misc/acct.js";
|
||||||
import { resolveUser } from "@/remote/resolve-user.js";
|
import { resolveUser } from "@/remote/resolve-user.js";
|
||||||
import { downloadTextFile } from "@/misc/download-text-file.js";
|
import { downloadTextFile } from "@/misc/download-text-file.js";
|
||||||
import { isSelfHost, toPuny } from "@/misc/convert-host.js";
|
import { isSelfHost, toPuny } from "@/misc/convert-host.js";
|
||||||
import { Users, DriveFiles, Blockings } from "@/models/index.js";
|
import { Users, DriveFiles } from "@/models/index.js";
|
||||||
import type { DbUserImportJobData } from "@/queue/types.js";
|
import type { DbUserImportJobData } from "@/queue/types.js";
|
||||||
import block from "@/services/blocking/create.js";
|
import block from "@/services/blocking/create.js";
|
||||||
import { IsNull } from "typeorm";
|
import { IsNull } from "typeorm";
|
||||||
|
|
|
@ -5,7 +5,6 @@ import { queueLogger } from "../../logger.js";
|
||||||
import type Bull from "bull";
|
import type Bull from "bull";
|
||||||
import { htmlToMfm } from "@/remote/activitypub/misc/html-to-mfm.js";
|
import { htmlToMfm } from "@/remote/activitypub/misc/html-to-mfm.js";
|
||||||
import { resolveNote } from "@/remote/activitypub/models/note.js";
|
import { resolveNote } from "@/remote/activitypub/models/note.js";
|
||||||
import { Note } from "@/models/entities/note.js";
|
|
||||||
import { uploadFromUrl } from "@/services/drive/upload-from-url.js";
|
import { uploadFromUrl } from "@/services/drive/upload-from-url.js";
|
||||||
import type { DriveFile } from "@/models/entities/drive-file.js";
|
import type { DriveFile } from "@/models/entities/drive-file.js";
|
||||||
import { Notes, NoteEdits } from "@/models/index.js";
|
import { Notes, NoteEdits } from "@/models/index.js";
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import type Bull from "bull";
|
import type Bull from "bull";
|
||||||
import { Notes, PollVotes } from "@/models/index.js";
|
import { Notes, PollVotes } from "@/models/index.js";
|
||||||
import { queueLogger } from "../logger.js";
|
// import { queueLogger } from "../logger.js";
|
||||||
import type { EndedPollNotificationJobData } from "@/queue/types.js";
|
import type { EndedPollNotificationJobData } from "@/queue/types.js";
|
||||||
import { createNotification } from "@/services/create-notification.js";
|
import { createNotification } from "@/services/create-notification.js";
|
||||||
import { deliverQuestionUpdate } from "@/services/note/polls/update.js";
|
import { deliverQuestionUpdate } from "@/services/note/polls/update.js";
|
||||||
|
@ -13,7 +13,8 @@ import {
|
||||||
} from "@/db/scylla.js";
|
} from "@/db/scylla.js";
|
||||||
import type { Note } from "@/models/entities/note.js";
|
import type { Note } from "@/models/entities/note.js";
|
||||||
|
|
||||||
const logger = queueLogger.createSubLogger("ended-poll-notification");
|
// unused
|
||||||
|
// const logger = queueLogger.createSubLogger("ended-poll-notification");
|
||||||
|
|
||||||
export async function endedPollNotification(
|
export async function endedPollNotification(
|
||||||
job: Bull.Job<EndedPollNotificationJobData>,
|
job: Bull.Job<EndedPollNotificationJobData>,
|
||||||
|
|
|
@ -4,7 +4,6 @@ import { UserProfiles } from "@/models/index.js";
|
||||||
import { Not } from "typeorm";
|
import { Not } from "typeorm";
|
||||||
import { queueLogger } from "../../logger.js";
|
import { queueLogger } from "../../logger.js";
|
||||||
import { verifyLink } from "@/services/fetch-rel-me.js";
|
import { verifyLink } from "@/services/fetch-rel-me.js";
|
||||||
import config from "@/config/index.js";
|
|
||||||
|
|
||||||
const logger = queueLogger.createSubLogger("verify-links");
|
const logger = queueLogger.createSubLogger("verify-links");
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
import { URL } from "node:url";
|
|
||||||
import type Bull from "bull";
|
import type Bull from "bull";
|
||||||
import Logger from "@/services/logger.js";
|
import Logger from "@/services/logger.js";
|
||||||
import type { WebhookDeliverJobData } from "../types.js";
|
import type { WebhookDeliverJobData } from "../types.js";
|
||||||
|
|
|
@ -8,7 +8,6 @@ import type {
|
||||||
CacheableRemoteUser,
|
CacheableRemoteUser,
|
||||||
CacheableUser,
|
CacheableUser,
|
||||||
} from "@/models/entities/user.js";
|
} from "@/models/entities/user.js";
|
||||||
import { User } from "@/models/entities/user.js";
|
|
||||||
|
|
||||||
type Visibility = "public" | "home" | "followers" | "specified";
|
type Visibility = "public" | "home" | "followers" | "specified";
|
||||||
|
|
||||||
|
|
|
@ -71,7 +71,7 @@ export function parseUri(value: string | IObject): UriParseResult {
|
||||||
|
|
||||||
export default class DbResolver {
|
export default class DbResolver {
|
||||||
/**
|
/**
|
||||||
* AP Note => Misskey Note in DB
|
* AP Note => Firefish Note in DB
|
||||||
*/
|
*/
|
||||||
public async getNoteFromApId(value: string | IObject): Promise<Note | null> {
|
public async getNoteFromApId(value: string | IObject): Promise<Note | null> {
|
||||||
const parsed = parseUri(value);
|
const parsed = parseUri(value);
|
||||||
|
@ -145,7 +145,7 @@ export default class DbResolver {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* AP Person => Misskey User in DB
|
* AP Person => Firefish User in DB
|
||||||
*/
|
*/
|
||||||
public async getUserFromApId(
|
public async getUserFromApId(
|
||||||
value: string | IObject,
|
value: string | IObject,
|
||||||
|
@ -178,7 +178,7 @@ export default class DbResolver {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* AP KeyId => Misskey User and Key
|
* AP KeyId => Firefish User and Key
|
||||||
*/
|
*/
|
||||||
public async getAuthUserFromKeyId(keyId: string): Promise<{
|
public async getAuthUserFromKeyId(keyId: string): Promise<{
|
||||||
user: CacheableRemoteUser;
|
user: CacheableRemoteUser;
|
||||||
|
@ -212,7 +212,7 @@ export default class DbResolver {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* AP Actor id => Misskey User and Key
|
* AP Actor id => Firefish User and Key
|
||||||
*/
|
*/
|
||||||
public async getAuthUserFromApId(uri: string): Promise<{
|
public async getAuthUserFromApId(uri: string): Promise<{
|
||||||
user: CacheableRemoteUser;
|
user: CacheableRemoteUser;
|
||||||
|
|
|
@ -3,7 +3,7 @@ import type { IRead } from "../type.js";
|
||||||
import { getApId } from "../type.js";
|
import { getApId } from "../type.js";
|
||||||
import { isSelfHost, extractDbHost } from "@/misc/convert-host.js";
|
import { isSelfHost, extractDbHost } from "@/misc/convert-host.js";
|
||||||
import { MessagingMessages } from "@/models/index.js";
|
import { MessagingMessages } from "@/models/index.js";
|
||||||
import { readUserMessagingMessage } from "../../../server/api/common/read-messaging-message.js";
|
import { readUserMessagingMessage } from "@/server/api/common/read-messaging-message.js";
|
||||||
|
|
||||||
export const performReadActivity = async (
|
export const performReadActivity = async (
|
||||||
actor: CacheableRemoteUser,
|
actor: CacheableRemoteUser,
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
import unfollow from "@/services/following/delete.js";
|
import unfollow from "@/services/following/delete.js";
|
||||||
import cancelRequest from "@/services/following/requests/cancel.js";
|
|
||||||
import type { IAccept } from "../../type.js";
|
import type { IAccept } from "../../type.js";
|
||||||
import type { CacheableRemoteUser } from "@/models/entities/user.js";
|
import type { CacheableRemoteUser } from "@/models/entities/user.js";
|
||||||
import { Followings } from "@/models/index.js";
|
import { Followings } from "@/models/index.js";
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import * as mfm from "mfm-js";
|
import * as mfm from "mfm-js";
|
||||||
import type { Note } from "@/models/entities/note.js";
|
import type { Note } from "@/models/entities/note.js";
|
||||||
import { toHtml } from "../../../mfm/to-html.js";
|
import { toHtml } from "@/mfm/to-html.js";
|
||||||
|
|
||||||
export default function (note: Note) {
|
export default function (note: Note) {
|
||||||
if (!note.text) return "";
|
if (!note.text) return "";
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import type { IObject } from "../type.js";
|
import type { IObject } from "../type.js";
|
||||||
import { extractApHashtagObjects } from "../models/tag.js";
|
import { extractApHashtagObjects } from "../models/tag.js";
|
||||||
import { fromHtml } from "../../../mfm/from-html.js";
|
import { fromHtml } from "@/mfm/from-html.js";
|
||||||
|
|
||||||
export function htmlToMfm(html: string, tag?: IObject | IObject[]) {
|
export function htmlToMfm(html: string, tag?: IObject | IObject[]) {
|
||||||
const hashtagNames = extractApHashtagObjects(tag)
|
const hashtagNames = extractApHashtagObjects(tag)
|
||||||
|
|
|
@ -1,11 +1,10 @@
|
||||||
import { uploadFromUrl } from "@/services/drive/upload-from-url.js";
|
import { uploadFromUrl } from "@/services/drive/upload-from-url.js";
|
||||||
import type { CacheableRemoteUser } from "@/models/entities/user.js";
|
import type { CacheableRemoteUser } from "@/models/entities/user.js";
|
||||||
import { IRemoteUser } from "@/models/entities/user.js";
|
|
||||||
import Resolver from "../resolver.js";
|
import Resolver from "../resolver.js";
|
||||||
import { fetchMeta } from "@/misc/fetch-meta.js";
|
import { fetchMeta } from "@/misc/fetch-meta.js";
|
||||||
import { apLogger } from "../logger.js";
|
import { apLogger } from "../logger.js";
|
||||||
import type { DriveFile } from "@/models/entities/drive-file.js";
|
import type { DriveFile } from "@/models/entities/drive-file.js";
|
||||||
import { DriveFiles, Users } from "@/models/index.js";
|
import { DriveFiles } from "@/models/index.js";
|
||||||
import { truncate } from "@/misc/truncate.js";
|
import { truncate } from "@/misc/truncate.js";
|
||||||
import { DB_MAX_IMAGE_COMMENT_LENGTH } from "@/misc/hard-limits.js";
|
import { DB_MAX_IMAGE_COMMENT_LENGTH } from "@/misc/hard-limits.js";
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
import promiseLimit from "promise-limit";
|
import promiseLimit from "promise-limit";
|
||||||
import { toArray, unique } from "@/prelude/array.js";
|
import { toArray, unique } from "@/prelude/array.js";
|
||||||
import type { CacheableUser } from "@/models/entities/user.js";
|
import type { CacheableUser } from "@/models/entities/user.js";
|
||||||
import { User } from "@/models/entities/user.js";
|
|
||||||
import type { IObject, IApMention } from "../type.js";
|
import type { IObject, IApMention } from "../type.js";
|
||||||
import { isMention } from "../type.js";
|
import { isMention } from "../type.js";
|
||||||
import Resolver from "../resolver.js";
|
import Resolver from "../resolver.js";
|
||||||
|
|
|
@ -6,9 +6,7 @@ import post from "@/services/note/create.js";
|
||||||
import { extractMentionedUsers } from "@/services/note/create.js";
|
import { extractMentionedUsers } from "@/services/note/create.js";
|
||||||
import { resolvePerson } from "./person.js";
|
import { resolvePerson } from "./person.js";
|
||||||
import { resolveImage } from "./image.js";
|
import { resolveImage } from "./image.js";
|
||||||
import type {
|
import type { CacheableRemoteUser } from "@/models/entities/user.js";
|
||||||
CacheableRemoteUser,
|
|
||||||
} from "@/models/entities/user.js";
|
|
||||||
import { htmlToMfm } from "../misc/html-to-mfm.js";
|
import { htmlToMfm } from "../misc/html-to-mfm.js";
|
||||||
import { extractApHashtags } from "./tag.js";
|
import { extractApHashtags } from "./tag.js";
|
||||||
import { unique, toArray, toSingle } from "@/prelude/array.js";
|
import { unique, toArray, toSingle } from "@/prelude/array.js";
|
||||||
|
|
|
@ -8,7 +8,6 @@ import { updateUsertags } from "@/services/update-hashtag.js";
|
||||||
import {
|
import {
|
||||||
Users,
|
Users,
|
||||||
Instances,
|
Instances,
|
||||||
DriveFiles,
|
|
||||||
Followings,
|
Followings,
|
||||||
UserProfiles,
|
UserProfiles,
|
||||||
UserPublickeys,
|
UserPublickeys,
|
||||||
|
@ -37,8 +36,8 @@ import { publishInternalEvent } from "@/services/stream.js";
|
||||||
import { db } from "@/db/postgre.js";
|
import { db } from "@/db/postgre.js";
|
||||||
import { apLogger } from "../logger.js";
|
import { apLogger } from "../logger.js";
|
||||||
import { htmlToMfm } from "../misc/html-to-mfm.js";
|
import { htmlToMfm } from "../misc/html-to-mfm.js";
|
||||||
import { fromHtml } from "../../../mfm/from-html.js";
|
import { fromHtml } from "@/mfm/from-html.js";
|
||||||
import type { IActor, IObject, IApPropertyValue } from "../type.js";
|
import type { IActor, IObject } from "../type.js";
|
||||||
import {
|
import {
|
||||||
isCollectionOrOrderedCollection,
|
isCollectionOrOrderedCollection,
|
||||||
isCollection,
|
isCollection,
|
||||||
|
@ -317,7 +316,9 @@ export async function createPerson(
|
||||||
await transactionalEntityManager.save(
|
await transactionalEntityManager.save(
|
||||||
new UserProfile({
|
new UserProfile({
|
||||||
userId: user.id,
|
userId: user.id,
|
||||||
description: person.summary
|
description: person._misskey_summary
|
||||||
|
? truncate(person._misskey_summary, summaryLength)
|
||||||
|
: person.summary
|
||||||
? htmlToMfm(truncate(person.summary, summaryLength), person.tag)
|
? htmlToMfm(truncate(person.summary, summaryLength), person.tag)
|
||||||
: null,
|
: null,
|
||||||
url: url,
|
url: url,
|
||||||
|
@ -464,7 +465,7 @@ export async function updatePerson(
|
||||||
|
|
||||||
const emojiNames = emojis.map((emoji) => emoji.name);
|
const emojiNames = emojis.map((emoji) => emoji.name);
|
||||||
|
|
||||||
const { fields } = analyzeAttachments(person.attachment || []);
|
const fields = analyzeAttachments(person.attachment || []);
|
||||||
|
|
||||||
const tags = extractApHashtags(person.tag)
|
const tags = extractApHashtags(person.tag)
|
||||||
.map((tag) => normalizeForSearch(tag))
|
.map((tag) => normalizeForSearch(tag))
|
||||||
|
|
|
@ -1,8 +1,5 @@
|
||||||
import config from "@/config/index.js";
|
import config from "@/config/index.js";
|
||||||
import { IObject, IActivity } from "@/remote/activitypub/type.js";
|
|
||||||
import type { ILocalUser } from "@/models/entities/user.js";
|
import type { ILocalUser } from "@/models/entities/user.js";
|
||||||
import { IRemoteUser } from "@/models/entities/user.js";
|
|
||||||
import { getInstanceActor } from "@/services/instance-actor.js";
|
|
||||||
|
|
||||||
// to anonymise reporters, the reporting actor must be a system user
|
// to anonymise reporters, the reporting actor must be a system user
|
||||||
// object has to be a uri or array of uris
|
// object has to be a uri or array of uris
|
||||||
|
|
|
@ -43,6 +43,7 @@ export const renderActivity = (x: any): IActivity | null => {
|
||||||
_misskey_talk: "misskey:_misskey_talk",
|
_misskey_talk: "misskey:_misskey_talk",
|
||||||
_misskey_reaction: "misskey:_misskey_reaction",
|
_misskey_reaction: "misskey:_misskey_reaction",
|
||||||
_misskey_votes: "misskey:_misskey_votes",
|
_misskey_votes: "misskey:_misskey_votes",
|
||||||
|
_misskey_summary: "misskey:_misskey_summary",
|
||||||
isCat: "misskey:isCat",
|
isCat: "misskey:isCat",
|
||||||
// Fedibird
|
// Fedibird
|
||||||
fedibird: "http://fedibird.com/ns#",
|
fedibird: "http://fedibird.com/ns#",
|
||||||
|
|
|
@ -74,6 +74,7 @@ export async function renderPerson(user: ILocalUser) {
|
||||||
summary: profile.description
|
summary: profile.description
|
||||||
? toHtml(mfm.parse(profile.description))
|
? toHtml(mfm.parse(profile.description))
|
||||||
: null,
|
: null,
|
||||||
|
_misskey_summary: profile.description,
|
||||||
icon: avatar ? renderImage(avatar) : null,
|
icon: avatar ? renderImage(avatar) : null,
|
||||||
image: banner ? renderImage(banner) : null,
|
image: banner ? renderImage(banner) : null,
|
||||||
tag,
|
tag,
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
import config from "@/config/index.js";
|
import config from "@/config/index.js";
|
||||||
import type { User } from "@/models/entities/user.js";
|
import type { User } from "@/models/entities/user.js";
|
||||||
import { ILocalUser } from "@/models/entities/user.js";
|
|
||||||
|
|
||||||
export default (object: any, user: { id: User["id"] }) => {
|
export default (object: any, user: { id: User["id"] }) => {
|
||||||
if (object == null) return null;
|
if (object == null) return null;
|
||||||
|
|
|
@ -7,13 +7,7 @@ import { extractDbHost, isSelfHost } from "@/misc/convert-host.js";
|
||||||
import { signedGet } from "./request.js";
|
import { signedGet } from "./request.js";
|
||||||
import type { IObject, ICollection, IOrderedCollection } from "./type.js";
|
import type { IObject, ICollection, IOrderedCollection } from "./type.js";
|
||||||
import { isCollectionOrOrderedCollection, getApId } from "./type.js";
|
import { isCollectionOrOrderedCollection, getApId } from "./type.js";
|
||||||
import {
|
import { Notes, NoteReactions, Polls, Users } from "@/models/index.js";
|
||||||
FollowRequests,
|
|
||||||
Notes,
|
|
||||||
NoteReactions,
|
|
||||||
Polls,
|
|
||||||
Users,
|
|
||||||
} from "@/models/index.js";
|
|
||||||
import { parseUri } from "./db-resolver.js";
|
import { parseUri } from "./db-resolver.js";
|
||||||
import renderNote from "@/remote/activitypub/renderer/note.js";
|
import renderNote from "@/remote/activitypub/renderer/note.js";
|
||||||
import { renderLike } from "@/remote/activitypub/renderer/like.js";
|
import { renderLike } from "@/remote/activitypub/renderer/like.js";
|
||||||
|
|
|
@ -205,6 +205,7 @@ export interface IActor extends IObject {
|
||||||
};
|
};
|
||||||
"vcard:bday"?: string;
|
"vcard:bday"?: string;
|
||||||
"vcard:Address"?: string;
|
"vcard:Address"?: string;
|
||||||
|
_misskey_summary?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export const isCollection = (object: IObject): object is ICollection =>
|
export const isCollection = (object: IObject): object is ICollection =>
|
||||||
|
|
|
@ -9,7 +9,7 @@ import renderKey from "@/remote/activitypub/renderer/key.js";
|
||||||
import { renderPerson } from "@/remote/activitypub/renderer/person.js";
|
import { renderPerson } from "@/remote/activitypub/renderer/person.js";
|
||||||
import renderEmoji from "@/remote/activitypub/renderer/emoji.js";
|
import renderEmoji from "@/remote/activitypub/renderer/emoji.js";
|
||||||
import { inbox as processInbox } from "@/queue/index.js";
|
import { inbox as processInbox } from "@/queue/index.js";
|
||||||
import { isSelfHost, toPuny } from "@/misc/convert-host.js";
|
import { isSelfHost } from "@/misc/convert-host.js";
|
||||||
import {
|
import {
|
||||||
Notes,
|
Notes,
|
||||||
Users,
|
Users,
|
||||||
|
@ -22,7 +22,6 @@ import { renderLike } from "@/remote/activitypub/renderer/like.js";
|
||||||
import { getUserKeypair } from "@/misc/keypair-store.js";
|
import { getUserKeypair } from "@/misc/keypair-store.js";
|
||||||
import {
|
import {
|
||||||
checkFetch,
|
checkFetch,
|
||||||
hasSignature,
|
|
||||||
getSignatureUser,
|
getSignatureUser,
|
||||||
} from "@/remote/activitypub/check-fetch.js";
|
} from "@/remote/activitypub/check-fetch.js";
|
||||||
import { getInstanceActor } from "@/services/instance-actor.js";
|
import { getInstanceActor } from "@/services/instance-actor.js";
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
import { performance } from "perf_hooks";
|
import { performance } from "perf_hooks";
|
||||||
import type Koa from "koa";
|
import type Koa from "koa";
|
||||||
import type { CacheableLocalUser } from "@/models/entities/user.js";
|
import type { CacheableLocalUser } from "@/models/entities/user.js";
|
||||||
import { User } from "@/models/entities/user.js";
|
|
||||||
import type { AccessToken } from "@/models/entities/access-token.js";
|
import type { AccessToken } from "@/models/entities/access-token.js";
|
||||||
import { getIpHash } from "@/misc/get-ip-hash.js";
|
import { getIpHash } from "@/misc/get-ip-hash.js";
|
||||||
import { limiter } from "./limiter.js";
|
import { limiter } from "./limiter.js";
|
||||||
|
@ -10,7 +9,6 @@ import endpoints from "./endpoints.js";
|
||||||
import compatibility from "./compatibility.js";
|
import compatibility from "./compatibility.js";
|
||||||
import { ApiError } from "./error.js";
|
import { ApiError } from "./error.js";
|
||||||
import { apiLogger } from "./logger.js";
|
import { apiLogger } from "./logger.js";
|
||||||
import type { AccessToken } from "@/models/entities/access-token.js";
|
|
||||||
import { fetchMeta } from "@/misc/fetch-meta.js";
|
import { fetchMeta } from "@/misc/fetch-meta.js";
|
||||||
|
|
||||||
const accessDenied = {
|
const accessDenied = {
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
import * as fs from "node:fs";
|
import * as fs from "node:fs";
|
||||||
import Ajv from "ajv";
|
import Ajv from "ajv";
|
||||||
import type { CacheableLocalUser } from "@/models/entities/user.js";
|
import type { CacheableLocalUser } from "@/models/entities/user.js";
|
||||||
import { ILocalUser } from "@/models/entities/user.js";
|
|
||||||
import type { Schema, SchemaType } from "@/misc/schema.js";
|
import type { Schema, SchemaType } from "@/misc/schema.js";
|
||||||
import type { AccessToken } from "@/models/entities/access-token.js";
|
import type { AccessToken } from "@/models/entities/access-token.js";
|
||||||
import type { IEndpointMeta } from "./endpoints.js";
|
import type { IEndpointMeta } from "./endpoints.js";
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import define from "../../define.js";
|
import define from "@/server/api/define.js";
|
||||||
import { AbuseUserReports } from "@/models/index.js";
|
import { AbuseUserReports } from "@/models/index.js";
|
||||||
import { makePaginationQuery } from "../../common/make-pagination-query.js";
|
import { makePaginationQuery } from "@/server/api/common/make-pagination-query.js";
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
tags: ["admin"],
|
tags: ["admin"],
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import define from "../../../define.js";
|
import define from "@/server/api/define.js";
|
||||||
import { Users } from "@/models/index.js";
|
import { Users } from "@/models/index.js";
|
||||||
import { signup } from "../../../common/signup.js";
|
import { signup } from "@/server/api/common/signup.js";
|
||||||
import { IsNull } from "typeorm";
|
import { IsNull } from "typeorm";
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import define from "../../../define.js";
|
import define from "@/server/api/define.js";
|
||||||
import { Users } from "@/models/index.js";
|
import { Users } from "@/models/index.js";
|
||||||
import { doPostSuspend } from "@/services/suspend-user.js";
|
import { doPostSuspend } from "@/services/suspend-user.js";
|
||||||
import { publishUserEvent } from "@/services/stream.js";
|
import { publishUserEvent } from "@/services/stream.js";
|
||||||
|
|
|
@ -2,7 +2,7 @@ import config from "@/config/index.js";
|
||||||
import { Meta } from "@/models/entities/meta.js";
|
import { Meta } from "@/models/entities/meta.js";
|
||||||
import { insertModerationLog } from "@/services/insert-moderation-log.js";
|
import { insertModerationLog } from "@/services/insert-moderation-log.js";
|
||||||
import { db } from "@/db/postgre.js";
|
import { db } from "@/db/postgre.js";
|
||||||
import define from "../../../define.js";
|
import define from "@/server/api/define.js";
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
tags: ["admin"],
|
tags: ["admin"],
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import define from "../../../define.js";
|
import define from "@/server/api/define.js";
|
||||||
import { Ads } from "@/models/index.js";
|
import { Ads } from "@/models/index.js";
|
||||||
import { genId } from "@/misc/gen-id.js";
|
import { genId } from "@/misc/gen-id.js";
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import define from "../../../define.js";
|
import define from "@/server/api/define.js";
|
||||||
import { Ads } from "@/models/index.js";
|
import { Ads } from "@/models/index.js";
|
||||||
import { ApiError } from "../../../error.js";
|
import { ApiError } from "@/server/api/error.js";
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
tags: ["admin"],
|
tags: ["admin"],
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import define from "../../../define.js";
|
import define from "@/server/api/define.js";
|
||||||
import { Ads } from "@/models/index.js";
|
import { Ads } from "@/models/index.js";
|
||||||
import { makePaginationQuery } from "../../../common/make-pagination-query.js";
|
import { makePaginationQuery } from "@/server/api/common/make-pagination-query.js";
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
tags: ["admin"],
|
tags: ["admin"],
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import define from "../../../define.js";
|
import define from "@/server/api/define.js";
|
||||||
import { Ads } from "@/models/index.js";
|
import { Ads } from "@/models/index.js";
|
||||||
import { ApiError } from "../../../error.js";
|
import { ApiError } from "@/server/api/error.js";
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
tags: ["admin"],
|
tags: ["admin"],
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import define from "../../../define.js";
|
import define from "@/server/api/define.js";
|
||||||
import { Announcements } from "@/models/index.js";
|
import { Announcements } from "@/models/index.js";
|
||||||
import { genId } from "@/misc/gen-id.js";
|
import { genId } from "@/misc/gen-id.js";
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import define from "../../../define.js";
|
import define from "@/server/api/define.js";
|
||||||
import { Announcements } from "@/models/index.js";
|
import { Announcements } from "@/models/index.js";
|
||||||
import { ApiError } from "../../../error.js";
|
import { ApiError } from "@/server/api/error.js";
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
tags: ["admin"],
|
tags: ["admin"],
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import { Announcements, AnnouncementReads } from "@/models/index.js";
|
import { Announcements, AnnouncementReads } from "@/models/index.js";
|
||||||
import type { Announcement } from "@/models/entities/announcement.js";
|
import type { Announcement } from "@/models/entities/announcement.js";
|
||||||
import define from "../../../define.js";
|
import define from "@/server/api/define.js";
|
||||||
import { makePaginationQuery } from "../../../common/make-pagination-query.js";
|
import { makePaginationQuery } from "@/server/api/common/make-pagination-query.js";
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
tags: ["admin"],
|
tags: ["admin"],
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import define from "../../../define.js";
|
import define from "@/server/api/define.js";
|
||||||
import { Announcements } from "@/models/index.js";
|
import { Announcements } from "@/models/index.js";
|
||||||
import { ApiError } from "../../../error.js";
|
import { ApiError } from "@/server/api/error.js";
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
tags: ["admin"],
|
tags: ["admin"],
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import { Users, UserProfiles } from "@/models/index.js";
|
import { Users, UserProfiles } from "@/models/index.js";
|
||||||
import { publishMainStream } from "@/services/stream.js";
|
import { publishMainStream } from "@/services/stream.js";
|
||||||
import define from "../../define.js";
|
import define from "@/server/api/define.js";
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
tags: ["admin"],
|
tags: ["admin"],
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import { Users } from "@/models/index.js";
|
import { Users } from "@/models/index.js";
|
||||||
import { deleteAccount } from "@/services/delete-account.js";
|
import { deleteAccount } from "@/services/delete-account.js";
|
||||||
import define from "../../define.js";
|
import define from "@/server/api/define.js";
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
tags: ["admin"],
|
tags: ["admin"],
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import define from "../../define.js";
|
import define from "@/server/api/define.js";
|
||||||
import { deleteFile } from "@/services/drive/delete-file.js";
|
import { deleteFile } from "@/services/drive/delete-file.js";
|
||||||
import { DriveFiles } from "@/models/index.js";
|
import { DriveFiles } from "@/models/index.js";
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import { Users, UserProfiles, UserSecurityKeys } from "@/models/index.js";
|
import { Users, UserProfiles, UserSecurityKeys } from "@/models/index.js";
|
||||||
import { publishMainStream } from "@/services/stream.js";
|
import { publishMainStream } from "@/services/stream.js";
|
||||||
import define from "../../define.js";
|
import define from "@/server/api/define.js";
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
tags: ["admin"],
|
tags: ["admin"],
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import define from "../../define.js";
|
import define from "@/server/api/define.js";
|
||||||
import { Users } from "@/models/index.js";
|
import { Users } from "@/models/index.js";
|
||||||
import { insertModerationLog } from "@/services/insert-moderation-log.js";
|
import { insertModerationLog } from "@/services/insert-moderation-log.js";
|
||||||
import { publishInternalEvent } from "@/services/stream.js";
|
import { publishInternalEvent } from "@/services/stream.js";
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import define from "../../../define.js";
|
import define from "@/server/api/define.js";
|
||||||
import { createCleanRemoteFilesJob } from "@/queue/index.js";
|
import { createCleanRemoteFilesJob } from "@/queue/index.js";
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import { IsNull } from "typeorm";
|
import { IsNull } from "typeorm";
|
||||||
import define from "../../../define.js";
|
import define from "@/server/api/define.js";
|
||||||
import { deleteFile } from "@/services/drive/delete-file.js";
|
import { deleteFile } from "@/services/drive/delete-file.js";
|
||||||
import { DriveFiles } from "@/models/index.js";
|
import { DriveFiles } from "@/models/index.js";
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import { DriveFiles } from "@/models/index.js";
|
import { DriveFiles } from "@/models/index.js";
|
||||||
import define from "../../../define.js";
|
import define from "@/server/api/define.js";
|
||||||
import { makePaginationQuery } from "../../../common/make-pagination-query.js";
|
import { makePaginationQuery } from "@/server/api/common/make-pagination-query.js";
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
tags: ["admin"],
|
tags: ["admin"],
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import { DriveFiles } from "@/models/index.js";
|
import { DriveFiles } from "@/models/index.js";
|
||||||
import define from "../../../define.js";
|
import define from "@/server/api/define.js";
|
||||||
import { ApiError } from "../../../error.js";
|
import { ApiError } from "@/server/api/error.js";
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
tags: ["admin"],
|
tags: ["admin"],
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
import define from "../../../define.js";
|
import define from "@/server/api/define.js";
|
||||||
import { Emojis } from "@/models/index.js";
|
import { Emojis } from "@/models/index.js";
|
||||||
import { In } from "typeorm";
|
import { In } from "typeorm";
|
||||||
import { ApiError } from "../../../error.js";
|
|
||||||
import { db } from "@/db/postgre.js";
|
import { db } from "@/db/postgre.js";
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
import define from "../../../define.js";
|
import define from "@/server/api/define.js";
|
||||||
import { Emojis, DriveFiles } from "@/models/index.js";
|
import { Emojis, DriveFiles } from "@/models/index.js";
|
||||||
import { genId } from "@/misc/gen-id.js";
|
import { genId } from "@/misc/gen-id.js";
|
||||||
import { insertModerationLog } from "@/services/insert-moderation-log.js";
|
import { insertModerationLog } from "@/services/insert-moderation-log.js";
|
||||||
import { ApiError } from "../../../error.js";
|
import { ApiError } from "@/server/api/error.js";
|
||||||
import rndstr from "rndstr";
|
import rndstr from "rndstr";
|
||||||
import { publishBroadcastStream } from "@/services/stream.js";
|
import { publishBroadcastStream } from "@/services/stream.js";
|
||||||
import { db } from "@/db/postgre.js";
|
import { db } from "@/db/postgre.js";
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import define from "../../../define.js";
|
import define from "@/server/api/define.js";
|
||||||
import { Emojis } from "@/models/index.js";
|
import { Emojis } from "@/models/index.js";
|
||||||
import { genId } from "@/misc/gen-id.js";
|
import { genId } from "@/misc/gen-id.js";
|
||||||
import { ApiError } from "../../../error.js";
|
import { ApiError } from "@/server/api/error.js";
|
||||||
import type { DriveFile } from "@/models/entities/drive-file.js";
|
import type { DriveFile } from "@/models/entities/drive-file.js";
|
||||||
import { uploadFromUrl } from "@/services/drive/upload-from-url.js";
|
import { uploadFromUrl } from "@/services/drive/upload-from-url.js";
|
||||||
import { publishBroadcastStream } from "@/services/stream.js";
|
import { publishBroadcastStream } from "@/services/stream.js";
|
||||||
|
|
|
@ -1,8 +1,7 @@
|
||||||
import define from "../../../define.js";
|
import define from "@/server/api/define.js";
|
||||||
import { Emojis } from "@/models/index.js";
|
import { Emojis } from "@/models/index.js";
|
||||||
import { In } from "typeorm";
|
import { In } from "typeorm";
|
||||||
import { insertModerationLog } from "@/services/insert-moderation-log.js";
|
import { insertModerationLog } from "@/services/insert-moderation-log.js";
|
||||||
import { ApiError } from "../../../error.js";
|
|
||||||
import { db } from "@/db/postgre.js";
|
import { db } from "@/db/postgre.js";
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import define from "../../../define.js";
|
import define from "@/server/api/define.js";
|
||||||
import { Emojis } from "@/models/index.js";
|
import { Emojis } from "@/models/index.js";
|
||||||
import { insertModerationLog } from "@/services/insert-moderation-log.js";
|
import { insertModerationLog } from "@/services/insert-moderation-log.js";
|
||||||
import { ApiError } from "../../../error.js";
|
import { ApiError } from "@/server/api/error.js";
|
||||||
import { db } from "@/db/postgre.js";
|
import { db } from "@/db/postgre.js";
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import define from "../../../define.js";
|
import define from "@/server/api/define.js";
|
||||||
import { createImportCustomEmojisJob } from "@/queue/index.js";
|
import { createImportCustomEmojisJob } from "@/queue/index.js";
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import define from "../../../define.js";
|
import define from "@/server/api/define.js";
|
||||||
import { Emojis } from "@/models/index.js";
|
import { Emojis } from "@/models/index.js";
|
||||||
import { toPuny } from "@/misc/convert-host.js";
|
import { toPuny } from "@/misc/convert-host.js";
|
||||||
import { makePaginationQuery } from "../../../common/make-pagination-query.js";
|
import { makePaginationQuery } from "@/server/api/common/make-pagination-query.js";
|
||||||
import { sqlLikeEscape } from "@/misc/sql-like-escape.js";
|
import { sqlLikeEscape } from "@/misc/sql-like-escape.js";
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import define from "../../../define.js";
|
import define from "@/server/api/define.js";
|
||||||
import { Emojis } from "@/models/index.js";
|
import { Emojis } from "@/models/index.js";
|
||||||
import { makePaginationQuery } from "../../../common/make-pagination-query.js";
|
import { makePaginationQuery } from "../../../common/make-pagination-query.js";
|
||||||
import type { Emoji } from "@/models/entities/emoji.js";
|
import type { Emoji } from "@/models/entities/emoji.js";
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
import define from "../../../define.js";
|
import define from "@/server/api/define.js";
|
||||||
import { Emojis } from "@/models/index.js";
|
import { Emojis } from "@/models/index.js";
|
||||||
import { In } from "typeorm";
|
import { In } from "typeorm";
|
||||||
import { ApiError } from "../../../error.js";
|
|
||||||
import { db } from "@/db/postgre.js";
|
import { db } from "@/db/postgre.js";
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
import define from "../../../define.js";
|
import define from "@/server/api/define.js";
|
||||||
import { Emojis } from "@/models/index.js";
|
import { Emojis } from "@/models/index.js";
|
||||||
import { In } from "typeorm";
|
import { In } from "typeorm";
|
||||||
import { ApiError } from "../../../error.js";
|
|
||||||
import { db } from "@/db/postgre.js";
|
import { db } from "@/db/postgre.js";
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
import define from "../../../define.js";
|
import define from "@/server/api/define.js";
|
||||||
import { Emojis } from "@/models/index.js";
|
import { Emojis } from "@/models/index.js";
|
||||||
import { In } from "typeorm";
|
import { In } from "typeorm";
|
||||||
import { ApiError } from "../../../error.js";
|
|
||||||
import { db } from "@/db/postgre.js";
|
import { db } from "@/db/postgre.js";
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
import define from "../../../define.js";
|
import define from "@/server/api/define.js";
|
||||||
import { Emojis } from "@/models/index.js";
|
import { Emojis } from "@/models/index.js";
|
||||||
import { In } from "typeorm";
|
import { In } from "typeorm";
|
||||||
import { ApiError } from "../../../error.js";
|
|
||||||
import { db } from "@/db/postgre.js";
|
import { db } from "@/db/postgre.js";
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import define from "../../../define.js";
|
import define from "@/server/api/define.js";
|
||||||
import { Emojis } from "@/models/index.js";
|
import { Emojis } from "@/models/index.js";
|
||||||
import { ApiError } from "../../../error.js";
|
import { ApiError } from "@/server/api/error.js";
|
||||||
import { db } from "@/db/postgre.js";
|
import { db } from "@/db/postgre.js";
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import define from "../../../define.js";
|
import define from "@/server/api/define.js";
|
||||||
import { deleteFile } from "@/services/drive/delete-file.js";
|
import { deleteFile } from "@/services/drive/delete-file.js";
|
||||||
import { DriveFiles } from "@/models/index.js";
|
import { DriveFiles } from "@/models/index.js";
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import define from "../../../define.js";
|
import define from "@/server/api/define.js";
|
||||||
import { Instances } from "@/models/index.js";
|
import { Instances } from "@/models/index.js";
|
||||||
import { toPuny } from "@/misc/convert-host.js";
|
import { toPuny } from "@/misc/convert-host.js";
|
||||||
import { fetchInstanceMetadata } from "@/services/fetch-instance-metadata.js";
|
import { fetchInstanceMetadata } from "@/services/fetch-instance-metadata.js";
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import define from "../../../define.js";
|
import define from "@/server/api/define.js";
|
||||||
import deleteFollowing from "@/services/following/delete.js";
|
import deleteFollowing from "@/services/following/delete.js";
|
||||||
import { Followings, Users } from "@/models/index.js";
|
import { Followings, Users } from "@/models/index.js";
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import define from "../../../define.js";
|
import define from "@/server/api/define.js";
|
||||||
import { Instances } from "@/models/index.js";
|
import { Instances } from "@/models/index.js";
|
||||||
import { toPuny } from "@/misc/convert-host.js";
|
import { toPuny } from "@/misc/convert-host.js";
|
||||||
|
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue