Merge branch 'develop' into sw-notification-action

This commit is contained in:
tamaina 2021-03-23 21:25:39 +09:00
commit f2b5118bda
783 changed files with 5464 additions and 3649 deletions

View File

@ -1,3 +0,0 @@
.[]
.head
.label

View File

@ -1,2 +0,0 @@
.links
.next

View File

@ -1,39 +0,0 @@
(
.data |
map(
select(
.relationships
.currently_entitled_tiers
.data[]
)
) |
map(
.relationships
.user
.data
.id
)
) as $data |
.included |
map(
select(
.id as $id |
$data |
contains(
[
$id
]
)
)
) |
map(
.attributes |
[
.full_name,
.thumb_url,
.url
] |
@tsv
) |
.[] |
@text

View File

@ -1,87 +0,0 @@
#!/usr/bin/env bash
# __MISSKEY_BEARER_TOKEN=
# __MISSKEY_CAMPAIGN_ID=
# __MISSKEY_GITHUB_TOKEN=
# __MISSKEY_HEAD=syuilo:patch-autogen
# __MISSKEY_REPO=syuilo/misskey
# __MISSKEY_BRANCH=develop
test "$(curl -LSs -w '\n' -- "https://api.github.com/repos/$REPO/pulls?access_token=$__MISSKEY_GITHUB_TOKEN" | jq -r -f check_pr.jq | grep $__MISSKEY_HEAD)" && exit 1
cd "$(dirname $0)/.." && \
touch null.cache && \
rm *.cache && \
git checkout $__MISSKEY_BRANCH && \
git pull origin $__MISSKEY_BRANCH && \
git pull upstream $__MISSKEY_BRANCH && \
git stash && \
git rebase -f upstream/$__MISSKEY_BRANCH && \
git branch patch-autogen && \
git checkout patch-autogen && \
git reset --hard HEAD || \
exit 1
touch patreon.md.cache && \
rm patreon.md.cache && \
echo '<!-- PATREON_START -->' > patreon.md.cache && \
url="https://www.patreon.com/api/oauth2/v2/campaigns/$__MISSKEY_CAMPAIGN_ID/members?include=currently_entitled_tiers,user&fields%5Btier%5D=title&fields%5Buser%5D=full_name,thumb_url,url,hide_pledges"
while :
do
touch patreon.raw.cache && \
rm patreon.raw.cache && \
curl -LSs -w '\n' -H "Authorization: Bearer $__MISSKEY_BEARER_TOKEN" -- $url > patreon.raw.cache && \
touch patreon.cache && \
rm patreon.cache && \
cat patreon.raw.cache | \
jq -r -f patreon.jq >> patreon.cache && \
echo '<table><tr>' >> patreon.md.cache && \
cat patreon.cache | \
awk -F'\t' '{print $2,$1}' | \
sed -e 's/ /\\" alt=\\"/' | \
xargs -I% echo '<td><img src="%" width="100"></td>' >> patreon.md.cache && \
echo '</tr><tr>' >> patreon.md.cache && \
cat patreon.cache | \
awk -F'\t' '{print $3,$1}' | \
sed -e 's/ /\\">/' | \
xargs -I% echo '<td><a href="%</a></td>' >> patreon.md.cache && \
echo '</tr></table>' >> patreon.md.cache || \
exit 1
new_url="$(cat patreon.raw.cache | jq -r -f next_url.jq)"
test "$new_url" = 'null' && \
break || \
URL="$url"
done
ignore= && \
echo -e "\n**Last updated:** $(date -uR | sed 's/\+0000/UTC/')\n<!-- PATREON_END -->" >> patreon.md.cache && \
touch README.md && \
touch .autogen/README.md && \
rm .autogen/README.md && \
mv README.md .autogen/README.md && \
cat .autogen/README.md | while IFS= read line;
do
if [[ -z "$ignore" ]]
then
if [[ "$line" = '<!-- PATREON_START -->' ]]
then
ignore='PATREON_INSIDE'
else
echo "$line" >> README.md
fi
else
if [[ "$LINE" = '<!-- PATREON_END -->' ]]
then
ignore=
cat patreon.md.cache >> README.md
fi
fi
done
cat patreon.md.cache
touch null.cache && \
rm *.cache && \
diff .autogen/README.md README.md > diff.cache
cat diff.cache && \
test 4 -lt $(cat diff.cache | wc -l) && \
git add README.md && \
git commit -m 'Update README.md [AUTOGEN]' && \
git push -f origin patch-autogen && \
curl -LSs -w '\n' -X POST -d '{"title":"[AUTOMATED] Update README.md","body":"*This pull request was created by a tool.*","head":"'$__MISSKEY_HEAD'","base":"'$__MISSKEY_BRANCH'"}' -- "https://api.github.com/repos/$__MISSKEY_REPO/pulls?access_token=$__MISSKEY_GITHUB_TOKEN"
git stash
git checkout $__MISSKEY_BRANCH
git branch -D patch-autogen

View File

@ -3,29 +3,11 @@
"parser": "@typescript-eslint/parser" "parser": "@typescript-eslint/parser"
}, },
"extends": [ "extends": [
"eslint:recommended", "eslint:recommended"
"plugin:vue/recommended"
], ],
"rules": { "rules": {
"vue/require-v-for-key": 0,
"vue/max-attributes-per-line": 0,
"vue/html-indent": 0,
"vue/html-self-closing": 0,
"vue/no-unused-vars": 0,
"vue/attributes-order": 0,
"vue/require-prop-types": 0,
"vue/require-default-prop": 0,
"vue/html-closing-bracket-spacing": 0,
"vue/singleline-html-element-content-newline": 0,
"vue/no-v-html": 0,
"no-console": 0, "no-console": 0,
"no-unused-vars": 0, "no-unused-vars": 0,
"no-empty": 0 "no-empty": 0
},
"globals": {
"ENV": true,
"VERSION": true,
"API": true,
"LANGS": true
} }
} }

View File

