Merge branch 'develop' into firefish-docs/develop

This commit is contained in:
naskya 2024-03-05 18:37:46 +09:00
commit 95c3e007c0
No known key found for this signature in database
GPG key ID: 712D413B3A9FED5C
279 changed files with 2099 additions and 1689 deletions

View file

@ -1,5 +1,5 @@
_lang_: Български
cancel: Отмени
cancel: Отказ
noNotes: Няма публикации
settings: Настройки
headlineFirefish: Децентрализирана социална медийна платформа с отворен код, която
@ -7,27 +7,27 @@ headlineFirefish: Децентрализирана социална медийн
notifications: Известия
forgotPassword: Забравена парола
uploading: Качване...
addInstance: Добави сървър
favorite: Добави в отметки
delete: Изтрий
unpin: Откачи от профила
copyLink: Копирай връзката
pin: Закачи в профила
addInstance: Добавяне на сървър
favorite: Добавяне към отметките
delete: Изтриване
unpin: Откачане от профила
copyLink: Копиране на връзката
pin: Закачане в профила
deleted: Изтрито
deleteAndEditConfirm: Сигурни ли сте, че искате да изтриете тази публикация и да я
редактирате? Ще загубите всички реакции, подсилвания и отговори към нея.
copyUsername: Копирай потребителското име
deleteAndEditConfirm: Сигурен ли си, че искаш да изтриеш тази публикация и да я редактираш?
Ще загубиш всички реакции, подсилвания и отговори към нея.
copyUsername: Копиране на потребителското име
searchUser: Търсене на потребител
reply: Отговори
reply: Отговор
showMore: Покажи още
loadMore: Зареди още
followRequestAccepted: Заявка за последване приета
importAndExport: Импорт/Експорт на Данни
import: Импортиране
download: Свали
download: Изтегляне
export: Експортиране
files: Файлове
unblock: Отблокирай
unblock: Отблокиране
_sensitiveMediaDetection:
setSensitiveFlagAutomatically: Маркиране като деликатно
searchWith: 'Търсене: {q}'
@ -35,67 +35,80 @@ smtpUser: Потребителско име
notificationType: Тип известие
searchResult: Резултати от търсенето
searchByGoogle: Търсене
markAsReadAllNotifications: Маркирай всички известия като прочетени
markAsReadAllNotifications: Маркиране на всички известия като прочетени
settingGuide: Препоръчителни настройки
smtpPass: Парола
newPasswordIs: Новата парола е "{password}"
members: Членове
help: Помощ
hide: Скрий
hide: Скриване
group: Група
groups: Групи
incorrectPassword: Грешна парола.
leaveGroup: Напусни групата
leaveGroup: Напускане на групата
numberOfColumn: Брой колони
passwordLessLogin: Вписване без парола
newPasswordRetype: Въведи отново парола
saveAs: Запази като...
resetPassword: Нулиране на парола
passwordLessLogin: Вход без парола
newPasswordRetype: Повтори новата парола
saveAs: Запазване като...
resetPassword: Нулиране на паролата
saveConfirm: Запазване на промените?
inputNewFolderName: Въведи ново име на папка
upload: Качване
retypedNotMatch: Въвежданията не съвпадат.
_ago:
weeksAgo: преди {n}с
weeksAgo: преди {n}сед
secondsAgo: преди {n}сек
hoursAgo: преди {n}ч
minutesAgo: преди {n}мин
daysAgo: преди {n}д
monthsAgo: преди {n}м
monthsAgo: преди {n}мес
yearsAgo: преди {n}г
future: Бъдеще
justNow: Точно сега
justNow: Току-що
folderName: Име на папка
renameFile: Преименувай файл
renameFile: Преименуване на файла
_widgets:
activity: Дейност
notifications: Известия
timeline: Инфопоток
clock: Часовник
trends: Актуални
photos: Снимки
unixClock: UNIX часовник
calendar: Календар
digitalClock: Дигитален часовник
button: Бутон
slideshow: Слайдшоу
_userList:
chooseList: Избор на списък
instanceSecurity: Сигурност на сървъра
uploadFolder: Папка по подразбиране за качвания
instanceInfo: Информация за сървъра
statistics: Статистика
fileName: Име на файл
selectFile: Избери файл
editProfile: Редактирай профил
selectFile: Избор на файл
editProfile: Редактиране на профила
instances: Сървъри
selectUser: Избери потребител
createNew: Създай ново
blockThisInstance: Блокирай този сървър
selectUser: Избор на потребител
createNew: Създаване на ново
blockThisInstance: Блокиране на този сървър
_profile:
metadata: Допълнителна информация
username: Потребителско име
name: Име
description: Биография
metadataContent: Съдържание
addAccount: Добави акаунт
metadataLabel: Етикет
metadataEdit: Редактиране на допълнителната информация
changeAvatar: Промяна на профилната снимка
addAccount: Добавяне на акаунт
followRequestPending: Заявка за последване в изчакване
signinHistory: История на вписванията
or: Или
noUsers: Няма потребители
notes: Публикации
newNoteRecived: Има нови публикации
note: Публикация
note: Публикуване
instanceFollowing: Последвани на сървъра
_filters:
followersOnly: Само последователи
@ -110,35 +123,60 @@ _notification:
follow: Нови последователи
mention: Споменавания
reaction: Реакции
reply: Отговора
all: Всички
quote: Цитирания
pollEnded: Приключване на анкети
app: Известия от свързани приложения
renote: Подсилвания
pollVote: Гласувания в анкети
receiveFollowRequest: Получени заявки за следване
followRequestAccepted: Приети заявки за следване
groupInvited: Покани в групи
youGotReply: '{name} ти отговори'
fileUploaded: Файлът е качен успешно
youWereFollowed: те последва
_actions:
reply: Отговор
renote: Подсилвания
youGotQuote: '{name} те цитира'
youGotMention: '{name} те спомена'
youGotMessagingMessageFromUser: '{name} ти изпрати чат съобщение'
_channel:
notesCount: '{n} Публикации'
nameOnly: Само име
nameAndDescription: Име и описание
create: Създаване на канал
unfollow: Отследване
noLists: Нямаш никакви списъци
markAsReadAllUnreadNotes: Маркирай всички публикации като прочетени
markAsReadAllTalkMessages: Маркирай всички съобщения като прочетени
markAsReadAllUnreadNotes: Маркиране на всички публикации като прочетени
markAsReadAllTalkMessages: Маркиране на всички съобщения като прочетени
_time:
second: Секунди
hour: Часа
day: Дни
minute: Минути
create: Създай
create: Създаване
lists: Списъци
reportAbuseOf: Докладвай {name}
reportAbuseOf: Докладване на {name}
reporter: Докладчик
abuseReports: Доклади
logoImageUrl: URL на лого изображение
reportAbuse: Доклад
reportAbuse: Докладване
latestRequestReceivedAt: Последно получена заявка
location: Местонахождение
keepOriginalUploading: Запази оригиналното изображение
location: Местоположение
keepOriginalUploading: Запазване на оригиналното изображение
renotesCount: Брой изпратени подсилвания
license: Лиценз
lastUsedDate: Последно използвано на
rename: Преименувай
rename: Преименуване
customEmojis: Персонализирани емоджита
emoji: Емоджи
_aboutFirefish:
translation: Преведи Firefish
source: Програмен код
contributors: Основни сътрудници
allContributors: Всички сътрудници
translatedFrom: Преведено от {x}
i18nInfo: Firefish се превежда на различни езици от доброволци. Можете да помогнете
на адрес {link}.
@ -159,32 +197,46 @@ monthX: '{month}'
dayX: '{day}'
registration: Регистрация
popularUsers: Популярни потребители
details: Детайли
details: Подробности
tenMinutes: 10 минути
oneDay: Един ден
file: Файл
oneHour: Един час
video: Видео
createNewClip: Създай нова подборка
createNewClip: Създаване на нова подборка
clips: Подборки
active: Активен
menu: Меню
itsOff: Изключено
remindMeLater: Може би по-късно
removed: Успешно изтриване
deleteAllFiles: Изтрий всички файлове
deleteAllFiles: Изтриване на всички файлове
deletedNote: Изтрита публикация
deleteConfirm: Потвърждавате ли изтриването?
hasChildFilesOrFolders: Тъй като тази папка не е празна, тя не може да бъде изтрита.
nsfw: Деликатно съдържание
nsfw: Деликатно
default: По подразбиране
_theme:
defaultValue: Стойност по подразбиране
keys:
mention: Споменаване
renote: Подсили
renote: Подсилване
link: Връзка
hashtag: Хаштаг
fg: Текст
color: Цвят
explore: Разгледай темите
explore: Разглеждане на темите
description: Описание
manage: Управление на темите
install: Инсталиране на тема
code: Код на темата
builtinThemes: Вградени теми
func: Функции
key: Ключ
argument: Аргумент
installedThemes: Инсталирани теми
constant: Константа
addConstant: Добавяне на константа
_pages:
script:
blocks:
@ -200,40 +252,116 @@ _pages:
_seedRannum:
arg3: Максимална стойност
arg2: Минимална стойност
_strPick:
arg1: Текст
_if:
arg3: Иначе
arg2: Тогава
arg1: Ако
_randomPick:
arg1: Списък
fn: Функция
_strLen:
arg1: Текст
_strReplace:
arg1: Текст
_strReverse:
arg1: Текст
_stringToNumber:
arg1: Текст
text: Текст
_splitStrByLine:
arg1: Текст
_listLen:
arg1: Списък
_dailyRandomPick:
arg1: Списък
_seedRandomPick:
arg2: Списък
_pick:
arg1: Списък
categories:
value: Стойности
list: Списъци
fn: Функции
types:
string: Текст
array: Списък
blocks:
_textInput:
default: Стойност по подразбиране
text: Заглавие
_switch:
default: Стойност по подразбиране
text: Заглавие
_textareaInput:
default: Стойност по подразбиране
text: Заглавие
_numberInput:
default: Стойност по подразбиране
text: Заглавие
_radioButton:
default: Стойност по подразбиране
title: Заглавие
_if:
variable: Променлива
_counter:
text: Заглавие
inc: Стъпка
button: Бутон
if: Ако
image: Изображения
text: Текст
_post:
text: Съдържание
_button:
_action:
_dialog:
content: Съдържание
text: Заглавие
created: Страницата е създадена успешно
editPage: Редактиране на тази страница
editThisPage: Редактиране на тази страница
updated: Страницата е редактирана успешно
featured: Популярни
liked: Харесани страници
contentBlocks: Съдържание
contents: Съдържание
deleted: Страницата е изтрита успешно
newPage: Създаване на нова страница
like: Харесване
font: Шрифт
title: Заглавие
my: Моите страници
pageSetting: Настройки на страницата
_deck:
_columns:
notifications: Известия
mentions: Споменавания
tl: Инфопоток
direct: Директни съобщения
list: Списък
antenna: Антена
addColumn: Добавяне на колона
_mfm:
mention: Споменаване
search: Търсене
link: Връзка
hashtag: Хаштаг
url: URL адрес
font: Шрифт
_messaging:
groups: Групи
dms: Лични
apps: Приложения
introFirefish: Добре дошли! Firefish е децентрализирана социална медийна платформа
с отворен код, която е безплатна завинаги! 🚀
monthAndDay: '{day}/{month}'
search: Търсене
searchPlaceholder: Търсене в Firefish
searchPlaceholder: Търсене във Firefish
username: Потребителско име
password: Парола
fetchingAsApObject: Извличане от федивърса
fetchingAsApObject: Извличане от Федивселената
ok: Добре
gotIt: Разбрах!
noThankYou: Не, благодаря
@ -243,32 +371,32 @@ noNotifications: Няма известия
instance: Сървър
basicSettings: Основни Настройки
otherSettings: Други Настройки
openInWindow: Отвори в прозорец
openInWindow: Отваряне в прозорец
profile: Профил
timeline: Инфопоток
noAccountDescription: Този потребител все още не е написал своята биография.
login: Впиши се
login: Вход
loggingIn: Вписване
logout: Отпиши се
signup: Регистрирай се
logout: Изход
signup: Регистрация
save: Запазване
users: Потребители
addUser: Добави потребител
addUser: Добавяне на потребител
favorites: Отметки
unfavorite: Премахни от отметки
favorited: Добавено в отметки.
alreadyFavorited: Вече е добавено в отметки.
cantFavorite: Неуспешно добавяне в отметки.
copyContent: Копирай съдържанието
deleteAndEdit: Изтрий и редактирай
editNote: Редактирай публикация
unfavorite: Премахване от отметките
favorited: Добавено към отметките.
alreadyFavorited: Вече е добавено към отметките.
cantFavorite: Неуспешно добавяне към отметките.
copyContent: Копиране на съдържанието
deleteAndEdit: Изтриване и редактиране
editNote: Редактиране на публикацията
edited: Редактирано на {date} {time}
addToList: Добави в списък
sendMessage: Изпрати съобщение
addToList: Добавяне към списък
sendMessage: Изпращане на съобщение
jumpToPrevious: Премини към предишно
newer: по-ново
older: по-старо
showLess: Затвори
showLess: Покажи по-малко
youGotNewFollower: те последва
receiveFollowRequest: Заявка за последване получена
mention: Споменаване
@ -278,74 +406,74 @@ cw: Предупреждение за съдържание
followers: Последователи
following: Последвани
followsYou: Следва те
createList: Създай списък
createList: Създаване на списък
error: Грешка
manageLists: Управление на списъци
retry: Повторен опит
follow: Следване
follow: Последване
followRequest: Заявка за последване
followRequests: Заявки за последване
defaultNoteVisibility: Видимост по подразбиране
unrenote: Върни обратно подсилване
unrenote: Отмяна на подсилването
renoted: Подсилено.
cantRenote: Тази публикация не може да бъде подсилена.
renote: Подсили
renote: Подсилване
enterEmoji: Въведи емоджи
sensitive: Деликатно съдържание
add: Добави
sensitive: Деликатно
add: Добавяне
pinned: Закачено в профила
quote: Цитирай
quote: Цитиране
pinnedNote: Закачена публикация
cantReRenote: Подсилване не може да бъде подсилено.
clickToShow: Кликни за показване
clickToShow: Щракни за показване
you: Ти
reaction: Реакции
removeReaction: Премахни реакцията си
removeReaction: Премахване на реакцията
enterFileName: Въведи име на файл
unmarkAsSensitive: Отмаркирай като деликатно
markAsSensitive: Маркирай като деликатно
block: Блокирай
unmarkAsSensitive: Отмаркиране като деликатно
markAsSensitive: Маркиране като деликатно
block: Блокиране
emojis: Емоджита
addEmoji: Добави
addEmoji: Добавяне
emojiName: Име на емоджи
emojiUrl: URL на емоджи
emojiUrl: URL адрес на емоджи
loginFailed: Неуспешно вписване
flagAsCat: Котка ли си? 😺
flagSpeakAsCat: Говори като котка
flagSpeakAsCat: Говорене като котка
youHaveNoLists: Нямаш никакви списъци
selectInstance: Избери сървър
selectInstance: Избор на сървър
annotation: Коментари
latestRequestSentAt: Последно изпратена заявка
stopActivityDelivery: Спри изпращането на дейности
stopActivityDelivery: Спиране на изпращането на дейности
version: Версия
clearCachedFiles: Изтрий кеш
clearCachedFiles: Изчистване на кеша
noInstances: Няма сървъри
federating: Федериране
defaultValueIs: 'По подразбиране: {value}'
noCustomEmojis: Няма емоджи
changePassword: Промени парола
currentPassword: Настояща парола
changePassword: Промяна на паролата
currentPassword: Текуща парола
instanceUsers: Потребители на този сървър
security: Сигурност
instanceFollowers: Последователи на сървъра
newPassword: Нова парола
more: Още!
remove: Изтрий
saved: Запазено
remove: Изтриване
saved: Запазени
messaging: Чат
birthday: Рожден ден
images: Изображения
activity: Дейност
createFolder: Създай папка
renameFolder: Преименувай тази папка
selectFolders: Избери папки
selectFolder: Избери папка
selectFiles: Избери файлове
addFile: Добави на файл
createFolder: Създаване на папка
renameFolder: Преименуване на тази папка
selectFolders: Избор на папки
selectFolder: Избор на папка
selectFiles: Избор на файлове
addFile: Добавяне на файл
inputNewFileName: Въведи ново име на файл
deleteFolder: Изтрий тази папка
deleteFolder: Изтриване на тази папка
emptyFolder: Тази папка е празна
copyUrl: Копирай URL
copyUrl: Копиране на URL адреса
pages: Страници
thisYear: Година
thisMonth: Месец
@ -363,27 +491,27 @@ moderation: Модерация
administrator: Администратор
lastUsed: Последно използвано
unregister: Отрегистрация
share: Сподели
share: Споделяне
notFound: Не е намерено
inputMessageHere: Въведи съобщение тук
createGroup: Създай група
close: Затвори
createGroup: Създаване на група
close: Затваряне
next: Следващо
title: Заглавие
messagingWithGroup: Групов чат
enable: Включи
enable: Включване
retype: Въведи отново
noteOf: Публикация от {user}
quoteAttached: Цитат
newMessageExists: Има нови съобщения
noMessagesYet: Все още няма съобщения
language: Език
createAccount: Създай акаунт
createAccount: Създаване на акаунт
existingAccount: Съществуващ акаунт
deleteAll: Изтрий всички
deleteAll: Изтриване на всички
enableAll: Включване на всички
disableAll: Изключване на всички
copy: Копирай
copy: Копиране
reporteeOrigin: Произход на докладвания
reporterOrigin: Произход на докладчика
clip: Подборка
@ -396,7 +524,7 @@ repliedCount: Брой получени отговори
sentReactionsCount: Брой изпратени реакции
yes: Да
no: Не
alwaysMarkSensitive: Маркирай като деликатно по подразбиране
alwaysMarkSensitive: Маркиране като деликатно по подразбиране
noteFavoritesCount: Брой публикации с отметки
left: Ляво
nNotes: '{n} Публикации'
@ -409,28 +537,40 @@ typingUsers: '{users} пише'
user: Потребител
enabled: Включено
disabled: Изключено
whatIsNew: Покажи промените
translate: Преведи
whatIsNew: Показване на промените
translate: Превеждане
itsOn: Включено
oneWeek: Една седмица
audio: Звук
removeQuote: Премахни цитат
removeQuote: Премахване на цитата
_sfx:
notification: Известия
chat: Чат
antenna: Антени
note: Нова публикация
_permissions:
"read:favorites": Виж списъка си с отметки
"write:favorites": Редактирай списъка си с отметки
_visibility:
followers: Последователи
specified: Директна
localOnly: Само местни
public: Публична
publicDescription: Публикацията ще бъде видима във всички публични инфопотоци
home: Скрита
localOnlyDescription: Не е видима за отдалечени потребители
specifiedDescription: Видима само за определени потребители
followersDescription: Видима само за последователите ти и споменатите потребители
homeDescription: Публикуване само в началния инфопоток
explore: Разглеждане
theme: Теми
wallpaper: Тапет
setWallpaper: Задай тапет
removeWallpaper: Премахни тапет
setWallpaper: Задаване на тапет
removeWallpaper: Премахване на тапета
themeForLightMode: Тема за използване в светъл режим
themeForDarkMode: Тема за използване в тъмен режим
light: Светло
dark: Тъмно
light: Светла
dark: Тъмна
darkThemes: Тъмни теми
invitations: Покани
invitationCode: Код на поканата
@ -443,9 +583,9 @@ weakPassword: Слаба парола
strongPassword: Силна парола
passwordMatched: Съвпада
passwordNotMatched: Не съвпада
signinWith: Вписване с {x}
signinWith: Вход с {x}
aboutX: Относно {x}
openInNewTab: Отвори в нов раздел
openInNewTab: Отваряне в нов раздел
_tutorial:
step2_1: Първо, моля, попълнете своя профил.
step2_2: Предоставянето на известна информация за това кой сте вие ще улесни другите
@ -455,8 +595,24 @@ _tutorial:
step5_1: Инфопотоци, инфопотоци навсякъде!
step3_1: Сега е време да последвате няколко хора!
step1_2: Нека да ви настроим. Ще бъдете готови за нула време!
openImageInNewTab: Отваряй изображенията в нов раздел
showOnRemote: Отвори оригиналната страница
step5_3: Началният {icon} инфопоток е мястото, където можеш да видиш публикации
от акаунтите, които следваш.
step6_1: И така, какво е това място?
step5_7: Глобалният {icon} инфопоток е мястото, където можете да видиш публикации
от всеки друг свързан сървър.
step4_2: За първата си публикация някои хора обичат да правят публикация {introduction}
или просто „Здравей свят!“
step5_2: Вашият сървър има активирани {timelines} различни инфопотоци.
step5_4: Местният {icon} инфопоток е мястото, където можеш да видиш публикации от
всички останали на този сървър.
step5_5: Социалният {icon} инфопоток е комбинация от Началния и Местния инфопоток.
step5_6: Препоръчаният {icon} инфопоток е мястото, където можеш да видиш публикации
от сървъри, препоръчани от администраторите.
step6_4: Сега отидете, изследвайте и се забавлявайте!
step6_3: Всеки сървър работи по различни начини и не всички сървъри работят с Firefish.
Този обаче го прави! Малко е сложно, но ще разберете за нула време.
openImageInNewTab: Отваряне на изображенията в нов раздел
showOnRemote: Отваряне на първообразната страница
lightThemes: Светли теми
syncDeviceDarkMode: Синхронизиране на тъмния режим с настройките на устройството
text: Текст
@ -464,14 +620,241 @@ normalPassword: Средна парола
usernameInvalidFormat: Можете да използвате главни и малки букви, цифри и долни черти.
signinFailed: Неуспешно вписване. Въведените потребителско име или парола са неправилни.
signinRequired: Моля, регистрирайте се или се впишете, преди да продължите
start: Започни
confirm: Потвърди
start: Започване
confirm: Потвърждаване
failedToUpload: Неуспешно качване
_preferencesBackups:
cannotSave: Неуспешно запазване
cannotLoad: Неуспешно зареждане
saveNew: Запазване на ново резервно копие
inputName: Моля, въведи име за това резервно копие
deleteConfirm: Изтриване на резервното копие {name}?
loadFile: Зареждане от файл
save: Запазване на промените
apply: Прилагане към това устройство
list: Създадени резервни копия
saveConfirm: Запазване на резервното копие като {name}?
createdAt: 'Създадено на: {date} {time}'
updatedAt: 'Обновено на: {date} {time}'
editWidgetsExit: Готово
done: Готово
emailRequiredForSignup: Изискване за адрес на е-поща за регистриране
emailRequiredForSignup: Изискване на адрес на ел. поща за регистриране
preview: Преглед
privacy: Поверителност
about: Относно
aboutFirefish: Относно Firefish
author: Автор
software: Софтуер
category: Категория
renotes: Подсилвания
quotes: Цитирания
reactions: Реакции
attachCancel: Премахване на прикачен файл
mute: Заглушаване
unmute: Отмяна на заглушаването
selectAntenna: Избор на антена
selectList: Избор на списък
editWidgets: Редактиране на джаджите
flagAsCatDescription: Ще получиш котешки уши и ще говориш като котка!
host: Хост
perHour: За час
perDay: За ден
operations: Операции
mutedUsers: Заглушени потребители
imageUrl: URL адрес на изображение
announcements: Оповестявания
removeAreYouSure: Сигурен ли си, че искаш да премахнеш "{x}"?
fromUrl: От URL адрес
manageGroups: Управление на групи
nUsersRead: прочетено от {n}
home: Начало
registeredDate: Присъединяване
avatar: Профилна снимка
watch: Наблюдаване
antennas: Антени
manageAntennas: Управление на антени
popularTags: Популярни тагове
cacheClear: Изчистване на кеша
groupName: Име на групата
local: Местни
total: Общо
remote: Отдалечени
accountSettings: Настройки на акаунта
showInPage: Показване в страницата
install: Инсталиране
uninstall: Деинсталиране
invisibleNote: Невидима публикация
poll: Анкета
useCw: Скриване на съдържание
smtpHost: Хост
preferencesBackups: Резервни копия
emailServer: Ел. пощенски сървър
overview: Обзор
reloadToApplySetting: Тази настройка ще се приложи само след презареждане на страницата.
Презареждане сега?
markAllAsRead: Маркиране на всички като прочетени
addDescription: Добавяне на описание
userInfo: Информация за потребителя
switchAccount: Превключване на акаунт
gallery: Галерия
priority: Приоритет
unread: Непрочетени
filter: Филтриране
manageAccounts: Управление на акаунти
deleteAccount: Изтриване на акаунта
fast: Бърза
remoteOnly: Само отдалечени
move: Преместване
navbar: Навигационна лента
moveTo: Преместване на текущия акаунт в нов акаунт
moveAccount: Преместване на акаунта!
_gallery:
my: Моята галерия
like: Харесване
liked: Харесани публикации
_registry:
keys: Ключове
key: Ключ
createKey: Създаване на ключ
domain: Домейн
_weekday:
tuesday: Вторник
wednesday: Сряда
thursday: Четвъртък
saturday: Събота
monday: Понеделник
friday: Петък
sunday: Неделя
_antennaSources:
users: Публикации от конкретни потребители
userGroup: Публикации от потребители в конкретна група
instances: Публикации от всички потребители на сървър
all: Всички публикации
homeTimeline: Публикации от последвани потребители
userList: Публикации от конкретен списък с потребители
_poll:
choiceN: Избор {n}
infinite: Никога
totalVotes: '{n} гласа общо'
votesCount: '{n} гласа'
expiration: Приключване на анкетата
_timelines:
local: Местни
home: Начало
global: Глобални
recommended: Препоръчани
social: Социални
_feeds:
copyFeed: Копиране на емисия
rss: RSS
atom: Atom
jsonFeed: JSON feed
general: Общи
metadata: Метаданни
disk: Диск
featured: Представени
yearsOld: на {age} години
reload: Опресняване
invites: Покани
blockedInstances: Блокирани сървъри
inMb: В мегабайти
unfollowConfirm: Сигурен ли си, че искаш да спреш да следваш {name}?
somethingHappened: Възникна грешка
pageLoadError: Възникна грешка при зареждането на страницата.
enterListName: Въведи име за списъка
shareWithNote: Споделяне чрез публикация
flagAsBot: Маркиране на този акаунт като автоматизиран
selectChannel: Избор на канал
all: Всичко
muteAndBlock: Заглушени и блокирани
blockedUsers: Блокирани потребители
noteDeleteConfirm: Сигурен ли си, че искаш да изтриеш тази публикация?
hiddenTags: Скрити хаштагове
deleteAreYouSure: Сигурен ли си, че искаш да изтриеш "{x}"?
startMessaging: Започване на нов чат
uploadFromUrl: Качване от URL адрес
instanceName: Име на сървъра
instanceDescription: Описание на сървъра
accept: Приемане
enableLocalTimeline: Включване на местния инфопоток
enableGlobalTimeline: Включване на глобалния инфопоток
findOtherInstance: Намиране на друг сървър
removeMember: Премахване на член
isAdmin: Администратор
isModerator: Модератор
_menuDisplay:
hide: Скриване
_exportOrImport:
allNotes: Всички публикации
exploreFediverse: Разглеждане на Федивселената
recentlyUpdatedUsers: Последно активни потребители
uiLanguage: Език на потребителския интерфейс
dashboard: Табло
tags: Тагове
youHaveNoGroups: Нямаш групи
accessibility: Достъпност
email: Ел. поща
emailAddress: Адрес на ел. поща
addItem: Добавяне на елемент
visibility: Видимост
description: Описание
_relayStatus:
accepted: Прието
other: Други
channel: Канали
accountInfo: Информация за акаунта
send: Изпращане
clearCache: Изчистване на кеша
closeAccount: Затваряне на акаунта
onlineUsersCount: '{n} потребители на линия'
nUsers: '{n} Потребители'
developer: Разработчик
popularPosts: Популярни страници
info: Относно
recentPosts: Последни страници
offline: Извън линия
onlineStatus: Онлайн състояние
online: На линия
goBack: Назад
editCode: Редактиране на кода
publish: Публикувай
breakFollow: Премахване на последовател
learnMore: Научи повече
hashtags: Хаштагове
document: Документация
accounts: Акаунти
smartphone: Смартфон
isBot: Този акаунт е автоматизиран
size: Размер
tablet: Таблет
numberOfPageCache: Брой кеширани страници
localOnly: Само местни
beta: Бета
slow: Бавна
speed: Скорост
account: Акаунт
migration: Прехвърляне
moveToLabel: 'Акаунт, към който се местиш:'
withFiles: С прикачени файлове
renoteUnmute: Отмяна на заглушаването на подсилванията
selectWidget: Избор на джаджа
remoteUserCaution: Информацията от отдалечени потребители може да е непълна.
attachFile: Прикачване на файлове
unwatch: Спиране на наблюдаването
invite: Поканване
_wordMute:
mutedNotes: Заглушени публикации
_postForm:
_placeholders:
b: Какво се случва около теб?
recentlyDiscoveredUsers: Новооткрити потребители
recentlyRegisteredUsers: Новоприсъединени потребители
inviteToGroup: Поканване в група
nothing: Няма нищо за гледане тук
chooseEmoji: Избор на емоджи
switchUi: Оформление
previewNoteText: Показване на преглед
apply: Прилагане
selectAccount: Избор на акаунт
muteThread: Заглушаване на нишката
ffVisibility: Видимост на Последвани/Последователи

