diff options
| author | syuilo <Syuilotan@yahoo.co.jp> | 2021-04-25 15:20:39 +0900 |
|---|---|---|
| committer | syuilo <Syuilotan@yahoo.co.jp> | 2021-04-25 15:20:39 +0900 |
| commit | 92977f303ddc3d004418b3166606f16b1d8dec52 (patch) | |
| tree | 2e122d83bf8a10c60b7cf71671900344da779a54 | |
| parent | Merge branch 'develop' (diff) | |
| parent | 12.79.1 (diff) | |
| download | misskey-92977f303ddc3d004418b3166606f16b1d8dec52.tar.gz misskey-92977f303ddc3d004418b3166606f16b1d8dec52.tar.bz2 misskey-92977f303ddc3d004418b3166606f16b1d8dec52.zip | |
Merge branch 'develop'
Diffstat (limited to '')
| -rw-r--r-- | gulpfile.ts | 2 | ||||
| -rw-r--r-- | locales/de-DE.yml | 9 | ||||
| -rw-r--r-- | locales/en-US.yml | 9 | ||||
| -rw-r--r-- | locales/fr-FR.yml | 16 | ||||
| -rw-r--r-- | locales/it-IT.yml | 18 | ||||
| -rw-r--r-- | locales/ko-KR.yml | 1 | ||||
| -rw-r--r-- | locales/zh-CN.yml | 9 | ||||
| -rw-r--r-- | package.json | 45 | ||||
| -rw-r--r-- | src/client/components/launch-pad.vue | 10 | ||||
| -rw-r--r-- | src/client/pages/about.vue | 96 | ||||
| -rw-r--r-- | src/client/pages/gallery/post.vue | 14 | ||||
| -rw-r--r-- | src/client/pages/instance-info.vue | 3 | ||||
| -rw-r--r-- | src/client/pages/page.vue | 199 | ||||
| -rw-r--r-- | src/client/store.ts | 3 | ||||
| -rw-r--r-- | src/client/ui/chat/index.vue | 2 | ||||
| -rw-r--r-- | src/client/ui/deck/main-column.vue | 2 | ||||
| -rw-r--r-- | src/client/ui/default.sidebar.vue | 25 | ||||
| -rw-r--r-- | src/client/ui/default.vue | 2 | ||||
| -rw-r--r-- | src/client/ui/universal.vue | 2 | ||||
| -rw-r--r-- | src/misc/api-permissions.ts | 4 | ||||
| -rw-r--r-- | yarn.lock | 306 |
21 files changed, 499 insertions, 278 deletions
diff --git a/gulpfile.ts b/gulpfile.ts index bcd50890e2..660dfb013e 100644 --- a/gulpfile.ts +++ b/gulpfile.ts @@ -5,7 +5,7 @@ import * as fs from 'fs'; import * as gulp from 'gulp'; import * as rimraf from 'rimraf'; -import * as replace from 'gulp-replace'; +const replace = require('gulp-replace'); const terser = require('gulp-terser'); const cssnano = require('gulp-cssnano'); diff --git a/locales/de-DE.yml b/locales/de-DE.yml index f3e01e1ead..4ed3343378 100644 --- a/locales/de-DE.yml +++ b/locales/de-DE.yml @@ -704,6 +704,7 @@ editCode: "Code bearbeiten" apply: "Anwenden" receiveAnnouncementFromInstance: "E-Mail-Benachrichtigungen von dieser Instanz empfangen" emailNotification: "E-Mail-Benachrichtigungen" +publish: "Veröffentlichen" inChannelSearch: "In Kanal suchen" useReactionPickerForContextMenu: "Reaktionsauswahl durch Rechtsklick öffnen" typingUsers: "{users} ist/sind am schreiben..." @@ -739,7 +740,15 @@ switch: "Wechseln" noMaintainerInformationWarning: "Betreiberinformationen sind nicht konfiguriert." noBotProtectionWarning: "Bot-Schutz ist nicht konfiguriert." configure: "Konfigurieren" +postToGallery: "Beitrag zu Galerie hinzufügen" +gallery: "Galerie" +recentPosts: "Neue Beiträge" +popularPosts: "Beliebte Beiträge" +shareWithNote: "Mit Notiz teilen" _gallery: + my: "Meine Galerie" + liked: "Beiträge, die mir gefallen" + like: "Gefällt mir" unlike: "\"Gefällt mir\" entfernen" _email: _follow: diff --git a/locales/en-US.yml b/locales/en-US.yml index 4fd1b89dc3..f023409d5f 100644 --- a/locales/en-US.yml +++ b/locales/en-US.yml @@ -704,6 +704,7 @@ editCode: "Edit code" apply: "Apply" receiveAnnouncementFromInstance: "Receive Email notifications from this instance" emailNotification: "Email notifications" +publish: "Publish" inChannelSearch: "Search in channel" useReactionPickerForContextMenu: "Open reaction picker on right-click" typingUsers: "{users} is/are typing..." @@ -740,7 +741,15 @@ switch: "Switch" noMaintainerInformationWarning: "Maintainer information is not configured." noBotProtectionWarning: "Bot protection is not configured." configure: "Configure" +postToGallery: "Post to Gallery" +gallery: "Gallery" +recentPosts: "Recent posts" +popularPosts: "Popular posts" +shareWithNote: "Share with note" _gallery: + my: "My Gallery" + liked: "Liked Posts" + like: "Like" unlike: "Undo like" _email: _follow: diff --git a/locales/fr-FR.yml b/locales/fr-FR.yml index f8c6c07625..dcac32e3ef 100644 --- a/locales/fr-FR.yml +++ b/locales/fr-FR.yml @@ -138,6 +138,7 @@ flagAsBotDescription: "Si ce compte est géré de manière automatisée , défin flagAsCat: "Ce compte est un chat" flagAsCatDescription: "Activer l'option \" Je suis un chat \" pour ce compte." autoAcceptFollowed: "Accepter automatiquement les demandes d’abonnement venant d’utilisateur·rice·s que vous suivez" +addAccount: "Ajouter un compte" loginFailed: "Échec de la connexion" showOnRemote: "Voir sur l’instance distante" general: "Général" @@ -451,6 +452,7 @@ category: "Catégorie" tags: "Étiquettes" docSource: "Source de ce document" createAccount: "Créer un compte" +existingAccount: "Compte existant" regenerate: "Générer à nouveau" fontSize: "Taille de la police" noFollowRequests: "Vous n’avez aucune demande d’abonnement en attente" @@ -701,6 +703,7 @@ editCode: "Modifier le code" apply: "Appliquer" receiveAnnouncementFromInstance: "Recevoir les messages d'information de l'instance" emailNotification: "Notifications par mail" +publish: "Public" inChannelSearch: "Chercher dans le canal" useReactionPickerForContextMenu: "Clic-droit pour ouvrir le panneau de réactions" typingUsers: "{users} est en train d'écrire" @@ -731,7 +734,20 @@ disabled: "Désactivé" quickAction: "Actions rapides" user: "Utilisateur·rice·s" administration: "Gestion" +accounts: "Comptes" +switch: "Remplacer" +noMaintainerInformationWarning: "Informations administrateur non configurées." +noBotProtectionWarning: "La protection contre les bots n'est pas configurée." +configure: "Configurer" +postToGallery: "Publier dans la galerie" +gallery: "Galerie" +recentPosts: "Les plus récentes" +popularPosts: "Les plus consultées" +shareWithNote: "Partager dans une note" _gallery: + my: "Mes publications" + liked: " Publications que j'ai aimées" + like: "J'aime" unlike: "Je n’aime pas" _email: _follow: diff --git a/locales/it-IT.yml b/locales/it-IT.yml index 61e204ccee..b96f3c99a5 100644 --- a/locales/it-IT.yml +++ b/locales/it-IT.yml @@ -136,6 +136,7 @@ flagAsBotDescription: "Se l'account esegue principalmente operazioni automatiche 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" +addAccount: "Aggiungi account" loginFailed: "Accesso non riuscito" showOnRemote: "Sfoglia sull'istanza remota" general: "Generali" @@ -439,6 +440,7 @@ category: "Categoria" tags: "Tag" docSource: "Sorgente della scheda" createAccount: "Crea il tuo account" +existingAccount: "Account esistente" regenerate: "Generare di nuovo" fontSize: "Dimensione carattere" noFollowRequests: "Non hai alcuna richiesta di follow" @@ -653,6 +655,7 @@ capacity: "Capacità" editCode: "Modifica codice" apply: "Applica" emailNotification: "Eventi per notifiche via mail" +publish: "Pubblico" inChannelSearch: "Cerca in canale" useReactionPickerForContextMenu: "Cliccare sul tasto destro per aprire il pannello di reazioni" typingUsers: "{users} sta(nno) scrivendo" @@ -683,8 +686,21 @@ disabled: "Inattivo" quickAction: "Azioni rapide" user: "Utente" administration: "Gestione" +accounts: "Account" +switch: "Sostituisci" +noMaintainerInformationWarning: "Le informazioni amministratore non sono impostate." +noBotProtectionWarning: "Nessuna protezione impostata contro i bot." +configure: "Imposta" +postToGallery: "Pubblicare nella galleria" +gallery: "Galleria" +recentPosts: "Le più recenti" +popularPosts: "Le più visualizzate" +shareWithNote: "Condividere in nota" _gallery: - unlike: "Togli Mi piace" + my: "Le mie pubblicazioni" + liked: "Pubblicazioni che mi piacciono" + like: "Mi piace!" + unlike: "Non mi piace più" _email: _follow: title: "Ha iniziato a seguirti" diff --git a/locales/ko-KR.yml b/locales/ko-KR.yml index 44e8a13cbd..7b61c2f0a7 100644 --- a/locales/ko-KR.yml +++ b/locales/ko-KR.yml @@ -726,6 +726,7 @@ active: "최근에 활동함" offline: "오프라인" user: "유저" administration: "관리" +gallery: "갤러리" _gallery: unlike: "좋아요 해제" _email: diff --git a/locales/zh-CN.yml b/locales/zh-CN.yml index bf84fb6f1c..b53be8d113 100644 --- a/locales/zh-CN.yml +++ b/locales/zh-CN.yml @@ -704,6 +704,7 @@ editCode: "编辑代码" apply: "应用" receiveAnnouncementFromInstance: "从实例接收通知" emailNotification: "邮件通知" +publish: "发布" inChannelSearch: "频道内搜索" useReactionPickerForContextMenu: "单击右键打开回应工具栏" typingUsers: "{users}正在输入" @@ -741,7 +742,15 @@ switch: "切换" noMaintainerInformationWarning: "管理人员信息未设置。" noBotProtectionWarning: "Bot保护未设置。" configure: "设置" +postToGallery: "发送到图库" +gallery: "图库" +recentPosts: "最新发布" +popularPosts: "热门投稿" +shareWithNote: "在帖子中分享" _gallery: + my: "我的图库" + liked: "喜欢的图片" + like: "喜欢❤" unlike: "取消赞" _email: _follow: diff --git a/package.json b/package.json index 9504049012..561c4d08be 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "misskey", "author": "syuilo <syuilotan@yahoo.co.jp>", - "version": "12.79.0", + "version": "12.79.1", "codename": "indigo", "repository": { "type": "git", @@ -47,16 +47,15 @@ "@sinonjs/fake-timers": "7.0.5", "@syuilo/aiscript": "0.11.1", "@types/bcryptjs": "2.4.2", - "@types/bull": "3.15.0", + "@types/bull": "3.15.1", "@types/cbor": "5.0.1", "@types/dateformat": "3.0.1", "@types/escape-regexp": "0.0.0", "@types/glob": "7.1.3", "@types/gulp": "4.0.8", "@types/gulp-rename": "2.0.0", - "@types/gulp-replace": "0.0.31", "@types/is-url": "1.2.28", - "@types/js-yaml": "4.0.0", + "@types/js-yaml": "4.0.1", "@types/jsdom": "16.2.10", "@types/jsonld": "1.5.5", "@types/katex": "0.11.0", @@ -107,31 +106,31 @@ "@typescript-eslint/parser": "4.22.0", "@vue/compiler-sfc": "3.0.11", "abort-controller": "3.0.0", - "apexcharts": "3.26.0", + "apexcharts": "3.26.1", "autobind-decorator": "2.4.0", "autosize": "4.0.2", "autwh": "0.1.0", - "aws-sdk": "2.887.0", + "aws-sdk": "2.892.0", "bcryptjs": "2.4.3", "blurhash": "1.1.3", "broadcast-channel": "3.5.3", - "bull": "3.22.0", + "bull": "3.22.3", "cafy": "15.2.1", "cbor": "7.0.5", - "chalk": "4.1.0", + "chalk": "4.1.1", "chart.js": "2.9.4", "cli-highlight": "2.1.11", "commander": "7.2.0", "concurrently": "6.0.2", "content-disposition": "0.5.3", - "core-js": "3.10.1", + "core-js": "3.11.0", "crc-32": "1.2.0", - "css-loader": "5.2.1", + "css-loader": "5.2.4", "cssnano": "5.0.1", "dateformat": "4.5.1", "diskusage": "1.1.3", "escape-regexp": "0.0.1", - "eslint": "7.24.0", + "eslint": "7.25.0", "eslint-plugin-vue": "7.9.0", "eventemitter3": "4.0.7", "feed": "4.2.2", @@ -142,7 +141,7 @@ "gulp": "4.0.2", "gulp-cssnano": "2.1.3", "gulp-rename": "2.0.0", - "gulp-replace": "1.0.0", + "gulp-replace": "1.1.1", "gulp-terser": "2.0.1", "gulp-tslint": "8.1.4", "hard-source-webpack-plugin": "0.13.1", @@ -160,7 +159,7 @@ "json5-loader": "4.0.1", "jsonld": "4.0.1", "jsrsasign": "8.0.20", - "katex": "0.13.2", + "katex": "0.13.3", "koa": "2.13.1", "koa-bodyparser": "4.3.0", "koa-favicon": "2.1.0", @@ -172,7 +171,7 @@ "koa-views": "7.0.1", "langmap": "0.0.16", "lookup-dns-cache": "2.1.0", - "markdown-it": "12.0.5", + "markdown-it": "12.0.6", "markdown-it-anchor": "7.1.0", "matter-js": "0.17.1", "mfm-js": "0.16.3", @@ -188,7 +187,7 @@ "parse5": "6.0.1", "pg": "8.6.0", "portscanner": "2.2.0", - "postcss": "8.2.10", + "postcss": "8.2.12", "postcss-loader": "5.2.0", "prismjs": "1.23.0", "probe-image-size": "7.1.0", @@ -202,7 +201,7 @@ "ratelimiter": "3.4.1", "re2": "1.15.9", "reconnecting-websocket": "4.4.0", - "redis": "3.1.1", + "redis": "3.1.2", "redis-lock": "0.1.4", "reflect-metadata": "0.1.13", "regenerator-runtime": "0.13.7", @@ -212,7 +211,7 @@ "rimraf": "3.0.2", "rndstr": "1.0.0", "s-age": "1.1.2", - "sass": "1.32.8", + "sass": "1.32.11", "sass-loader": "11.0.1", "seedrandom": "3.0.5", "sharp": "0.28.1", @@ -228,9 +227,9 @@ "throttle-debounce": "3.0.1", "tinycolor2": "1.4.2", "tmp": "0.2.1", - "ts-loader": "8.1.0", + "ts-loader": "9.1.1", "ts-node": "9.1.1", - "tsc-alias": "1.2.9", + "tsc-alias": "1.2.10", "tsconfig-paths": "3.9.0", "tslint": "6.1.3", "tslint-sonarts": "1.9.0", @@ -250,15 +249,15 @@ "vue-svg-loader": "0.17.0-beta.2", "vuedraggable": "4.0.1", "web-push": "3.4.4", - "webpack": "5.33.2", + "webpack": "5.35.1", "webpack-cli": "4.6.0", "websocket": "1.0.34", - "ws": "7.4.4", + "ws": "7.4.5", "xev": "2.0.1" }, "devDependencies": { - "@types/chai": "4.2.15", - "@types/fluent-ffmpeg": "2.1.16", + "@types/chai": "4.2.16", + "@types/fluent-ffmpeg": "2.1.17", "chai": "4.3.4", "cross-env": "7.0.3" } diff --git a/src/client/components/launch-pad.vue b/src/client/components/launch-pad.vue index e66bbd73e4..58b74bdaee 100644 --- a/src/client/components/launch-pad.vue +++ b/src/client/components/launch-pad.vue @@ -16,16 +16,16 @@ </template> </div> <div class="sub"> - <MkA to="/docs" @click.passive="close()"> + <MkA to="/docs" @click.passive="close()" v-click-anime> <i class="fas fa-question-circle icon"></i> <div class="text">{{ $ts.help }}</div> </MkA> - <MkA to="/about" @click.passive="close()"> + <MkA to="/about" @click.passive="close()" v-click-anime> <i class="fas fa-info-circle icon"></i> <div class="text">{{ $t('aboutX', { x: instanceName }) }}</div> </MkA> - <MkA to="/about-misskey" @click.passive="close()"> - <i class="fas fa-info-circle icon"></i> + <MkA to="/about-misskey" @click.passive="close()" v-click-anime> + <img src="/static-assets/favicon.png" class="icon"/> <div class="text">{{ $ts.aboutMisskey }}</div> </MkA> </div> @@ -101,6 +101,7 @@ export default defineComponent({ flex-direction: column; align-items: center; justify-content: center; + vertical-align: bottom; width: 128px; height: 128px; border-radius: var(--radius); @@ -117,6 +118,7 @@ export default defineComponent({ > .icon { font-size: 26px; + height: 32px; } > .text { diff --git a/src/client/pages/about.vue b/src/client/pages/about.vue index 4f70998eee..bdd4c78827 100644 --- a/src/client/pages/about.vue +++ b/src/client/pages/about.vue @@ -1,39 +1,57 @@ <template> -<FormBase class="mmnnbwxb" v-if="meta"> - <div class="_formItem logo"> - <img v-if="meta.logoImageUrl" :src="meta.logoImageUrl"> - <span v-else class="text">{{ instanceName }}</span> +<FormBase> + <div class="_formItem"> + <div class="_formPanel fwhjspax"> + <img :src="$instance.iconUrl || $instance.faviconUrl || '/favicon.ico'" alt="" class="icon"/> + <span class="name">{{ $instance.name || host }}</span> + </div> </div> + + <FormTextarea readonly :value="$instance.description"> + </FormTextarea> + <FormGroup> <FormKeyValueView> <template #key>Misskey</template> <template #value>v{{ version }}</template> </FormKeyValueView> + <FormLink to="/about-misskey">{{ $ts.aboutMisskey }}</FormLink> </FormGroup> <FormGroup> <FormKeyValueView> <template #key>{{ $ts.administrator }}</template> - <template #value>{{ meta.maintainerName }}</template> + <template #value>{{ $instance.maintainerName }}</template> </FormKeyValueView> <FormKeyValueView> <template #key>{{ $ts.contact }}</template> - <template #value>{{ meta.maintainerEmail }}</template> + <template #value>{{ $instance.maintainerEmail }}</template> </FormKeyValueView> </FormGroup> - <FormLink v-if="meta.tosUrl" :to="meta.tosUrl" external>{{ $ts.tos }}</FormLink> + <FormLink v-if="$instance.tosUrl" :to="$instance.tosUrl" external>{{ $ts.tos }}</FormLink> - <FormGroup v-if="stats"> - <template #label>{{ $ts.statistics }}</template> - <FormKeyValueView> - <template #key>{{ $ts.users }}</template> - <template #value>{{ number(stats.originalUsersCount) }}</template> - </FormKeyValueView> - <FormKeyValueView> - <template #key>{{ $ts.notes }}</template> - <template #value>{{ number(stats.originalNotesCount) }}</template> - </FormKeyValueView> + <FormSuspense :p="initStats"> + <FormGroup> + <template #label>{{ $ts.statistics }}</template> + <FormKeyValueView> + <template #key>{{ $ts.users }}</template> + <template #value>{{ number(stats.originalUsersCount) }}</template> + </FormKeyValueView> + <FormKeyValueView> + <template #key>{{ $ts.notes }}</template> + <template #value>{{ number(stats.originalNotesCount) }}</template> + </FormKeyValueView> + </FormGroup> + </FormSuspense> + + <FormGroup> + <template #label>Well-known resources</template> + <FormLink :to="`/.well-known/host-meta`" external>host-meta</FormLink> + <FormLink :to="`/.well-known/host-meta.json`" external>host-meta.json</FormLink> + <FormLink :to="`/.well-known/nodeinfo`" external>nodeinfo</FormLink> + <FormLink :to="`/robots.txt`" external>robots.txt</FormLink> + <FormLink :to="`/manifest.json`" external>manifest.json</FormLink> </FormGroup> </FormBase> </template> @@ -45,9 +63,12 @@ import FormLink from '@client/components/form/link.vue'; import FormBase from '@client/components/form/base.vue'; import FormGroup from '@client/components/form/group.vue'; import FormKeyValueView from '@client/components/form/key-value-view.vue'; +import FormTextarea from '@client/components/form/textarea.vue'; +import FormSuspense from '@client/components/form/suspense.vue'; import * as os from '@client/os'; import number from '@client/filters/number'; import * as symbols from '@client/symbols'; +import { host } from '@client/config'; export default defineComponent({ components: { @@ -55,6 +76,8 @@ export default defineComponent({ FormGroup, FormLink, FormKeyValueView, + FormTextarea, + FormSuspense, }, data() { @@ -63,24 +86,17 @@ export default defineComponent({ title: this.$ts.instanceInfo, icon: 'fas fa-info-circle' }, + host, version, instanceName, stats: null, + initStats: () => os.api('stats', { + }).then((stats) => { + this.stats = stats; + }) } }, - computed: { - meta() { - return this.$instance; - }, - }, - - created() { - os.api('stats').then(stats => { - this.stats = stats; - }); - }, - methods: { number } @@ -88,18 +104,20 @@ export default defineComponent({ </script> <style lang="scss" scoped> -.mmnnbwxb { - max-width: 800px; - box-sizing: border-box; - margin: 0 auto; +.fwhjspax { + padding: 16px; + text-align: center; - > .logo { - text-align: center; + > .icon { + display: block; + margin: auto; + height: 64px; + border-radius: 8px; + } - > img { - vertical-align: bottom; - max-height: 100px; - } + > .name { + display: block; + margin-top: 12px; } } </style> diff --git a/src/client/pages/gallery/post.vue b/src/client/pages/gallery/post.vue index 86fae99888..9bd102cee2 100644 --- a/src/client/pages/gallery/post.vue +++ b/src/client/pages/gallery/post.vue @@ -19,7 +19,7 @@ <MkButton class="button" @click="like()" v-else v-tooltip="$ts._gallery.like"><i class="far fa-heart"></i><span class="count" v-if="post.likedCount > 0">{{ post.likedCount }}</span></MkButton> </div> <div class="other"> - <button class="_button" @click="createNote" v-tooltip="$ts.shareWithNote" v-click-anime><i class="fas fa-retweet fa-fw"></i></button> + <button class="_button" @click="shareWithNote" v-tooltip="$ts.shareWithNote" v-click-anime><i class="fas fa-retweet fa-fw"></i></button> <button class="_button" @click="share" v-tooltip="$ts.share" v-click-anime><i class="fas fa-share-alt fa-fw"></i></button> </div> </div> @@ -125,6 +125,12 @@ export default defineComponent({ }); }, + shareWithNote() { + os.post({ + initialText: `${this.post.title} ${url}/gallery/${this.post.id}` + }); + }, + like() { os.apiWithDialog('gallery/posts/like', { postId: this.postId, @@ -148,12 +154,6 @@ export default defineComponent({ this.post.likedCount--; }); }, - - createNote() { - os.post({ - initialText: `${this.post.title} ${url}/gallery/${this.post.id}` - }); - } } }); </script> diff --git a/src/client/pages/instance-info.vue b/src/client/pages/instance-info.vue index 662b82ddb1..c66ad50f6d 100644 --- a/src/client/pages/instance-info.vue +++ b/src/client/pages/instance-info.vue @@ -147,7 +147,6 @@ import * as os from '@client/os'; import number from '@client/filters/number'; import bytes from '@client/filters/bytes'; import * as symbols from '@client/symbols'; -import { url } from '@client/config'; const chartLimit = 90; const sum = (...arr) => arr.reduce((r, a) => r.map((b, i) => a[i] + b)); @@ -449,7 +448,7 @@ export default defineComponent({ .fnfelxur { padding: 16px; - > img { + > .icon { display: block; margin: auto; height: 64px; diff --git a/src/client/pages/page.vue b/src/client/pages/page.vue index e43add7b0b..6ee3ee8d26 100644 --- a/src/client/pages/page.vue +++ b/src/client/pages/page.vue @@ -1,35 +1,60 @@ <template> -<div class="xcukqgmh _root" v-if="page" :key="page.id" v-size="{ max: [450] }"> - <div class="_block main"> - <!-- - <div class="header"> - <h1>{{ page.title }}</h1> +<div class="_root"> + <transition name="fade" mode="out-in"> + <div v-if="page" class="xcukqgmh" :key="page.id" v-size="{ max: [450] }"> + <div class="_block main"> + <!-- + <div class="header"> + <h1>{{ page.title }}</h1> + </div> + --> + <div class="banner"> + <img :src="page.eyeCatchingImage.url" v-if="page.eyeCatchingImageId"/> + </div> + <div class="content"> + <XPage :page="page"/> + </div> + <div class="actions"> + <div class="like"> + <MkButton class="button" @click="unlike()" v-if="page.isLiked" v-tooltip="$ts._pages.unlike" primary><i class="fas fa-heart"></i><span class="count" v-if="page.likedCount > 0">{{ page.likedCount }}</span></MkButton> + <MkButton class="button" @click="like()" v-else v-tooltip="$ts._pages.like"><i class="far fa-heart"></i><span class="count" v-if="page.likedCount > 0">{{ page.likedCount }}</span></MkButton> + </div> + <div class="other"> + <button class="_button" @click="shareWithNote" v-tooltip="$ts.shareWithNote" v-click-anime><i class="fas fa-retweet fa-fw"></i></button> + <button class="_button" @click="share" v-tooltip="$ts.share" v-click-anime><i class="fas fa-share-alt fa-fw"></i></button> + </div> + </div> + <div class="user"> + <MkAvatar :user="page.user" class="avatar"/> + <div class="name"> + <MkUserName :user="page.user" style="display: block;"/> + <MkAcct :user="page.user"/> + </div> + <MkFollowButton v-if="!$i || $i.id != page.user.id" :user="page.user" :inline="true" :transparent="false" :full="true" large class="koudoku"/> + </div> + <div class="links"> + <MkA :to="`/@${username}/pages/${pageName}/view-source`" class="link">{{ $ts._pages.viewSource }}</MkA> + <template v-if="$i && $i.id === page.userId"> + <MkA :to="`/pages/edit/${page.id}`" class="link">{{ $ts._pages.editThisPage }}</MkA> + <button v-if="$i.pinnedPageId === page.id" @click="pin(false)" class="link _textButton">{{ $ts.unpin }}</button> + <button v-else @click="pin(true)" class="link _textButton">{{ $ts.pin }}</button> + </template> + </div> + </div> + <div class="footer"> + <div><i class="far fa-clock"></i> {{ $ts.createdAt }}: <MkTime :time="page.createdAt" mode="detail"/></div> + <div v-if="page.createdAt != page.updatedAt"><i class="far fa-clock"></i> {{ $ts.updatedAt }}: <MkTime :time="page.updatedAt" mode="detail"/></div> + </div> + <MkContainer :max-height="300" :foldable="true" class="other"> + <template #header><i class="fas fa-clock"></i> {{ $ts.recentPosts }}</template> + <MkPagination :pagination="otherPostsPagination" #default="{items}"> + <MkPagePreview v-for="page in items" :page="page" :key="page.id" class="_gap"/> + </MkPagination> + </MkContainer> </div> - --> - <div class="banner"> - <img :src="page.eyeCatchingImage.url" v-if="page.eyeCatchingImageId"/> - </div> - <div class="content"> - <XPage :page="page"/> - <small style="display: block; opacity: 0.7; margin-top: 1em;">@{{ page.user.username }}</small> - </div> - <div class="like"> - <MkButton class="button" @click="unlike()" v-if="page.isLiked" v-tooltip="$ts._pages.unlike" primary><i class="fas fa-heart"></i><span class="count" v-if="page.likedCount > 0">{{ page.likedCount }}</span></MkButton> - <MkButton class="button" @click="like()" v-else v-tooltip="$ts._pages.like"><i class="far fa-heart"></i><span class="count" v-if="page.likedCount > 0">{{ page.likedCount }}</span></MkButton> - </div> - <div class="links"> - <MkA :to="`/@${username}/pages/${pageName}/view-source`" class="link">{{ $ts._pages.viewSource }}</MkA> - <template v-if="$i && $i.id === page.userId"> - <MkA :to="`/pages/edit/${page.id}`" class="link">{{ $ts._pages.editThisPage }}</MkA> - <button v-if="$i.pinnedPageId === page.id" @click="pin(false)" class="link _textButton">{{ $ts.unpin }}</button> - <button v-else @click="pin(true)" class="link _textButton">{{ $ts.pin }}</button> - </template> - </div> - </div> - <div class="footer"> - <div><i class="far fa-clock"></i> {{ $ts.createdAt }}: <MkTime :time="page.createdAt" mode="detail"/></div> - <div v-if="page.createdAt != page.updatedAt"><i class="far fa-clock"></i> {{ $ts.updatedAt }}: <MkTime :time="page.updatedAt" mode="detail"/></div> - </div> + <MkError v-else-if="error" @retry="fetch()"/> + <MkLoading v-else/> + </transition> </div> </template> @@ -39,11 +64,20 @@ import XPage from '@client/components/page/page.vue'; import MkButton from '@client/components/ui/button.vue'; import * as os from '@client/os'; import * as symbols from '@client/symbols'; +import { url } from '@client/config'; +import MkFollowButton from '@client/components/follow-button.vue'; +import MkContainer from '@client/components/ui/container.vue'; +import MkPagination from '@client/components/ui/pagination.vue'; +import MkPagePreview from '@client/components/page-preview.vue'; export default defineComponent({ components: { XPage, MkButton, + MkFollowButton, + MkContainer, + MkPagination, + MkPagePreview, }, props: { @@ -69,6 +103,14 @@ export default defineComponent({ }, } : null), page: null, + error: null, + otherPostsPagination: { + endpoint: 'users/pages', + limit: 6, + params: () => ({ + userId: this.page.user.id + }) + }, }; }, @@ -90,11 +132,28 @@ export default defineComponent({ methods: { fetch() { + this.page = null; os.api('pages/show', { name: this.pageName, username: this.username, }).then(page => { this.page = page; + }).catch(e => { + this.error = e; + }); + }, + + share() { + navigator.share({ + title: this.page.title || this.page.name, + text: this.page.summary, + url: `${url}/@${this.page.user.username}/pages/${this.page.name}` + }); + }, + + shareWithNote() { + os.post({ + initialText: `${this.page.title || this.page.name} ${url}/@${this.page.user.username}/pages/${this.page.name}` }); }, @@ -132,6 +191,15 @@ export default defineComponent({ </script> <style lang="scss" scoped> +.fade-enter-active, +.fade-leave-active { + transition: opacity 0.125s ease; +} +.fade-enter-from, +.fade-leave-to { + opacity: 0; +} + .xcukqgmh { --padding: 32px; @@ -140,6 +208,8 @@ export default defineComponent({ } > .main { + padding: var(--padding); + > .header { padding: 16px; @@ -150,36 +220,79 @@ export default defineComponent({ > .banner { > img { + // TODO: 良い感じのアスペクト比で表示 display: block; width: 100%; - height: 120px; + height: 150px; object-fit: cover; } } > .content { - padding: var(--padding); + margin-top: 16px; + padding: 16px 0 0 0; } - > .like { - padding: var(--padding); + > .actions { + display: flex; + align-items: center; + margin-top: 16px; + padding: 16px 0 0 0; border-top: solid 0.5px var(--divider); - > .button { - --accent: rgb(241 97 132); - --X8: rgb(241 92 128); - --buttonBg: rgb(216 71 106 / 5%); - --buttonHoverBg: rgb(216 71 106 / 10%); - color: #ff002f; + > .like { + > .button { + --accent: rgb(241 97 132); + --X8: rgb(241 92 128); + --buttonBg: rgb(216 71 106 / 5%); + --buttonHoverBg: rgb(216 71 106 / 10%); + color: #ff002f; - ::v-deep(.count) { - margin-left: 0.5em; + ::v-deep(.count) { + margin-left: 0.5em; + } } } + + > .other { + margin-left: auto; + + > button { + padding: 8px; + margin: 0 8px; + + &:hover { + color: var(--fgHighlighted); + } + } + } + } + + > .user { + margin-top: 16px; + padding: 16px 0 0 0; + border-top: solid 0.5px var(--divider); + display: flex; + align-items: center; + + > .avatar { + width: 52px; + height: 52px; + } + + > .name { + margin: 0 0 0 12px; + font-size: 90%; + } + + > .koudoku { + margin-left: auto; + } } > .links { - padding: var(--padding); + margin-top: 16px; + padding: 24px 0 0 0; border-top: solid 0.5px var(--divider); > .link { diff --git a/src/client/store.ts b/src/client/store.ts index 0d34a02364..376135a99d 100644 --- a/src/client/store.ts +++ b/src/client/store.ts @@ -62,8 +62,9 @@ export const defaultStore = markRaw(new Storage('base', { 'notifications', 'messaging', 'drive', - '-', 'followRequests', + '-', + 'gallery', 'featured', 'explore', 'announcements', diff --git a/src/client/ui/chat/index.vue b/src/client/ui/chat/index.vue index be1bd7758a..bf55cc2b3f 100644 --- a/src/client/ui/chat/index.vue +++ b/src/client/ui/chat/index.vue @@ -313,7 +313,7 @@ export default defineComponent({ } }; if (isLink(e.target)) return; - if (['INPUT', 'TEXTAREA', 'IMG'].includes(e.target.tagName) || e.target.attributes['contenteditable']) return; + if (['INPUT', 'TEXTAREA', 'IMG', 'VIDEO'].includes(e.target.tagName) || e.target.attributes['contenteditable']) return; if (window.getSelection().toString() !== '') return; const path = this.$route.path; os.contextMenu([{ diff --git a/src/client/ui/deck/main-column.vue b/src/client/ui/deck/main-column.vue index de36fd5966..7b5b50fedc 100644 --- a/src/client/ui/deck/main-column.vue +++ b/src/client/ui/deck/main-column.vue @@ -64,7 +64,7 @@ export default defineComponent({ } }; if (isLink(e.target)) return; - if (['INPUT', 'TEXTAREA', 'IMG'].includes(e.target.tagName) || e.target.attributes['contenteditable']) return; + if (['INPUT', 'TEXTAREA', 'IMG', 'VIDEO'].includes(e.target.tagName) || e.target.attributes['contenteditable']) return; if (window.getSelection().toString() !== '') return; const path = this.$route.path; os.contextMenu([{ diff --git a/src/client/ui/default.sidebar.vue b/src/client/ui/default.sidebar.vue index a55a1770ff..725fd844d9 100644 --- a/src/client/ui/default.sidebar.vue +++ b/src/client/ui/default.sidebar.vue @@ -31,8 +31,10 @@ <i class="fas fa-cog fa-fw"></i><span class="text">{{ $ts.settings }}</span> </MkA> <div class="divider"></div> - <div class="foo"> - <MkEmoji :normal="true" :no-style="true" emoji="🍮"/> + <div class="about"> + <MkA class="link" to="/about" v-click-anime> + <img :src="$instance.iconUrl || $instance.faviconUrl || '/favicon.ico'" class="_ghost"/> + </MkA> </div> <!--<MisskeyLogo class="misskey"/>--> </div> @@ -260,14 +262,21 @@ export default defineComponent({ } } - > .misskey { + > .about { fill: currentColor; - } - - > .foo { - text-align: center; padding: 8px 0 16px 0; - opacity: 0.5; + text-align: center; + + > .link { + display: block; + width: 32px; + margin: 0 auto; + + img { + display: block; + width: 100%; + } + } } > .item { diff --git a/src/client/ui/default.vue b/src/client/ui/default.vue index 6cfb680719..64fdef2947 100644 --- a/src/client/ui/default.vue +++ b/src/client/ui/default.vue @@ -165,7 +165,7 @@ export default defineComponent({ } }; if (isLink(e.target)) return; - if (['INPUT', 'TEXTAREA', 'IMG'].includes(e.target.tagName) || e.target.attributes['contenteditable']) return; + if (['INPUT', 'TEXTAREA', 'IMG', 'VIDEO'].includes(e.target.tagName) || e.target.attributes['contenteditable']) return; if (window.getSelection().toString() !== '') return; const path = this.$route.path; os.contextMenu([{ diff --git a/src/client/ui/universal.vue b/src/client/ui/universal.vue index 478fa13076..ad3c616b8e 100644 --- a/src/client/ui/universal.vue +++ b/src/client/ui/universal.vue @@ -191,7 +191,7 @@ export default defineComponent({ } }; if (isLink(e.target)) return; - if (['INPUT', 'TEXTAREA', 'IMG'].includes(e.target.tagName) || e.target.attributes['contenteditable']) return; + if (['INPUT', 'TEXTAREA', 'IMG', 'VIDEO'].includes(e.target.tagName) || e.target.attributes['contenteditable']) return; if (window.getSelection().toString() !== '') return; const path = this.$route.path; os.contextMenu([{ diff --git a/src/misc/api-permissions.ts b/src/misc/api-permissions.ts index de9fdea52c..eb20c3d289 100644 --- a/src/misc/api-permissions.ts +++ b/src/misc/api-permissions.ts @@ -27,4 +27,8 @@ export const kinds = [ 'write:user-groups', 'read:channels', 'write:channels', + 'read:gallery', + 'write:gallery', + 'read:gallery-likes', + 'write:gallery-likes', ]; @@ -432,10 +432,10 @@ "@types/connect" "*" "@types/node" "*" -"@types/bull@3.15.0": - version "3.15.0" - resolved "https://registry.yarnpkg.com/@types/bull/-/bull-3.15.0.tgz#69c518d4e7a53056f287cebcc4ef4ffe91aaf201" - integrity sha512-54Y1RYkJt6i+4dH45w4gZOP6fyhksTvOImfgBYAxgq/nt5ZrES4xFWwOzt2bxAgSR7FMH9fwvaiJN/pripPzag== +"@types/bull@3.15.1": + version "3.15.1" + resolved "https://registry.yarnpkg.com/@types/bull/-/bull-3.15.1.tgz#3c3fd665b43ef383ca95a91b8d1448461fae0898" + integrity sha512-thZyjxikoyuDa/ptZEqtTEPUjwlDenkpPigpIyad1X5UMp7U0fXTLiDHJjZ/5yXmVPuWx0cXFXj3drmva/UJRA== dependencies: "@types/ioredis" "*" @@ -456,10 +456,10 @@ dependencies: "@types/node" "*" -"@types/chai@4.2.15": - version "4.2.15" - resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.2.15.tgz#b7a6d263c2cecf44b6de9a051cf496249b154553" - integrity sha512-rYff6FI+ZTKAPkJUoyz7Udq3GaoDZnxYDEvdEdFZASiA7PoErltHezDishqQiSDWrGxvxmplH304jyzQmjp0AQ== +"@types/chai@4.2.16": + version "4.2.16" + resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.2.16.tgz#f09cc36e18d28274f942e7201147cce34d97e8c8" + integrity sha512-vI5iOAsez9+roLS3M3+Xx7w+WRuDtSmF8bQkrbcIJ2sC1PcDgVoA0WGpa+bIrJ+y8zqY2oi//fUctkxtIcXJCw== "@types/cheerio@^0.22.10": version "0.22.18" @@ -531,6 +531,11 @@ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.46.tgz#0fb6bfbbeabd7a30880504993369c4bf1deab1fe" integrity sha512-laIjwTQaD+5DukBZaygQ79K1Z0jb1bPEMRrkXSLjtCcZm+abyp5YbrqpSLzD42FwWW6gK/aS4NYpJ804nG2brg== +"@types/estree@^0.0.47": + version "0.0.47" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.47.tgz#d7a51db20f0650efec24cd04994f523d93172ed4" + integrity sha512-c5ciR06jK8u9BstrmJyO97m+klJrrhCf9u3rLu3DEAJBirxRqSCvDQoYKmxuYwQI5SZChAWu+tq9oVlGRuzPAg== + "@types/events@*": version "3.0.0" resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" @@ -564,10 +569,10 @@ resolved "https://registry.yarnpkg.com/@types/fancy-log/-/fancy-log-1.3.0.tgz#a61ab476e5e628cd07a846330df53b85e05c8ce0" integrity sha512-mQjDxyOM1Cpocd+vm1kZBP7smwKZ4TNokFeds9LV7OZibmPJFEzY3+xZMrKfUdNT71lv8GoCPD6upKwHxubClw== -"@types/fluent-ffmpeg@2.1.16": - version "2.1.16" - resolved "https://registry.yarnpkg.com/@types/fluent-ffmpeg/-/fluent-ffmpeg-2.1.16.tgz#63949b0cb6bc88c9157a579cdd80858a269f3a3a" - integrity sha512-1FTstm6xY/2WsJVt6ARV7CiJjNCQDlR/nfw6xuYk5ITbVjk7sw89Biyqm2DGW4c3aZ3vBx+5irZvsql4eybpoQ== +"@types/fluent-ffmpeg@2.1.17": + version "2.1.17" + resolved "https://registry.yarnpkg.com/@types/fluent-ffmpeg/-/fluent-ffmpeg-2.1.17.tgz#6958dda400fe1b33c21f3683db76905cb210d053" + integrity sha512-/bdvjKw/mtBHlJ2370d04nt4CsWqU5MrwS/NtO96V01jxitJ4+iq8OFNcqc5CegeV3TQOK3uueK02kvRK+zjUg== dependencies: "@types/node" "*" @@ -604,13 +609,6 @@ "@types/node" "*" "@types/vinyl" "*" -"@types/gulp-replace@0.0.31": - version "0.0.31" - resolved "https://registry.yarnpkg.com/@types/gulp-replace/-/gulp-replace-0.0.31.tgz#87c3ac90b437694c58d68d1da677fcaff38b25ff" - integrity sha512-dbgQ1u0N9ShXrzahBgQfMSu6qUh8nlTLt7whhQ0S0sEUHhV3scysppJ1UX0fl53PJENgAL99ueykddyrCaDt7g== - dependencies: - "@types/node" "*" - "@types/gulp@4.0.8": version "4.0.8" resolved "https://registry.yarnpkg.com/@types/gulp/-/gulp-4.0.8.tgz#a5e43764d400b9818dc79b5ffa86e22a94521037" @@ -652,10 +650,10 @@ resolved "https://registry.yarnpkg.com/@types/is-url/-/is-url-1.2.28.tgz#914dabd50546d9b0142806e42c72bc7c2b7e0787" integrity sha1-kU2r1QVG2bAUKAbkLHK8fCt+B4c= -"@types/js-yaml@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@types/js-yaml/-/js-yaml-4.0.0.tgz#d1a11688112091f2c711674df3a65ea2f47b5dfb" - integrity sha512-4vlpCM5KPCL5CfGmTbpjwVKbISRYhduEJvvUWsH5EB7QInhEj94XPZ3ts/9FPiLZFqYO0xoW4ZL8z2AabTGgJA== +"@types/js-yaml@4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@types/js-yaml/-/js-yaml-4.0.1.tgz#5544730b65a480b18ace6b6ce914e519cec2d43b" + integrity sha512-xdOvNmXmrZqqPy3kuCQ+fz6wA0xU5pji9cd1nDrflWaAWtYLLGk5ykW0H6yg5TVyehHP1pfmuuSaZkhP+kspVA== "@types/jsdom@16.2.10": version "16.2.10" @@ -1601,10 +1599,10 @@ anymatch@~3.1.1: normalize-path "^3.0.0" picomatch "^2.0.4" -apexcharts@3.26.0: - version "3.26.0" - resolved "https://registry.yarnpkg.com/apexcharts/-/apexcharts-3.26.0.tgz#a78abc108b2e1b3086a738f0ec7c98e292f4a14b" - integrity sha512-zdYHs3k3tgmCn1BpYLj7rhGEndBYF33Pq1+g0ora37xAr+3act5CJrpdXM2jx2boVUyXgavoSp6sa8WpK7RkSA== +apexcharts@3.26.1: + version "3.26.1" + resolved "https://registry.yarnpkg.com/apexcharts/-/apexcharts-3.26.1.tgz#2094ec0cfd00ed8129d93e73e75018716d55ef5b" + integrity sha512-Z/pfGTsL4YUm1tHd6a0d0G2hX4XUmhEI0b/5BxVK69dEB/XXvVMX9hKCkcIx+kPyVqVFCuo91ZjCdqjMcmSVBA== dependencies: svg.draggable.js "^2.2.2" svg.easing.js "^2.0.0" @@ -1865,10 +1863,10 @@ autwh@0.1.0: dependencies: oauth "0.9.15" -aws-sdk@2.887.0: - version "2.887.0" - resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.887.0.tgz#53839921124b024d24005dbb83b372efdf2fe9b6" - integrity sha512-jFRVrdyvBEYmSSrriA92dXDn1VgCXnz6Rax6wRGQDhyCWH+9NzZ7ZvIag2Yy2SLpvoRU7IaiEmiBLbNe/BksgA== +aws-sdk@2.892.0: + version "2.892.0" + resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.892.0.tgz#adec48f52f4b6f5c576dcbfac020bcec1eed3a25" + integrity sha512-OOXJ15AnJJMHZYXJQVy22Wjnp5GrZCfvCxmoZuXdsLNs8M+BL4mfBqma82+UkM2NhJgLYuAhDfvFUBob6VGIWw== dependencies: buffer "4.9.2" events "1.1.1" @@ -2001,10 +1999,10 @@ binary-extensions@^2.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.0.0.tgz#23c0df14f6a88077f5f986c0d167ec03c3d5537c" integrity sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow== -binaryextensions@2: - version "2.2.0" - resolved "https://registry.yarnpkg.com/binaryextensions/-/binaryextensions-2.2.0.tgz#e7c6ba82d4f5f5758c26078fe8eea28881233311" - integrity sha512-bHhs98rj/7i/RZpCSJ3uk55pLXOItjIrh2sRQZSM6OoktScX+LxJzvlU+FELp9j3TdcddTmmYArLSGptCTwjuw== +binaryextensions@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/binaryextensions/-/binaryextensions-2.3.0.tgz#1d269cbf7e6243ea886aa41453c3651ccbe13c22" + integrity sha512-nAihlQsYGyc5Bwq6+EsubvANYGExeJKHDO3RjnvwU042fawQTQfM3Kxn7IHUXQOz4bzfwsGYYHGSvXyW4zOGLg== bl@^4.0.1, bl@^4.0.3: version "4.0.3" @@ -2194,10 +2192,10 @@ builtin-modules@^1.1.1: resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8= -bull@3.22.0: - version "3.22.0" - resolved "https://registry.yarnpkg.com/bull/-/bull-3.22.0.tgz#fb04b68189bd49e56155f4366df96330c059868c" - integrity sha512-csQTIuvoKnVuW6gbZmIe9mVkLy2DzvRodywjXN7cfYlvXKme3156FIc1Zssn5IRKpDKyyq0++AYsLO4mdtnf0Q== +bull@3.22.3: + version "3.22.3" + resolved "https://registry.yarnpkg.com/bull/-/bull-3.22.3.tgz#14232e15431fddd5e572cdc87f3acbdd655371ef" + integrity sha512-nkSMtXkCGqjbH8ArFZWKbq3hQb/d5fW7N2m6C0iLeQKngB7pdObH+Lo9hK36v7f3ZENmiIScmKRN15wbyEJ5Pw== dependencies: cron-parser "^2.13.0" debuglog "^1.0.0" @@ -2375,10 +2373,10 @@ chalk@4.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -chalk@4.1.0, chalk@^4.0.0, chalk@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" - integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== +chalk@4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.1.tgz#c80b3fab28bf6371e6863325eee67e618b77e6ad" + integrity sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg== dependencies: ansi-styles "^4.1.0" supports-color "^7.1.0" @@ -2403,6 +2401,14 @@ chalk@^2.0.0, chalk@^2.3.0, chalk@^2.4.1, chalk@^2.4.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" +chalk@^4.0.0, chalk@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" + integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + char-regex@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" @@ -2489,7 +2495,7 @@ cheerio@^0.22.0: lodash.reject "^4.4.0" lodash.some "^4.4.0" -chokidar@3.5.1, "chokidar@>=2.0.0 <4.0.0", chokidar@^2.0.0, chokidar@^3.3.1, chokidar@^3.5.0: +chokidar@3.5.1, "chokidar@>=3.0.0 <4.0.0", chokidar@^2.0.0, chokidar@^3.3.1, chokidar@^3.5.0: version "3.3.1" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.3.1.tgz#c84e5b3d18d9a4d77558fef466b1bf16bbeb3450" integrity sha512-4QYCEWOcK3OJrxwvyyAOxFuhpvOVCYkr33LPfFNBjAD/w3sEzWsp2BUOkI4l9bHvWioAd0rc6NlHUOEaWkTeqg== @@ -2984,10 +2990,10 @@ core-js-compat@^3.9.1: browserslist "^4.16.3" semver "7.0.0" -core-js@3.10.1: - version "3.10.1" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.10.1.tgz#e683963978b6806dcc6c0a4a8bd4ab0bdaf3f21a" - integrity sha512-pwCxEXnj27XG47mu7SXAwhLP3L5CrlvCB91ANUkIz40P27kUcvNfSdvyZJ9CLHiVoKSp+TTChMQMSKQEH/IQxA== +core-js@3.11.0: + version "3.11.0" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.11.0.tgz#05dac6aa70c0a4ad842261f8957b961d36eb8926" + integrity sha512-bd79DPpx+1Ilh9+30aT5O1sgpQd4Ttg8oqkqi51ZzhedMM1omD2e6IOF48Z/DzDCZ2svp49tN/3vneTK6ZBkXw== core-util-is@1.0.2, core-util-is@^1.0.2, core-util-is@~1.0.0: version "1.0.2" @@ -3070,23 +3076,22 @@ css-declaration-sorter@6.0.0: dependencies: timsort "^0.3.0" -css-loader@5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-5.2.1.tgz#15fbd5b6ac4c1b170a098f804c5abd0722f2aa73" - integrity sha512-YCyRzlt/jgG1xanXZDG/DHqAueOtXFHeusP9TS478oP1J++JSKOyEgGW1GHVoCj/rkS+GWOlBwqQJBr9yajQ9w== +css-loader@5.2.4: + version "5.2.4" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-5.2.4.tgz#e985dcbce339812cb6104ef3670f08f9893a1536" + integrity sha512-OFYGyINCKkdQsTrSYxzGSFnGS4gNjcXkKkQgWxK138jgnPt+lepxdjSZNc8sHAl5vP3DhsJUxufWIjOwI8PMMw== dependencies: camelcase "^6.2.0" - cssesc "^3.0.0" icss-utils "^5.1.0" loader-utils "^2.0.0" - postcss "^8.2.8" + postcss "^8.2.10" postcss-modules-extract-imports "^3.0.0" postcss-modules-local-by-default "^4.0.0" postcss-modules-scope "^3.0.0" postcss-modules-values "^4.0.0" postcss-value-parser "^4.1.0" schema-utils "^3.0.0" - semver "^7.3.4" + semver "^7.3.5" css-select-base-adapter@^0.1.1: version "0.1.1" @@ -3714,11 +3719,6 @@ ecdsa-sig-formatter@1.0.11: dependencies: safe-buffer "^5.0.1" -editions@^1.3.3: - version "1.3.4" - resolved "https://registry.yarnpkg.com/editions/-/editions-1.3.4.tgz#3662cb592347c3168eb8e498a0ff73271d67f50b" - integrity sha512-gzao+mxnYDzIysXKMQi/+M1mjy/rjestjg6OPoYTtI+3Izp23oiGZitsl9lPDPiTGXbcSIk1iJWhliSaglxnUg== - editorconfig@^0.15.3: version "0.15.3" resolved "https://registry.yarnpkg.com/editorconfig/-/editorconfig-0.15.3.tgz#bef84c4e75fb8dcb0ce5cee8efd51c15999befc5" @@ -3776,14 +3776,13 @@ end-of-stream@^1.0.0, end-of-stream@^1.1.0, end-of-stream@^1.4.1: dependencies: once "^1.4.0" -enhanced-resolve@^4.0.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz#2937e2b8066cd0fe7ce0990a98f0d71a35189f66" - integrity sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA== +enhanced-resolve@^5.0.0, enhanced-resolve@^5.8.0: + version "5.8.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.8.0.tgz#d9deae58f9d3773b6a111a5a46831da5be5c9ac0" + integrity sha512-Sl3KRpJA8OpprrtaIswVki3cWPiPKxXuFxJXBp+zNb6s6VwNWwFRUdtmzd2ReUut8n+sCPx7QCtQ7w5wfJhSgQ== dependencies: - graceful-fs "^4.1.2" - memory-fs "^0.5.0" - tapable "^1.0.0" + graceful-fs "^4.2.4" + tapable "^2.2.0" enhanced-resolve@^5.7.0: version "5.7.0" @@ -3825,13 +3824,6 @@ envinfo@^7.7.3: resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.7.3.tgz#4b2d8622e3e7366afb8091b23ed95569ea0208cc" integrity sha512-46+j5QxbPWza0PB1i15nZx0xQ4I/EfQxg9J8Had3b408SV63nEtor2e+oiY63amTo9KTuh2a3XLObNwduxYwwA== -errno@^0.1.3: - version "0.1.7" - resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" - integrity sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg== - dependencies: - prr "~1.0.1" - error-ex@^1.2.0, error-ex@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" @@ -3988,10 +3980,10 @@ eslint-visitor-keys@^2.0.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8" integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ== -eslint@7.24.0: - version "7.24.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.24.0.tgz#2e44fa62d93892bfdb100521f17345ba54b8513a" - integrity sha512-k9gaHeHiFmGCDQ2rEfvULlSLruz6tgfA8DEn+rY9/oYPFFTlz55mM/Q/Rij1b2Y42jwZiK3lXvNTw6w6TXzcKQ== +eslint@7.25.0: + version "7.25.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.25.0.tgz#1309e4404d94e676e3e831b3a3ad2b050031eb67" + integrity sha512-TVpSovpvCNpLURIScDRB6g5CYu/ZFq9GfX2hLNIV4dSBKxIWojeDODvYl3t0k0VtMxYeR8OXPCFE5+oHMlGfhw== dependencies: "@babel/code-frame" "7.12.11" "@eslint/eslintrc" "^0.4.0" @@ -4840,14 +4832,14 @@ gulp-rename@2.0.0: resolved "https://registry.yarnpkg.com/gulp-rename/-/gulp-rename-2.0.0.tgz#9bbc3962b0c0f52fc67cd5eaff6c223ec5b9cf6c" integrity sha512-97Vba4KBzbYmR5VBs9mWmK+HwIf5mj+/zioxfZhOKeXtx5ZjBk57KFlePf5nxq9QsTtFl0ejnHE3zTC9MHXqyQ== -gulp-replace@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/gulp-replace/-/gulp-replace-1.0.0.tgz#b32bd61654d97b8d78430a67b3e8ce067b7c9143" - integrity sha512-lgdmrFSI1SdhNMXZQbrC75MOl1UjYWlOWNbNRnz+F/KHmgxt3l6XstBoAYIdadwETFyG/6i+vWUSCawdC3pqOw== +gulp-replace@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/gulp-replace/-/gulp-replace-1.1.1.tgz#ecb15cafa6df3cf2735aad5765be491be8b36eeb" + integrity sha512-gzVZ15/q2+6w7PmZy5zUO5V0s+IGrGz1a2RgImt4mo6eChZgHFbHKKEn52uWkDShhSijdeNz05HcxFN7HNSBKA== dependencies: - istextorbinary "2.2.1" - readable-stream "^2.0.1" - replacestream "^4.0.0" + istextorbinary "^3.0.0" + replacestream "^4.0.3" + yargs-parser ">=5.0.0-security.0" gulp-terser@2.0.1: version "2.0.1" @@ -5722,14 +5714,13 @@ isstream@~0.1.2: resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= -istextorbinary@2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/istextorbinary/-/istextorbinary-2.2.1.tgz#a5231a08ef6dd22b268d0895084cf8d58b5bec53" - integrity sha512-TS+hoFl8Z5FAFMK38nhBkdLt44CclNRgDHWeMgsV8ko3nDlr/9UI2Sf839sW7enijf8oKsZYXRvM8g0it9Zmcw== +istextorbinary@^3.0.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/istextorbinary/-/istextorbinary-3.3.0.tgz#06b1c57d948da11461bd237c00ce09e9902964f2" + integrity sha512-Tvq1W6NAcZeJ8op+Hq7tdZ434rqnMx4CCZ7H0ff83uEloDvVbqAwaMTZcafKGJT0VHkYzuXUiCY4hlXQg6WfoQ== dependencies: - binaryextensions "2" - editions "^1.3.3" - textextensions "2" + binaryextensions "^2.2.0" + textextensions "^3.2.0" jest-worker@^26.6.2: version "26.6.2" @@ -5980,10 +5971,10 @@ jws@^4.0.0: jwa "^2.0.0" safe-buffer "^5.0.1" -katex@0.13.2: - version "0.13.2" - resolved "https://registry.yarnpkg.com/katex/-/katex-0.13.2.tgz#4075b9144e6af992ec9a4b772fa3754763be5f26" - integrity sha512-u/KhjFDhyPr+70aiBn9SL/9w/QlLagIXBi2NZSbNnBUp2tR8dCjQplyEMkEzniem5gOeSCBjlBUg4VaiWs1JJg== +katex@0.13.3: + version "0.13.3" + resolved "https://registry.yarnpkg.com/katex/-/katex-0.13.3.tgz#b7b1f4a8de496ea8bfe60ab0b5e1822864288f00" + integrity sha512-/w0eycuK1xh201T0uFXYOZWPDoeqDHqR+6SLLKsYvNtUCYtmRjq8F+M74sdpzs+dJZYWv2eUsSW0r1AJfhZOCw== dependencies: commander "^6.0.0" @@ -6545,10 +6536,10 @@ markdown-it-anchor@7.1.0: resolved "https://registry.yarnpkg.com/markdown-it-anchor/-/markdown-it-anchor-7.1.0.tgz#30fb21497bf59e83ff4d1ddc052d821962e2489e" integrity sha512-loQggrwsIkkP7TOrESvmYkV2ikbQNNKhHcWyqC7/C2CmfHl1tkUizJJU8C5aGgg7J6oXVQJx17gk7i47tNn/lQ== -markdown-it@12.0.5: - version "12.0.5" - resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-12.0.5.tgz#982907947dc1f72f9d651c5286678fd95af13f2e" - integrity sha512-9KB992Yy2TedaoKETgZPL2n3bmqqZxzUsZ4fxe2ho+/AYuQUz+iDKpfjLgKbg/lHcG6cGOj+L3gDrn9S2CxoRg== +markdown-it@12.0.6: + version "12.0.6" + resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-12.0.6.tgz#adcc8e5fe020af292ccbdf161fe84f1961516138" + integrity sha512-qv3sVLl4lMT96LLtR7xeRJX11OUFjsaD5oVat2/SNBIb21bJXwal2+SklcRbTwGwqWpWH/HRtYavOoJE+seL8w== dependencies: argparse "^2.0.1" entities "~2.1.0" @@ -6615,14 +6606,6 @@ mem@^4.0.0: mimic-fn "^2.0.0" p-is-promise "^2.0.0" -memory-fs@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c" - integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA== - dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" - merge-source-map@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/merge-source-map/-/merge-source-map-1.1.0.tgz#2fdde7e6020939f70906a68f2d7ae685e4c8c646" @@ -8284,10 +8267,10 @@ postcss-zindex@^2.0.1: postcss "^5.0.4" uniqs "^2.0.0" -postcss@8.2.10: - version "8.2.10" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.2.10.tgz#ca7a042aa8aff494b334d0ff3e9e77079f6f702b" - integrity sha512-b/h7CPV7QEdrqIxtAf2j31U5ef05uBDuvoXv6L51Q4rcS1jdlXAVKJv+atCFdUXYl9dyTHGyoMzIepwowRJjFw== +postcss@8.2.12, postcss@^8.2.10: + version "8.2.12" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.2.12.tgz#81248a1a87e0f575cc594a99a08207fd1c4addc4" + integrity sha512-BJnGT5+0q2tzvs6oQfnY2NpEJ7rIXNfBnZtQOKCIsweeWXBXeDd5k31UgTdS3d/c02ouspufn37mTaHWkJyzMQ== dependencies: colorette "^1.2.2" nanoid "^3.1.22" @@ -8303,7 +8286,7 @@ postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0 source-map "^0.5.6" supports-color "^3.2.3" -postcss@^8.1.10, postcss@^8.2.8: +postcss@^8.1.10: version "8.2.8" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.2.8.tgz#0b90f9382efda424c4f0f69a2ead6f6830d08ece" integrity sha512-1F0Xb2T21xET7oQV9eKuctbM9S7BC0fetoHCc4H13z0PT6haiRLP4T0ZY4XWh7iLP0usgqykT6p9B2RtOf4FPw== @@ -8453,11 +8436,6 @@ proto-list@~1.2.1: resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" integrity sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk= -prr@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" - integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= - pseudomap@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" @@ -8847,10 +8825,10 @@ redis-parser@^3.0.0: dependencies: redis-errors "^1.0.0" -redis@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/redis/-/redis-3.1.1.tgz#a44bee7c072dcf685e139048d6a1a4d3b00f5d01" - integrity sha512-QhkKhOuzhogR1NDJfBD34TQJz2ZJwDhhIC6ZmvpftlmfYShHHQXjjNspAJ+Z2HH5NwSBVYBVganbiZ8bgFMHjg== +redis@3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/redis/-/redis-3.1.2.tgz#766851117e80653d23e0ed536254677ab647638c" + integrity sha512-grn5KoZLr/qrRQVwoSkmzdbw6pwF+/rwODtrOr6vuBRiR/f3rjSTGupbF90Zpqm2oenix8Do6RV7pYEkGwlKkw== dependencies: denque "^1.5.0" redis-commands "^1.7.0" @@ -8954,7 +8932,7 @@ replace-homedir@^1.0.0: is-absolute "^1.0.0" remove-trailing-separator "^1.1.0" -replacestream@^4.0.0: +replacestream@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/replacestream/-/replacestream-4.0.3.tgz#3ee5798092be364b1cdb1484308492cb3dff2f36" integrity sha512-AC0FiLS352pBBiZhd4VXB1Ab/lh0lEgpP+GGvZqbQh8a5cmXVoTe5EX/YeTFArnp4SRGTHh1qCHu9lGs1qG8sA== @@ -9257,12 +9235,12 @@ sass-loader@11.0.1: klona "^2.0.4" neo-async "^2.6.2" -sass@1.32.8: - version "1.32.8" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.32.8.tgz#f16a9abd8dc530add8834e506878a2808c037bdc" - integrity sha512-Sl6mIeGpzjIUZqvKnKETfMf0iDAswD9TNlv13A7aAF3XZlRPMq4VvJWBC2N2DXbp94MQVdNSFG6LfF/iOXrPHQ== +sass@1.32.11: + version "1.32.11" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.32.11.tgz#b236b3ea55c76602c2ef2bd0445f0db581baa218" + integrity sha512-O9tRcob/fegUVSIV1ihLLZcftIOh0AF1VpKgusUfLqnb2jQ0GLDwI5ivv1FYWivGv8eZ/AwntTyTzjcHu0c/qw== dependencies: - chokidar ">=2.0.0 <4.0.0" + chokidar ">=3.0.0 <4.0.0" sax@1.2.1: version "1.2.1" @@ -10095,7 +10073,7 @@ table@^6.0.4: slice-ansi "^4.0.0" string-width "^4.2.0" -tapable@^1.0.0, tapable@^1.0.0-beta.5: +tapable@^1.0.0-beta.5: version "1.1.3" resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== @@ -10199,10 +10177,10 @@ textarea-caret@3.1.0: resolved "https://registry.yarnpkg.com/textarea-caret/-/textarea-caret-3.1.0.tgz#5d5a35bb035fd06b2ff0e25d5359e97f2655087f" integrity sha512-cXAvzO9pP5CGa6NKx0WYHl+8CHKZs8byMkt3PCJBCmq2a34YA9pO1NrQET5pzeqnBjBdToF5No4rrmkDUgQC2Q== -textextensions@2: - version "2.6.0" - resolved "https://registry.yarnpkg.com/textextensions/-/textextensions-2.6.0.tgz#d7e4ab13fe54e32e08873be40d51b74229b00fc4" - integrity sha512-49WtAWS+tcsy93dRt6P0P3AMD2m5PvXRhuEA0kaXos5ZLlujtYmpmFsB+QvWUSxE1ZsstmYXfQ7L40+EcQgpAQ== +textextensions@^3.2.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/textextensions/-/textextensions-3.3.0.tgz#03530d5287b86773c08b77458589148870cc71d3" + integrity sha512-mk82dS8eRABNbeVJrEiN5/UMSCliINAuz8mkUwH4SwslkNP//gbEzlWNS5au0z5Dpx40SQxzqZevZkn+WYJ9Dw== thenify-all@^1.0.0: version "1.6.0" @@ -10404,14 +10382,13 @@ tree-kill@^1.2.2: resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== -ts-loader@8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-8.1.0.tgz#d6292487df279c7cc79b6d3b70bb9d31682b693e" - integrity sha512-YiQipGGAFj2zBfqLhp28yUvPP9jUGqHxRzrGYuc82Z2wM27YIHbElXiaZDc93c3x0mz4zvBmS6q/DgExpdj37A== +ts-loader@9.1.1: + version "9.1.1" + resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-9.1.1.tgz#83f598c37e648f3b6b2350bfac6f58f9253d078c" + integrity sha512-u91MdIE4rtN/06Q881uUzVeMoYy+CdFXoanCQXVGRubKKxgLjqQ/H9nkDbp6klkiPv3t18KLjZbEofkJodM3ow== dependencies: chalk "^4.1.0" - enhanced-resolve "^4.0.0" - loader-utils "^2.0.0" + enhanced-resolve "^5.0.0" micromatch "^4.0.0" semver "^7.3.4" @@ -10427,10 +10404,10 @@ ts-node@9.1.1: source-map-support "^0.5.17" yn "3.1.1" -tsc-alias@1.2.9: - version "1.2.9" - resolved "https://registry.yarnpkg.com/tsc-alias/-/tsc-alias-1.2.9.tgz#9fbf38e5eb1bd89c7f4fc26ef0712e22a6ef8939" - integrity sha512-/ec9t/EIhW7h1oQ/mbezNlHsYipDsJY6IUi2SNRvzvnu8Iamp4nSUDUIdpx9jaoq2QZPKm63Je6bQZBGqWS4jA== +tsc-alias@1.2.10: + version "1.2.10" + resolved "https://registry.yarnpkg.com/tsc-alias/-/tsc-alias-1.2.10.tgz#edcc018ab94104e795999a9960bb94e7c9a3ca23" + integrity sha512-6koWkGL9A/01qC65vVecgN3vZwCvWqx1GPoksgvQkNp+GAbT1z5tuFx+pvtmkYjR07WcNP1rGln/+RRvlIrNRQ== dependencies: "@jfonx/console-utils" "^1.0.3" "@jfonx/file-utils" "^3.0.1" @@ -11093,7 +11070,36 @@ webpack-sources@^2.1.1: source-list-map "^2.0.1" source-map "^0.6.1" -webpack@5.33.2, webpack@^5: +webpack@5.35.1: + version "5.35.1" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.35.1.tgz#857670799465c8a5cbb94c4c175d60ac42d18ba3" + integrity sha512-uWKYStqJ23+N6/EnMEwUjPSSKUG1tFmcuKhALEh/QXoUxwN8eb3ATNIZB38A+fO6QZ0xfc7Cu7KNV9LXNhDCsw== + dependencies: + "@types/eslint-scope" "^3.7.0" + "@types/estree" "^0.0.47" + "@webassemblyjs/ast" "1.11.0" + "@webassemblyjs/wasm-edit" "1.11.0" + "@webassemblyjs/wasm-parser" "1.11.0" + acorn "^8.0.4" + browserslist "^4.14.5" + chrome-trace-event "^1.0.2" + enhanced-resolve "^5.8.0" + es-module-lexer "^0.4.0" + eslint-scope "^5.1.1" + events "^3.2.0" + glob-to-regexp "^0.4.1" + graceful-fs "^4.2.4" + json-parse-better-errors "^1.0.2" + loader-runner "^4.2.0" + mime-types "^2.1.27" + neo-async "^2.6.2" + schema-utils "^3.0.0" + tapable "^2.1.1" + terser-webpack-plugin "^5.1.1" + watchpack "^2.0.0" + webpack-sources "^2.1.1" + +webpack@^5: version "5.33.2" resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.33.2.tgz#c049717c9b038febf5a72fd2f53319ad59a8c1fc" integrity sha512-X4b7F1sYBmJx8mlh2B7mV5szEkE0jYNJ2y3akgAP0ERi0vLCG1VvdsIxt8lFd4st6SUy0lf7W0CCQS566MBpJg== @@ -11277,7 +11283,12 @@ write-json-file@^2.3.0: sort-keys "^2.0.0" write-file-atomic "^2.0.0" -ws@7.4.4, ws@^7.4.4: +ws@7.4.5: + version "7.4.5" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.5.tgz#a484dd851e9beb6fdb420027e3885e8ce48986c1" + integrity sha512-xzyu3hFvomRfXKH8vOFMU3OguG6oOvhXMo3xsGy3xWExqaM2dxBbVxuD99O7m3ZUFMvvscsZDqxfgMaRr/Nr1g== + +ws@^7.4.4: version "7.4.4" resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.4.tgz#383bc9742cb202292c9077ceab6f6047b17f2d59" integrity sha512-Qm8k8ojNQIMx7S+Zp8u/uHOx7Qazv3Yv4q68MiWWWOJhiwG5W3x7iqmRtJo8xxrciZUY4vRxUTJCKuRnF28ZZw== @@ -11397,6 +11408,11 @@ yargs-parser@5.0.0-security.0, yargs-parser@^5.0.0: camelcase "^3.0.0" object.assign "^4.1.0" +yargs-parser@>=5.0.0-security.0: + version "20.2.7" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.7.tgz#61df85c113edfb5a7a4e36eb8aa60ef423cbc90a" + integrity sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw== + yargs-parser@^13.1.2: version "13.1.2" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" |