@ -1,6 +1,6 @@
{ {
"extension": ["ts","js","cjs","mjs"], "extension": ["ts","js","cjs","mjs"],
"require": "ts-node/register", "require": ["ts-node/register", "tsconfig-paths/register"],
"slow": 1000, "slow": 1000,
"timeout": 30000, "timeout": 30000,
"exit": true "exit": true

1
CHANGELOG.md Normal file
View File

@ -0,0 +1 @@
see [releases](https://github.com/syuilo/misskey/releases)

BIN
assets/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

View File

@ -19,6 +19,6 @@
</head> </head>
<body> <body>
<redoc spec-url="/api.json" expand-responses="200" expand-single-schema-field="true"></redoc> <redoc spec-url="/api.json" expand-responses="200" expand-single-schema-field="true"></redoc>
<script src="https://cdn.jsdelivr.net/npm/redoc@next/bundles/redoc.standalone.js"> </script> <script src="https://cdn.jsdelivr.net/npm/redoc@2.0.0-rc.50/bundles/redoc.standalone.js" integrity="sha256-WJbngBWN9vp6vkEuzeoSj5tE5saW9Hfj6/SinkzhL2s=" crossorigin="anonymous"></script>
</body> </body>
</html> </html>

View File

@ -4,7 +4,6 @@
import * as fs from 'fs'; import * as fs from 'fs';
import * as gulp from 'gulp'; import * as gulp from 'gulp';
import * as ts from 'gulp-typescript';
import * as rimraf from 'rimraf'; import * as rimraf from 'rimraf';
import * as replace from 'gulp-replace'; import * as replace from 'gulp-replace';
const terser = require('gulp-terser'); const terser = require('gulp-terser');
@ -13,16 +12,6 @@ const cssnano = require('gulp-cssnano');
const locales: { [x: string]: any } = require('./locales'); const locales: { [x: string]: any } = require('./locales');
const meta = require('./package.json'); const meta = require('./package.json');
gulp.task('build:ts', () => {
const tsProject = ts.createProject('./tsconfig.json');
return tsProject
.src()
.pipe(tsProject())
.on('error', () => {})
.pipe(gulp.dest('./built/'));
});
gulp.task('build:copy:views', () => gulp.task('build:copy:views', () =>
gulp.src('./src/server/web/views/**/*').pipe(gulp.dest('./built/server/web/views')) gulp.src('./src/server/web/views/**/*').pipe(gulp.dest('./built/server/web/views'))
); );
@ -64,7 +53,6 @@ gulp.task('build:client:style', () => {
gulp.task('build:copy', gulp.parallel('build:copy:locales', 'build:copy:views', 'build:client:script', 'build:client:style', 'build:copy:fonts', () => gulp.task('build:copy', gulp.parallel('build:copy:locales', 'build:copy:views', 'build:client:script', 'build:client:style', 'build:copy:fonts', () =>
gulp.src([ gulp.src([
'./src/emojilist.json', './src/emojilist.json',
'./src/server/web/views/**/*',
'./src/**/assets/**/*', './src/**/assets/**/*',
'!./src/client/assets/**/*' '!./src/client/assets/**/*'
]).pipe(gulp.dest('./built/')) ]).pipe(gulp.dest('./built/'))
@ -78,17 +66,15 @@ gulp.task('cleanall', gulp.parallel('clean', cb =>
rimraf('./node_modules', cb) rimraf('./node_modules', cb)
)); ));
gulp.task('copy:docs', () =>
gulp.src([
'./src/docs/**/*',
])
.pipe(gulp.dest('./built/assets/docs/'))
);
gulp.task('build', gulp.parallel( gulp.task('build', gulp.parallel(
'build:ts',
'build:copy', 'build:copy',
'copy:docs',
)); ));
gulp.task('default', gulp.task('build')); gulp.task('default', gulp.task('build'));
gulp.task('watch', () => {
gulp.watch([
'./src/**/*',
'!./src/client/**/*'
], { ignoreInitial: false }, gulp.task('build'));
});

View File

@ -110,7 +110,7 @@ attachCancel: "Supprimer le fichier attaché"
markAsSensitive: "Marquer comme sensible" markAsSensitive: "Marquer comme sensible"
unmarkAsSensitive: "Supprimer le marquage comme sensible" unmarkAsSensitive: "Supprimer le marquage comme sensible"
enterFileName: "Entrer le nom du fichier" enterFileName: "Entrer le nom du fichier"
mute: "Mettre en sourdine" mute: "Masquer"
unmute: "Ne plus masquer" unmute: "Ne plus masquer"
block: "Bloquer" block: "Bloquer"
unblock: "Débloquer" unblock: "Débloquer"
@ -206,7 +206,7 @@ all: "Tous"
subscribing: "Abonné" subscribing: "Abonné"
publishing: "Publié" publishing: "Publié"
notResponding: "Ne répond pas" notResponding: "Ne répond pas"
instanceFollowing: "Suivre une instance" instanceFollowing: "Abonnements de l'instance"
instanceFollowers: "Abonné·e·s de linstance" instanceFollowers: "Abonné·e·s de linstance"
instanceUsers: "Utilisateur·rice·s de cette linstance" instanceUsers: "Utilisateur·rice·s de cette linstance"
changePassword: "Modifier votre mot de passe" changePassword: "Modifier votre mot de passe"
@ -317,12 +317,12 @@ disablingTimelinesInfo: "Même si vous désactivez ces fils, les administrateur
registration: "Sinscrire" registration: "Sinscrire"
enableRegistration: "Autoriser les nouvelles inscriptions" enableRegistration: "Autoriser les nouvelles inscriptions"
invite: "Inviter" invite: "Inviter"
proxyRemoteFiles: "Proxy fichiers distants" proxyRemoteFiles: "Utiliser les fichiers distants comme proxy"
proxyRemoteFilesDescription: "Si vous activez ce paramètre, les fichiers distants non stockés ou supprimés en raison d'une capacité excédentaire seront affichés via un proxy local et généreront une miniature. Cela n'affectera pas le stockage du serveur." proxyRemoteFilesDescription: "Si vous activez ce paramètre, les fichiers distants non stockés ou supprimés en raison d'une capacité excédentaire seront affichés via un proxy local et généreront une miniature. Cela n'affectera pas le stockage du serveur."
driveCapacityPerLocalAccount: "Volume du Drive par utilisateur local" driveCapacityPerLocalAccount: "Volume du Drive par utilisateur local"
driveCapacityPerRemoteAccount: "Volume du Drive par utilisateur distant" driveCapacityPerRemoteAccount: "Volume du Drive par utilisateur distant"
inMb: "en mégaoctets" inMb: "en mégaoctets"
iconUrl: "URL de limage de lavatar" iconUrl: "URL de l'icône"
bannerUrl: "URL de limage de la bannière" bannerUrl: "URL de limage de la bannière"
basicInfo: "Informations basiques" basicInfo: "Informations basiques"
pinnedUsers: "Utilisateur·rice épinglé·e" pinnedUsers: "Utilisateur·rice épinglé·e"
@ -491,7 +491,7 @@ objectStorageUseProxyDesc: "Désactivez cette option si vous n'utilisez pas Prox
objectStorageSetPublicRead: "Régler sur « public » lors de l'envoi" objectStorageSetPublicRead: "Régler sur « public » lors de l'envoi"
serverLogs: "Journal du serveur" serverLogs: "Journal du serveur"
deleteAll: "Supprimer tout" deleteAll: "Supprimer tout"
showFixedPostForm: "Afficher le formulaire en haut du fil d'actualité" showFixedPostForm: "Afficher le formulaire de publication en haut du fil d'actualité"
newNoteRecived: "Vous avez reçu une nouvelle note" newNoteRecived: "Vous avez reçu une nouvelle note"
sounds: "Sons" sounds: "Sons"
listen: "Écouter" listen: "Écouter"
@ -616,12 +616,14 @@ openInNewTab: "Ouvrir dans un nouvel onglet"
openInSideView: "Ouvrir en vue latérale" openInSideView: "Ouvrir en vue latérale"
defaultNavigationBehaviour: "Navigation par défaut" defaultNavigationBehaviour: "Navigation par défaut"
editTheseSettingsMayBreakAccount: "La modification de ces paramètres peut endommager votre compte." editTheseSettingsMayBreakAccount: "La modification de ces paramètres peut endommager votre compte."
instanceTicker: "Nom de l'instance d'origine des notes"
waitingFor: "En attente de {x}" waitingFor: "En attente de {x}"
random: "Aléatoire" random: "Aléatoire"
system: "Système" system: "Système"
switchUi: "Modifier l'interface utilisateur" switchUi: "Modifier l'interface utilisateur"
desktop: "Bureau" desktop: "Bureau"
clip: "Clip" clip: "Clip"
createNew: "Créer nouveau"
optional: "Facultatif" optional: "Facultatif"
createNewClip: "Créer un nouveau clip" createNewClip: "Créer un nouveau clip"
public: "Public" public: "Public"
@ -806,6 +808,7 @@ _reversi:
canPutEverywhere: "Les pions peuvent être placés partout " canPutEverywhere: "Les pions peuvent être placés partout "
_instanceTicker: _instanceTicker:
none: "Cacher " none: "Cacher "
remote: "Montrer pour les utilisateur·ice·s distant·e·s"
always: "Toujours afficher" always: "Toujours afficher"
_serverDisconnectedBehavior: _serverDisconnectedBehavior:
reload: "Rechargement automatique" reload: "Rechargement automatique"
@ -823,11 +826,12 @@ _channel:
notesCount: "{n} Notes" notesCount: "{n} Notes"
_sidebar: _sidebar:
full: "Complet" full: "Complet"
icon: "Avatar" icon: "Icônes"
hide: "Masquer" hide: "Masquer"
_wordMute: _wordMute:
muteWords: "Mots à filtrer" muteWords: "Mots à filtrer"
muteWordsDescription: "Séparer avec des espaces pour la condition AND. Séparer avec un saut de ligne pour une condition OR." muteWordsDescription: "Séparer avec des espaces pour la condition AND. Séparer avec un saut de ligne pour une condition OR."
muteWordsDescription2: "Pour utiliser des expressions régulières (regex), mettez les mots-clés entre barres obliques."
softDescription: "Masquez les notes de votre fil selon les paramètres que vous définissez." softDescription: "Masquez les notes de votre fil selon les paramètres que vous définissez."
hardDescription: "Empêchez votre fil de charger les notes selon les paramètres que vous définissez. Cette action est irréversible : si vous modifiez ces paramètres plus tard, les notes précédemment filtrées ne seront pas récupérées." hardDescription: "Empêchez votre fil de charger les notes selon les paramètres que vous définissez. Cette action est irréversible : si vous modifiez ces paramètres plus tard, les notes précédemment filtrées ne seront pas récupérées."
soft: "Doux" soft: "Doux"
@ -902,6 +906,8 @@ _sfx:
chatBg: "Discuter (De fond)" chatBg: "Discuter (De fond)"
antenna: "Réception de lantenne" antenna: "Réception de lantenne"
channel: "Notifications de canal" channel: "Notifications de canal"
reversiPutBlack: "Reversi : les pions noirs ont joué"
reversiPutWhite: "Reversi : les pions blancs ont joué"
_ago: _ago:
unknown: "Inconnu" unknown: "Inconnu"
future: "Futur" future: "Futur"
@ -953,12 +959,12 @@ _2fa:
_permissions: _permissions:
"read:account": "Afficher les informations du compte" "read:account": "Afficher les informations du compte"
"write:account": "Mettre à jour les informations de votre compte" "write:account": "Mettre à jour les informations de votre compte"
"read:blocks": "Voir les blocs" "read:blocks": "Voir les comptes bloqués"
"write:blocks": "Écrire des blocs" "write:blocks": "Gérer les comptes bloqués"
"read:drive": "Parcourir le Drive" "read:drive": "Parcourir le Drive"
"write:drive": "Écrire sur le Drive" "write:drive": "Écrire sur le Drive"
"read:favorites": "Afficher les favoris" "read:favorites": "Afficher les favoris"
"write:favorites": "Écrire des favoris" "write:favorites": "Gérer les favoris"
"read:following": "Voir les informations de vos abonnements" "read:following": "Voir les informations de vos abonnements"
"write:following": "Abonnements/Se désabonner" "write:following": "Abonnements/Se désabonner"
"read:messaging": "Cherche à discuter" "read:messaging": "Cherche à discuter"
@ -1012,7 +1018,7 @@ _widgets:
photos: "Photos" photos: "Photos"
digitalClock: "Horloge numérique" digitalClock: "Horloge numérique"
federation: "Fédération" federation: "Fédération"
postForm: "Formulaire à publier" postForm: "Formulaire de publication"
slideshow: "Diaporama" slideshow: "Diaporama"
button: "Bouton" button: "Bouton"
onlineUsers: "Utilisateurs en ligne" onlineUsers: "Utilisateurs en ligne"
@ -1083,8 +1089,8 @@ _profile:
_exportOrImport: _exportOrImport:
allNotes: "Toutes les notes" allNotes: "Toutes les notes"
followingList: "Abonnements" followingList: "Abonnements"
muteList: "Liste des comptes maqués" muteList: "Comptes masqués"
blockingList: "Bloquer" blockingList: "Comptes bloqués"
userLists: "Listes" userLists: "Listes"
_charts: _charts:
federationInstancesIncDec: "Variation du nombre des instances fédérées" federationInstancesIncDec: "Variation du nombre des instances fédérées"
@ -1228,17 +1234,17 @@ _pages:
if: "Si" if: "Si"
_if: _if:
variable: "Variables" variable: "Variables"
post: "Formulaire à publier" post: "Formulaire de publication"
_post: _post:
text: "Contenu" text: "Contenu"
attachCanvasImage: "Publier avec Toile comme image" attachCanvasImage: "Publier avec Toile comme image"
canvasId: "Toile ID" canvasId: "Toile ID"
textInput: "Entrée de textuelle" textInput: "Entrée textuelle"
_textInput: _textInput:
name: "Nom de la variable" name: "Nom de la variable"
text: "Titre" text: "Titre"
default: "Valeur par défaut" default: "Valeur par défaut"
textareaInput: "Entrée de textuelle multiligne" textareaInput: "Entrée textuelle multi-ligne"
_textareaInput: _textareaInput:
name: "Nom de la variable" name: "Nom de la variable"
text: "Titre" text: "Titre"
@ -1253,10 +1259,12 @@ _pages:
id: "Toile ID" id: "Toile ID"
width: "Largeur" width: "Largeur"
height: "Hauteur" height: "Hauteur"
note: "Note intégrée"
_note: _note:
id: "Identifiant de la note" id: "Identifiant de la note"
idDescription: "Pour configurer la note, vous pouvez aussi coller ici l'URL correspondante."
detailed: "Afficher les détails" detailed: "Afficher les détails"
switch: "Basculer" switch: "Interrupteur"
_switch: _switch:
name: "Nom de la variable" name: "Nom de la variable"
text: "Titre" text: "Titre"
@ -1265,16 +1273,16 @@ _pages:
_counter: _counter:
name: "Nom de la variable" name: "Nom de la variable"
text: "Titre" text: "Titre"
inc: "Augmenter le chiffre" inc: "Augmenter de"
_button: _button:
text: "Titre" text: "Titre"
colored: "Coloré" colored: "Coloré"
action: "L'opération lorsque le bouton sera pressé" action: "Opération à effectuer lorsque le bouton est pressé"
_action: _action:
dialog: "Afficher une fenêtre de dialogue" dialog: "Afficher une fenêtre de dialogue"
_dialog: _dialog:
content: "Contenu" content: "Contenu"
resetRandom: "Réinitialiser le nombre aléatoire" resetRandom: "Réinitialiser un nombre aléatoire"
pushEvent: "Envoyer un évènement" pushEvent: "Envoyer un évènement"
_pushEvent: _pushEvent:
event: "Nom de lévènement" event: "Nom de lévènement"
@ -1288,7 +1296,7 @@ _pages:
_radioButton: _radioButton:
name: "Nom de la variable" name: "Nom de la variable"
title: "Titre" title: "Titre"
values: "Choix séparés par des sauts de ligne" values: "Liste des choix (un par ligne)"
default: "Valeur par défaut" default: "Valeur par défaut"
script: script:
categories: categories:
@ -1304,7 +1312,7 @@ _pages:
list: "Listes" list: "Listes"
blocks: blocks:
text: "Texte" text: "Texte"
multiLineText: "Texte (Multi-lignes)" multiLineText: "Texte (multi-ligne)"
textList: "Liste de texte" textList: "Liste de texte"
_textList: _textList:
info: "Veuillez séparer chaque entrée avec un saut de ligne" info: "Veuillez séparer chaque entrée avec un saut de ligne"
@ -1347,10 +1355,10 @@ _pages:
_mod: _mod:
arg1: "A" arg1: "A"
arg2: "B" arg2: "B"
round: "Décimal rond" round: "Arrondir les décimales"
_round: _round:
arg1: "Numérique" arg1: "Numérique"
eq: "A et B sont équivalents" eq: "A et B sont égaux"
_eq: _eq:
arg1: "A" arg1: "A"
arg2: "B" arg2: "B"
@ -1366,7 +1374,7 @@ _pages:
_or: _or:
arg1: "A" arg1: "A"
arg2: "B" arg2: "B"
lt: "A est plus petit que B" lt: "A est inférieur à B"
_lt: _lt:
arg1: "A" arg1: "A"
arg2: "B" arg2: "B"
@ -1374,7 +1382,7 @@ _pages:
_gt: _gt:
arg1: "A" arg1: "A"
arg2: "B" arg2: "B"
ltEq: "A est plus petit ou égal à B" ltEq: "A est inférieur ou égal à B"
_ltEq: _ltEq:
arg1: "A" arg1: "A"
arg2: "B" arg2: "B"
@ -1440,7 +1448,7 @@ _pages:
numberToString: "Convertir du numérique en texte" numberToString: "Convertir du numérique en texte"
_numberToString: _numberToString:
arg1: "Numérique" arg1: "Numérique"
splitStrByLine: "Séparer le texte par lignes" splitStrByLine: "Séparer le texte par des sauts de lignes"
_splitStrByLine: _splitStrByLine:
arg1: "Texte" arg1: "Texte"
ref: "Variables" ref: "Variables"
@ -1448,7 +1456,7 @@ _pages:
fn: "Fonction" fn: "Fonction"
_fn: _fn:
slots: "Slots" slots: "Slots"
slots-info: "Veuillez délimiter chaque slot par un saut de ligne" slots-info: "Veuillez insérer un seul slot par ligne"
arg1: "Sortie" arg1: "Sortie"
for: "Répéter" for: "Répéter"
_for: _for:
@ -1482,18 +1490,19 @@ _notification:
youWereFollowed: "Vous suit" youWereFollowed: "Vous suit"
youReceivedFollowRequest: "Vous avez reçu une demande dabonnement" youReceivedFollowRequest: "Vous avez reçu une demande dabonnement"
yourFollowRequestAccepted: "Votre demande dabonnement a été accepté" yourFollowRequestAccepted: "Votre demande dabonnement a été accepté"
youWereInvitedToGroup: "Invité au groupe" youWereInvitedToGroup: "Invité·e au groupe"
_types: _types:
all: "Toutes" all: "Toutes"
follow: "Abonnements" follow: "Abonnements"
mention: "Mentionner" mention: "Mentions"
reply: "Réponses" reply: "Réponses"
renote: "Partager" renote: "Partager"
quote: "Citer" quote: "Citer"
reaction: "Réactions" reaction: "Réactions"
pollVote: "Votes dans des sondages"
receiveFollowRequest: "Demande d'abonnement reçue" receiveFollowRequest: "Demande d'abonnement reçue"
followRequestAccepted: "Demande d'abonnement acceptée" followRequestAccepted: "Demande d'abonnement acceptée"
groupInvited: "Invité aux groupes" groupInvited: "Invitation à un groupe"
app: "Notifications provenant des apps" app: "Notifications provenant des apps"
_deck: _deck:
alwaysShowMainColumn: "Toujours afficher la colonne principale" alwaysShowMainColumn: "Toujours afficher la colonne principale"

View File

@ -1,6 +1,7 @@
--- ---
_lang_: "Italiano" _lang_: "Italiano"
headlineMisskey: "Rete collegata tramite note" headlineMisskey: "Rete collegata tramite note"
introMisskey: "Benvenut@! Misskey è un servizio di microblogging decentralizzato, libero e aperto. \nScrivi \"note\" per condividere ciò che sta succedendo adesso o per dire a tutti qualcosa di te. 📡\nGrazie alla funzione \"reazioni\" puoi anche mandare reazioni rapide alle note delle altre persone del Fediverso. 👍\nEsplora un nuovo mondo! 🚀"
monthAndDay: "{day}/{month}" monthAndDay: "{day}/{month}"
search: "Cerca" search: "Cerca"
notifications: "Notifiche" notifications: "Notifiche"
@ -11,7 +12,7 @@ ok: "OK"
gotIt: "Capito!" gotIt: "Capito!"
cancel: "Annulla" cancel: "Annulla"
enterUsername: "Inserisci un nome utente" enterUsername: "Inserisci un nome utente"
renotedBy: "Condiviso da {user}" renotedBy: "Rinotato da {user}"
noNotes: "Nessuna nota!" noNotes: "Nessuna nota!"
noNotifications: "Nessuna notifica" noNotifications: "Nessuna notifica"
instance: "Istanza" instance: "Istanza"
@ -21,6 +22,7 @@ otherSettings: "Altre impostazioni"
openInWindow: "Apri in una finestra" openInWindow: "Apri in una finestra"
profile: "Profilo" profile: "Profilo"
timeline: "Timeline" timeline: "Timeline"
noAccountDescription: "L'utente non ha ancora scritto niente nella biografia di profilo."
login: "Accedi" login: "Accedi"
loggingIn: "Accesso in corso..." loggingIn: "Accesso in corso..."
logout: "Esci" logout: "Esci"
@ -32,15 +34,16 @@ addUser: "Aggiungi utente"
favorite: "Preferiti" favorite: "Preferiti"
favorites: "Preferiti" favorites: "Preferiti"
unfavorite: "Rimuovi nota dai preferiti" unfavorite: "Rimuovi nota dai preferiti"
favorited: "Aggiunta ai preferiti." favorited: "Aggiunta ai tuoi preferiti."
alreadyFavorited: "Già tra i preferiti." alreadyFavorited: "Già tra i tuoi preferiti."
cantFavorite: "Impossibile aggiungere ai Preferiti." cantFavorite: "Impossibile aggiungere la nota ai preferiti."
pin: "Fissa sul profilo" pin: "Fissa sul profilo"
unpin: "Non fissare sul profilo" unpin: "Non fissare sul profilo"
copyContent: "Copia il contenuto" copyContent: "Copia il contenuto"
copyLink: "Copia link" copyLink: "Copia il link"
delete: "Elimina" delete: "Elimina"
deleteAndEdit: "Elimina & Modifica" deleteAndEdit: "Elimina e modifica"
deleteAndEditConfirm: "Vuoi davvero cancellare questa nota e scriverla di nuovo? Verrano eliminate anche tutte le reazioni, Rinote e risposte collegate."
addToList: "Aggiungi alla lista" addToList: "Aggiungi alla lista"
sendMessage: "Invia messaggio" sendMessage: "Invia messaggio"
copyUsername: "Copia nome utente" copyUsername: "Copia nome utente"
@ -49,65 +52,104 @@ reply: "Rispondi"
loadMore: "Mostra di più" loadMore: "Mostra di più"
showMore: "Mostra di più" showMore: "Mostra di più"
youGotNewFollower: "Ha iniziato a seguirti" youGotNewFollower: "Ha iniziato a seguirti"
receiveFollowRequest: "Nuova richiesta di essere seguito" receiveFollowRequest: "Hai ricevuto una richiesta di follow."
followRequestAccepted: "Richiesta di follow accettata"
mention: "Menzioni" mention: "Menzioni"
mentions: "Menzioni" mentions: "Menzioni"
directNotes: "Note dirette" directNotes: "Note dirette"
importAndExport: "Importa ed Esporta" importAndExport: "Importa ed esporta"
import: "Importa" import: "Importa"
export: "Esporta" export: "Esporta"
files: "Allegato" files: "Allegati"
download: "Scarica" download: "Scarica"
driveFileDeleteConfirm: "Vuoi davvero eliminare il file「{name}? Anche gli allegati verranno eliminati."
unfollowConfirm: "Vuoi davvero smettere di seguire {name}?"
exportRequested: "Hai richiesto un'esportazione, e potrebbe volerci tempo. Quando sarà compiuta, il file verrà aggiunto direttamente al Drive."
importRequested: "Hai richiesto un'importazione. Può volerci tempo. "
lists: "Liste" lists: "Liste"
noLists: "Qui non c'è ancora niente" noLists: "Nessuna lista"
note: "Nota" note: "Nota"
notes: "Note" notes: "Note"
following: "Seiguiti" following: "Follows"
followers: "Seguaci" followers: "Followers"
followsYou: "Ti segue" followsYou: "Ti segue"
createList: "Crea una nuova lista" createList: "Aggiungi una nuova lista"
manageLists: "Modifica lista" manageLists: "Gestisci liste"
error: "Errore" error: "Errore"
somethingHappened: "Qualcosa è andato storto." somethingHappened: "Si è verificato un problema"
retry: "Riprova" retry: "Riprova"
enterListName: "Inserisci il nome della lista" pageLoadError: "Caricamento pagina non riuscito. "
enterListName: "Nome della lista"
privacy: "Privacy" privacy: "Privacy"
makeFollowManuallyApprove: "Richiedi di approvare i follower manualmente"
defaultNoteVisibility: "Privacy predefinita delle note"
follow: "Segui" follow: "Segui"
followRequest: "Richiesta di seguire" followRequest: "Richiesta di follow"
followRequests: "Richiesta di seguire" followRequests: "Richieste di follow"
unfollow: "Smetti di seguire" unfollow: "Smetti di seguire"
followRequestPending: "In sospeso" followRequestPending: "La richiesta di follow deve essere approvata"
enterEmoji: "Inserisci emoji" enterEmoji: "Inserisci emoji"
renote: "Rinota" renote: "Rinota"
unrenote: "Annulla rinota" unrenote: "Annulla rinota"
renoted: "Condiviso!" renoted: "Rinotato!"
cantReRenote: "È impossibile rinota una condivisione." cantRenote: "È impossibile rinotare questa nota."
cantReRenote: "È impossibile rinotare una Rinota."
quote: "Cita" quote: "Cita"
pinnedNote: "Nota fissata"
pinned: "Fissa sul profilo" pinned: "Fissa sul profilo"
you: "Tu" you: "Tu"
clickToShow: "Clicca per visualizzare" clickToShow: "Clicca per visualizzare"
sensitive: "Contenuto sensibile" sensitive: "Contenuto sensibile"
add: "Aggiungi" add: "Aggiungi"
reaction: "Reazione" reaction: "Reazione"
reactionSettingDescription: "Scegli le reazioni che preferisci e fissale nel pannello di reazioni."
reactionSettingDescription2: "Trascina per riorganizzare, clicca per cancellare, usa il pulsante \"+\" per aggiungere."
rememberNoteVisibility: "Ricordare le impostazioni di visibilità delle note"
attachCancel: "Rimuovi allegato" attachCancel: "Rimuovi allegato"
markAsSensitive: "Segna come sensibile" markAsSensitive: "Segna come sensibile"
unmarkAsSensitive: "Segna come non sensibile" unmarkAsSensitive: "Segna come non sensibile"
enterFileName: "Nome del file"
mute: "Silenzia" mute: "Silenzia"
unmute: "Riattiva" unmute: "Riattiva"
block: "Blocca" block: "Blocca"
unblock: "Sblocca" unblock: "Sblocca"
suspend: "Sospendi" suspend: "Sospendi"
unsuspend: "Annulla la sospensione dell'account" unsuspend: "Annulla la sospensione dell'account"
blockConfirm: "Vuoi bloccare?" blockConfirm: "Vuoi davvero bloccare l'account?"
unblockConfirm: "Vuoi sbloccare?" unblockConfirm: "Vuoi davvero sbloccare l'account?"
suspendConfirm: "Vuoi davvero sospendere questo account?"
unsuspendConfirm: "Vuoi annullare la sospensione dell'account?"
selectList: "Seleziona una lista"
selectAntenna: "Scegli un'antenna"
selectWidget: "Seleziona widget"
editWidgets: "Modifica i widget"
editWidgetsExit: "Modifica fine" editWidgetsExit: "Modifica fine"
customEmojis: "Emoji personalizzati"
emoji: "Emoji" emoji: "Emoji"
addAcount: "Aggiungi un account esistente" emojiName: "Nome dell'emoji"
emojiUrl: "URL dell'emoji"
addEmoji: "Aggiungi un emoji"
settingGuide: "Configurazione suggerita"
cacheRemoteFiles: "Memorizzazione nella cache dei file remoti"
flagAsBot: "Io sono un robot"
flagAsBotDescription: "Se l'account esegue principalmente operazioni automatiche, attiva quest'opzione. Quando attivata, opera come un segnalatore per gli altri sviluppatori allo scopo di prevenire catene dinterazione senza fine con altri bot, e di adeguare i sistemi interni di Misskey perché trattino questo account come un bot."
flagAsCat: "Io sono un gatto"
flagAsCatDescription: "Abilita l'opzione \"Io sono un gatto\" per l'account."
autoAcceptFollowed: "Accetta automaticamente le richieste di follow da utenti che già segui"
addAcount: "Aggiungi account"
loginFailed: "Accesso non riuscito"
showOnRemote: "Sfoglia sull'istanza remota"
general: "Generali" general: "Generali"
wallpaper: "Sfondo" wallpaper: "Sfondo"
setWallpaper: "Imposta sfondo" setWallpaper: "Imposta sfondo"
removeWallpaper: "Elimina lo sfondo" removeWallpaper: "Elimina lo sfondo"
searchWith: "Cerca: {q}" searchWith: "Cerca: {q}"
youHaveNoLists: "Non hai ancora creato nessuna lista"
followConfirm: "Sei sicur@ di voler seguire {name}?"
proxyAccount: "Account proxy"
host: "Server remoto"
selectUser: "Seleziona utente"
recipient: "Destinatario"
annotation: "Descrizione" annotation: "Descrizione"
federation: "Federazione" federation: "Federazione"
instances: "Istanza" instances: "Istanza"
@ -115,36 +157,62 @@ storageUsage: "Volume di dischi"
charts: "Grafici" charts: "Grafici"
perHour: "All'ora" perHour: "All'ora"
perDay: "al giorno" perDay: "al giorno"
blockThisInstance: "Blocca l'istanza"
operations: "Operazioni"
software: "Software" software: "Software"
version: "Versione" version: "Versione"
metadata: "Metadato" metadata: "Metadato"
withNFiles: "{n} file in allegato"
monitor: "Monitorare"
jobQueue: "Coda di lavoro"
cpuAndMemory: "CPU e Memoria" cpuAndMemory: "CPU e Memoria"
network: "Rete" network: "Rete"
disk: "Disco" disk: "Disco"
instanceInfo: "Informazioni di istanza" instanceInfo: "Informazioni sull'istanza"
statistics: "Statistiche" statistics: "Statistiche"
clearQueue: "Cancella coda" clearQueue: "Svuota coda"
clearQueueConfirmTitle: "Cancella coda?" clearQueueConfirmTitle: "Vuoi davvero svuotare la coda?"
blockedInstances: "Istanza bloccati" clearCachedFiles: "Svuota cache"
muteAndBlock: "Silenziamento e blocco" clearCachedFilesConfirm: "Vuoi davvero svuotare la cache da tutti i file remoti?"
blockedInstances: "Istanze bloccate"
blockedInstancesDescription: "Elenca le istanze che vuoi bloccare, una per riga. Esse non potranno più interagire con la tua istanza."
muteAndBlock: "Silenziati / Bloccati"
mutedUsers: "Account silenziati" mutedUsers: "Account silenziati"
blockedUsers: "Account bloccati" blockedUsers: "Account bloccati"
noUsers: "Nessun utente trovato"
editProfile: "Modifica profilo" editProfile: "Modifica profilo"
noteDeleteConfirm: "Eliminare questo Nota?" noteDeleteConfirm: "Eliminare questo Nota?"
pinLimitExceeded: "Non puoi fissare altre note "
intro: "L'installazione di Misskey è finita! Si prega di creare un account amministratore."
done: "Fine" done: "Fine"
processing: "In elaborazione" processing: "In elaborazione"
blocked: "Bloccati" preview: "Anteprima"
default: "Predefinito"
noCustomEmojis: "Nessun emoji"
noJobs: "Nessun lavoro"
federating: "Federando"
blocked: "Bloccato"
suspended: "Sospes@"
all: "Tutti" all: "Tutti"
subscribing: "Iscrivendo"
publishing: "Pubblicando"
notResponding: "Nessuna risposta" notResponding: "Nessuna risposta"
instanceFollowing: "Seguiti dall'istanza"
instanceFollowers: "Followers dell'istanza"
instanceUsers: "Utenti dell'istanza"
changePassword: "Aggiorna Password" changePassword: "Aggiorna Password"
security: "Sicurezza" security: "Sicurezza"
retypedNotMatch: "Le password non corrispondono." retypedNotMatch: "Le password non corrispondono."
currentPassword: "Password attuale" currentPassword: "Password attuale"
newPassword: "Nuova Password" newPassword: "Nuova Password"
newPasswordRetype: "Conferma nuova password" newPasswordRetype: "Conferma password"
attachFile: "Allega file"
more: "Altri!" more: "Altri!"
featured: "Tendenze"
usernameOrUserId: "Nome utente o ID utente"
noSuchUser: "Nessun utente trovato"
lookup: "Cercare" lookup: "Cercare"
announcements: "Annuncio" announcements: "Annunci"
imageUrl: "URL dell'immagine" imageUrl: "URL dell'immagine"
remove: "Elimina" remove: "Elimina"
removed: "Il tuo Tweet è stato eliminato" removed: "Il tuo Tweet è stato eliminato"
@ -154,31 +222,66 @@ resetAreYouSure: "Reimposta"
saved: "Salvato" saved: "Salvato"
messaging: "Messaggi" messaging: "Messaggi"
upload: "Carica" upload: "Carica"
fromDrive: "Dal Drive"
fromUrl: "Dall'URL"
uploadFromUrl: "Incolla URL immagine" uploadFromUrl: "Incolla URL immagine"
uploadFromUrlDescription: "URL del file che vuoi caricare"
uploadFromUrlRequested: "Caricamento richiesto"
uploadFromUrlMayTakeTime: "Il caricamento del file può richiedere tempo."
explore: "Esplora" explore: "Esplora"
games: "Misskey Giochi" games: "Misskey Giochi"
messageRead: "Visualizzato" messageRead: "Visualizzato"
noMoreHistory: "Non c'è più cronologia da visualizzare"
startMessaging: "Nuovo messaggio" startMessaging: "Nuovo messaggio"
nUsersRead: "Letto da {n} persone"
agreeTo: "Sono d'accordo con {0}"
tos: "Termini di servizio" tos: "Termini di servizio"
start: "Inizia!"
home: "Home" home: "Home"
remoteUserCaution: "Può darsi che le informazioni siano incomplete perché questo è un utente remoto."
activity: "Attività"
images: "Immagini" images: "Immagini"
birthday: "Compleanno" birthday: "Compleanno"
yearsOld: "{age}Anni" yearsOld: "{age}Anni"
registeredDate: "Iscrizione a.." registeredDate: "Iscrizione a.."
location: "Posizione" location: "Posizione"
theme: "Tema" theme: "Tema"
themeForLightMode: "Tema da utilizzare per il modo chiaro"
themeForDarkMode: "Tema da utilizzare per il modo scuro"
light: "Chiaro" light: "Chiaro"
dark: "Scuro" dark: "Scuro"
lightThemes: "Tema Chiaro" lightThemes: "Tema Chiaro"
darkThemes: "Tema Scuro" darkThemes: "Tema Scuro"
syncDeviceDarkMode: "Sincronizza il tema scuro con le impostazioni del dispositivo"
drive: "Drive" drive: "Drive"
fileName: "Nome dell'allegato" fileName: "Nome dell'allegato"
selectFile: "Scelta allegato"
selectFiles: "Scelta allegato"
selectFolder: "Seleziona cartella"
selectFolders: "Seleziona cartella"
renameFile: "Rinomina file"
folderName: "Nome della cartella"
createFolder: "Nuova cartella"
renameFolder: "Rinominare cartella"
deleteFolder: "Elimina cartella"
addFile: "Allega"
emptyDrive: "Il Drive è vuoto"
emptyFolder: "La cartella è vuota"
unableToDelete: "Eliminazione impossibile"
inputNewFileName: "Inserisci nome del nuovo file"
inputNewFolderName: "Inserisci nome della nuova cartella"
circularReferenceFolder: "La cartella di destinazione è una sottocartella della cartella che vuoi spostare."
hasChildFilesOrFolders: "Impossibile eliminare la cartella perché non è vuota"
copyUrl: "Copia URL" copyUrl: "Copia URL"
rename: "Modifica nome" rename: "Modifica nome"
avatar: "Foto del profilo" avatar: "Foto del profilo"
banner: "Foto d'intestazione" banner: "Intestazione"
nsfw: "Contenuti sensibili" nsfw: "Contenuti sensibili"
whenServerDisconnected: "Quando la connessione col server è persa"
disconnectedFromServer: "Disconness@ dal server"
reload: "Ricarica" reload: "Ricarica"
doNothing: "Nessun'azione"
reloadConfirm: "Vuoi ricaricare?"
watch: "Osserva" watch: "Osserva"
unwatch: "Smetti di Osserva" unwatch: "Smetti di Osserva"
accept: "Accetta" accept: "Accetta"
@ -195,21 +298,64 @@ today: "Oggi"
dayX: "{day}" dayX: "{day}"
monthX: "{month}" monthX: "{month}"
yearX: "{year}" yearX: "{year}"
pages: "Pagine"
integration: "App collegate" integration: "App collegate"
connectSerice: "Connetti" connectSerice: "Connetti"
disconnectSerice: "Disconnetti" disconnectSerice: "Disconnetti"
enableLocalTimeline: "Abilita Timeline locale"
enableGlobalTimeline: "Abilita Timeline federata"
disablingTimelinesInfo: "Anche se disabiliti queste timeline, gli amministratori e i moderatori potranno sempre accederci."
registration: "Iscriviti" registration: "Iscriviti"
enableRegistration: "Permettere nuove registrazioni"
invite: "Invita" invite: "Invita"
bannerUrl: "indirizzo Foto d'intestazione" proxyRemoteFiles: "Usare file remoti come proxy"
driveCapacityPerLocalAccount: "Volume del Drive per utente locale"
driveCapacityPerRemoteAccount: "Volume del Drive per utente remoto"
inMb: "in Megabytes"
iconUrl: "URL di icona (favicon, ecc.)"
bannerUrl: "URL dell'immagine d'intestazione"
basicInfo: "Informazioni fondamentali" basicInfo: "Informazioni fondamentali"
pinnedUsers: "Utenti in evidenza"
pinnedUsersDescription: "Elenca gli/le utenti che vuoi fissare in cima alla pagina \"Esplora\", un@ per riga."
pinnedPages: "Pagine in evidenza"
pinnedPagesDescription: "Specifica il percorso delle pagine che vuoi fissare in cima alla pagina dell'istanza. Una pagina per riga."
pinnedClipId: "ID della clip in evidenza"
pinnedNotes: "Nota fissata"
hcaptcha: "hCaptcha" hcaptcha: "hCaptcha"
enableHcaptcha: "Abilita hCaptcha" enableHcaptcha: "Abilita hCaptcha"
hcaptchaSiteKey: "Chiave del sito"
hcaptchaSecretKey: "Chiave segreta"
recaptcha: "reCAPTCHA" recaptcha: "reCAPTCHA"
enableRecaptcha: "Abilita reCAPTCHA" enableRecaptcha: "Abilita reCAPTCHA"
recaptchaSiteKey: "Chiave del sito"
recaptchaSecretKey: "Chiave segreta"
antennas: "Antenne"
manageAntennas: "Gestore delle antenne"
name: "Nome" name: "Nome"
antennaSource: "Fonte dell'antenna"
antennaKeywords: "Parole chiavi da ricevere"
antennaExcludeKeywords: "Parole chiavi da escludere"
antennaKeywordsDescription: "Separare con uno spazio indica la condizione \"E\". Separare con un'interruzzione riga indica la condizione \"O\"."
notifyAntenna: "Invia notifiche delle nuove note"
withFileAntenna: "Solo note con file in allegato"
serviceworker: "ServiceWorker" serviceworker: "ServiceWorker"
enableServiceworker: "Abilita ServiceWorker"
antennaUsersDescription: "Inserisci solo un nome utente per riga"
caseSensitive: "Sensibile alla distinzione tra maiuscole e minuscole"
withReplies: "Includere le risposte"
connectedTo: "Sei conness@ agli account qui sotto:"
notesAndReplies: "Note e risposte" notesAndReplies: "Note e risposte"
exploreFediverse: "Esplora Fediverse" withFiles: "Con file in allegato"
silence: "Silenzia"
silenceConfirm: "Vuoi davvero silenziare l'utente?"
unsilence: "Riattiva"
unsilenceConfirm: "Vuoi davvero riattivare l'utente?"
popularUsers: "Utenti popolari"
recentlyUpdatedUsers: "Utenti attivi di recente"
recentlyRegisteredUsers: "Utenti registrati di recente"
recentlyDiscoveredUsers: "Utenti scoperti di recente"
exploreUsersCount: "Ci sono {count} utenti"
exploreFediverse: "Esplora il Fediverso"
popularTags: "Tag di tendenza" popularTags: "Tag di tendenza"
userList: "Liste" userList: "Liste"
about: "Informazioni" about: "Informazioni"
@ -218,96 +364,243 @@ administrator: "Amministratore"
token: "Token" token: "Token"
twoStepAuthentication: "Autenticazione a due fattori" twoStepAuthentication: "Autenticazione a due fattori"
moderator: "Moderatore" moderator: "Moderatore"
nUsersMentioned: "{n} utenti menzionatə"
securityKey: "Chiave di sicurezza"
securityKeyName: "Nome della chiave"
registerSecurityKey: "Registra una chiave di sicurezza"
lastUsed: "Ultima attività" lastUsed: "Ultima attività"
unregister: "Disattiva account" unregister: "Annulla l'iscrizione"
passwordLessLogin: "Accedi senza password"
resetPassword: "Reimposta password" resetPassword: "Reimposta password"
share: "Renota" newPasswordIs: "La tua nuova password è「{password}」"
reduceUiAnimation: "Ridurre le animazioni dell'interfaccia"
share: "Condividi"
notFound: "Non trovato"
notFoundDescription: "Nessuna pagina corrisponde all'URL indicata."
uploadFolder: "Destinazione caricamento predefinita"
cacheClear: "Svuota cache" cacheClear: "Svuota cache"
markAsReadAllNotifications: "Segna tutte le notifiche come lette"
markAsReadAllUnreadNotes: "Segna tutte le note come lette"
markAsReadAllTalkMessages: "Segna tutte le chat come lette"
help: "Guida" help: "Guida"
inputMessageHere: "Scrivi messaggio qui"
close: "Chiudi" close: "Chiudi"
group: "Gruppo" group: "Gruppo"
groups: "Gruppi" groups: "Gruppi"
createGroup: "Nuovo gruppo" createGroup: "Nuovo gruppo"
invites: "Invita" ownedGroups: "I miei gruppi"
joinedGroups: "Gruppi a cui mi sono unit@"
invites: "Inviti"
groupName: "Nome del gruppo"
members: "Membri"
transfer: "Trasferisci" transfer: "Trasferisci"
messagingWithUser: "Iniziare una chat con un altr@ utente"
messagingWithGroup: "Chattare in gruppo"
title: "Titolo" title: "Titolo"
text: "Testo"
enable: "Abilita"
next: "Avanti" next: "Avanti"
retype: "Conferma"
noteOf: "Note di {user}" noteOf: "Note di {user}"
inviteToGroup: "Invitare al gruppo"
maxNoteTextLength: "Lunghezza massima delle note"
quoteAttached: "Citazione allegata"
quoteQuestion: "Vuoi aggiungere una citazione?"
noMessagesYet: "Ancora nessuna chat"
newMessageExists: "Hai ricevuto un nuovo messaggio"
onlyOneFileCanBeAttached: "È possibile allegare al messaggio soltanto uno file"
signinRequired: "Devi essere registrat@ nel tuo account"
invitations: "Invita" invitations: "Invita"
invitationCode: "Codice di invito" invitationCode: "Codice di invito"
checking: "Confermando"
available: "Consigliati" available: "Consigliati"
unavailable: "Il nome utente è già in uso" unavailable: "Il nome utente è già in uso"
usernameInvalidFormat: "Il nome utente può contenere solo lettere, numeri e '_'" usernameInvalidFormat: "Il nome utente può contenere solo lettere, numeri e '_'"
tooShort: "Troppo breve" tooShort: "Troppo breve"
tooLong: "Troppo lungo" tooLong: "Troppo lungo"
weakPassword: "Password debole"
normalPassword: "Password buona"
strongPassword: "Password forte"
passwordMatched: "Corretta"
passwordNotMatched: "Le password non corrispondono." passwordNotMatched: "Le password non corrispondono."
signinWith: "Accedi con {x}"
signinFailed: "Autenticazione non riuscita. Controlla la tua password e nome utente."
tapSecurityKey: "Premi la chiave di sicurezza"
or: "oppure"
language: "Lingua"
uiLanguage: "Lingua di visualizzazione dell'interfaccia"
groupInvited: "Invitat@ al gruppo"
aboutX: "Informazioni su {x}"
useOsNativeEmojis: "Usare le emoji native del sistema operativo"
youHaveNoGroups: "Nessun gruppo"
joinOrCreateGroup: "Puoi creare il tuo gruppo o essere invitat@ a gruppi che già esistono."
noHistory: "Nessuna cronologia"
signinHistory: "Cronologia di accesso all'account" signinHistory: "Cronologia di accesso all'account"
category: "Categoria"
tags: "Tag" tags: "Tag"
docSource: "Sorgente della scheda"
createAccount: "Crea il tuo account" createAccount: "Crea il tuo account"
existingAcount: "Account esistente" existingAcount: "Account esistente"
regenerate: "Generare di nuovo"
fontSize: "Dimensione carattere"
noFollowRequests: "Non hai alcuna richiesta di follow"
openImageInNewTab: "Aprire immagini in una nuova scheda"
dashboard: "Pannello di controllo"
local: "Locale" local: "Locale"
remote: "Remoto" remote: "Remoto"
accountSettings: "Impostazioni Account" total: "Totale"
weekOverWeekChanges: "Settimanale"
dayOverDayChanges: "Giornaliero"
appearance: "Aspetto"
clientSettings: "Impostazioni client"
accountSettings: "Impostazioni account"
promotion: "Promossa"
promote: "Pubblicizza" promote: "Pubblicizza"
numberOfDays: "Numero di giorni"
hideThisNote: "Nasconda la nota"
showFeaturedNotesInTimeline: "Mostrare le note di tendenza nella tua timeline"
objectStorage: "Stoccaggio oggetti"
useObjectStorage: "Utilizza stoccaggio oggetti"
objectStorageBaseUrl: "Base URL" objectStorageBaseUrl: "Base URL"
objectStorageBucket: "Bucket" objectStorageBucket: "Bucket"
objectStoragePrefix: "Prefix"
objectStoragePrefixDesc: "I file saranno conservati sotto la directory di questo prefisso."
objectStorageEndpoint: "Endpoint" objectStorageEndpoint: "Endpoint"
objectStorageRegion: "Region" objectStorageRegion: "Region"
objectStorageUseSSL: "Usare SSL" objectStorageUseSSL: "Usare SSL"
serverLogs: "Log del server" serverLogs: "Log del server"
deleteAll: "Cancella cronologia" deleteAll: "Cancella cronologia"
sounds: "Effetti sonori" showFixedPostForm: "Visualizzare la finestra di pubblicazione in cima alla timeline"
newNoteRecived: "Nuova nota ricevuta"
sounds: "Impostazioni suoni"
listen: "Ascolta" listen: "Ascolta"
none: "Niente" none: "Niente"
showInPage: "Visualizza in pagina"
popout: "Finestra pop-out"
volume: "Volume" volume: "Volume"
masterVolume: "Volume principale"
details: "Dettagli" details: "Dettagli"
chooseEmoji: "Scegli emoji"
unableToProcess: "Impossibile compiere l'operazione"
recentUsed: "Usato di recente"
install: "Installa" install: "Installa"
uninstall: "Disinstalla" uninstall: "Disinstalla"
installedApps: "Applicazioni installate"
nothing: "Niente da visualizzare"
installedDate: "Data installazione" installedDate: "Data installazione"
lastUsedDate: "Data di ultimo uso"
state: "Stato" state: "Stato"
sort: "Ordina per" sort: "Ordina per"
visibility: "Privacy dei post" ascendingOrder: "Ascendente"
descendingOrder: "Discendente"
scratchpad: "ScratchPad"
output: "Uscita"
script: "Script"
disablePagesScript: "Disabilita AiScript nelle pagine"
updateRemoteUser: "Aggiornare le informazioni di utente remoto"
deleteAllFiles: "Elimina tutti i file"
deleteAllFilesConfirm: "Vuoi davvero eliminare tutti i file?"
removeAllFollowing: "Cancella tutti i follows"
removeAllFollowingDescription: "Cancella tutti i follows del server {host}. Per favore, esegui se, ad esempio, l'istanza non esiste più."
userSuspended: "L'utente è sospes@."
userSilenced: "L'utente è silenziat@."
sidebar: "Barra laterale"
divider: "Linea di separazione"
addItem: "Aggiungi elemento"
rooms: "Camera"
serviceworkerInfo: "Deve essere abilitato per le notifiche push. "
deletedNote: "Nota eliminata"
invisibleNote: "Nota invisibile"
enableInfiniteScroll: "Abilita scorrimento infinito"
visibility: "Visibilità"
poll: "Sondaggio" poll: "Sondaggio"
useCw: "Nascondere media" useCw: "Nascondere media"
expandTweet: "Espandi tweet"
themeEditor: "Editor di temi"
description: "Descrizione" description: "Descrizione"
author: "Autore" author: "Autore"
leaveConfirm: "Ci sono delle modifiche ancora non salvate. Vuoi cancellarle?"
manage: "Gestione"
useFullReactionPicker: "Usa la totalità del pannello di reazioni"
width: "Larghezza" width: "Larghezza"
height: "Altezza" height: "Altezza"
large: "Grande" large: "Grande"
medium: "Predefinito" medium: "Predefinito"
small: "Piccolo" small: "Piccolo"
enableAll: "Abilita tutto"
disableAll: "Disabilita tutto"
tokenRequested: "Autorizza accesso all'account"
notificationType: "Tipo di notifiche"
edit: "Modifica" edit: "Modifica"
useStarForReactionFallback: "Se è sconosciuto l'emoji di reazione, usare la ★ come alternativa."
emailConfig: "Impostazioni server email"
email: "Email" email: "Email"
smtpHost: "Server remoto"
smtpUser: "Nome utente" smtpUser: "Nome utente"
smtpPass: "Password" smtpPass: "Password"
wordMute: "Parole silenziate" wordMute: "Filtri parole"
userSaysSomething: "{name} ha detto qualcosa"
display: "Visualizza" display: "Visualizza"
copy: "Copia" copy: "Copia"
logs: "Log" logs: "Log"
database: "Base di dati" database: "Base di dati"
channel: "Canale" channel: "Canale"
notificationSetting: "impostazioni delle notifiche" create: "Crea"
notificationSetting: "Impostazioni notifiche"
notificationSettingDesc: "Seleziona il tipo di notifiche da visualizzare."
other: "Avanzate" other: "Avanzate"
fileIdOrUrl: "ID o URL del file"
abuseReports: "Segnala" abuseReports: "Segnala"
reportAbuse: "Segnala" reportAbuse: "Segnala"
reportAbuseOf: "Segnala {name}" reportAbuseOf: "Segnala {name}"
send: "Inviare" send: "Inviare"
openInNewTab: "Apri in una nuova scheda" openInNewTab: "Apri in una nuova scheda"
editTheseSettingsMayBreakAccount: "Modificare queste impostazioni può danneggiare l'account."
waitingFor: "Aspettando {x}"
random: "Casuale" random: "Casuale"
system: "Sistema" system: "Sistema"
switchUi: "Cambiare interfaccia utente"
desktop: "Desktop" desktop: "Desktop"
clip: "Clip"
createNew: "Crea nuov@"
optional: "Opzionale" optional: "Opzionale"
public: "Pubblico" createNewClip: "Nuova clip"
public: "Pubblica"
i18nInfo: "Misskey è tradotto in diverse lingue da volontari. Anche tu puoi contribuire su {link}."
notesCount: "Conteggio note"
repliesCount: "Numero di risposte inviate"
renotesCount: "Numero di note che hai ricondiviso"
repliedCount: "Numero di risposte ricevute"
renotedCount: "Numero delle tue note ricondivise"
followingCount: "Numero di account seguiti"
followersCount: "Numero di account che ti seguono"
sentReactionsCount: "Numero di reazioni inviate"
receivedReactionsCount: "Numero di reazioni ricevute"
pollVotesCount: "Numero di voti inviati"
pollVotedCount: "Numero di voti ricevuti"
yes: "Sì" yes: "Sì"
no: "No" no: "No"
driveFilesCount: "Numero di file nel Drive"
noteFavoritesCount: "Conteggio note tra i preferiti"
pageLikesCount: "Numero di pagine che ti piacciono"
pageLikedCount: "Numero delle tue pagine che hanno ricevuto \"Mi piace\""
reversiCount: "Numero di partite a Reversi"
contact: "Contatti" contact: "Contatti"
clips: "Clip"
experimentalFeatures: "Funzioni sperimentali"
developer: "Sviluppatore" developer: "Sviluppatore"
showGapBetweenNotesInTimeline: "Mostrare un intervallo tra le note sulla timeline"
duplicate: "Duplica" duplicate: "Duplica"
left: "Sinistra" left: "Sinistra"
center: "Centro" center: "Centro"
wide: "Largo" wide: "Largo"
clearCache: "Svuota cache"
onlineUsersCount: "{n} utenti online"
nUsers: "{n} utenti"
nNotes: "{n}Note" nNotes: "{n}Note"
myTheme: "I miei temi"
backgroundColor: "Sfondo" backgroundColor: "Sfondo"
textColor: "Testo"
value: "Valore" value: "Valore"
saveConfirm: "Vuoi salvare le modifiche?" saveConfirm: "Vuoi salvare le modifiche?"
deleteConfirm: "Rimuovere?" deleteConfirm: "Rimuovere?"
@ -317,45 +610,103 @@ currentVersion: "Versione attuale"
latestVersion: "Ultima versione" latestVersion: "Ultima versione"
editCode: "Modifica codice" editCode: "Modifica codice"
apply: "Applica" apply: "Applica"
emailNotification: "Eventi per notifiche via mail"
inChannelSearch: "Cerca in canale"
useReactionPickerForContextMenu: "Cliccare sul tasto destro per aprire il pannello di reazioni"
typingUsers: "{users} sta(nno) scrivendo"
showingPastTimeline: "Stai visualizzando una vecchia timeline"
_email: _email:
_follow: _follow:
title: "Ha iniziato a seguirti" title: "Ha iniziato a seguirti"
_receiveFollowRequest:
title: "Hai ricevuto una richiesta di follow"
_registry: _registry:
key: "Dati" key: "Dati"
keys: "Dati" keys: "Dati"
createKey: "Crea chiave"
_aboutMisskey: _aboutMisskey:
source: "Codice sorgente"
morePatrons: "Ci sono molti altri che ci sostengono. Grazie 🥰" morePatrons: "Ci sono molti altri che ci sostengono. Grazie 🥰"
_mfm: _mfm:
mention: "Menzioni" mention: "Menzioni"
mentionDescription: "Si può menzionare un utente specifico digitando il suo nome utente subito dopo il segno @."
hashtag: "Hashtag"
url: "URL" url: "URL"
link: "Link" link: "Link"
bold: "Grassetto" bold: "Grassetto"
blockCode: "Codice(blocco)" blockCode: "Codice (blocco)"
inlineMath: "Espressione matematica(Immersione)" inlineMath: "Espressione matematica(Immersione)"
blockMath: "Espressione matematica(blocco)" blockMath: "Formula matematica (blocco)"
quote: "Cita il nota" quote: "Cita il nota"
emoji: "Emoji personalizzati"
search: "Cerca" search: "Cerca"
blur: "Sfocatura" blur: "Sfocatura"
font: "Tipo di carattere" font: "Tipo di carattere"
_reversi: _reversi:
gameSettings: "Impostazioni di gioco"
botSettings: "Opzioni del bot"
black: "Nero" black: "Nero"
white: "Bianco" white: "Bianco"
total: "Totale"
ended: "Esci" ended: "Esci"
_instanceTicker:
none: "Nascondi"
remote: "Mostra solo per gli/le utenti remotə"
always: "Mostra sempre"
_channel: _channel:
create: "Nuovo canale"
edit: "Gerisci canale"
setBanner: "Scegli intestazione"
removeBanner: "Rimuovi intestazione"
featured: "Tendenze" featured: "Tendenze"
owned: "I miei canali"
following: "Seguiti"
usersCount: "{n} partecipanti"
notesCount: "{n} note"
_sidebar: _sidebar:
icon: "Foto del profilo" icon: "Icone"
hide: "Nascondere" hide: "Nascondere"
_wordMute:
muteWords: "Parole da silenziare"
muteWordsDescription: "Separare con uno spazio indica la condizione \"E\". Separare con un'interruzzione riga indica la condizione \"O\"."
muteWordsDescription2: "Metti le parole chiavi tra slash per usare espressioni regolari (regexp)."
mutedNotes: "Note silenziate"
_theme: _theme:
explore: "Esplora temi"
install: "Installa un tema"
manage: "Gerisci temi"
code: "Codice tema"
installed: "{name} è installato"
installedThemes: "Temi installati"
builtinThemes: "Temi integrati"
alreadyInstalled: "Questo tema è già installato"
invalid: "Il formato tema non è valido"
make: "Crea un tema"
base: "Base"
addConstant: "Aggiungi costante"
constant: "Costante" constant: "Costante"
defaultValue: "Valore predefinito" defaultValue: "Valore predefinito"
color: "Colore" color: "Colore"
key: "Chiave"
func: "Funzione" func: "Funzione"
argument: "Argomento"
darken: "Scuro" darken: "Scuro"
lighten: "Chiaro" lighten: "Chiaro"
keys: keys:
bg: "Sfondo" bg: "Sfondo"
fg: "Testo"
focus: "Focalizzazione"
indicator: "Indicatore"
panel: "Pannello"
shadow: "Ombra" shadow: "Ombra"
header: "Intestazione"
navBg: "Sfondo della barra laterale"
navFg: "Testo della barra laterale"
navHoverFg: "Testo della barra laterale (al passaggio del mouse)"
navActive: "Testo della barra laterale (attivo)"
navIndicator: "Indicatore di barra laterale"
link: "Link"
hashtag: "Hashtag"
mention: "Menzioni" mention: "Menzioni"
renote: "Rinota" renote: "Rinota"
divider: "Interruzione di linea" divider: "Interruzione di linea"
@ -363,6 +714,8 @@ _sfx:
note: "Nota" note: "Nota"
notification: "Notifiche" notification: "Notifiche"
chat: "Messaggi" chat: "Messaggi"
antenna: "Ricezione dell'antenna"
channel: "Notifiche di canale"
_ago: _ago:
unknown: "Sconosciuto" unknown: "Sconosciuto"
future: "Futuro" future: "Futuro"
@ -381,14 +734,51 @@ _time:
day: "giorni" day: "giorni"
_tutorial: _tutorial:
title: "Come usare Misskey" title: "Come usare Misskey"
step1_1: "Benvenuto" step1_1: "Benvenuto/a!"
step1_2: "Questa pagina si chiama una \" Timeline \". Mostra in ordine cronologico le \" note \" delle persone che segui."
step1_3: "Attualmente la tua Timeline è vuota perché non segui alcun account e non hai pubblicato alcuna nota ancora."
step2_1: "Prima di scrivere una nota o di seguire un account, imposta il tuo profilo!"
step2_2: "Aggiungere qualche informazione su di te aumenterà le tue possibilità di essere seguit@ da altre persone. "
step3_1: "Hai finito di impostare il tuo profilo?"
step3_2: "Ora, puoi pubblicare una nota. Facciamo una prova! Premi il pulsante a forma di penna in cima allo schermo per aprire una finestra di dialogo. "
step3_3: "Scritto il testo della nota, puoi pubblicarla premendo il pulsante nella parte superiore destra della finestra di dialogo."
step3_4: "Non ti viene niente in mente? Perché non scrivi semplicemente \"Ho appena cominciato a usare Misskey\"?"
step4_1: "Hai pubblicato qualcosa?"
step4_2: "Se puoi visualizzare la tua nota sulla timeline, ce l'hai fatta!"
step5_1: "Adesso, cerca di seguire altre persone per vivacizzare la tua timeline. "
step5_2: "La pagina {featured} mostra le note di tendenza su questa istanza e, sfogliandole, magari toverai degli account che ti piacciono e che vorrai seguire. Oppure, potrai trovare utenti popolari usando {explore}."
step5_3: "Per seguire altrə utenti, clicca sul loro avatar per aprire la pagina di profilo dove puoi premere il pulsante \"Seguire\". "
step5_4: "Alcunə utenti scelgono di confermare manualmente le richieste di follow che ricevono, quindi a seconda delle persone potrebbe volerci un pò prima che la tua richiesta sia accolta."
step6_1: "Ora, se puoi visualizzare le note di altrə utenti sulla tua timeline, ce l'hai fatta!"
step6_2: "Puoi inviare una risposta rapida alle note di altrə utenti mandando loro \"reazioni\"."
step6_3: "Per inviare una reazione, premi l'icona + della nota e scegli l'emoji che vuoi mandare."
step7_1: "Complimenti! Sei arrivat@ alla fine dell'esercitazione di base su come usare Misskey. "
step7_2: "Se vuoi saperne di più su Misskey, puoi dare un'occhiata alla sezione {help}."
step7_3: "Da ultimo, buon divertimento su Misskey! 🚀"
_permissions: _permissions:
"read:blocks": "Visualizza gli account che hai bloccato." "read:blocks": "Visualizza gli account bloccati"
"write:blocks": "Gestisci gli account che hai bloccato." "write:blocks": "Gestisci gli account bloccati"
"read:favorites": "Visualizza Preferiti" "read:favorites": "Visualizza i tuoi preferiti"
"write:favorites": "Gestisci Preferiti" "write:favorites": "Gestisci i tuoi preferiti"
"read:following": "Vedi le informazioni di follow"
"write:following": "Seguiti/ Smetti di seguire" "write:following": "Seguiti/ Smetti di seguire"
"read:mutes": "Vedi account silenziati"
"write:mutes": "Gerisci account silenziati"
"write:notes": "Creare / Eliminare note"
"read:notifications": "Visualizza notifiche" "read:notifications": "Visualizza notifiche"
"write:notifications": "Gerisci notifiche"
"read:reactions": "Vedi reazioni"
"write:reactions": "Gerisci reazioni"
"read:user-groups": "Vedi gruppi di utenti"
"write:user-groups": "Gestisci gruppi di utenti"
"read:channels": "Visualizza canali"
"write:channels": "Gerisci canali"
_antennaSources:
all: "Tutte le note"
homeTimeline: "Note dagli utenti che segui"
users: "Note dagli utenti selezionati"
userList: "Note dagli utenti della lista selezionata"
userGroup: "Note dagli utenti del gruppo selezionato"
_weekday: _weekday:
sunday: "Domenica" sunday: "Domenica"
monday: "Lunedì" monday: "Lunedì"
@ -409,6 +799,9 @@ _widgets:
photos: "Foto" photos: "Foto"
digitalClock: "Orologio digitale" digitalClock: "Orologio digitale"
federation: "Federazione" federation: "Federazione"
button: "Pulsante"
onlineUsers: "Utenti online"
jobQueue: "Coda di lavoro"
_cw: _cw:
hide: "Nascondere" hide: "Nascondere"
show: "Mostra di più" show: "Mostra di più"
@ -422,14 +815,20 @@ _poll:
voted: "Votato" voted: "Votato"
closed: "Terminato" closed: "Terminato"
_visibility: _visibility:
public: "Pubblico" public: "Pubblica"
publicDescription: "Visibile per tutti sul Fediverso"
home: "Home" home: "Home"
followers: "Seguaci" homeDescription: "Visibile solo sulla timeline \"Home\""
localOnly: "Solo Locale" followers: "Followers"
localOnlyDescription: "Solo locale" followersDescription: "Visibile solo per i tuoi followers"
specified: "Diretta"
specifiedDescription: "Visibile solo per gli/le utenti menzionatə"
localOnly: "Soltanto locale"
localOnlyDescription: "Nascosta per gli/le utenti remotə"
_postForm: _postForm:
replyPlaceholder: "Nota la tua risposta.." replyPlaceholder: "Nota la tua risposta.."
quotePlaceholder: "Cita Nota..." quotePlaceholder: "Cita Nota..."
channelPlaceholder: "Pubblica in canale"
_profile: _profile:
name: "Nome" name: "Nome"
username: "Nome utente" username: "Nome utente"
@ -437,16 +836,29 @@ _profile:
metadata: "Metadati" metadata: "Metadati"
metadataLabel: "Etichetta" metadataLabel: "Etichetta"
metadataContent: "Contenuto" metadataContent: "Contenuto"
changeBanner: "Cambia intestazione"
_exportOrImport: _exportOrImport:
followingList: "Seiguiti" allNotes: "Tutte le note"
muteList: "Silenzia" followingList: "Follows"
blockingList: "Blocca" muteList: "Account silenziati"
blockingList: "Account bloccati"
userLists: "Liste" userLists: "Liste"
_charts:
usersIncDec: "Variazione del numero di utenti"
usersTotal: "Numero totale di utenti"
activeUsers: "Numero di utenti attivi"
notesTotal: "Conteggio totale di note"
_instanceCharts:
users: "Variazione del numero di utenti"
usersTotal: "Totale cumulativo di utenti"
_timelines: _timelines:
home: "Home" home: "Home"
local: "Locale" local: "Locale"
social: "Sociale"
_rooms: _rooms:
roomOf: "Camera di {user}"
_roomType: _roomType:
default: "Predefinito"
washitsu: "Washitsu" washitsu: "Washitsu"
_furnitures: _furnitures:
milk: "Cartone del latte" milk: "Cartone del latte"
@ -477,31 +889,59 @@ _rooms:
photoframe: "Cornice" photoframe: "Cornice"
cube: "Cubo" cube: "Cubo"
tv: "Televisore" tv: "Televisore"
pinguin: "Pinguini" pinguin: "Pinguino"
bin: "Cestino" bin: "Cestino"
cup-noodle: "Noodle istantanei" cup-noodle: "Noodle istantanei"
_pages: _pages:
created: "Pagina creata!"
pageSetting: "Impostazioni pagina"
viewSource: "Visualizza sorgente"
like: "Mi piace" like: "Mi piace"
unlike: "Togli Mi piace" unlike: "Togli Mi piace"
featured: "Popolari"
content: "Blocco di pagina"
variables: "Variabili" variables: "Variabili"
title: "Titolo" title: "Titolo"
hideTitleWhenPinned: "Nascondere il titolo pagina quando è fissata in cima al profilo."
font: "Tipo di carattere" font: "Tipo di carattere"
chooseBlock: "Aggiungi blocco"
blocks: blocks:
text: "Testo"
textarea: "Area di testo"
section: "Sezione"
image: "Immagini" image: "Immagini"
button: "Pulsante"
if: "Se" if: "Se"
_if: _if:
variable: "Variabili" variable: "Variabili"
_post: _post:
text: "Contenuto" text: "Contenuto"
_textInput: _textInput:
name: "Nome della variabile"
text: "Titolo" text: "Titolo"
default: "Valore predefinito"
_textareaInput: _textareaInput:
name: "Nome della variabile"
text: "Titolo" text: "Titolo"
default: "Valore predefinito"
_numberInput: _numberInput:
name: "Nome della variabile"
text: "Titolo" text: "Titolo"
default: "Valore predefinito"
_canvas:
width: "Larghezza"
height: "Altezza"
note: "Nota integrata"
_note:
id: "ID nota"
idDescription: "Qui puoi anche incollare l'URL della nota che vuoi impostare."
detailed: "Visualizzazione dettagliata"
_switch: _switch:
name: "Nome della variabile"
text: "Titolo" text: "Titolo"
default: "Valore predefinito"
_counter: _counter:
name: "Nome della variabile"
text: "Titolo" text: "Titolo"
_button: _button:
text: "Titolo" text: "Titolo"
@ -509,7 +949,9 @@ _pages:
_dialog: _dialog:
content: "Contenuto" content: "Contenuto"
_radioButton: _radioButton:
name: "Nome della variabile"
title: "Titolo" title: "Titolo"
default: "Valore predefinito"
script: script:
categories: categories:
comparison: "Metodo comparativo" comparison: "Metodo comparativo"
@ -518,6 +960,15 @@ _pages:
fn: "Funzione" fn: "Funzione"
list: "Liste" list: "Liste"
blocks: blocks:
text: "Testo"
_strLen:
arg1: "Testo"
_strPick:
arg1: "Testo"
_strReplace:
arg1: "Testo"
_strReverse:
arg1: "Testo"
_join: _join:
arg1: "Liste" arg1: "Liste"
_add: _add:
@ -575,26 +1026,46 @@ _pages:
arg1: "Liste" arg1: "Liste"
_listLen: _listLen:
arg1: "Liste" arg1: "Liste"
_stringToNumber:
arg1: "Testo"
_splitStrByLine:
arg1: "Testo"
ref: "Variabili" ref: "Variabili"
fn: "Funzione" fn: "Funzione"
types: types:
string: "Testo"
array: "Liste" array: "Liste"
_notification: _notification:
fileUploaded: "File caricato correttamente"
youGotMention: "{name} ti ha menzionato"
youGotReply: "{name} ti ha risposto"
youGotQuote: "{name} ha citato il tuo Nota e ha detto" youGotQuote: "{name} ha citato il tuo Nota e ha detto"
youRenoted: "{name} ha rinota" youRenoted: "{name} ha rinotato"
youGotPoll: "{name} ha volluto." youGotPoll: "{name} ha volluto."
youGotMessagingMessageFromUser: "{name} ti ha mandato un messaggio"
youGotMessagingMessageFromGroup: "{name} ti ha mandato un messaggio nella chat"
youWereFollowed: "Ha iniziato a seguirti" youWereFollowed: "Ha iniziato a seguirti"
youReceivedFollowRequest: "Hai ricevuto una richiesta di follow"
yourFollowRequestAccepted: "La tua richiesta di follow è stata accettata"
youWereInvitedToGroup: "Invitat@ al gruppo"
_types: _types:
all: "Tutto" all: "Tutto"
follow: "Seiguiti" follow: "Follows"
mention: "Menzioni" mention: "Menzioni"
reply: "Rispondi" reply: "Rispondi"
renote: "Rinota" renote: "Rinota"
quote: "Cita" quote: "Cita"
reaction: "Reazione" reaction: "Reazione"
pollVote: "Voti ricevuti"
receiveFollowRequest: "Richiesta di follow ricevuta"
followRequestAccepted: "Richiesta di follow accettata"
groupInvited: "Invito a un gruppo"
app: "Notifiche da applicazioni"
_deck: _deck:
_columns: _columns:
notifications: "Notifiche" notifications: "Notifiche"
tl: "Timeline" tl: "Timeline"
antenna: "Antenne"
list: "Liste" list: "Liste"
mentions: "Menzioni" mentions: "Menzioni"
direct: "Diretta"

View File

@ -322,7 +322,7 @@ proxyRemoteFilesDescription: "この設定を有効にすると、未保存ま
driveCapacityPerLocalAccount: "ローカルユーザーひとりあたりのドライブ容量" driveCapacityPerLocalAccount: "ローカルユーザーひとりあたりのドライブ容量"
driveCapacityPerRemoteAccount: "リモートユーザーひとりあたりのドライブ容量" driveCapacityPerRemoteAccount: "リモートユーザーひとりあたりのドライブ容量"
inMb: "メガバイト単位" inMb: "メガバイト単位"
iconUrl: "アイコン画像のURL" iconUrl: "アイコン画像のURL (faviconなど)"
bannerUrl: "バナー画像のURL" bannerUrl: "バナー画像のURL"
basicInfo: "基本情報" basicInfo: "基本情報"
pinnedUsers: "ピン留めユーザー" pinnedUsers: "ピン留めユーザー"

View File

@ -81,7 +81,7 @@ pageLoadError: "ページの読み込みに失敗してしもうたで…"
pageLoadErrorDescription: "これは普通、ネットワークかブラウザキャッシュが原因やからね。キャッシュをクリアするか、もうちっとだけ待ってくれへんか?" pageLoadErrorDescription: "これは普通、ネットワークかブラウザキャッシュが原因やからね。キャッシュをクリアするか、もうちっとだけ待ってくれへんか?"
enterListName: "リスト名を入れてや" enterListName: "リスト名を入れてや"
privacy: "プライバシー" privacy: "プライバシー"
makeFollowManuallyApprove: "ええって言わなフォローできへんようにする" makeFollowManuallyApprove: "自分が認めた人だけがこのアカウントをフォローできるようにする"
defaultNoteVisibility: "もとからの公開範囲" defaultNoteVisibility: "もとからの公開範囲"
follow: "フォロー" follow: "フォロー"
followRequest: "フォローを頼む" followRequest: "フォローを頼む"
@ -308,7 +308,7 @@ monthX: "{month}月"
yearX: "{year}年" yearX: "{year}年"
pages: "ページ" pages: "ページ"
integration: "連携" integration: "連携"
connectSerice: "つなげる" connectSerice: "つな"
disconnectSerice: "切ってまう" disconnectSerice: "切ってまう"
enableLocalTimeline: "ローカルタイムラインを使えるようにする" enableLocalTimeline: "ローカルタイムラインを使えるようにする"
enableGlobalTimeline: "グローバルタイムラインを使えるようにする" enableGlobalTimeline: "グローバルタイムラインを使えるようにする"
@ -392,7 +392,7 @@ markAsReadAllUnreadNotes: "投稿は全て読んだわっ"
markAsReadAllTalkMessages: "チャットはもうぜんぶ読んだわっ" markAsReadAllTalkMessages: "チャットはもうぜんぶ読んだわっ"
help: "ヘルプ" help: "ヘルプ"
inputMessageHere: "ここにメッセージ書いてや" inputMessageHere: "ここにメッセージ書いてや"
close: "さいなら" close: "閉じる"
group: "グループ" group: "グループ"
groups: "グループ" groups: "グループ"
createGroup: "グループを作るで" createGroup: "グループを作るで"

View File

@ -241,7 +241,7 @@ explore: "Обзор"
games: "Игры Misskey" games: "Игры Misskey"
messageRead: "Прочитали" messageRead: "Прочитали"
noMoreHistory: "История закончилась" noMoreHistory: "История закончилась"
startMessaging: "Отправить сообщение" startMessaging: "Начать общение"
nUsersRead: "Прочитали {n}" nUsersRead: "Прочитали {n}"
agreeTo: "Я соглашаюсь с {0}" agreeTo: "Я соглашаюсь с {0}"
tos: "Пользовательское соглашение" tos: "Пользовательское соглашение"
@ -329,7 +329,7 @@ pinnedUsers: "Прикреплённый пользователь"
pinnedUsersDescription: "Перечислите по одному имени пользователя в строке. Пользователи, перечисленные здесь, будут привязаны к закладке \"Изучение\"." pinnedUsersDescription: "Перечислите по одному имени пользователя в строке. Пользователи, перечисленные здесь, будут привязаны к закладке \"Изучение\"."
pinnedPages: "Закрепленные страницы" pinnedPages: "Закрепленные страницы"
pinnedPagesDescription: "Если хотите закрепить страницы на главной сайта, сюда можно добавить пути к ним, каждый в отдельной строке." pinnedPagesDescription: "Если хотите закрепить страницы на главной сайта, сюда можно добавить пути к ним, каждый в отдельной строке."
pinnedClipId: "Идентификатор закреплённой памятки" pinnedClipId: "Идентификатор закреплённой подборки"
pinnedNotes: "Закреплённая заметка" pinnedNotes: "Закреплённая заметка"
hcaptcha: "hCaptcha" hcaptcha: "hCaptcha"
enableHcaptcha: "Включить hCaptcha" enableHcaptcha: "Включить hCaptcha"
@ -405,8 +405,8 @@ invites: "Приглашения"
groupName: "Название группы" groupName: "Название группы"
members: "Участники" members: "Участники"
transfer: "Отдать" transfer: "Отдать"
messagingWithUser: "Сообщения пользователей" messagingWithUser: "Общение с другим пользователем"
messagingWithGroup: "Чат в группе" messagingWithGroup: "Общение в группе"
title: "Заголовок" title: "Заголовок"
text: "Текст" text: "Текст"
enable: "Включить" enable: "Включить"
@ -471,7 +471,7 @@ promotion: "Продвинуто"
promote: "Продвинуть" promote: "Продвинуть"
numberOfDays: "Количество дней" numberOfDays: "Количество дней"
hideThisNote: "Спрятать эту запись" hideThisNote: "Спрятать эту запись"
showFeaturedNotesInTimeline: "Показывать в ленте заметки из подборки сайта" showFeaturedNotesInTimeline: "Показывать в ленте заметки из «Горячего»"
objectStorage: "Хранилище" objectStorage: "Хранилище"
useObjectStorage: "Занято в хранилище" useObjectStorage: "Занято в хранилище"
objectStorageBaseUrl: "Базовый адрес" objectStorageBaseUrl: "Базовый адрес"
@ -524,7 +524,7 @@ deleteAllFiles: "Удалить все файлы"
deleteAllFilesConfirm: "Вы хотите удалить все файлы?" deleteAllFilesConfirm: "Вы хотите удалить все файлы?"
removeAllFollowing: "Удалить всех подписчиков" removeAllFollowing: "Удалить всех подписчиков"
removeAllFollowingDescription: "Отменить все подписки с домена {host}? Пожалуйста, применяйте это действие, если инстанс больше не существует." removeAllFollowingDescription: "Отменить все подписки с домена {host}? Пожалуйста, применяйте это действие, если инстанс больше не существует."
userSuspended: "Этот пользователь был заморожен" userSuspended: "Эта учётная запись заморожена"
userSilenced: "Этот пользователь был заглушен" userSilenced: "Этот пользователь был заглушен"
sidebar: "Боковая панель" sidebar: "Боковая панель"
divider: "Линия-разделитель" divider: "Линия-разделитель"
@ -623,30 +623,30 @@ random: "Случайные"
system: "Система" system: "Система"
switchUi: "Выбор вида" switchUi: "Выбор вида"
desktop: "Стол" desktop: "Стол"
clip: "В памятку" clip: "В подборку"
createNew: "Новый документ" createNew: "Новый документ"
optional: "Необязательно" optional: "Необязательно"
createNewClip: "Новая памятка" createNewClip: "Новая подборка"
public: "Общедоступно" public: "Общедоступно"
i18nInfo: "Misskey переводят на разные языки добровольцы со всего света. Ваша помощь тоже пригодится здесь: {link}." i18nInfo: "Misskey переводят на разные языки добровольцы со всего света. Ваша помощь тоже пригодится здесь: {link}."
manageAccessTokens: "Управление токенами доступа" manageAccessTokens: "Управление токенами доступа"
accountInfo: "Сведения об учётной записи" accountInfo: "Сведения об учётной записи"
notesCount: "Количество заметок" notesCount: "Количество заметок"
repliesCount: "Сколько раз пользователь кому-то ответил" repliesCount: "Сколько раз пользователь кому-то ответил"
renotesCount: "Сколько раз пользователь передал чужие заметки" renotesCount: "Сколько раз пользователь делился заметками"
repliedCount: "Сколько раз ответили пользователю" repliedCount: "Сколько раз ответили пользователю"
renotedCount: "Сколько раз передавали заметки пользователя" renotedCount: "Сколько раз делились заметками пользователя"
followingCount: "Количество подписок" followingCount: "Количество подписок"
followersCount: "Количество подписавшихся" followersCount: "Количество подписавшихся"
sentReactionsCount: "Сколько раз пользователь отреагировал" sentReactionsCount: "Количество реакций пользователя"
receivedReactionsCount: "Сколько раз отреагировали на заметки пользователя" receivedReactionsCount: "Количество реакций на заметки пользователя"
pollVotesCount: "Сколько раз участвовал в опросах" pollVotesCount: "Сколько раз пользователь участвовал в опросах"
pollVotedCount: "Сколько раз участвовали в опросах пользователя" pollVotedCount: "Сколько раз участвовали в опросах пользователя"
yes: "Да" yes: "Да"
no: "Нет" no: "Нет"
driveFilesCount: "Количество файлов на диске" driveFilesCount: "Количество файлов на диске"
driveUsage: "Сколько места занято на диске" driveUsage: "Занято места на диске"
noCrawle: "Паукам вход воспрещён" noCrawle: "Запретить паукам индексировать сайт"
noCrawleDescription: "Просьба поисковым системам не ходить по вашему профилю, по заметкам, страницам и не индексировать их." noCrawleDescription: "Просьба поисковым системам не ходить по вашему профилю, по заметкам, страницам и не индексировать их."
lockedAccountInfo: "Даже если вы вручную подтверждаете подписки, кто угодно может читать ваши заметки, если вы не отмечаете их «для подписчиков»." lockedAccountInfo: "Даже если вы вручную подтверждаете подписки, кто угодно может читать ваши заметки, если вы не отмечаете их «для подписчиков»."
alwaysMarkSensitive: "Отмечать файлы как «содержимое не для всех» по умолчанию" alwaysMarkSensitive: "Отмечать файлы как «содержимое не для всех» по умолчанию"
@ -661,7 +661,7 @@ pageLikedCount: "Количество страниц, понравившихся
reversiCount: "Количество сыгранных игр в реверси" reversiCount: "Количество сыгранных игр в реверси"
contact: "Как связаться" contact: "Как связаться"
useSystemFont: "Использовать шрифт, предлагаемый системой" useSystemFont: "Использовать шрифт, предлагаемый системой"
clips: амятки" clips: одборки"
experimentalFeatures: "Экспериментальные функции" experimentalFeatures: "Экспериментальные функции"
developer: "Разработчик" developer: "Разработчик"
makeExplorable: "Опубликовать профиль в «Обзоре»." makeExplorable: "Опубликовать профиль в «Обзоре»."
@ -983,7 +983,7 @@ _tutorial:
step7_2: "Хотите изучить Misskey глубже — добро пожаловать в раздел «{help}»." step7_2: "Хотите изучить Misskey глубже — добро пожаловать в раздел «{help}»."
step7_3: "Приятно вам провести время с Misskey🚀" step7_3: "Приятно вам провести время с Misskey🚀"
_2fa: _2fa:
alreadyRegistered: "Настройка завершена" alreadyRegistered: "Двухфакторная аутентификация уже настроена."
registerDevice: "Зарегистрируйте ваше устройство" registerDevice: "Зарегистрируйте ваше устройство"
registerKey: "Зарегистрировать ключ" registerKey: "Зарегистрировать ключ"
step1: "Прежде всего, установите на устройство приложение для аутентификации, например, {a} или {b}." step1: "Прежде всего, установите на устройство приложение для аутентификации, например, {a} или {b}."
@ -1240,7 +1240,7 @@ _pages:
liked: "Понравившиеся страницы" liked: "Понравившиеся страницы"
featured: "Популярные" featured: "Популярные"
inspector: "Инспектор" inspector: "Инспектор"
contents: "Содержательные" contents: "Содержимое"
content: "Содержимое" content: "Содержимое"
variables: "Переменные" variables: "Переменные"
title: "Заголовок" title: "Заголовок"

View File

@ -579,7 +579,7 @@ smtpPort: "端口"
smtpUser: "用户名" smtpUser: "用户名"
smtpPass: "密码" smtpPass: "密码"
emptyToDisableSmtpAuth: "用户名和密码留空可以禁用SMTP验证" emptyToDisableSmtpAuth: "用户名和密码留空可以禁用SMTP验证"
smtpSecure: "在 SMTP 连接中默认使用 SSL / TLS" smtpSecure: "在 SMTP 连接中使用隐式 SSL / TLS"
smtpSecureInfo: "使用STARTTLS时关闭。" smtpSecureInfo: "使用STARTTLS时关闭。"
testEmail: "邮件发送测试" testEmail: "邮件发送测试"
wordMute: "文字屏蔽" wordMute: "文字屏蔽"

View File

@ -438,6 +438,7 @@ signinWith: "以{x}登錄"
signinFailed: "登入失敗。 請檢查用戶名和密碼。" signinFailed: "登入失敗。 請檢查用戶名和密碼。"
tapSecurityKey: "點擊安全密鑰" tapSecurityKey: "點擊安全密鑰"
or: "或者" or: "或者"
language: "語言"
uiLanguage: "介面語言" uiLanguage: "介面語言"
groupInvited: "您有新的群組邀請" groupInvited: "您有新的群組邀請"
aboutX: "關於{x}" aboutX: "關於{x}"
@ -677,9 +678,12 @@ newVersionOfClientAvailable: "新版本的用戶端可用。"
usageAmount: "使用量" usageAmount: "使用量"
capacity: "容量" capacity: "容量"
inUse: "已使用" inUse: "已使用"
clear: "清除"
_email: _email:
_follow: _follow:
title: "您有新的追隨者" title: "您有新的追隨者"
_plugin:
manage: "管理插件"
_registry: _registry:
scope: "範圍" scope: "範圍"
key: "機碼" key: "機碼"
@ -702,7 +706,9 @@ _nsfw:
_mfm: _mfm:
cheatSheet: "MFM代碼小抄" cheatSheet: "MFM代碼小抄"
intro: "MFM是Misskey專用的標記語言可以在Misskey中的各個位置使用。 您可以這裏看到MFM可用語法列表。" intro: "MFM是Misskey專用的標記語言可以在Misskey中的各個位置使用。 您可以這裏看到MFM可用語法列表。"
dummy: "通過Misskey擴展Fediverse的世界"
mention: "提及" mention: "提及"
mentionDescription: "透過 @+用戶名 來標示特定使用者。"
hashtag: "#tag" hashtag: "#tag"
url: "URL" url: "URL"
link: "鏈接" link: "鏈接"

View File

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

View File

@ -0,0 +1,22 @@
import {MigrationInterface, QueryRunner} from "typeorm";
export class chartV221615966519402 implements MigrationInterface {
name = 'chartV221615966519402'
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "__chart__active_users" ADD "___local_users" character varying array NOT NULL DEFAULT '{}'::varchar[]`);
await queryRunner.query(`ALTER TABLE "__chart__active_users" ADD "___remote_users" character varying array NOT NULL DEFAULT '{}'::varchar[]`);
await queryRunner.query(`ALTER TABLE "__chart__hashtag" ADD "___local_users" character varying array NOT NULL DEFAULT '{}'::varchar[]`);
await queryRunner.query(`ALTER TABLE "__chart__hashtag" ADD "___remote_users" character varying array NOT NULL DEFAULT '{}'::varchar[]`);
await queryRunner.query(`ALTER TABLE "__chart__test_unique" ADD "___foo" character varying array NOT NULL DEFAULT '{}'::varchar[]`);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "__chart__test_unique" DROP COLUMN "___foo"`);
await queryRunner.query(`ALTER TABLE "__chart__hashtag" DROP COLUMN "___remote_users"`);
await queryRunner.query(`ALTER TABLE "__chart__hashtag" DROP COLUMN "___local_users"`);
await queryRunner.query(`ALTER TABLE "__chart__active_users" DROP COLUMN "___remote_users"`);
await queryRunner.query(`ALTER TABLE "__chart__active_users" DROP COLUMN "___local_users"`);
}
}

View File

@ -1,7 +1,7 @@
{ {
"name": "misskey", "name": "misskey",
"author": "syuilo <syuilotan@yahoo.co.jp>", "author": "syuilo <syuilotan@yahoo.co.jp>",
"version": "12.74.1", "version": "12.75.0",
"codename": "indigo", "codename": "indigo",
"repository": { "repository": {
"type": "git", "type": "git",
@ -11,20 +11,22 @@
"private": true, "private": true,
"scripts": { "scripts": {
"start": "node ./index.js", "start": "node ./index.js",
"start-product": "cross-env NODE_ENV=production node ./index.js",
"init": "npm run migrate", "init": "npm run migrate",
"ormconfig": "node ./built/ormconfig.js", "ormconfig": "node ./built/ormconfig.js",
"migrate": "ts-node ./node_modules/typeorm/cli.js migration:run", "migrate": "ts-node ./node_modules/typeorm/cli.js migration:run",
"migrateandstart": "npm run migrate && npm run start", "migrateandstart": "npm run migrate && npm run start",
"build": "webpack && gulp build", "build": "npm run build-webpack && npm run build-ts && npm run build-gulp",
"build-product": "cross-env NODE_ENV=production webpack && gulp build", "build-webpack": "webpack",
"webpack": "webpack", "build-ts": "tsc -p src/tsconfig.json || echo done. && tsc-alias -p src/tsconfig.json",
"watch": "webpack --watch", "build-gulp": "gulp build",
"gulp": "gulp build", "watch": "concurrently \"npm:watch-*\"",
"watch-webpack": "webpack --watch",
"watch-ts": "tsc -w -p src/tsconfig.json && tsc-alias -w -p src/tsconfig.json",
"watch-gulp": "gulp watch",
"clean": "gulp clean", "clean": "gulp clean",
"cleanall": "gulp cleanall", "cleanall": "gulp cleanall",
"lint": "tslint 'src/**/*.ts'", "lint": "tslint 'src/**/*.ts'",
"test": "cross-env TS_NODE_FILES=true TS_NODE_TRANSPILE_ONLY=true TS_NODE_COMPILER_OPTIONS=\"{\\\"target\\\":\\\"es2017\\\",\\\"module\\\":\\\"commonjs\\\",\\\"typeRoots\\\":[\\\"node_modules/@types\\\",\\\"src/@types\\\"]}\" mocha", "test": "cross-env TS_NODE_FILES=true TS_NODE_TRANSPILE_ONLY=true TS_NODE_PROJECT=\"./test/tsconfig.json\" mocha",
"format": "gulp format" "format": "gulp format"
}, },
"resolutions": { "resolutions": {
@ -35,25 +37,24 @@
"lodash": "^4.17.20" "lodash": "^4.17.20"
}, },
"dependencies": { "dependencies": {
"@babel/plugin-transform-runtime": "7.13.9", "@babel/plugin-transform-runtime": "7.13.10",
"@elastic/elasticsearch": "7.11.0", "@elastic/elasticsearch": "7.11.0",
"@fortawesome/fontawesome-svg-core": "1.2.34", "@fortawesome/fontawesome-svg-core": "1.2.35",
"@fortawesome/free-brands-svg-icons": "5.15.2", "@fortawesome/free-brands-svg-icons": "5.15.3",
"@fortawesome/free-regular-svg-icons": "5.15.2", "@fortawesome/free-regular-svg-icons": "5.15.3",
"@fortawesome/free-solid-svg-icons": "5.15.2", "@fortawesome/free-solid-svg-icons": "5.15.3",
"@fortawesome/vue-fontawesome": "3.0.0-3", "@fortawesome/vue-fontawesome": "3.0.0-3",
"@koa/cors": "3.1.0", "@koa/cors": "3.1.0",
"@koa/multer": "3.0.0", "@koa/multer": "3.0.0",
"@koa/router": "9.0.1", "@koa/router": "9.0.1",
"@sentry/browser": "5.29.2", "@sentry/browser": "5.29.2",
"@sentry/tracing": "5.29.2", "@sentry/tracing": "5.29.2",
"@sinonjs/fake-timers": "6.0.1", "@sinonjs/fake-timers": "7.0.2",
"@syuilo/aiscript": "0.11.1", "@syuilo/aiscript": "0.11.1",
"@types/bcryptjs": "2.4.2", "@types/bcryptjs": "2.4.2",
"@types/bull": "3.15.0", "@types/bull": "3.15.0",
"@types/cbor": "5.0.1", "@types/cbor": "5.0.1",
"@types/dateformat": "3.0.1", "@types/dateformat": "3.0.1",
"@types/double-ended-queue": "2.1.1",
"@types/escape-regexp": "0.0.0", "@types/escape-regexp": "0.0.0",
"@types/glob": "7.1.3", "@types/glob": "7.1.3",
"@types/gulp": "4.0.8", "@types/gulp": "4.0.8",
@ -61,8 +62,8 @@
"@types/gulp-replace": "0.0.31", "@types/gulp-replace": "0.0.31",
"@types/is-url": "1.2.28", "@types/is-url": "1.2.28",
"@types/js-yaml": "4.0.0", "@types/js-yaml": "4.0.0",
"@types/jsdom": "16.2.6", "@types/jsdom": "16.2.7",
"@types/jsonld": "1.5.4", "@types/jsonld": "1.5.5",
"@types/katex": "0.11.0", "@types/katex": "0.11.0",
"@types/koa": "2.13.1", "@types/koa": "2.13.1",
"@types/koa-bodyparser": "4.3.0", "@types/koa-bodyparser": "4.3.0",
@ -78,9 +79,9 @@
"@types/markdown-it": "12.0.1", "@types/markdown-it": "12.0.1",
"@types/matter-js": "0.14.10", "@types/matter-js": "0.14.10",
"@types/mocha": "8.2.1", "@types/mocha": "8.2.1",
"@types/node": "14.14.31", "@types/node": "14.14.35",
"@types/node-fetch": "2.5.8", "@types/node-fetch": "2.5.8",
"@types/nodemailer": "6.4.0", "@types/nodemailer": "6.4.1",
"@types/nprogress": "0.2.0", "@types/nprogress": "0.2.0",
"@types/oauth": "0.9.1", "@types/oauth": "0.9.1",
"@types/parse5": "6.0.0", "@types/parse5": "6.0.0",
@ -105,67 +106,66 @@
"@types/web-push": "3.3.0", "@types/web-push": "3.3.0",
"@types/webpack": "4.41.26", "@types/webpack": "4.41.26",
"@types/webpack-stream": "3.2.11", "@types/webpack-stream": "3.2.11",
"@types/websocket": "1.0.1", "@types/websocket": "1.0.2",
"@types/ws": "7.4.0", "@types/ws": "7.4.0",
"@typescript-eslint/parser": "4.16.1", "@typescript-eslint/parser": "4.18.0",
"@vue/compiler-sfc": "3.0.5", "@vue/compiler-sfc": "3.0.7",
"abort-controller": "3.0.0", "abort-controller": "3.0.0",
"apexcharts": "3.25.0", "apexcharts": "3.26.0",
"autobind-decorator": "2.4.0", "autobind-decorator": "2.4.0",
"autosize": "4.0.2", "autosize": "4.0.2",
"autwh": "0.1.0", "autwh": "0.1.0",
"aws-sdk": "2.848.0", "aws-sdk": "2.867.0",
"bcryptjs": "2.4.3", "bcryptjs": "2.4.3",
"blurhash": "1.1.3", "blurhash": "1.1.3",
"broadcast-channel": "3.4.1", "broadcast-channel": "3.5.3",
"bull": "3.20.1", "bull": "3.21.1",
"cafy": "15.2.1", "cafy": "15.2.1",
"cbor": "7.0.3", "cbor": "7.0.4",
"chalk": "4.1.0", "chalk": "4.1.0",
"chart.js": "2.9.4", "chart.js": "2.9.4",
"cli-highlight": "2.1.10", "cli-highlight": "2.1.10",
"commander": "4.1.1", "commander": "4.1.1",
"concurrently": "6.0.0",
"content-disposition": "0.5.3", "content-disposition": "0.5.3",
"core-js": "3.9.0", "core-js": "3.9.1",
"crc-32": "1.2.0", "crc-32": "1.2.0",
"css-loader": "5.0.2", "css-loader": "5.1.3",
"cssnano": "4.1.10", "cssnano": "4.1.10",
"dateformat": "4.5.1", "dateformat": "4.5.1",
"diskusage": "1.1.3", "diskusage": "1.1.3",
"double-ended-queue": "2.1.0-0",
"escape-regexp": "0.0.1", "escape-regexp": "0.0.1",
"eslint": "7.21.0", "eslint": "7.22.0",
"eslint-plugin-vue": "7.6.0", "eslint-plugin-vue": "7.7.0",
"eventemitter3": "4.0.7", "eventemitter3": "4.0.7",
"feed": "4.2.2", "feed": "4.2.2",
"fibers": "5.0.0", "fibers": "5.0.0",
"file-type": "16.2.0", "file-type": "16.3.0",
"fluent-ffmpeg": "2.1.2", "fluent-ffmpeg": "2.1.2",
"glob": "7.1.6", "glob": "7.1.6",
"got": "11.8.1", "got": "11.8.2",
"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.0.0", "gulp-replace": "1.0.0",
"gulp-terser": "2.0.1", "gulp-terser": "2.0.1",
"gulp-tslint": "8.1.4", "gulp-tslint": "8.1.4",
"gulp-typescript": "6.0.0-alpha.1",
"hard-source-webpack-plugin": "0.13.1", "hard-source-webpack-plugin": "0.13.1",
"html-minifier": "4.0.0", "html-minifier": "4.0.0",
"http-proxy-agent": "4.0.1", "http-proxy-agent": "4.0.1",
"http-signature": "1.3.5", "http-signature": "1.3.5",
"https-proxy-agent": "5.0.0", "https-proxy-agent": "5.0.0",
"idb-keyval": "5.0.2", "idb-keyval": "5.0.4",
"insert-text-at-cursor": "0.3.0", "insert-text-at-cursor": "0.3.0",
"is-root": "2.1.0", "is-root": "2.1.0",
"is-svg": "4.2.1", "is-svg": "4.3.1",
"js-yaml": "4.0.0", "js-yaml": "4.0.0",
"jsdom": "16.4.0", "jsdom": "16.5.1",
"json5": "2.2.0", "json5": "2.2.0",
"json5-loader": "4.0.1", "json5-loader": "4.0.1",
"jsonld": "4.0.1", "jsonld": "4.0.1",
"jsrsasign": "8.0.20", "jsrsasign": "8.0.20",
"katex": "0.12.0", "katex": "0.13.0",
"koa": "2.13.1", "koa": "2.13.1",
"koa-bodyparser": "4.3.0", "koa-bodyparser": "4.3.0",
"koa-favicon": "2.1.0", "koa-favicon": "2.1.0",
@ -174,13 +174,13 @@
"koa-mount": "4.0.0", "koa-mount": "4.0.0",
"koa-send": "5.0.1", "koa-send": "5.0.1",
"koa-slow": "2.1.0", "koa-slow": "2.1.0",
"koa-views": "6.3.1", "koa-views": "7.0.1",
"langmap": "0.0.16", "langmap": "0.0.16",
"lookup-dns-cache": "2.1.0", "lookup-dns-cache": "2.1.0",
"markdown-it": "12.0.4", "markdown-it": "12.0.4",
"markdown-it-anchor": "7.0.2", "markdown-it-anchor": "7.1.0",
"matter-js": "0.16.1", "matter-js": "0.16.1",
"mocha": "8.3.0", "mocha": "8.3.2",
"moji": "0.5.1", "moji": "0.5.1",
"ms": "2.1.3", "ms": "2.1.3",
"multer": "1.4.2", "multer": "1.4.2",
@ -189,20 +189,19 @@
"nodemailer": "6.5.0", "nodemailer": "6.5.0",
"object-assign-deep": "0.4.0", "object-assign-deep": "0.4.0",
"os-utils": "0.0.14", "os-utils": "0.0.14",
"p-cancelable": "2.0.0",
"parse5": "6.0.1", "parse5": "6.0.1",
"parsimmon": "1.16.0", "parsimmon": "1.16.0",
"pg": "8.5.1", "pg": "8.5.1",
"portscanner": "2.2.0", "portscanner": "2.2.0",
"postcss": "8.2.7", "postcss": "8.2.8",
"postcss-loader": "5.0.0", "postcss-loader": "5.2.0",
"prismjs": "1.23.0", "prismjs": "1.23.0",
"probe-image-size": "6.0.0", "probe-image-size": "7.0.1",
"promise-limit": "2.7.0", "promise-limit": "2.7.0",
"promise-sequential": "1.1.1", "promise-sequential": "1.1.1",
"pug": "2.0.4", "pug": "3.0.2",
"punycode": "2.1.1", "punycode": "2.1.1",
"pureimage": "0.2.5", "pureimage": "0.2.7",
"qrcode": "1.4.4", "qrcode": "1.4.4",
"random-seed": "0.3.0", "random-seed": "0.3.0",
"ratelimiter": "3.4.1", "ratelimiter": "3.4.1",
@ -221,49 +220,51 @@
"sass": "1.32.8", "sass": "1.32.8",
"sass-loader": "11.0.1", "sass-loader": "11.0.1",
"seedrandom": "3.0.5", "seedrandom": "3.0.5",
"sharp": "0.27.1", "sharp": "0.27.2",
"speakeasy": "2.0.0", "speakeasy": "2.0.0",
"stringz": "2.1.0", "stringz": "2.1.0",
"style-loader": "2.0.0", "style-loader": "2.0.0",
"summaly": "2.4.0", "summaly": "2.4.0",
"syslog-pro": "1.0.0", "syslog-pro": "1.0.0",
"systeminformation": "5.6.1", "systeminformation": "5.6.7",
"syuilo-password-strength": "0.0.1", "syuilo-password-strength": "0.0.1",
"textarea-caret": "3.1.0", "textarea-caret": "3.1.0",
"three": "0.117.1", "three": "0.117.1",
"throttle-debounce": "3.0.1", "throttle-debounce": "3.0.1",
"tinycolor2": "1.4.2", "tinycolor2": "1.4.2",
"tmp": "0.2.1", "tmp": "0.2.1",
"ts-loader": "8.0.17", "ts-loader": "8.0.18",
"ts-node": "9.1.1", "ts-node": "9.1.1",
"tsc-alias": "1.2.8",
"tsconfig-paths": "3.9.0",
"tslint": "6.1.3", "tslint": "6.1.3",
"tslint-sonarts": "1.9.0", "tslint-sonarts": "1.9.0",
"typeorm": "0.2.31", "typeorm": "0.2.31",
"typescript": "4.1.5", "typescript": "4.2.3",
"ulid": "2.3.0", "ulid": "2.3.0",
"url-loader": "4.1.1", "url-loader": "4.1.1",
"uuid": "8.3.2", "uuid": "8.3.2",
"v-debounce": "0.1.2", "v-debounce": "0.1.2",
"vanilla-tilt": "1.7.0", "vanilla-tilt": "1.7.0",
"vue": "3.0.5", "vue": "3.0.7",
"vue-color": "2.8.1", "vue-color": "2.8.1",
"vue-json-pretty": "1.7.1", "vue-json-pretty": "1.7.1",
"vue-loader": "16.1.2", "vue-loader": "16.1.2",
"vue-prism-editor": "2.0.0-alpha.2", "vue-prism-editor": "2.0.0-alpha.2",
"vue-router": "4.0.4", "vue-router": "4.0.5",
"vue-style-loader": "4.1.3", "vue-style-loader": "4.1.3",
"vuedraggable": "4.0.1", "vuedraggable": "4.0.1",
"web-push": "3.4.4", "web-push": "3.4.4",
"webpack": "5.24.2", "webpack": "5.27.2",
"webpack-cli": "4.5.0", "webpack-cli": "4.5.0",
"websocket": "1.0.33", "websocket": "1.0.33",
"ws": "7.4.3", "ws": "7.4.4",
"xev": "2.0.1" "xev": "2.0.1"
}, },
"devDependencies": { "devDependencies": {
"@types/chai": "4.2.15", "@types/chai": "4.2.15",
"@types/fluent-ffmpeg": "2.1.16", "@types/fluent-ffmpeg": "2.1.16",
"chai": "4.3.0", "chai": "4.3.4",
"cross-env": "7.0.3" "cross-env": "7.0.3"
} }
} }

6
src/.eslintrc Normal file
View File

@ -0,0 +1,6 @@
{
"env": {
"node": true,
"commonjs": true
}
}

View File

@ -1,3 +0,0 @@
declare module '*/meta.json' {
const version: string;
}

View File

@ -1,5 +1,5 @@
import * as program from 'commander'; import * as program from 'commander';
import config from './config'; import config from '@/config';
program program
.version(config.version) .version(config.version)

View File

@ -6,13 +6,13 @@ import * as isRoot from 'is-root';
import { getConnection } from 'typeorm'; import { getConnection } from 'typeorm';
import Logger from '../services/logger'; import Logger from '../services/logger';
import loadConfig from '../config/load'; import loadConfig from '@/config/load';
import { Config } from '../config/types'; import { Config } from '@/config/types';
import { lessThan } from '../prelude/array'; import { lessThan } from '../prelude/array';
import { program } from '../argv'; import { program } from '../argv';
import { showMachineInfo } from '../misc/show-machine-info'; import { showMachineInfo } from '@/misc/show-machine-info';
import { initDb } from '../db/postgre'; import { initDb } from '../db/postgre';
import * as meta from '../meta.json'; const meta = require('../meta.json');
const logger = new Logger('core', 'cyan'); const logger = new Logger('core', 'cyan');
const bootLogger = logger.createSubLogger('boot', 'magenta', false); const bootLogger = logger.createSubLogger('boot', 'magenta', false);

View File

@ -1,4 +1,24 @@
{ {
"env": {
"node": false,
},
"extends": [
"eslint:recommended",
"plugin:vue/recommended"
],
"rules": {
"vue/require-v-for-key": 0,
"vue/max-attributes-per-line": 0,
"vue/html-indent": 0,
"vue/html-self-closing": 0,
"vue/no-unused-vars": 0,
"vue/attributes-order": 0,
"vue/require-prop-types": 0,
"vue/require-default-prop": 0,
"vue/html-closing-bracket-spacing": 0,
"vue/singleline-html-element-content-newline": 0,
"vue/no-v-html": 0
},
"globals": { "globals": {
"_DEV_": false, "_DEV_": false,
"_LANGS_": false, "_LANGS_": false,

View File

@ -1,8 +1,8 @@
import { get, set } from '@/scripts/idb-proxy'; import { get, set } from '@/scripts/idb-proxy';
import { reactive } from 'vue'; import { reactive } from 'vue';
import { apiUrl } from '@/config'; import { apiUrl } from '@client/config';
import { waiting } from '@/os'; import { waiting } from '@client/os';
import { unisonReload, reloadChannel } from '@/scripts/unison-reload'; import { unisonReload, reloadChannel } from '@client/scripts/unison-reload';
// TODO: 他のタブと永続化されたstateを同期 // TODO: 他のタブと永続化されたstateを同期

View File

@ -29,10 +29,10 @@
<script lang="ts"> <script lang="ts">
import { defineComponent, markRaw } from 'vue'; import { defineComponent, markRaw } from 'vue';
import { faExclamationCircle } from '@fortawesome/free-solid-svg-icons'; import { faExclamationCircle } from '@fortawesome/free-solid-svg-icons';
import XWindow from '@/components/ui/window.vue'; import XWindow from '@client/components/ui/window.vue';
import MkTextarea from '@/components/ui/textarea.vue'; import MkTextarea from '@client/components/ui/textarea.vue';
import MkButton from '@/components/ui/button.vue'; import MkButton from '@client/components/ui/button.vue';
import * as os from '@/os'; import * as os from '@client/os';
export default defineComponent({ export default defineComponent({
components: { components: {

View File

@ -36,7 +36,7 @@
<script lang="ts"> <script lang="ts">
import { defineComponent } from 'vue'; import { defineComponent } from 'vue';
import * as tinycolor from 'tinycolor2'; import * as tinycolor from 'tinycolor2';
import * as os from '@/os'; import * as os from '@client/os';
export default defineComponent({ export default defineComponent({
data() { data() {

View File

@ -29,12 +29,12 @@
<script lang="ts"> <script lang="ts">
import { defineComponent, markRaw } from 'vue'; import { defineComponent, markRaw } from 'vue';
import { emojilist } from '../../misc/emojilist'; import { emojilist } from '@/misc/emojilist';
import contains from '@/scripts/contains'; import contains from '@client/scripts/contains';
import { twemojiSvgBase } from '../../misc/twemoji-base'; import { twemojiSvgBase } from '@/misc/twemoji-base';
import { getStaticImageUrl } from '@/scripts/get-static-image-url'; import { getStaticImageUrl } from '@client/scripts/get-static-image-url';
import { acct } from '@/filters/user'; import { acct } from '@client/filters/user';
import * as os from '@/os'; import * as os from '@client/os';
type EmojiDef = { type EmojiDef = {
emoji: string; emoji: string;

View File

@ -8,7 +8,7 @@
<script lang="ts"> <script lang="ts">
import { defineComponent } from 'vue'; import { defineComponent } from 'vue';
import * as os from '@/os'; import * as os from '@client/os';
export default defineComponent({ export default defineComponent({
props: { props: {

View File

@ -21,7 +21,7 @@
<script lang="ts"> <script lang="ts">
import { defineComponent } from 'vue'; import { defineComponent } from 'vue';
import { faSpinner, faPlus, faMinus, } from '@fortawesome/free-solid-svg-icons'; import { faSpinner, faPlus, faMinus, } from '@fortawesome/free-solid-svg-icons';
import * as os from '@/os'; import * as os from '@client/os';
export default defineComponent({ export default defineComponent({
props: { props: {

View File

@ -40,10 +40,10 @@
import { defineComponent } from 'vue'; import { defineComponent } from 'vue';
import { faSpinner, faInfoCircle, faExclamationTriangle, faCheck } from '@fortawesome/free-solid-svg-icons'; import { faSpinner, faInfoCircle, faExclamationTriangle, faCheck } from '@fortawesome/free-solid-svg-icons';
import { faTimesCircle, faQuestionCircle } from '@fortawesome/free-regular-svg-icons'; import { faTimesCircle, faQuestionCircle } from '@fortawesome/free-regular-svg-icons';
import MkModal from '@/components/ui/modal.vue'; import MkModal from '@client/components/ui/modal.vue';
import MkButton from '@/components/ui/button.vue'; import MkButton from '@client/components/ui/button.vue';
import MkInput from '@/components/ui/input.vue'; import MkInput from '@client/components/ui/input.vue';
import MkSelect from '@/components/ui/select.vue'; import MkSelect from '@client/components/ui/select.vue';
export default defineComponent({ export default defineComponent({
components: { components: {

View File

@ -27,7 +27,7 @@ import {
faFilm faFilm
} from '@fortawesome/free-solid-svg-icons'; } from '@fortawesome/free-solid-svg-icons';
import ImgWithBlurhash from './img-with-blurhash.vue'; import ImgWithBlurhash from './img-with-blurhash.vue';
import { ColdDeviceStorage } from '@/store'; import { ColdDeviceStorage } from '@client/store';
export default defineComponent({ export default defineComponent({
components: { components: {

View File

@ -20,8 +20,8 @@
<script lang="ts"> <script lang="ts">
import { defineComponent } from 'vue'; import { defineComponent } from 'vue';
import XDrive from './drive.vue'; import XDrive from './drive.vue';
import XModalWindow from '@/components/ui/modal-window.vue'; import XModalWindow from '@client/components/ui/modal-window.vue';
import number from '@/filters/number'; import number from '@client/filters/number';
export default defineComponent({ export default defineComponent({
components: { components: {

View File

@ -15,7 +15,7 @@
<script lang="ts"> <script lang="ts">
import { defineComponent } from 'vue'; import { defineComponent } from 'vue';
import XDrive from './drive.vue'; import XDrive from './drive.vue';
import XWindow from '@/components/ui/window.vue'; import XWindow from '@client/components/ui/window.vue';
export default defineComponent({ export default defineComponent({
components: { components: {

View File

@ -34,10 +34,10 @@
import { defineComponent } from 'vue'; import { defineComponent } from 'vue';
import { faEye, faEyeSlash } from '@fortawesome/free-regular-svg-icons'; import { faEye, faEyeSlash } from '@fortawesome/free-regular-svg-icons';
import { faDownload, faLink, faICursor, faTrashAlt } from '@fortawesome/free-solid-svg-icons'; import { faDownload, faLink, faICursor, faTrashAlt } from '@fortawesome/free-solid-svg-icons';
import copyToClipboard from '@/scripts/copy-to-clipboard'; import copyToClipboard from '@client/scripts/copy-to-clipboard';
import MkDriveFileThumbnail from './drive-file-thumbnail.vue'; import MkDriveFileThumbnail from './drive-file-thumbnail.vue';
import bytes from '@/filters/bytes'; import bytes from '@client/filters/bytes';
import * as os from '@/os'; import * as os from '@client/os';
export default defineComponent({ export default defineComponent({
components: { components: {

View File

@ -29,7 +29,7 @@
<script lang="ts"> <script lang="ts">
import { defineComponent } from 'vue'; import { defineComponent } from 'vue';
import { faFolder, faFolderOpen, faTrashAlt, faWindowRestore } from '@fortawesome/free-regular-svg-icons'; import { faFolder, faFolderOpen, faTrashAlt, faWindowRestore } from '@fortawesome/free-regular-svg-icons';
import * as os from '@/os'; import * as os from '@client/os';
import { faICursor } from '@fortawesome/free-solid-svg-icons'; import { faICursor } from '@fortawesome/free-solid-svg-icons';
export default defineComponent({ export default defineComponent({

View File

@ -15,7 +15,7 @@
<script lang="ts"> <script lang="ts">
import { defineComponent } from 'vue'; import { defineComponent } from 'vue';
import { faCloud } from '@fortawesome/free-solid-svg-icons'; import { faCloud } from '@fortawesome/free-solid-svg-icons';
import * as os from '@/os'; import * as os from '@client/os';
export default defineComponent({ export default defineComponent({
props: { props: {

View File

@ -52,7 +52,7 @@ import XNavFolder from './drive.nav-folder.vue';
import XFolder from './drive.folder.vue'; import XFolder from './drive.folder.vue';
import XFile from './drive.file.vue'; import XFile from './drive.file.vue';
import MkButton from './ui/button.vue'; import MkButton from './ui/button.vue';
import * as os from '@/os'; import * as os from '@client/os';
import { faTrashAlt } from '@fortawesome/free-regular-svg-icons'; import { faTrashAlt } from '@fortawesome/free-regular-svg-icons';
export default defineComponent({ export default defineComponent({

View File

@ -6,8 +6,8 @@
<script lang="ts"> <script lang="ts">
import { defineComponent, markRaw } from 'vue'; import { defineComponent, markRaw } from 'vue';
import MkModal from '@/components/ui/modal.vue'; import MkModal from '@client/components/ui/modal.vue';
import MkEmojiPicker from '@/components/emoji-picker.vue'; import MkEmojiPicker from '@client/components/emoji-picker.vue';
export default defineComponent({ export default defineComponent({
components: { components: {

View File

@ -13,8 +13,8 @@
<script lang="ts"> <script lang="ts">
import { defineComponent, markRaw } from 'vue'; import { defineComponent, markRaw } from 'vue';
import MkWindow from '@/components/ui/window.vue'; import MkWindow from '@client/components/ui/window.vue';
import MkEmojiPicker from '@/components/emoji-picker.vue'; import MkEmojiPicker from '@client/components/emoji-picker.vue';
export default defineComponent({ export default defineComponent({
components: { components: {

View File

@ -18,7 +18,7 @@
<script lang="ts"> <script lang="ts">
import { defineComponent, markRaw } from 'vue'; import { defineComponent, markRaw } from 'vue';
import { faChevronUp, faChevronDown } from '@fortawesome/free-solid-svg-icons'; import { faChevronUp, faChevronDown } from '@fortawesome/free-solid-svg-icons';
import { getStaticImageUrl } from '@/scripts/get-static-image-url'; import { getStaticImageUrl } from '@client/scripts/get-static-image-url';
export default defineComponent({ export default defineComponent({
props: { props: {

View File

@ -74,15 +74,15 @@
<script lang="ts"> <script lang="ts">
import { defineComponent, markRaw } from 'vue'; import { defineComponent, markRaw } from 'vue';
import { emojilist } from '../../misc/emojilist'; import { emojilist } from '@/misc/emojilist';
import { getStaticImageUrl } from '@/scripts/get-static-image-url'; import { getStaticImageUrl } from '@client/scripts/get-static-image-url';
import { faAsterisk, faLeaf, faUtensils, faFutbol, faCity, faDice, faGlobe, faClock, faUser, faChevronDown, faShapes, faBicycle, faHashtag } from '@fortawesome/free-solid-svg-icons'; import { faAsterisk, faLeaf, faUtensils, faFutbol, faCity, faDice, faGlobe, faClock, faUser, faChevronDown, faShapes, faBicycle, faHashtag } from '@fortawesome/free-solid-svg-icons';
import { faHeart, faFlag, faLaugh } from '@fortawesome/free-regular-svg-icons'; import { faHeart, faFlag, faLaugh } from '@fortawesome/free-regular-svg-icons';
import Particle from '@/components/particle.vue'; import Particle from '@client/components/particle.vue';
import * as os from '@/os'; import * as os from '@client/os';
import { isDeviceTouch } from '@/scripts/is-device-touch'; import { isDeviceTouch } from '@client/scripts/is-device-touch';
import { isMobile } from '@/scripts/is-mobile'; import { isMobile } from '@client/scripts/is-mobile';
import { emojiCategories } from '@/instance'; import { emojiCategories } from '@client/instance';
import XSection from './emoji-picker.section.vue'; import XSection from './emoji-picker.section.vue';
export default defineComponent({ export default defineComponent({

View File

@ -6,7 +6,7 @@
<script lang="ts"> <script lang="ts">
import { defineComponent } from 'vue'; import { defineComponent } from 'vue';
import * as os from '@/os'; import * as os from '@client/os';
export default defineComponent({ export default defineComponent({
components: { components: {

View File

@ -7,7 +7,7 @@
<script lang="ts"> <script lang="ts">
import { defineComponent } from 'vue'; import { defineComponent } from 'vue';
import { faFileImage } from '@fortawesome/free-solid-svg-icons'; import { faFileImage } from '@fortawesome/free-solid-svg-icons';
import * as os from '@/os'; import * as os from '@client/os';
export default defineComponent({ export default defineComponent({
props: { props: {

View File

@ -30,7 +30,7 @@
<script lang="ts"> <script lang="ts">
import { defineComponent } from 'vue'; import { defineComponent } from 'vue';
import { faSpinner, faPlus, faMinus, faHourglassHalf } from '@fortawesome/free-solid-svg-icons'; import { faSpinner, faPlus, faMinus, faHourglassHalf } from '@fortawesome/free-solid-svg-icons';
import * as os from '@/os'; import * as os from '@client/os';
export default defineComponent({ export default defineComponent({
props: { props: {

View File

@ -48,7 +48,7 @@
<script lang="ts"> <script lang="ts">
import { defineComponent } from 'vue'; import { defineComponent } from 'vue';
import XModalWindow from '@/components/ui/modal-window.vue'; import XModalWindow from '@client/components/ui/modal-window.vue';
import FormBase from './form/base.vue'; import FormBase from './form/base.vue';
import FormInput from './form/input.vue'; import FormInput from './form/input.vue';
import FormTextarea from './form/textarea.vue'; import FormTextarea from './form/textarea.vue';

View File

@ -16,7 +16,7 @@
import { defineComponent } from 'vue'; import { defineComponent } from 'vue';
import FormButton from './button.vue'; import FormButton from './button.vue';
import FormGroup from './group.vue'; import FormGroup from './group.vue';
import paging from '@/scripts/paging'; import paging from '@client/scripts/paging';
export default defineComponent({ export default defineComponent({
components: { components: {

View File

@ -1,6 +1,6 @@
<script lang="ts"> <script lang="ts">
import { defineComponent, h } from 'vue'; import { defineComponent, h } from 'vue';
import MkRadio from '@/components/ui/radio.vue'; import MkRadio from '@client/components/ui/radio.vue';
import './form.scss'; import './form.scss';
export default defineComponent({ export default defineComponent({

View File

@ -6,7 +6,7 @@
<script lang="ts"> <script lang="ts">
import { defineComponent } from 'vue'; import { defineComponent } from 'vue';
import * as katex from 'katex';import * as os from '@/os'; import * as katex from 'katex';import * as os from '@client/os';
export default defineComponent({ export default defineComponent({
props: { props: {

View File

@ -3,7 +3,7 @@
</template> </template>
<script lang="ts"> <script lang="ts">
import { defineComponent, defineAsyncComponent } from 'vue';import * as os from '@/os'; import { defineComponent, defineAsyncComponent } from 'vue';import * as os from '@client/os';
export default defineComponent({ export default defineComponent({
components: { components: {

View File

@ -7,12 +7,12 @@
<script lang="ts"> <script lang="ts">
import { defineComponent } from 'vue'; import { defineComponent } from 'vue';
import { faExpandAlt, faColumns, faExternalLinkAlt, faLink, faWindowMaximize } from '@fortawesome/free-solid-svg-icons'; import { faExpandAlt, faColumns, faExternalLinkAlt, faLink, faWindowMaximize } from '@fortawesome/free-solid-svg-icons';
import * as os from '@/os'; import * as os from '@client/os';
import copyToClipboard from '@/scripts/copy-to-clipboard'; import copyToClipboard from '@client/scripts/copy-to-clipboard';
import { router } from '@/router'; import { router } from '@client/router';
import { url } from '@/config'; import { url } from '@client/config';
import { popout } from '@/scripts/popout'; import { popout } from '@client/scripts/popout';
import { ColdDeviceStorage } from '@/store'; import { ColdDeviceStorage } from '@client/store';
export default defineComponent({ export default defineComponent({
inject: { inject: {

View File

@ -8,7 +8,7 @@
<script lang="ts"> <script lang="ts">
import { defineComponent } from 'vue'; import { defineComponent } from 'vue';
import { toUnicode } from 'punycode'; import { toUnicode } from 'punycode';
import { host } from '@/config'; import { host } from '@client/config';
export default defineComponent({ export default defineComponent({
props: ['user', 'detail'], props: ['user', 'detail'],

View File

@ -9,9 +9,9 @@
<script lang="ts"> <script lang="ts">
import { defineComponent } from 'vue'; import { defineComponent } from 'vue';
import { getStaticImageUrl } from '@/scripts/get-static-image-url'; import { getStaticImageUrl } from '@client/scripts/get-static-image-url';
import { extractAvgColorFromBlurhash } from '@/scripts/extract-avg-color-from-blurhash'; import { extractAvgColorFromBlurhash } from '@client/scripts/extract-avg-color-from-blurhash';
import { acct, userPage } from '@/filters/user'; import { acct, userPage } from '@client/filters/user';
export default defineComponent({ export default defineComponent({
props: { props: {

View File

@ -7,8 +7,8 @@
<script lang="ts"> <script lang="ts">
import { defineComponent } from 'vue'; import { defineComponent } from 'vue';
import { getStaticImageUrl } from '@/scripts/get-static-image-url'; import { getStaticImageUrl } from '@client/scripts/get-static-image-url';
import { twemojiSvgBase } from '@/../misc/twemoji-base'; import { twemojiSvgBase } from '@client/../misc/twemoji-base';
export default defineComponent({ export default defineComponent({
props: { props: {

View File

@ -11,7 +11,7 @@
<script lang="ts"> <script lang="ts">
import { defineComponent } from 'vue'; import { defineComponent } from 'vue';
import { faExclamationTriangle } from '@fortawesome/free-solid-svg-icons'; import { faExclamationTriangle } from '@fortawesome/free-solid-svg-icons';
import MkButton from '@/components/ui/button.vue'; import MkButton from '@client/components/ui/button.vue';
export default defineComponent({ export default defineComponent({
components: { components: {

View File

@ -6,7 +6,7 @@
<script lang="ts"> <script lang="ts">
import { defineComponent } from 'vue'; import { defineComponent } from 'vue';
import * as os from '@/os'; import * as os from '@client/os';
export default defineComponent({ export default defineComponent({
props: { props: {

View File

@ -4,7 +4,7 @@
<script lang="ts"> <script lang="ts">
import { defineComponent } from 'vue'; import { defineComponent } from 'vue';
import MfmCore from '@/components/mfm'; import MfmCore from '@client/components/mfm';
export default defineComponent({ export default defineComponent({
components: { components: {

View File

@ -23,9 +23,9 @@
import { defineComponent } from 'vue'; import { defineComponent } from 'vue';
import { faExternalLinkSquareAlt } from '@fortawesome/free-solid-svg-icons'; import { faExternalLinkSquareAlt } from '@fortawesome/free-solid-svg-icons';
import { toUnicode as decodePunycode } from 'punycode'; import { toUnicode as decodePunycode } from 'punycode';
import { url as local } from '@/config'; import { url as local } from '@client/config';
import { isDeviceTouch } from '@/scripts/is-device-touch'; import { isDeviceTouch } from '@client/scripts/is-device-touch';
import * as os from '@/os'; import * as os from '@client/os';
export default defineComponent({ export default defineComponent({
props: { props: {
@ -72,7 +72,7 @@ export default defineComponent({
if (!document.body.contains(this.$el)) return; if (!document.body.contains(this.$el)) return;
if (this.close) return; if (this.close) return;
const { dispose } = await os.popup(import('@/components/url-preview-popup.vue'), { const { dispose } = await os.popup(import('@client/components/url-preview-popup.vue'), {
url: this.url, url: this.url,
source: this.$el source: this.$el
}); });

View File

@ -8,7 +8,7 @@
<script lang="ts"> <script lang="ts">
import { defineComponent } from 'vue'; import { defineComponent } from 'vue';
import { faSearch } from '@fortawesome/free-solid-svg-icons'; import { faSearch } from '@fortawesome/free-solid-svg-icons';
import * as os from '@/os'; import * as os from '@client/os';
export default defineComponent({ export default defineComponent({
props: ['q'], props: ['q'],

View File

@ -14,9 +14,9 @@
<script lang="ts"> <script lang="ts">
import { defineComponent } from 'vue'; import { defineComponent } from 'vue';
import bytes from '@/filters/bytes'; import bytes from '@client/filters/bytes';
import number from '@/filters/number'; import number from '@client/filters/number';
import MkModal from '@/components/ui/modal.vue'; import MkModal from '@client/components/ui/modal.vue';
export default defineComponent({ export default defineComponent({
components: { components: {

View File

@ -126,7 +126,7 @@ import { defineComponent, markRaw } from 'vue';
import { faChartBar, faUser, faPencilAlt, faSync } from '@fortawesome/free-solid-svg-icons'; import { faChartBar, faUser, faPencilAlt, faSync } from '@fortawesome/free-solid-svg-icons';
import Chart from 'chart.js'; import Chart from 'chart.js';
import MkSelect from './ui/select.vue'; import MkSelect from './ui/select.vue';
import number from '@/filters/number'; import number from '@client/filters/number';
const sum = (...arr) => arr.reduce((r, a) => r.map((b, i) => a[i] + b)); const sum = (...arr) => arr.reduce((r, a) => r.map((b, i) => a[i] + b));
const negate = arr => arr.map(x => -x); const negate = arr => arr.map(x => -x);
@ -137,7 +137,7 @@ const alpha = (hex, a) => {
const b = parseInt(result[3], 16); const b = parseInt(result[3], 16);
return `rgba(${r}, ${g}, ${b}, ${a})`; return `rgba(${r}, ${g}, ${b}, ${a})`;
}; };
import * as os from '@/os'; import * as os from '@client/os';
export default defineComponent({ export default defineComponent({
components: { components: {

View File

@ -7,7 +7,7 @@
<script lang="ts"> <script lang="ts">
import { defineComponent } from 'vue'; import { defineComponent } from 'vue';
import { instanceName } from '@/config'; import { instanceName } from '@client/config';
export default defineComponent({ export default defineComponent({
props: { props: {

View File

@ -36,9 +36,9 @@
<script lang="ts"> <script lang="ts">
import { defineComponent } from 'vue'; import { defineComponent } from 'vue';
import { faQuestionCircle, faInfoCircle, faCircle } from '@fortawesome/free-solid-svg-icons'; import { faQuestionCircle, faInfoCircle, faCircle } from '@fortawesome/free-solid-svg-icons';
import MkModal from '@/components/ui/modal.vue'; import MkModal from '@client/components/ui/modal.vue';
import { sidebarDef } from '@/sidebar'; import { sidebarDef } from '@client/sidebar';
import { instanceName } from '@/config'; import { instanceName } from '@client/config';
export default defineComponent({ export default defineComponent({
components: { components: {

View File

@ -12,9 +12,9 @@
<script lang="ts"> <script lang="ts">
import { defineComponent } from 'vue'; import { defineComponent } from 'vue';
import { faExternalLinkSquareAlt } from '@fortawesome/free-solid-svg-icons'; import { faExternalLinkSquareAlt } from '@fortawesome/free-solid-svg-icons';
import { url as local } from '@/config'; import { url as local } from '@client/config';
import { isDeviceTouch } from '@/scripts/is-device-touch'; import { isDeviceTouch } from '@client/scripts/is-device-touch';
import * as os from '@/os'; import * as os from '@client/os';
export default defineComponent({ export default defineComponent({
props: { props: {
@ -46,7 +46,7 @@ export default defineComponent({
if (!document.body.contains(this.$el)) return; if (!document.body.contains(this.$el)) return;
if (this.close) return; if (this.close) return;
const { dispose } = await os.popup(import('@/components/url-preview-popup.vue'), { const { dispose } = await os.popup(import('@client/components/url-preview-popup.vue'), {
url: this.url, url: this.url,
source: this.$el source: this.$el
}); });

View File

@ -28,8 +28,8 @@
<script lang="ts"> <script lang="ts">
import { defineComponent } from 'vue'; import { defineComponent } from 'vue';
import { faExclamationTriangle } from '@fortawesome/free-solid-svg-icons'; import { faExclamationTriangle } from '@fortawesome/free-solid-svg-icons';
import * as os from '@/os'; import * as os from '@client/os';
import { ColdDeviceStorage } from '@/store'; import { ColdDeviceStorage } from '@client/store';
export default defineComponent({ export default defineComponent({
props: { props: {

View File

@ -24,11 +24,11 @@
<script lang="ts"> <script lang="ts">
import { defineComponent } from 'vue'; import { defineComponent } from 'vue';
import { faExclamationTriangle, faEyeSlash } from '@fortawesome/free-solid-svg-icons'; import { faExclamationTriangle, faEyeSlash } from '@fortawesome/free-solid-svg-icons';
import { getStaticImageUrl } from '@/scripts/get-static-image-url'; import { getStaticImageUrl } from '@client/scripts/get-static-image-url';
import { extractAvgColorFromBlurhash } from '@/scripts/extract-avg-color-from-blurhash'; import { extractAvgColorFromBlurhash } from '@client/scripts/extract-avg-color-from-blurhash';
import ImageViewer from './image-viewer.vue'; import ImageViewer from './image-viewer.vue';
import ImgWithBlurhash from './img-with-blurhash.vue'; import ImgWithBlurhash from './img-with-blurhash.vue';
import * as os from '@/os'; import * as os from '@client/os';
export default defineComponent({ export default defineComponent({
components: { components: {

View File

@ -17,7 +17,7 @@ import { defineComponent } from 'vue';
import XBanner from './media-banner.vue'; import XBanner from './media-banner.vue';
import XImage from './media-image.vue'; import XImage from './media-image.vue';
import XVideo from './media-video.vue'; import XVideo from './media-video.vue';
import * as os from '@/os'; import * as os from '@client/os';
export default defineComponent({ export default defineComponent({
components: { components: {

View File

@ -25,7 +25,7 @@
<script lang="ts"> <script lang="ts">
import { defineComponent } from 'vue'; import { defineComponent } from 'vue';
import { faExclamationTriangle, faEyeSlash } from '@fortawesome/free-solid-svg-icons'; import { faExclamationTriangle, faEyeSlash } from '@fortawesome/free-solid-svg-icons';
import * as os from '@/os'; import * as os from '@client/os';
export default defineComponent({ export default defineComponent({
props: { props: {

View File

@ -17,9 +17,9 @@
<script lang="ts"> <script lang="ts">
import { defineComponent } from 'vue'; import { defineComponent } from 'vue';
import { toUnicode } from 'punycode'; import { toUnicode } from 'punycode';
import { host as localHost } from '@/config'; import { host as localHost } from '@client/config';
import { wellKnownServices } from '../../well-known-services'; import { wellKnownServices } from '../../well-known-services';
import * as os from '@/os'; import * as os from '@client/os';
export default defineComponent({ export default defineComponent({
props: { props: {

View File

@ -1,16 +1,16 @@
import { VNode, defineComponent, h } from 'vue'; import { VNode, defineComponent, h } from 'vue';
import { MfmForest } from '@/../mfm/prelude'; import { MfmForest } from '@client/../mfm/prelude';
import { parse, parsePlain } from '@/../mfm/parse'; import { parse, parsePlain } from '@client/../mfm/parse';
import MkUrl from '@/components/global/url.vue'; import MkUrl from '@client/components/global/url.vue';
import MkLink from '@/components/link.vue'; import MkLink from '@client/components/link.vue';
import MkMention from '@/components/mention.vue'; import MkMention from '@client/components/mention.vue';
import MkEmoji from '@/components/global/emoji.vue'; import MkEmoji from '@client/components/global/emoji.vue';
import { concat } from '@/../prelude/array'; import { concat } from '@client/../prelude/array';
import MkFormula from '@/components/formula.vue'; import MkFormula from '@client/components/formula.vue';
import MkCode from '@/components/code.vue'; import MkCode from '@client/components/code.vue';
import MkGoogle from '@/components/google.vue'; import MkGoogle from '@client/components/google.vue';
import MkA from '@/components/global/a.vue'; import MkA from '@client/components/global/a.vue';
import { host } from '@/config'; import { host } from '@client/config';
export default defineComponent({ export default defineComponent({
props: { props: {

View File

@ -32,7 +32,7 @@
<script lang="ts"> <script lang="ts">
import { defineComponent } from 'vue'; import { defineComponent } from 'vue';
import { v4 as uuid } from 'uuid'; import { v4 as uuid } from 'uuid';
import * as os from '@/os'; import * as os from '@client/os';
export default defineComponent({ export default defineComponent({
props: { props: {

View File

@ -132,15 +132,15 @@ import XReactionsViewer from './reactions-viewer.vue';
import XMediaList from './media-list.vue'; import XMediaList from './media-list.vue';
import XCwButton from './cw-button.vue'; import XCwButton from './cw-button.vue';
import XPoll from './poll.vue'; import XPoll from './poll.vue';
import { pleaseLogin } from '@/scripts/please-login'; import { pleaseLogin } from '@client/scripts/please-login';
import { focusPrev, focusNext } from '@/scripts/focus'; import { focusPrev, focusNext } from '@client/scripts/focus';
import { url } from '@/config'; import { url } from '@client/config';
import copyToClipboard from '@/scripts/copy-to-clipboard'; import copyToClipboard from '@client/scripts/copy-to-clipboard';
import { checkWordMute } from '@/scripts/check-word-mute'; import { checkWordMute } from '@client/scripts/check-word-mute';
import { userPage } from '@/filters/user'; import { userPage } from '@client/filters/user';
import * as os from '@/os'; import * as os from '@client/os';
import { noteActions, noteViewInterruptors } from '@/store'; import { noteActions, noteViewInterruptors } from '@client/store';
import { reactionPicker } from '@/scripts/reaction-picker'; import { reactionPicker } from '@client/scripts/reaction-picker';
function markRawAll(...xs) { function markRawAll(...xs) {
for (const x of xs) { for (const x of xs) {
@ -160,8 +160,8 @@ export default defineComponent({
XMediaList, XMediaList,
XCwButton, XCwButton,
XPoll, XPoll,
MkUrlPreview: defineAsyncComponent(() => import('@/components/url-preview.vue')), MkUrlPreview: defineAsyncComponent(() => import('@client/components/url-preview.vue')),
MkInstanceTicker: defineAsyncComponent(() => import('@/components/instance-ticker.vue')), MkInstanceTicker: defineAsyncComponent(() => import('@client/components/instance-ticker.vue')),
}, },
inject: { inject: {
@ -350,7 +350,8 @@ export default defineComponent({
capture(withHandler = false) { capture(withHandler = false) {
if (this.$i) { if (this.$i) {
this.connection.send(document.body.contains(this.$el) ? 'sn' : 's', { id: this.appearNote.id }); // TODO: sr
this.connection.send(document.body.contains(this.$el) ? 'sr' : 's', { id: this.appearNote.id });
if (withHandler) this.connection.on('noteUpdated', this.onStreamNoteUpdated); if (withHandler) this.connection.on('noteUpdated', this.onStreamNoteUpdated);
} }
}, },
@ -686,7 +687,7 @@ export default defineComponent({
text: this.$ts.reportAbuse, text: this.$ts.reportAbuse,
action: () => { action: () => {
const u = `${url}/notes/${this.appearNote.id}`; const u = `${url}/notes/${this.appearNote.id}`;
os.popup(import('@/components/abuse-report-window.vue'), { os.popup(import('@client/components/abuse-report-window.vue'), {
user: this.appearNote.user, user: this.appearNote.user,
initialComment: `Note: ${u}\n-----\n` initialComment: `Note: ${u}\n-----\n`
}, {}, 'closed'); }, {}, 'closed');

View File

@ -28,7 +28,7 @@ import { faHome, faUnlock, faEnvelope, faMobileAlt, faBookmark, faBiohazard } fr
import { faBookmark as farBookmark } from '@fortawesome/free-regular-svg-icons'; import { faBookmark as farBookmark } from '@fortawesome/free-regular-svg-icons';
import notePage from '../filters/note'; import notePage from '../filters/note';
import { userPage } from '../filters/user'; import { userPage } from '../filters/user';
import * as os from '@/os'; import * as os from '@client/os';
export default defineComponent({ export default defineComponent({
props: { props: {

View File

@ -21,7 +21,7 @@ import { defineComponent } from 'vue';
import XNoteHeader from './note-header.vue'; import XNoteHeader from './note-header.vue';
import XSubNoteContent from './sub-note-content.vue'; import XSubNoteContent from './sub-note-content.vue';
import XCwButton from './cw-button.vue'; import XCwButton from './cw-button.vue';
import * as os from '@/os'; import * as os from '@client/os';
export default defineComponent({ export default defineComponent({
components: { components: {

View File

@ -24,7 +24,7 @@ import { defineComponent } from 'vue';
import XNoteHeader from './note-header.vue'; import XNoteHeader from './note-header.vue';
import XSubNoteContent from './sub-note-content.vue'; import XSubNoteContent from './sub-note-content.vue';
import XCwButton from './cw-button.vue'; import XCwButton from './cw-button.vue';
import * as os from '@/os'; import * as os from '@client/os';
export default defineComponent({ export default defineComponent({
name: 'XSub', name: 'XSub',

View File

@ -114,15 +114,15 @@ import XReactionsViewer from './reactions-viewer.vue';
import XMediaList from './media-list.vue'; import XMediaList from './media-list.vue';
import XCwButton from './cw-button.vue'; import XCwButton from './cw-button.vue';
import XPoll from './poll.vue'; import XPoll from './poll.vue';
import { pleaseLogin } from '@/scripts/please-login'; import { pleaseLogin } from '@client/scripts/please-login';
import { focusPrev, focusNext } from '@/scripts/focus'; import { focusPrev, focusNext } from '@client/scripts/focus';
import { url } from '@/config'; import { url } from '@client/config';
import copyToClipboard from '@/scripts/copy-to-clipboard'; import copyToClipboard from '@client/scripts/copy-to-clipboard';
import { checkWordMute } from '@/scripts/check-word-mute'; import { checkWordMute } from '@client/scripts/check-word-mute';
import { userPage } from '@/filters/user'; import { userPage } from '@client/filters/user';
import * as os from '@/os'; import * as os from '@client/os';
import { noteActions, noteViewInterruptors } from '@/store'; import { noteActions, noteViewInterruptors } from '@client/store';
import { reactionPicker } from '@/scripts/reaction-picker'; import { reactionPicker } from '@client/scripts/reaction-picker';
function markRawAll(...xs) { function markRawAll(...xs) {
for (const x of xs) { for (const x of xs) {
@ -141,8 +141,8 @@ export default defineComponent({
XMediaList, XMediaList,
XCwButton, XCwButton,
XPoll, XPoll,
MkUrlPreview: defineAsyncComponent(() => import('@/components/url-preview.vue')), MkUrlPreview: defineAsyncComponent(() => import('@client/components/url-preview.vue')),
MkInstanceTicker: defineAsyncComponent(() => import('@/components/instance-ticker.vue')), MkInstanceTicker: defineAsyncComponent(() => import('@client/components/instance-ticker.vue')),
}, },
inject: { inject: {
@ -325,7 +325,8 @@ export default defineComponent({
capture(withHandler = false) { capture(withHandler = false) {
if (this.$i) { if (this.$i) {
this.connection.send(document.body.contains(this.$el) ? 'sn' : 's', { id: this.appearNote.id }); // TODO: sr
this.connection.send(document.body.contains(this.$el) ? 'sr' : 's', { id: this.appearNote.id });
if (withHandler) this.connection.on('noteUpdated', this.onStreamNoteUpdated); if (withHandler) this.connection.on('noteUpdated', this.onStreamNoteUpdated);
} }
}, },
@ -661,7 +662,7 @@ export default defineComponent({
text: this.$ts.reportAbuse, text: this.$ts.reportAbuse,
action: () => { action: () => {
const u = `${url}/notes/${this.appearNote.id}`; const u = `${url}/notes/${this.appearNote.id}`;
os.popup(import('@/components/abuse-report-window.vue'), { os.popup(import('@client/components/abuse-report-window.vue'), {
user: this.appearNote.user, user: this.appearNote.user,
initialComment: `Note: ${u}\n-----\n` initialComment: `Note: ${u}\n-----\n`
}, {}, 'closed'); }, {}, 'closed');

View File

@ -29,10 +29,10 @@
<script lang="ts"> <script lang="ts">
import { defineComponent } from 'vue'; import { defineComponent } from 'vue';
import paging from '@/scripts/paging'; import paging from '@client/scripts/paging';
import XNote from './note.vue'; import XNote from './note.vue';
import XList from './date-separated-list.vue'; import XList from './date-separated-list.vue';
import MkButton from '@/components/ui/button.vue'; import MkButton from '@client/components/ui/button.vue';
export default defineComponent({ export default defineComponent({
components: { components: {

View File

@ -26,7 +26,7 @@
<script lang="ts"> <script lang="ts">
import { defineComponent, PropType } from 'vue'; import { defineComponent, PropType } from 'vue';
import XModalWindow from '@/components/ui/modal-window.vue'; import XModalWindow from '@client/components/ui/modal-window.vue';
import MkSwitch from './ui/switch.vue'; import MkSwitch from './ui/switch.vue';
import MkInfo from './ui/info.vue'; import MkInfo from './ui/info.vue';
import MkButton from './ui/button.vue'; import MkButton from './ui/button.vue';

View File

@ -61,14 +61,13 @@
import { defineComponent } from 'vue'; import { defineComponent } from 'vue';
import { faIdCardAlt, faPlus, faQuoteLeft, faQuoteRight, faRetweet, faReply, faAt, faCheck, faPollH } from '@fortawesome/free-solid-svg-icons'; import { faIdCardAlt, faPlus, faQuoteLeft, faQuoteRight, faRetweet, faReply, faAt, faCheck, faPollH } from '@fortawesome/free-solid-svg-icons';
import { faClock } from '@fortawesome/free-regular-svg-icons'; import { faClock } from '@fortawesome/free-regular-svg-icons';
import { getNoteSummary } from '../../misc/get-note-summary'; import { getNoteSummary } from '@/misc/get-note-summary';
import XReactionIcon from './reaction-icon.vue'; import XReactionIcon from './reaction-icon.vue';
import MkFollowButton from './follow-button.vue'; import MkFollowButton from './follow-button.vue';
import notePage from '../filters/note'; import notePage from '../filters/note';
import { userPage } from '../filters/user'; import { userPage } from '../filters/user';
import { i18n } from '@/i18n'; import { i18n } from '@client/i18n';
import * as os from '@/os'; import * as os from '@client/os';
import { markNotificationRead } from '@/scripts/mark-notification-read';
export default defineComponent({ export default defineComponent({
components: { components: {

View File

@ -18,13 +18,13 @@
<script lang="ts"> <script lang="ts">
import { defineComponent, PropType } from 'vue'; import { defineComponent, PropType } from 'vue';
import paging from '@/scripts/paging'; import paging from '@client/scripts/paging';
import { markNotificationRead } from '@/scripts/mark-notification-read'; import { markNotificationRead } from '@client/scripts/mark-notification-read';
import XNotification from './notification.vue'; import XNotification from './notification.vue';
import XList from './date-separated-list.vue'; import XList from './date-separated-list.vue';
import XNote from './note.vue'; import XNote from './note.vue';
import { notificationTypes } from '../../types'; import { notificationTypes } from '../../types';
import * as os from '@/os'; import * as os from '@client/os';
export default defineComponent({ export default defineComponent({
components: { components: {

View File

@ -17,7 +17,7 @@
<script lang="ts"> <script lang="ts">
import { defineComponent } from 'vue'; import { defineComponent } from 'vue';
import { userName } from '../filters/user'; import { userName } from '../filters/user';
import * as os from '@/os'; import * as os from '@client/os';
export default defineComponent({ export default defineComponent({
props: { props: {

View File

@ -23,12 +23,12 @@
<script lang="ts"> <script lang="ts">
import { defineComponent } from 'vue'; import { defineComponent } from 'vue';
import { faExternalLinkAlt, faExpandAlt, faLink, faChevronLeft, faColumns } from '@fortawesome/free-solid-svg-icons'; import { faExternalLinkAlt, faExpandAlt, faLink, faChevronLeft, faColumns } from '@fortawesome/free-solid-svg-icons';
import XWindow from '@/components/ui/window.vue'; import XWindow from '@client/components/ui/window.vue';
import XHeader from '@/ui/_common_/header.vue'; import XHeader from '@client/ui/_common_/header.vue';
import { popout } from '@/scripts/popout'; import { popout } from '@client/scripts/popout';
import copyToClipboard from '@/scripts/copy-to-clipboard'; import copyToClipboard from '@client/scripts/copy-to-clipboard';
import { resolve } from '@/router'; import { resolve } from '@client/router';
import { url } from '@/config'; import { url } from '@client/config';
export default defineComponent({ export default defineComponent({
components: { components: {

View File

@ -19,8 +19,8 @@ import XCounter from './page.counter.vue';
import XRadioButton from './page.radio-button.vue'; import XRadioButton from './page.radio-button.vue';
import XCanvas from './page.canvas.vue'; import XCanvas from './page.canvas.vue';
import XNote from './page.note.vue'; import XNote from './page.note.vue';
import { Hpml } from '@/scripts/hpml/evaluator'; import { Hpml } from '@client/scripts/hpml/evaluator';
import { Block } from '@/scripts/hpml/block'; import { Block } from '@client/scripts/hpml/block';
export default defineComponent({ export default defineComponent({
components: { components: {

View File

@ -7,9 +7,9 @@
<script lang="ts"> <script lang="ts">
import { defineComponent, PropType, unref } from 'vue'; import { defineComponent, PropType, unref } from 'vue';
import MkButton from '../ui/button.vue'; import MkButton from '../ui/button.vue';
import * as os from '@/os'; import * as os from '@client/os';
import { ButtonBlock } from '@/scripts/hpml/block'; import { ButtonBlock } from '@client/scripts/hpml/block';
import { Hpml } from '@/scripts/hpml/evaluator'; import { Hpml } from '@client/scripts/hpml/evaluator';
export default defineComponent({ export default defineComponent({
components: { components: {

View File

@ -6,9 +6,9 @@
<script lang="ts"> <script lang="ts">
import { defineComponent, onMounted, PropType, Ref, ref } from 'vue'; import { defineComponent, onMounted, PropType, Ref, ref } from 'vue';
import * as os from '@/os'; import * as os from '@client/os';
import { CanvasBlock } from '@/scripts/hpml/block'; import { CanvasBlock } from '@client/scripts/hpml/block';
import { Hpml } from '@/scripts/hpml/evaluator'; import { Hpml } from '@client/scripts/hpml/evaluator';
export default defineComponent({ export default defineComponent({
props: { props: {

View File

@ -7,9 +7,9 @@
<script lang="ts"> <script lang="ts">
import { computed, defineComponent, PropType } from 'vue'; import { computed, defineComponent, PropType } from 'vue';
import MkButton from '../ui/button.vue'; import MkButton from '../ui/button.vue';
import * as os from '@/os'; import * as os from '@client/os';
import { CounterVarBlock } from '@/scripts/hpml/block'; import { CounterVarBlock } from '@client/scripts/hpml/block';
import { Hpml } from '@/scripts/hpml/evaluator'; import { Hpml } from '@client/scripts/hpml/evaluator';
export default defineComponent({ export default defineComponent({
components: { components: {

View File

@ -5,8 +5,8 @@
</template> </template>
<script lang="ts"> <script lang="ts">
import { IfBlock } from '@/scripts/hpml/block'; import { IfBlock } from '@client/scripts/hpml/block';
import { Hpml } from '@/scripts/hpml/evaluator'; import { Hpml } from '@client/scripts/hpml/evaluator';
import { defineComponent, defineAsyncComponent, PropType } from 'vue'; import { defineComponent, defineAsyncComponent, PropType } from 'vue';
export default defineComponent({ export default defineComponent({

View File

@ -6,9 +6,9 @@
<script lang="ts"> <script lang="ts">
import { defineComponent, PropType } from 'vue'; import { defineComponent, PropType } from 'vue';
import * as os from '@/os'; import * as os from '@client/os';
import { ImageBlock } from '@/scripts/hpml/block'; import { ImageBlock } from '@client/scripts/hpml/block';
import { Hpml } from '@/scripts/hpml/evaluator'; import { Hpml } from '@client/scripts/hpml/evaluator';
export default defineComponent({ export default defineComponent({
props: { props: {

View File

@ -7,10 +7,10 @@
<script lang="ts"> <script lang="ts">
import { defineComponent, onMounted, PropType, Ref, ref } from 'vue'; import { defineComponent, onMounted, PropType, Ref, ref } from 'vue';
import XNote from '@/components/note.vue'; import XNote from '@client/components/note.vue';
import XNoteDetailed from '@/components/note-detailed.vue'; import XNoteDetailed from '@client/components/note-detailed.vue';
import * as os from '@/os'; import * as os from '@client/os';
import { NoteBlock } from '@/scripts/hpml/block'; import { NoteBlock } from '@client/scripts/hpml/block';
export default defineComponent({ export default defineComponent({
components: { components: {

View File

@ -7,9 +7,9 @@
<script lang="ts"> <script lang="ts">
import { computed, defineComponent, PropType } from 'vue'; import { computed, defineComponent, PropType } from 'vue';
import MkInput from '../ui/input.vue'; import MkInput from '../ui/input.vue';
import * as os from '@/os'; import * as os from '@client/os';
import { Hpml } from '@/scripts/hpml/evaluator'; import { Hpml } from '@client/scripts/hpml/evaluator';
import { NumberInputVarBlock } from '@/scripts/hpml/block'; import { NumberInputVarBlock } from '@client/scripts/hpml/block';
export default defineComponent({ export default defineComponent({
components: { components: {

View File

@ -10,10 +10,10 @@ import { defineComponent, PropType } from 'vue';
import { faCheck, faPaperPlane } from '@fortawesome/free-solid-svg-icons'; import { faCheck, faPaperPlane } from '@fortawesome/free-solid-svg-icons';
import MkTextarea from '../ui/textarea.vue'; import MkTextarea from '../ui/textarea.vue';
import MkButton from '../ui/button.vue'; import MkButton from '../ui/button.vue';
import { apiUrl } from '@/config'; import { apiUrl } from '@client/config';
import * as os from '@/os'; import * as os from '@client/os';
import { PostBlock } from '@/scripts/hpml/block'; import { PostBlock } from '@client/scripts/hpml/block';
import { Hpml } from '@/scripts/hpml/evaluator'; import { Hpml } from '@client/scripts/hpml/evaluator';
export default defineComponent({ export default defineComponent({
components: { components: {

View File

@ -8,9 +8,9 @@
<script lang="ts"> <script lang="ts">
import { computed, defineComponent, PropType } from 'vue'; import { computed, defineComponent, PropType } from 'vue';
import MkRadio from '../ui/radio.vue'; import MkRadio from '../ui/radio.vue';
import * as os from '@/os'; import * as os from '@client/os';
import { Hpml } from '@/scripts/hpml/evaluator'; import { Hpml } from '@client/scripts/hpml/evaluator';
import { RadioButtonVarBlock } from '@/scripts/hpml/block'; import { RadioButtonVarBlock } from '@client/scripts/hpml/block';
export default defineComponent({ export default defineComponent({
components: { components: {

View File

@ -10,9 +10,9 @@
<script lang="ts"> <script lang="ts">
import { defineComponent, defineAsyncComponent, PropType } from 'vue'; import { defineComponent, defineAsyncComponent, PropType } from 'vue';
import * as os from '@/os'; import * as os from '@client/os';
import { SectionBlock } from '@/scripts/hpml/block'; import { SectionBlock } from '@client/scripts/hpml/block';
import { Hpml } from '@/scripts/hpml/evaluator'; import { Hpml } from '@client/scripts/hpml/evaluator';
export default defineComponent({ export default defineComponent({
components: { components: {

View File

@ -7,9 +7,9 @@
<script lang="ts"> <script lang="ts">
import { computed, defineComponent, PropType } from 'vue'; import { computed, defineComponent, PropType } from 'vue';
import MkSwitch from '../ui/switch.vue'; import MkSwitch from '../ui/switch.vue';
import * as os from '@/os'; import * as os from '@client/os';
import { Hpml } from '@/scripts/hpml/evaluator'; import { Hpml } from '@client/scripts/hpml/evaluator';
import { SwitchVarBlock } from '@/scripts/hpml/block'; import { SwitchVarBlock } from '@client/scripts/hpml/block';
export default defineComponent({ export default defineComponent({
components: { components: {

View File

@ -7,9 +7,9 @@
<script lang="ts"> <script lang="ts">
import { computed, defineComponent, PropType } from 'vue'; import { computed, defineComponent, PropType } from 'vue';
import MkInput from '../ui/input.vue'; import MkInput from '../ui/input.vue';
import * as os from '@/os'; import * as os from '@client/os';
import { Hpml } from '@/scripts/hpml/evaluator'; import { Hpml } from '@client/scripts/hpml/evaluator';
import { TextInputVarBlock } from '@/scripts/hpml/block'; import { TextInputVarBlock } from '@client/scripts/hpml/block';
export default defineComponent({ export default defineComponent({
components: { components: {

View File

@ -6,15 +6,15 @@
</template> </template>
<script lang="ts"> <script lang="ts">
import { TextBlock } from '@/scripts/hpml/block'; import { TextBlock } from '@client/scripts/hpml/block';
import { Hpml } from '@/scripts/hpml/evaluator'; import { Hpml } from '@client/scripts/hpml/evaluator';
import { defineAsyncComponent, defineComponent, PropType } from 'vue'; import { defineAsyncComponent, defineComponent, PropType } from 'vue';
import { parse } from '../../../mfm/parse'; import { parse } from '../../../mfm/parse';
import { unique } from '../../../prelude/array'; import { unique } from '../../../prelude/array';
export default defineComponent({ export default defineComponent({
components: { components: {
MkUrlPreview: defineAsyncComponent(() => import('@/components/url-preview.vue')), MkUrlPreview: defineAsyncComponent(() => import('@client/components/url-preview.vue')),
}, },
props: { props: {
block: { block: {

View File

@ -7,10 +7,10 @@
<script lang="ts"> <script lang="ts">
import { computed, defineComponent, PropType } from 'vue'; import { computed, defineComponent, PropType } from 'vue';
import MkTextarea from '../ui/textarea.vue'; import MkTextarea from '../ui/textarea.vue';
import * as os from '@/os'; import * as os from '@client/os';
import { Hpml } from '@/scripts/hpml/evaluator'; import { Hpml } from '@client/scripts/hpml/evaluator';
import { HpmlTextInput } from '@/scripts/hpml'; import { HpmlTextInput } from '@client/scripts/hpml';
import { TextInputVarBlock } from '@/scripts/hpml/block'; import { TextInputVarBlock } from '@client/scripts/hpml/block';
export default defineComponent({ export default defineComponent({
components: { components: {

View File

@ -3,8 +3,8 @@
</template> </template>
<script lang="ts"> <script lang="ts">
import { TextBlock } from '@/scripts/hpml/block'; import { TextBlock } from '@client/scripts/hpml/block';
import { Hpml } from '@/scripts/hpml/evaluator'; import { Hpml } from '@client/scripts/hpml/evaluator';
import { defineComponent, PropType } from 'vue'; import { defineComponent, PropType } from 'vue';
import MkTextarea from '../ui/textarea.vue'; import MkTextarea from '../ui/textarea.vue';

View File

@ -8,10 +8,10 @@
import { defineComponent, onMounted, nextTick, onUnmounted, PropType } from 'vue'; import { defineComponent, onMounted, nextTick, onUnmounted, PropType } from 'vue';
import { parse } from '@syuilo/aiscript'; import { parse } from '@syuilo/aiscript';
import XBlock from './page.block.vue'; import XBlock from './page.block.vue';
import { Hpml } from '@/scripts/hpml/evaluator'; import { Hpml } from '@client/scripts/hpml/evaluator';
import { url } from '@/config'; import { url } from '@client/config';
import { $i } from '@/account'; import { $i } from '@client/account';
import { defaultStore } from '@/store'; import { defaultStore } from '@client/store';
export default defineComponent({ export default defineComponent({
components: { components: {

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