View file

@ -1002,8 +1002,8 @@ enableEmojiReactions: Activa reaccions amb emojis
blockThisInstance: Bloqueja aquest servidor
registration: Registra't
showEmojisInReactionNotifications: Mostrar els emojis a les notificacions de les reaccions
renoteMute: Silencia els impulsos
renoteUnmute: Treu el silenci als impulsos
renoteMute: Silencia els impulsos a les línies de temps
renoteUnmute: Treu el silenci als impulsos a les línies de temps
cacheRemoteFiles: Desa fitxers remots a la memòria cau
federation: Federació
registeredAt: Registrat a
@ -2239,3 +2239,8 @@ enableTimelineStreaming: Actualitza les línies de temps automàticament
enablePullToRefresh: Activa "Baixa per actualitzar"
pullDownToReload: Baixa per actualitzar
pullToRefreshThreshold: Distancia de baixada per actualitzar
searchWords: Paraules / ID o adreça a URL a buscar
noSentFollowRequests: No tens cap sol·licitud de seguiment enviada
sentFollowRequests: Enviar sol·licituds de seguiment
replyMute: Silencia les respostes a les línies de temps
replyUnmute: Treu el silencia de les respostes a les línies de temps

1
locales/hu.yml Normal file
View file

@ -0,0 +1 @@
_lang_: "Magyar nyelv"

View file

@ -2021,8 +2021,8 @@ requireAdminForView: Devi avere un account amministratore per vedere questo cont
jumpToPrevious: Vai al precedente
flagShowTimelineReplies: Mostra le risposte nella timeline
cw: Content warning
renoteMute: Silenzia i boost
renoteUnmute: Non silenziare i boost
renoteMute: Silenzia i boost nelle timeline
renoteUnmute: Non silenziare i boost nelle timeline
enableEmojiReactions: Abilita le reazioni con emoji
preferencesBackups: Backup delle preferenze
adminCustomCssWarn: Questa impostazione dovrebbe essere usata solo se ne comprendi
@ -2173,8 +2173,9 @@ showPreviewByDefault: Mostra sempre l'anteprima del messaggio
replaceWidgetsButtonWithReloadButton: Sostituisci il bottone dei widget con quello
di reload
squareCatAvatars: Mostra avatar quadrati per gli account di gatti
searchEngine: Motore della barra di ricerca MFM
hideFollowButtons: Nascondi i bottoni di follow se in posizioni cliccabili per errore
searchEngine: Motore di ricerca della barra MFM
hideFollowButtons: Nascondi i bottoni di follow se sono in una posizione cliccabile
per errore
preventMisclick: Protezione dai click accidentali
forMobile: Mobile
replaceChatButtonWithAccountButton: Sostituisci il bottone chat con quello di cambio
@ -2197,3 +2198,17 @@ emojiModPermDescription: "Aggiungi: Permette all'utente di aggiungere emoji pers
in più permette di rimuovere le emoji personalizzate."
makePrivateConfirm: Questa operazione invierà ai server remoti un richiesta di rimozione
e cambierà la visibilità a "Privato". Confermi?
sentFollowRequests: Richieste di follow inviate
searchWords: Parole da cercare / ID o URL da mostrare
enablePullToRefresh: Abilita il "Trascina in basso per aggiornare"
pullToRefreshThreshold: Distanza di trascinamento per ricaricare
pullDownToReload: Trascina in basso per ricaricare
releaseToReload: Rilascia per ricaricare
reloading: Ricaricamento
enableTimelineStreaming: Aggiorna le timeline in automatico
noSentFollowRequests: Non hai inviato richieste di follow
replyMute: Silenzia le risposte nelle timeline
replyUnmute: Non silenziare le risposte nelle timeline
useCdn: Carica gli asset da CDN
useCdnDescription: Carica alcuni asset statici come Twemoji dal CDN JSDelivr invece
che da questo server Firefish.

View file

@ -14,8 +14,8 @@
"start:container": "pnpm run gulp && pnpm run migrate && pnpm run start",
"start:test": "pnpm --filter backend run start:test",
"init": "pnpm run migrate",
"migrate": "pnpm --filter backend run migrate",
"revertmigration": "pnpm --filter backend run revertmigration",
"migrate": "pnpm --filter backend run migration:run",
"revertmigration": "pnpm --filter backend run migration:revert",
"gulp": "gulp build",
"watch": "pnpm run dev",
"dev": "pnpm node ./scripts/dev.mjs",

View file

@ -1,10 +0,0 @@
export class PinnedUsers1557476068003 {
async up(queryRunner) {
await queryRunner.query(
`ALTER TABLE "meta" ADD "pinnedUsers" character varying(256) array NOT NULL DEFAULT '{}'::varchar[]`,
);
}
async down(queryRunner) {
await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "pinnedUsers"`);
}
}

View file

@ -1,10 +0,0 @@
export class UserListJoining1558266512381 {
async up(queryRunner) {
await queryRunner.query(
`CREATE UNIQUE INDEX "IDX_90f7da835e4c10aca6853621e1" ON "user_list_joining" ("userId", "userListId") `,
);
}
async down(queryRunner) {
await queryRunner.query(`DROP INDEX "IDX_90f7da835e4c10aca6853621e1"`);
}
}

View file

@ -1,12 +0,0 @@
export class PasswordLessLogin1562422242907 {
async up(queryRunner) {
await queryRunner.query(
`ALTER TABLE "user_profile" ADD COLUMN "usePasswordLessLogin" boolean DEFAULT false NOT NULL`,
);
}
async down(queryRunner) {
await queryRunner.query(
`ALTER TABLE "user_profile" DROP COLUMN "usePasswordLessLogin"`,
);
}
}

View file

@ -1,12 +0,0 @@
export class PageTitleHideOption1562448332510 {
async up(queryRunner) {
await queryRunner.query(
`ALTER TABLE "page" ADD "hideTitleWhenPinned" boolean NOT NULL DEFAULT false`,
);
}
async down(queryRunner) {
await queryRunner.query(
`ALTER TABLE "page" DROP COLUMN "hideTitleWhenPinned"`,
);
}
}

View file

@ -1,10 +0,0 @@
export class room1565634203341 {
async up(queryRunner) {
await queryRunner.query(
`ALTER TABLE "user_profile" ADD "room" jsonb NOT NULL DEFAULT '{}'`,
);
}
async down(queryRunner) {
await queryRunner.query(`ALTER TABLE "user_profile" DROP COLUMN "room"`);
}
}

View file

@ -1,14 +0,0 @@
export class CustomEmojiCategory1571220798684 {
async up(queryRunner) {
await queryRunner.query(
`ALTER TABLE "emoji" ADD "category" character varying(128)`,
undefined,
);
}
async down(queryRunner) {
await queryRunner.query(
`ALTER TABLE "emoji" DROP COLUMN "category"`,
undefined,
);
}
}

View file

@ -1,17 +0,0 @@
export class TalkFederationId1576269851876 {
constructor() {
this.name = "TalkFederationId1576269851876";
}
async up(queryRunner) {
await queryRunner.query(
`ALTER TABLE "messaging_message" ADD "uri" character varying(512)`,
undefined,
);
}
async down(queryRunner) {
await queryRunner.query(
`ALTER TABLE "messaging_message" DROP COLUMN "uri"`,
undefined,
);
}
}

View file

@ -1,17 +0,0 @@
export class ProxyRemoteFiles1576869585998 {
constructor() {
this.name = "ProxyRemoteFiles1576869585998";
}
async up(queryRunner) {
await queryRunner.query(
`ALTER TABLE "meta" ADD "proxyRemoteFiles" boolean NOT NULL DEFAULT false`,
undefined,
);
}
async down(queryRunner) {
await queryRunner.query(
`ALTER TABLE "meta" DROP COLUMN "proxyRemoteFiles"`,
undefined,
);
}
}

View file

@ -1,14 +0,0 @@
export class v12131580543501339 {
constructor() {
this.name = "v12131580543501339";
}
async up(queryRunner) {
await queryRunner.query(
`CREATE INDEX "IDX_NOTE_TAGS" ON "note" USING gin ("tags")`,
undefined,
);
}
async down(queryRunner) {
await queryRunner.query(`DROP INDEX "IDX_NOTE_TAGS"`, undefined);
}
}

View file

@ -1,17 +0,0 @@
export class driveUserFolderIdIndex1581708415836 {
constructor() {
this.name = "driveUserFolderIdIndex1581708415836";
}
async up(queryRunner) {
await queryRunner.query(
`CREATE INDEX "IDX_55720b33a61a7c806a8215b825" ON "drive_file" ("userId", "folderId", "id") `,
undefined,
);
}
async down(queryRunner) {
await queryRunner.query(
`DROP INDEX "IDX_55720b33a61a7c806a8215b825"`,
undefined,
);
}
}

View file

@ -1,17 +0,0 @@
export class antennaExclude1582210532752 {
constructor() {
this.name = "antennaExclude1582210532752";
}
async up(queryRunner) {
await queryRunner.query(
`ALTER TABLE "antenna" ADD "excludeKeywords" jsonb NOT NULL DEFAULT '[]'`,
undefined,
);
}
async down(queryRunner) {
await queryRunner.query(
`ALTER TABLE "antenna" DROP COLUMN "excludeKeywords"`,
undefined,
);
}
}

View file

@ -1,14 +0,0 @@
export class apUrl1585772678853 {
constructor() {
this.name = "apUrl1585772678853";
}
async up(queryRunner) {
await queryRunner.query(
`ALTER TABLE "note" ADD "url" character varying(512)`,
undefined,
);
}
async down(queryRunner) {
await queryRunner.query(`ALTER TABLE "note" DROP COLUMN "url"`, undefined);
}
}

View file

@ -1,17 +0,0 @@
export class AddObjectStorageUseProxy1586624197029 {
constructor() {
this.name = "AddObjectStorageUseProxy1586624197029";
}
async up(queryRunner) {
await queryRunner.query(
`ALTER TABLE "meta" ADD "objectStorageUseProxy" boolean NOT NULL DEFAULT true`,
undefined,
);
}
async down(queryRunner) {
await queryRunner.query(
`ALTER TABLE "meta" DROP COLUMN "objectStorageUseProxy"`,
undefined,
);
}
}

View file

@ -1,17 +0,0 @@
export class pageAiScript1586708940386 {
constructor() {
this.name = "pageAiScript1586708940386";
}
async up(queryRunner) {
await queryRunner.query(
`ALTER TABLE "page" ADD "script" character varying(16384) NOT NULL DEFAULT ''`,
undefined,
);
}
async down(queryRunner) {
await queryRunner.query(
`ALTER TABLE "page" DROP COLUMN "script"`,
undefined,
);
}
}

View file

@ -1,13 +0,0 @@
export class blurhash1595075960584 {
constructor() {
this.name = "blurhash1595075960584";
}
async up(queryRunner) {
await queryRunner.query(
`ALTER TABLE "drive_file" ADD "blurhash" character varying(128)`,
);
}
async down(queryRunner) {
await queryRunner.query(`ALTER TABLE "drive_file" DROP COLUMN "blurhash"`);
}
}

View file

@ -1,13 +0,0 @@
export class instanceIconUrl1595676934834 {
constructor() {
this.name = "instanceIconUrl1595676934834";
}
async up(queryRunner) {
await queryRunner.query(
`ALTER TABLE "instance" ADD "iconUrl" character varying(256) DEFAULT null`,
);
}
async down(queryRunner) {
await queryRunner.query(`ALTER TABLE "instance" DROP COLUMN "iconUrl"`);
}
}

View file

@ -1,15 +0,0 @@
export class channel21596786425167 {
constructor() {
this.name = "channel21596786425167";
}
async up(queryRunner) {
await queryRunner.query(
`ALTER TABLE "channel_following" ADD "readCursor" TIMESTAMP WITH TIME ZONE NOT NULL`,
);
}
async down(queryRunner) {
await queryRunner.query(
`ALTER TABLE "channel_following" DROP COLUMN "readCursor"`,
);
}
}

View file

@ -1,15 +0,0 @@
export class objectStorageSetPublicRead1597230137744 {
constructor() {
this.name = "objectStorageSetPublicRead1597230137744";
}
async up(queryRunner) {
await queryRunner.query(
`ALTER TABLE "meta" ADD "objectStorageSetPublicRead" boolean NOT NULL DEFAULT false`,
);
}
async down(queryRunner) {
await queryRunner.query(
`ALTER TABLE "meta" DROP COLUMN "objectStorageSetPublicRead"`,
);
}
}

View file

@ -1,13 +0,0 @@
export class addSensitiveIndex1597385880794 {
constructor() {
this.name = "addSensitiveIndex1597385880794";
}
async up(queryRunner) {
await queryRunner.query(
`CREATE INDEX "IDX_a7eba67f8b3fa27271e85d2e26" ON "drive_file" ("isSensitive") `,
);
}
async down(queryRunner) {
await queryRunner.query(`DROP INDEX "IDX_a7eba67f8b3fa27271e85d2e26"`);
}
}

View file

@ -1,13 +0,0 @@
export class instanceThemeColor1603776877564 {
constructor() {
this.name = "instanceThemeColor1603776877564";
}
async up(queryRunner) {
await queryRunner.query(
`ALTER TABLE "instance" ADD "themeColor" character varying(64) DEFAULT null`,
);
}
async down(queryRunner) {
await queryRunner.query(`ALTER TABLE "instance" DROP COLUMN "themeColor"`);
}
}

View file

@ -1,13 +0,0 @@
export class instanceFavicon1603781553011 {
constructor() {
this.name = "instanceFavicon1603781553011";
}
async up(queryRunner) {
await queryRunner.query(
`ALTER TABLE "instance" ADD "faviconUrl" character varying(256) DEFAULT null`,
);
}
async down(queryRunner) {
await queryRunner.query(`ALTER TABLE "instance" DROP COLUMN "faviconUrl"`);
}
}

View file

@ -1,15 +0,0 @@
export class deleteAutoWatch1604821689616 {
constructor() {
this.name = "deleteAutoWatch1604821689616";
}
async up(queryRunner) {
await queryRunner.query(
`ALTER TABLE "user_profile" DROP COLUMN "autoWatch"`,
);
}
async down(queryRunner) {
await queryRunner.query(
`ALTER TABLE "user_profile" ADD "autoWatch" boolean NOT NULL DEFAULT false`,
);
}
}

View file

@ -1,13 +0,0 @@
export class clipDescription1605408848373 {
constructor() {
this.name = "clipDescription1605408848373";
}
async up(queryRunner) {
await queryRunner.query(
`ALTER TABLE "clip" ADD "description" character varying(2048) DEFAULT null`,
);
}
async down(queryRunner) {
await queryRunner.query(`ALTER TABLE "clip" DROP COLUMN "description"`);
}
}

View file

@ -1,13 +0,0 @@
export class instancePinnedClip1607151207216 {
constructor() {
this.name = "instancePinnedClip1607151207216";
}
async up(queryRunner) {
await queryRunner.query(
`ALTER TABLE "meta" ADD "pinnedClipId" character varying(32)`,
);
}
async down(queryRunner) {
await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "pinnedClipId"`);
}
}

View file

@ -1,15 +0,0 @@
export class registry31610283021566 {
constructor() {
this.name = "registry31610283021566";
}
async up(queryRunner) {
await queryRunner.query(
`ALTER TABLE "registry_item" ALTER COLUMN "value" DROP NOT NULL`,
);
}
async down(queryRunner) {
await queryRunner.query(
`ALTER TABLE "registry_item" ALTER COLUMN "value" SET NOT NULL`,
);
}
}

View file

@ -1,15 +0,0 @@
export class objectStorageS3ForcePathStyle1611547387175 {
constructor() {
this.name = "objectStorageS3ForcePathStyle1611547387175";
}
async up(queryRunner) {
await queryRunner.query(
`ALTER TABLE "meta" ADD "objectStorageS3ForcePathStyle" boolean NOT NULL DEFAULT true`,
);
}
async down(queryRunner) {
await queryRunner.query(
`ALTER TABLE "meta" DROP COLUMN "objectStorageS3ForcePathStyle"`,
);
}
}

View file

@ -1,15 +0,0 @@
export class announcementEmail1612619156584 {
constructor() {
this.name = "announcementEmail1612619156584";
}
async up(queryRunner) {
await queryRunner.query(
`ALTER TABLE "user_profile" ADD "receiveAnnouncementEmail" boolean NOT NULL DEFAULT true`,
);
}
async down(queryRunner) {
await queryRunner.query(
`ALTER TABLE "user_profile" DROP COLUMN "receiveAnnouncementEmail"`,
);
}
}

View file

@ -1,13 +0,0 @@
export class userLang1613181457597 {
constructor() {
this.name = "userLang1613181457597";
}
async up(queryRunner) {
await queryRunner.query(
`ALTER TABLE "user_profile" ADD "lang" character varying(32)`,
);
}
async down(queryRunner) {
await queryRunner.query(`ALTER TABLE "user_profile" DROP COLUMN "lang"`);
}
}

View file

@ -1,15 +0,0 @@
export class userHideOnlineStatus1618639857000 {
constructor() {
this.name = "userHideOnlineStatus1618639857000";
}
async up(queryRunner) {
await queryRunner.query(
`ALTER TABLE "user" ADD "hideOnlineStatus" boolean NOT NULL DEFAULT false`,
);
}
async down(queryRunner) {
await queryRunner.query(
`ALTER TABLE "user" DROP COLUMN "hideOnlineStatus"`,
);
}
}

View file

@ -1,13 +0,0 @@
export class ad21620364649428 {
constructor() {
this.name = "ad21620364649428";
}
async up(queryRunner) {
await queryRunner.query(
`ALTER TABLE "ad" ADD "ratio" integer NOT NULL DEFAULT '1'`,
);
}
async down(queryRunner) {
await queryRunner.query(`ALTER TABLE "ad" DROP COLUMN "ratio"`);
}
}

View file

@ -1,13 +0,0 @@
export class deeplIntegration1629024377804 {
constructor() {
this.name = "deeplIntegration1629024377804";
}
async up(queryRunner) {
await queryRunner.query(
`ALTER TABLE "meta" ADD "deeplAuthKey" character varying(128)`,
);
}
async down(queryRunner) {
await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "deeplAuthKey"`);
}
}

View file

@ -1,15 +0,0 @@
export class fixChannelUserId1629288472000 {
constructor() {
this.name = "fixChannelUserId1629288472000";
}
async up(queryRunner) {
await queryRunner.query(
`ALTER TABLE "channel" ALTER COLUMN "userId" DROP NOT NULL;`,
);
}
async down(queryRunner) {
await queryRunner.query(
`ALTER TABLE "channel" ALTER COLUMN "userId" SET NOT NULL;`,
);
}
}

View file

@ -1,13 +0,0 @@
export class deeplIntegration21629778475000 {
constructor() {
this.name = "deeplIntegration21629778475000";
}
async up(queryRunner) {
await queryRunner.query(
`ALTER TABLE "meta" ADD "deeplIsPro" boolean NOT NULL DEFAULT false`,
);
}
async down(queryRunner) {
await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "deeplIsPro"`);
}
}

View file

@ -1,15 +0,0 @@
export class emailRequiredForSignup1633068642000 {
constructor() {
this.name = "emailRequiredForSignup1633068642000";
}
async up(queryRunner) {
await queryRunner.query(
`ALTER TABLE "meta" ADD "emailRequiredForSignup" boolean NOT NULL DEFAULT false`,
);
}
async down(queryRunner) {
await queryRunner.query(
`ALTER TABLE "meta" DROP COLUMN "emailRequiredForSignup"`,
);
}
}

View file

@ -1,15 +0,0 @@
export class userPublicReactions1634486652000 {
constructor() {
this.name = "userPublicReactions1634486652000";
}
async up(queryRunner) {
await queryRunner.query(
`ALTER TABLE "user_profile" ADD "publicReactions" boolean NOT NULL DEFAULT false`,
);
}
async down(queryRunner) {
await queryRunner.query(
`ALTER TABLE "user_profile" DROP COLUMN "publicReactions"`,
);
}
}

View file

@ -1,9 +0,0 @@
export class deleteLog1634902659689 {
constructor() {
this.name = "deleteLog1634902659689";
}
async up(queryRunner) {
await queryRunner.query(`DROP TABLE "log"`);
}
async down(queryRunner) {}
}

View file

@ -1,13 +0,0 @@
export class removeViaMobile1636697408073 {
name = "removeViaMobile1636697408073";
async up(queryRunner) {
await queryRunner.query(`ALTER TABLE "note" DROP COLUMN "viaMobile"`);
}
async down(queryRunner) {
await queryRunner.query(
`ALTER TABLE "note" ADD "viaMobile" boolean NOT NULL DEFAULT false`,
);
}
}

View file

@ -1,15 +0,0 @@
export class forwardedReport1637320813000 {
name = "forwardedReport1637320813000";
async up(queryRunner) {
await queryRunner.query(
`ALTER TABLE "abuse_user_report" ADD "forwarded" boolean NOT NULL DEFAULT false`,
);
}
async down(queryRunner) {
await queryRunner.query(
`ALTER TABLE "abuse_user_report" DROP COLUMN "forwarded"`,
);
}
}

View file

@ -1,15 +0,0 @@
export class driveFileWebpublicType1642613870898 {
name = "driveFileWebpublicType1642613870898";
async up(queryRunner) {
await queryRunner.query(
`ALTER TABLE "drive_file" ADD "webpublicType" character varying(128)`,
);
}
async down(queryRunner) {
await queryRunner.query(
`ALTER TABLE "drive_file" DROP COLUMN "webpublicType"`,
);
}
}

View file

@ -1,13 +0,0 @@
export class instanceThemeColor1644395759931 {
name = "instanceThemeColor1644395759931";
async up(queryRunner) {
await queryRunner.query(
`ALTER TABLE "meta" ADD "themeColor" character varying(512)`,
);
}
async down(queryRunner) {
await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "themeColor"`);
}
}

View file

@ -1,15 +0,0 @@
export class removeMaxNoteTextLength1645340161439 {
name = "removeMaxNoteTextLength1645340161439";
async up(queryRunner) {
await queryRunner.query(
`ALTER TABLE "meta" DROP COLUMN "maxNoteTextLength"`,
);
}
async down(queryRunner) {
await queryRunner.query(
`ALTER TABLE "meta" ADD "maxNoteTextLength" integer NOT NULL DEFAULT '500'`,
);
}
}

View file

@ -1,15 +0,0 @@
export class userModerationNote1656772790599 {
name = "userModerationNote1656772790599";
async up(queryRunner) {
await queryRunner.query(
`ALTER TABLE "user_profile" ADD "moderationNote" character varying(8192) NOT NULL DEFAULT ''`,
);
}
async down(queryRunner) {
await queryRunner.query(
`ALTER TABLE "user_profile" DROP COLUMN "moderationNote"`,
);
}
}

View file

@ -1,15 +0,0 @@
export class activeEmailValidation1657346559800 {
name = "activeEmailValidation1657346559800";
async up(queryRunner) {
await queryRunner.query(
`ALTER TABLE "meta" ADD "enableActiveEmailValidation" boolean NOT NULL DEFAULT true`,
);
}
async down(queryRunner) {
await queryRunner.query(
`ALTER TABLE "meta" DROP COLUMN "enableActiveEmailValidation"`,
);
}
}

View file

@ -1,10 +0,0 @@
export class CustomMOTD1658939464003 {
async up(queryRunner) {
await queryRunner.query(
`ALTER TABLE "meta" ADD "customMOTD" character varying(256) array NOT NULL DEFAULT '{}'::varchar[]`,
);
}
async down(queryRunner) {
await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "customMOTD"`);
}
}

View file

@ -1,12 +0,0 @@
export class CustomSplashIcons1658941974648 {
async up(queryRunner) {
await queryRunner.query(
`ALTER TABLE "meta" ADD "customSplashIcons" character varying(256) array NOT NULL DEFAULT '{}'::varchar[]`,
);
}
async down(queryRunner) {
await queryRunner.query(
`ALTER TABLE "meta" DROP COLUMN "customSplashIcons"`,
);
}
}

View file

@ -1,13 +0,0 @@
export class GuestTimeline1660068273737 {
name = "GuestTimeline1660068273737";
async up(queryRunner) {
await queryRunner.query(
`ALTER TABLE "meta" ADD "enableGuestTimeline" boolean NOT NULL DEFAULT false`,
);
}
async down(queryRunner) {
await queryRunner.query(
`ALTER TABLE "meta" DROP COLUMN "enableGuestTimeline"`,
);
}
}

View file

@ -1,10 +0,0 @@
export class Page1668828368510 {
async up(queryRunner) {
await queryRunner.query(
`ALTER TABLE "page" ADD "isPublic" boolean NOT NULL DEFAULT true`,
);
}
async down(queryRunner) {
await queryRunner.query(`ALTER TABLE "page" DROP COLUMN "isPublic"`);
}
}

View file

@ -1,15 +0,0 @@
export class FixFirefishAgain1668831378728 {
name = "FixFirefishAgain1668831378728";
async up(queryRunner) {
await queryRunner.query(
`UPDATE "meta" SET "useStarForReactionFallback" = TRUE`,
);
}
async down(queryRunner) {
await queryRunner.query(
`UPDATE "meta" SET "useStarForReactionFallback" = FALSE`,
);
}
}

View file

@ -1,15 +0,0 @@
export class whetherPushNotifyToSendReadMessage1669138716634 {
name = "whetherPushNotifyToSendReadMessage1669138716634";
async up(queryRunner) {
await queryRunner.query(
`ALTER TABLE "sw_subscription" ADD "sendReadMessage" boolean NOT NULL DEFAULT false`,
);
}
async down(queryRunner) {
await queryRunner.query(
`ALTER TABLE "sw_subscription" DROP COLUMN "sendReadMessage"`,
);
}
}

View file

@ -1,15 +0,0 @@
export class PollChoiceLength1673336077243 {
name = "PollChoiceLength1673336077243";
async up(queryRunner) {
await queryRunner.query(
`ALTER TABLE "poll" ALTER COLUMN "choices" TYPE character varying(256) array`,
);
}
async down(queryRunner) {
await queryRunner.query(
`ALTER TABLE "poll" ALTER COLUMN "choices" TYPE character varying(128) array`,
);
}
}

View file

@ -1,15 +0,0 @@
export class DriveComment1677935903517 {
name = "DriveComment1677935903517";
async up(queryRunner) {
await queryRunner.query(
`ALTER TABLE "drive_file" ALTER "comment" TYPE character varying(8192)`,
);
}
async down(queryRunner) {
await queryRunner.query(
`ALTER TABLE "drive_file" ALTER "comment" TYPE character varying(512)`,
);
}
}

View file

@ -1,13 +0,0 @@
export class addPropsForCustomEmoji1678945242650 {
name = "addPropsForCustomEmoji1678945242650";
async up(queryRunner) {
await queryRunner.query(
`ALTER TABLE "emoji" ADD "license" character varying(1024)`,
);
}
async down(queryRunner) {
await queryRunner.query(`ALTER TABLE "emoji" DROP COLUMN "license"`);
}
}

View file

@ -1,13 +0,0 @@
export class InstanceSilence1682891890317 {
name = "InstanceSilence1682891890317";
async up(queryRunner) {
await queryRunner.query(
`ALTER TABLE "meta" ADD "silencedHosts" character varying(256) array NOT NULL DEFAULT '{}'`,
);
}
async down(queryRunner) {
await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "silencedHosts"`);
}
}

View file

@ -1,15 +0,0 @@
export class AddHiddenPosts1682891891317 {
name = "AddHiddenPosts1682891891317";
async up(queryRunner) {
await queryRunner.query(
`ALTER TYPE note_visibility_enum ADD VALUE IF NOT EXISTS 'hidden'`,
);
}
async down(queryRunner) {
await queryRunner.query(
`ALTER TYPE note_visibility_enum REMOVE VALUE IF EXISTS 'hidden'`,
);
}
}

View file

@ -1,15 +0,0 @@
export class PreventAiLearning1683682889948 {
name = "PreventAiLearning1683682889948";
async up(queryRunner) {
await queryRunner.query(
`ALTER TABLE "user_profile" ADD "preventAiLearning" boolean NOT NULL DEFAULT true`,
);
}
async down(queryRunner) {
await queryRunner.query(
`ALTER TABLE "user_profile" DROP COLUMN "preventAiLearning"`,
);
}
}

View file

@ -1,16 +0,0 @@
export class ExperimentalFeatures1683980686995 {
name = "ExperimentalFeatures1683980686995";
async up(queryRunner) {
await queryRunner.query(`
ALTER TABLE "meta"
ADD "experimentalFeatures" jsonb NOT NULL DEFAULT '{}'
`);
}
async down(queryRunner) {
await queryRunner.query(`
ALTER TABLE "meta" DROP COLUMN "experimentalFeatures"
`);
}
}

View file

@ -1,15 +0,0 @@
export class RemoveShowTimelineReplies1684206886988 {
name = "RemoveShowTimelineReplies1684206886988";
async up(queryRunner) {
await queryRunner.query(
`ALTER TABLE "user" DROP COLUMN "showTimelineReplies"`,
);
}
async down(queryRunner) {
await queryRunner.query(
`ALTER TABLE "user" ADD "showTimelineReplies" boolean NOT NULL DEFAULT false`,
);
}
}

View file

@ -1,15 +0,0 @@
export class DonationLink1689136347561 {
name = "DonationLink1689136347561";
async up(queryRunner) {
await queryRunner.query(
`ALTER TABLE "meta" ADD "donationLink" character varying(256)`,
);
}
async down(queryRunner) {
await queryRunner.query(
`ALTER TABLE "meta" DROP COLUMN "DonationLink1689136347561"`,
);
}
}

View file

@ -1,13 +0,0 @@
export class AddPostLang1695334243217 {
name = "AddPostLang1695334243217";
async up(queryRunner) {
await queryRunner.query(
`ALTER TABLE "note" ADD "lang" character varying(10)`,
);
}
async down(queryRunner) {
await queryRunner.query(`ALTER TABLE "note" DROP COLUMN "lang"`);
}
}

View file

@ -1,13 +0,0 @@
export class MoreUrls1699305365258 {
name = "MoreUrls1699305365258";
async up(queryRunner) {
queryRunner.query(
`ALTER TABLE "meta" ADD "moreUrls" jsonb NOT NULL DEFAULT '[]'`,
);
}
async down(queryRunner) {
queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "moreUrls"`);
}
}

View file

@ -1,13 +0,0 @@
export class DropUserProfileLanguage1708452631156 {
name = "DropUserProfileLanguage1708452631156";
async up(queryRunner) {
await queryRunner.query(`ALTER TABLE "user_profile" DROP COLUMN "lang"`);
}
async down(queryRunner) {
await queryRunner.query(
`ALTER TABLE "user_profile" ADD COLUMN "lang" character varying(32)`,
);
}
}

View file

@ -1,11 +0,0 @@
export class FixNoteUrlIndex1709129810501 {
name = "FixNoteUrlIndex1709129810501";
async up(queryRunner) {
await queryRunner.query(`DROP INDEX "IDX_note_url"`);
await queryRunner.query(`CREATE INDEX "IDX_note_url" ON "note" ("url")`);
}
async down(queryRunner) {
/* You don't revert this migration */
}
}

View file

@ -6,8 +6,9 @@
"scripts": {
"start": "pnpm node ./built/index.js",
"start:test": "NODE_ENV=test pnpm node ./built/index.js",
"migrate": "typeorm migration:run -d ormconfig.js",
"revertmigration": "typeorm migration:revert -d ormconfig.js",
"migration:run": "typeorm migration:run --dataSource ./built/ormconfig.js",
"migration:revert": "typeorm migration:revert --dataSource ./built/ormconfig.js",
"migration:new": "pnpm node ./scripts/create-migration.mjs",
"check:connect": "node ./check_connect.js",
"build": "pnpm swc src --out-dir built --source-maps false --copy-files --strip-leading-paths",
"build:debug": "pnpm swc src --out-dir built --source-maps true --copy-files --strip-leading-paths",

View file

@ -0,0 +1,11 @@
import { execa } from "execa";
(async () => {
await execa(
"pnpm",
["typeorm", "migration:create", `src/migration/${process.argv[2]}`],
{
stdio: "inherit",
},
);
})();

View file

@ -1,5 +1,7 @@
export class Init1000000000000 {
async up(queryRunner) {
import { MigrationInterface, QueryRunner } from "typeorm";
export class Init1000000000000 implements MigrationInterface {
async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(
`CREATE TYPE "log_level_enum" AS ENUM('error', 'warning', 'info', 'success', 'debug')`,
);
@ -712,7 +714,7 @@ export class Init1000000000000 {
`ALTER TABLE "user_profile" ADD CONSTRAINT "FK_51cb79b5555effaf7d69ba1cff9" FOREIGN KEY ("userId") REFERENCES "user"("id") ON DELETE CASCADE ON UPDATE NO ACTION`,
);
}
async down(queryRunner) {
async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(
`ALTER TABLE "user_profile" DROP CONSTRAINT "FK_51cb79b5555effaf7d69ba1cff9"`,
);

View file

@ -1,5 +1,7 @@
export class Pages1556348509290 {
async up(queryRunner) {
import { MigrationInterface, QueryRunner } from "typeorm";
export class Pages1556348509290 implements MigrationInterface {
async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(
`CREATE TYPE "page_visibility_enum" AS ENUM('public', 'followers', 'specified')`,
);
@ -31,7 +33,7 @@ export class Pages1556348509290 {
`ALTER TABLE "page" ADD CONSTRAINT "FK_3126dd7c502c9e4d7597ef7ef10" FOREIGN KEY ("eyeCatchingImageId") REFERENCES "drive_file"("id") ON DELETE CASCADE ON UPDATE NO ACTION`,
);
}
async down(queryRunner) {
async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(
`ALTER TABLE "page" DROP CONSTRAINT "FK_3126dd7c502c9e4d7597ef7ef10"`,
);

View file

@ -1,5 +1,7 @@
export class UserProfile1556746559567 {
async up(queryRunner) {
import { MigrationInterface, QueryRunner } from "typeorm";
export class UserProfile1556746559567 implements MigrationInterface {
async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(
`ALTER TABLE "user_profile" ALTER COLUMN "githubId" TYPE VARCHAR(64) USING "githubId"::VARCHAR(64)`,
);
@ -7,7 +9,7 @@ export class UserProfile1556746559567 {
`ALTER TABLE "user_profile" ALTER COLUMN "discordExpiresDate" TYPE VARCHAR(64) USING "discordExpiresDate"::VARCHAR(64)`,
);
}
async down(queryRunner) {
async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(
`UPDATE "user_profile" SET github = FALSE, discord = FALSE`,
);

View file

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

View file

@ -1,5 +1,7 @@
export class AddSomeUrls1557761316509 {
async up(queryRunner) {
import { MigrationInterface, QueryRunner } from "typeorm";
export class AddSomeUrls1557761316509 implements MigrationInterface {
async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(
`ALTER TABLE "meta" ADD "ToSUrl" character varying(512)`,
);
@ -10,7 +12,7 @@ export class AddSomeUrls1557761316509 {
`ALTER TABLE "meta" ADD "feedbackUrl" character varying(512) DEFAULT 'https://codeberg.org/firefish/firefish/issues'`,
);
}
async down(queryRunner) {
async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "feedbackUrl"`);
await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "repositoryUrl"`);
await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "ToSUrl"`);

View file

@ -1,5 +1,7 @@
export class ObjectStorageSetting1557932705754 {
async up(queryRunner) {
import { MigrationInterface, QueryRunner } from "typeorm";
export class ObjectStorageSetting1557932705754 implements MigrationInterface {
async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(
`ALTER TABLE "meta" ADD "useObjectStorage" boolean NOT NULL DEFAULT false`,
);
@ -31,7 +33,7 @@ export class ObjectStorageSetting1557932705754 {
`ALTER TABLE "meta" ADD "objectStorageUseSSL" boolean NOT NULL DEFAULT true`,
);
}
async down(queryRunner) {
async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(
`ALTER TABLE "meta" DROP COLUMN "objectStorageUseSSL"`,
);

View file

@ -1,5 +1,7 @@
export class PageLike1558072954435 {
async up(queryRunner) {
import { MigrationInterface, QueryRunner } from "typeorm";
export class PageLike1558072954435 implements MigrationInterface {
async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(
`CREATE TABLE "page_like" ("id" character varying(32) NOT NULL, "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL, "userId" character varying(32) NOT NULL, "pageId" character varying(32) NOT NULL, CONSTRAINT "PK_813f034843af992d3ae0f43c64c" PRIMARY KEY ("id"))`,
);
@ -19,7 +21,7 @@ export class PageLike1558072954435 {
`ALTER TABLE "page_like" ADD CONSTRAINT "FK_cf8782626dced3176038176a847" FOREIGN KEY ("pageId") REFERENCES "page"("id") ON DELETE CASCADE ON UPDATE NO ACTION`,
);
}
async down(queryRunner) {
async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(
`ALTER TABLE "page_like" DROP CONSTRAINT "FK_cf8782626dced3176038176a847"`,
);

View file

@ -1,5 +1,7 @@
export class UserGroup1558103093633 {
async up(queryRunner) {
import { MigrationInterface, QueryRunner } from "typeorm";
export class UserGroup1558103093633 implements MigrationInterface {
async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(
`CREATE TABLE "user_group" ("id" character varying(32) NOT NULL, "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL, "name" character varying(256) NOT NULL, "userId" character varying(32) NOT NULL, "isPrivate" boolean NOT NULL DEFAULT false, CONSTRAINT "PK_3c29fba6fe013ec8724378ce7c9" PRIMARY KEY ("id"))`,
);
@ -46,7 +48,7 @@ export class UserGroup1558103093633 {
`ALTER TABLE "user_group_joining" ADD CONSTRAINT "FK_67dc758bc0566985d1b3d399865" FOREIGN KEY ("userGroupId") REFERENCES "user_group"("id") ON DELETE CASCADE ON UPDATE NO ACTION`,
);
}
async down(queryRunner) {
async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(
`ALTER TABLE "user_group_joining" DROP CONSTRAINT "FK_67dc758bc0566985d1b3d399865"`,
);

View file

@ -1,5 +1,7 @@
export class UserGroupInvite1558257926829 {
async up(queryRunner) {
import { MigrationInterface, QueryRunner } from "typeorm";
export class UserGroupInvite1558257926829 implements MigrationInterface {
async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(
`CREATE TABLE "user_group_invite" ("id" character varying(32) NOT NULL, "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL, "userId" character varying(32) NOT NULL, "userGroupId" character varying(32) NOT NULL, CONSTRAINT "PK_3893884af0d3a5f4d01e7921a97" PRIMARY KEY ("id"))`,
);
@ -22,7 +24,7 @@ export class UserGroupInvite1558257926829 {
`ALTER TABLE "user_group_invite" ADD CONSTRAINT "FK_e10924607d058004304611a436a" FOREIGN KEY ("userGroupId") REFERENCES "user_group"("id") ON DELETE CASCADE ON UPDATE NO ACTION`,
);
}
async down(queryRunner) {
async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(
`ALTER TABLE "user_group_invite" DROP CONSTRAINT "FK_e10924607d058004304611a436a"`,
);

View file

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

View file

@ -1,5 +1,7 @@
export class webauthn1561706992953 {
async up(queryRunner) {
import { MigrationInterface, QueryRunner } from "typeorm";
export class webauthn1561706992953 implements MigrationInterface {
async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(
`CREATE TABLE "attestation_challenge" ("id" character varying(32) NOT NULL, "userId" character varying(32) NOT NULL, "challenge" character varying(64) NOT NULL, "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL, "registrationChallenge" boolean NOT NULL DEFAULT false, CONSTRAINT "PK_d0ba6786e093f1bcb497572a6b5" PRIMARY KEY ("id", "userId"))`,
);
@ -28,7 +30,7 @@ export class webauthn1561706992953 {
`ALTER TABLE "user_security_key" ADD CONSTRAINT "FK_ff9ca3b5f3ee3d0681367a9b447" FOREIGN KEY ("userId") REFERENCES "user"("id") ON DELETE CASCADE ON UPDATE NO ACTION`,
);
}
async down(queryRunner) {
async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(
`ALTER TABLE "user_security_key" DROP CONSTRAINT "FK_ff9ca3b5f3ee3d0681367a9b447"`,
);

View file

@ -1,5 +1,7 @@
export class ChartIndexes1561873850023 {
async up(queryRunner) {
import { MigrationInterface, QueryRunner } from "typeorm";
export class ChartIndexes1561873850023 implements MigrationInterface {
async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(
`CREATE INDEX "IDX_0ad37b7ef50f4ddc84363d7ccc" ON "__chart__active_users" ("date") `,
);
@ -271,7 +273,7 @@ export class ChartIndexes1561873850023 {
`CREATE INDEX "IDX_a770a57c70e668cc61590c9161" ON "__chart__users" ("span", "date", "group") `,
);
}
async down(queryRunner) {
async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`DROP INDEX "IDX_a770a57c70e668cc61590c9161"`);
await queryRunner.query(`DROP INDEX "IDX_337e9599f278bd7537fe30876f"`);
await queryRunner.query(`DROP INDEX "IDX_f091abb24193d50c653c6b77fc"`);

View file

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

View file

@ -1,5 +1,7 @@
export class PinnedPage1562444565093 {
async up(queryRunner) {
import { MigrationInterface, QueryRunner } from "typeorm";
export class PinnedPage1562444565093 implements MigrationInterface {
async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(
`ALTER TABLE "user_profile" ADD "pinnedPageId" character varying(32)`,
);
@ -10,7 +12,7 @@ export class PinnedPage1562444565093 {
`ALTER TABLE "user_profile" ADD CONSTRAINT "FK_6dc44f1ceb65b1e72bacef2ca27" FOREIGN KEY ("pinnedPageId") REFERENCES "page"("id") ON DELETE SET NULL ON UPDATE NO ACTION`,
);
}
async down(queryRunner) {
async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(
`ALTER TABLE "user_profile" DROP CONSTRAINT "FK_6dc44f1ceb65b1e72bacef2ca27"`,
);

View file

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

View file

@ -1,5 +1,7 @@
export class ModerationLog1562869971568 {
async up(queryRunner) {
import { MigrationInterface, QueryRunner } from "typeorm";
export class ModerationLog1562869971568 implements MigrationInterface {
async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(
`CREATE TABLE "moderation_log" ("id" character varying(32) NOT NULL, "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL, "userId" character varying(32) NOT NULL, "type" character varying(128) NOT NULL, "info" jsonb NOT NULL, CONSTRAINT "PK_d0adca6ecfd068db83e4526cc26" PRIMARY KEY ("id"))`,
);
@ -10,7 +12,7 @@ export class ModerationLog1562869971568 {
`ALTER TABLE "moderation_log" ADD CONSTRAINT "FK_a08ad074601d204e0f69da9a954" FOREIGN KEY ("userId") REFERENCES "user"("id") ON DELETE CASCADE ON UPDATE NO ACTION`,
);
}
async down(queryRunner) {
async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(
`ALTER TABLE "moderation_log" DROP CONSTRAINT "FK_a08ad074601d204e0f69da9a954"`,
);

View file

@ -1,10 +1,12 @@
export class UsedUsername1563757595828 {
async up(queryRunner) {
import { MigrationInterface, QueryRunner } from "typeorm";
export class UsedUsername1563757595828 implements MigrationInterface {
async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(
`CREATE TABLE "used_username" ("username" character varying(128) NOT NULL, "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL, CONSTRAINT "PK_78fd79d2d24c6ac2f4cc9a31a5d" PRIMARY KEY ("username"))`,
);
}
async down(queryRunner) {
async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`DROP TABLE "used_username"`);
}
}

View file

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

View file

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

View file

@ -1,5 +1,7 @@
export class nodeinfo1572760203493 {
async up(queryRunner) {
import { MigrationInterface, QueryRunner } from "typeorm";
export class nodeinfo1572760203493 implements MigrationInterface {
async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(
`ALTER TABLE "instance" DROP COLUMN "system"`,
undefined,
@ -37,7 +39,7 @@ export class nodeinfo1572760203493 {
undefined,
);
}
async down(queryRunner) {
async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(
`ALTER TABLE "instance" DROP COLUMN "infoUpdatedAt"`,
undefined,

View file

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

View file

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

View file

@ -1,8 +1,7 @@
export class v121579267006611 {
constructor() {
this.name = "v121579267006611";
}
async up(queryRunner) {
import { MigrationInterface, QueryRunner } from "typeorm";
export class v121579267006611 implements MigrationInterface {
async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(
`CREATE TABLE "announcement" ("id" character varying(32) NOT NULL, "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL, "text" character varying(8192) NOT NULL, "title" character varying(256) NOT NULL, "imageUrl" character varying(1024), CONSTRAINT "PK_e0ef0550174fd1099a308fd18a0" PRIMARY KEY ("id"))`,
undefined,
@ -48,7 +47,7 @@ export class v121579267006611 {
undefined,
);
}
async down(queryRunner) {
async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(
`ALTER TABLE "announcement_read" DROP CONSTRAINT "FK_603a7b1e7aa0533c6c88e9bfafe"`,
undefined,

View file

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

View file

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

View file

@ -1,8 +1,7 @@
export class v1241579544426412 {
constructor() {
this.name = "v1241579544426412";
}
async up(queryRunner) {
import { MigrationInterface, QueryRunner } from "typeorm";
export class v1241579544426412 implements MigrationInterface {
async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(
`ALTER TABLE "notification" ADD "followRequestId" character varying(32)`,
undefined,
@ -12,7 +11,7 @@ export class v1241579544426412 {
undefined,
);
}
async down(queryRunner) {
async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(
`ALTER TABLE "notification" DROP CONSTRAINT "FK_bd7fab507621e635b32cd31892c"`,
undefined,

View file

@ -1,8 +1,7 @@
export class v1251579977526288 {
constructor() {
this.name = "v1251579977526288";
}
async up(queryRunner) {
import { MigrationInterface, QueryRunner } from "typeorm";
export class v1251579977526288 implements MigrationInterface {
async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(
`CREATE TABLE "clip" ("id" character varying(32) NOT NULL, "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL, "userId" character varying(32) NOT NULL, "name" character varying(128) NOT NULL, "isPublic" boolean NOT NULL DEFAULT false, CONSTRAINT "PK_f0685dac8d4dd056d7255670b75" PRIMARY KEY ("id"))`,
undefined,
@ -85,7 +84,7 @@ export class v1251579977526288 {
undefined,
);
}
async down(queryRunner) {
async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(
`ALTER TABLE "antenna_note" DROP CONSTRAINT "FK_0d775946662d2575dfd2068a5f5"`,
undefined,

View file

@ -1,8 +1,7 @@
export class v1261579993013959 {
constructor() {
this.name = "v1261579993013959";
}
async up(queryRunner) {
import { MigrationInterface, QueryRunner } from "typeorm";
export class v1261579993013959 implements MigrationInterface {
async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(
`ALTER TABLE "antenna" DROP COLUMN "hasNewNote"`,
undefined,
@ -16,7 +15,7 @@ export class v1261579993013959 {
undefined,
);
}
async down(queryRunner) {
async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(
`DROP INDEX "IDX_9937ea48d7ae97ffb4f3f063a4"`,
undefined,

View file

@ -1,8 +1,7 @@
export class v1271580069531114 {
constructor() {
this.name = "v1271580069531114";
}
async up(queryRunner) {
import { MigrationInterface, QueryRunner } from "typeorm";
export class v1271580069531114 implements MigrationInterface {
async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(
`ALTER TABLE "antenna" ADD "users" character varying(1024) array NOT NULL DEFAULT '{}'::varchar[]`,
undefined,
@ -25,7 +24,7 @@ export class v1271580069531114 {
);
await queryRunner.query(`DROP TYPE "antenna_src_enum_old"`, undefined);
}
async down(queryRunner) {
async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(
`CREATE TYPE "antenna_src_enum_old" AS ENUM('home', 'all', 'list')`,
undefined,

View file

@ -1,8 +1,7 @@
export class v1281580148575182 {
constructor() {
this.name = "v1281580148575182";
}
async up(queryRunner) {
import { MigrationInterface, QueryRunner } from "typeorm";
export class v1281580148575182 implements MigrationInterface {
async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(
`ALTER TABLE "note" DROP CONSTRAINT "FK_ec5c201576192ba8904c345c5cc"`,
undefined,
@ -12,7 +11,7 @@ export class v1281580148575182 {
undefined,
);
}
async down(queryRunner) {
async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(
`ALTER TABLE "note" ADD "appId" character varying(32)`,
undefined,

View file

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

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