From 7b72e823fb72fe2ee91faf7d6ecd0d1ca03d25f9 Mon Sep 17 00:00:00 2001 From: naskya <m@naskya.net> Date: Tue, 17 Oct 2023 13:05:53 +0900 Subject: [PATCH 01/74] fix (workaround): imports in MkFolder is also broken --- packages/client/src/components/MkFolder.vue | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/client/src/components/MkFolder.vue b/packages/client/src/components/MkFolder.vue index a168cbdcfe..4baa125136 100644 --- a/packages/client/src/components/MkFolder.vue +++ b/packages/client/src/components/MkFolder.vue @@ -10,10 +10,10 @@ :aria-controls="bodyId" > <template v-if="showBody" - ><i :class="icon('ph-caret-up')"></i + ><i class="ph-caret-up ph-bold ph-lg"></i ></template> <template v-else - ><i :class="icon('ph-caret-down')"></i + ><i class="ph-caret-down ph-bold ph-lg"></i ></template> </button> </header> @@ -35,7 +35,7 @@ import { defineComponent } from "vue"; import { getUniqueId } from "@/os"; import { defaultStore } from "@/store"; -import icon from "@/scripts/icon"; +// import icon from "@/scripts/icon"; const localStoragePrefix = "ui:folder:"; From b7125966d018b3f6112005c1b28afe99c05f624d Mon Sep 17 00:00:00 2001 From: naskya <m@naskya.net> Date: Wed, 18 Oct 2023 03:10:57 +0900 Subject: [PATCH 02/74] workaround for yet another import issue --- packages/client/src/components/form/suspense.vue | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/packages/client/src/components/form/suspense.vue b/packages/client/src/components/form/suspense.vue index d8965f13ff..9aac57713d 100644 --- a/packages/client/src/components/form/suspense.vue +++ b/packages/client/src/components/form/suspense.vue @@ -1,8 +1,12 @@ <template> + <!-- + FIXME: defaultStore and icon are undefined for some reason <transition :name="defaultStore.state.animation ? 'fade' : ''" mode="out-in" > + --> + <transition name="" mode="out-in"> <div v-if="pending"> <MkLoading /> </div> @@ -12,11 +16,13 @@ <div v-else> <div class="wszdbhzo"> <div> - <i :class="icon('ph-warning')"></i> + <!-- <i :class="icon('ph-warning')"></i> --> + <i class="ph-warning ph-bold ph-lg"></i> {{ i18n.ts.somethingHappened }} </div> - <MkButton inline class="retry" @click="retry" - ><i :class="icon('ph-arrow-clockwise')"></i> + <MkButton inline class="retry" @click="retry"> + <!-- <i :class="icon('ph-arrow-clockwise')"></i> --> + <i class="ph-arrow-clockwise ph-bold ph-lg"></i> {{ i18n.ts.retry }}</MkButton > </div> @@ -29,8 +35,8 @@ import type { PropType } from "vue"; import { defineComponent, ref, watch } from "vue"; import MkButton from "@/components/MkButton.vue"; import { i18n } from "@/i18n"; -import { defaultStore } from "@/store"; -import icon from "@/scripts/icon"; +// import { defaultStore } from "@/store"; +// import icon from "@/scripts/icon"; export default defineComponent({ components: { From d1bb6e02e9dacd86944e263424acf3173abf698c Mon Sep 17 00:00:00 2001 From: naskya <m@naskya.net> Date: Tue, 10 Oct 2023 23:35:21 +0900 Subject: [PATCH 03/74] hotfix: don't use upstream megalodon for now --- .gitignore | 3 + Dockerfile | 3 + packages/README.md | 1 + packages/backend/package.json | 2 +- .../mastodon/ApiMastodonCompatibleService.ts | 6 +- .../src/server/api/mastodon/endpoints/auth.ts | 2 +- .../server/api/mastodon/endpoints/search.ts | 3 +- .../server/api/mastodon/endpoints/status.ts | 4 +- .../backend/src/server/api/stream/index.ts | 2 +- packages/backend/src/server/index.ts | 6 +- packages/megalodon/package.json | 83 + packages/megalodon/src/axios.d.ts | 1 + packages/megalodon/src/cancel.ts | 13 + packages/megalodon/src/converter.ts | 3 + packages/megalodon/src/default.ts | 3 + packages/megalodon/src/entities/account.ts | 27 + packages/megalodon/src/entities/activity.ts | 8 + .../megalodon/src/entities/announcement.ts | 34 + .../megalodon/src/entities/application.ts | 7 + .../src/entities/async_attachment.ts | 14 + packages/megalodon/src/entities/attachment.ts | 49 + packages/megalodon/src/entities/card.ts | 16 + packages/megalodon/src/entities/context.ts | 8 + .../megalodon/src/entities/conversation.ts | 11 + packages/megalodon/src/entities/emoji.ts | 9 + .../megalodon/src/entities/featured_tag.ts | 8 + packages/megalodon/src/entities/field.ts | 7 + packages/megalodon/src/entities/filter.ts | 12 + packages/megalodon/src/entities/history.ts | 7 + .../megalodon/src/entities/identity_proof.ts | 9 + packages/megalodon/src/entities/instance.ts | 41 + packages/megalodon/src/entities/list.ts | 6 + packages/megalodon/src/entities/marker.ts | 15 + packages/megalodon/src/entities/mention.ts | 8 + .../megalodon/src/entities/notification.ts | 15 + packages/megalodon/src/entities/poll.ts | 14 + .../megalodon/src/entities/poll_option.ts | 6 + .../megalodon/src/entities/preferences.ts | 9 + .../src/entities/push_subscription.ts | 16 + packages/megalodon/src/entities/reaction.ts | 12 + .../megalodon/src/entities/relationship.ts | 17 + packages/megalodon/src/entities/report.ts | 9 + packages/megalodon/src/entities/results.ts | 11 + .../src/entities/scheduled_status.ts | 10 + packages/megalodon/src/entities/source.ts | 10 + packages/megalodon/src/entities/stats.ts | 7 + packages/megalodon/src/entities/status.ts | 45 + .../megalodon/src/entities/status_edit.ts | 23 + .../megalodon/src/entities/status_params.ts | 12 + packages/megalodon/src/entities/tag.ts | 10 + packages/megalodon/src/entities/token.ts | 8 + packages/megalodon/src/entities/urls.ts | 5 + packages/megalodon/src/entity.ts | 38 + packages/megalodon/src/filter_context.ts | 11 + packages/megalodon/src/index.ts | 32 + packages/megalodon/src/megalodon.ts | 1532 ++++++++ packages/megalodon/src/misskey.ts | 3436 +++++++++++++++++ packages/megalodon/src/misskey/api_client.ts | 727 ++++ .../megalodon/src/misskey/entities/GetAll.ts | 6 + .../src/misskey/entities/announcement.ts | 10 + .../megalodon/src/misskey/entities/app.ts | 9 + .../src/misskey/entities/blocking.ts | 10 + .../src/misskey/entities/createdNote.ts | 7 + .../megalodon/src/misskey/entities/emoji.ts | 9 + .../src/misskey/entities/favorite.ts | 10 + .../megalodon/src/misskey/entities/field.ts | 7 + .../megalodon/src/misskey/entities/file.ts | 20 + .../src/misskey/entities/followRequest.ts | 9 + .../src/misskey/entities/follower.ts | 11 + .../src/misskey/entities/following.ts | 11 + .../megalodon/src/misskey/entities/hashtag.ts | 7 + .../megalodon/src/misskey/entities/list.ts | 8 + .../megalodon/src/misskey/entities/meta.ts | 18 + .../megalodon/src/misskey/entities/mute.ts | 10 + .../megalodon/src/misskey/entities/note.ts | 32 + .../src/misskey/entities/notification.ts | 17 + .../megalodon/src/misskey/entities/poll.ts | 13 + .../src/misskey/entities/reaction.ts | 11 + .../src/misskey/entities/relation.ts | 12 + .../megalodon/src/misskey/entities/session.ts | 6 + .../megalodon/src/misskey/entities/state.ts | 7 + .../megalodon/src/misskey/entities/stats.ts | 9 + .../megalodon/src/misskey/entities/user.ts | 13 + .../src/misskey/entities/userDetail.ts | 34 + .../src/misskey/entities/userDetailMe.ts | 36 + .../megalodon/src/misskey/entities/userkey.ts | 8 + packages/megalodon/src/misskey/entity.ts | 28 + .../megalodon/src/misskey/notification.ts | 18 + packages/megalodon/src/misskey/web_socket.ts | 458 +++ packages/megalodon/src/notification.ts | 14 + packages/megalodon/src/oauth.ts | 123 + packages/megalodon/src/parser.ts | 94 + packages/megalodon/src/proxy_config.ts | 92 + packages/megalodon/src/response.ts | 8 + .../test/integration/megalodon.spec.ts | 27 + .../test/integration/misskey.spec.ts | 204 + .../test/unit/misskey/api_client.spec.ts | 233 ++ packages/megalodon/test/unit/parser.spec.ts | 152 + packages/megalodon/tsconfig.json | 64 + pnpm-lock.yaml | 1370 ++++++- pnpm-workspace.yaml | 1 + scripts/clean-all.js | 8 + scripts/clean.js | 4 + 103 files changed, 9612 insertions(+), 92 deletions(-) create mode 100644 packages/megalodon/package.json create mode 100644 packages/megalodon/src/axios.d.ts create mode 100644 packages/megalodon/src/cancel.ts create mode 100644 packages/megalodon/src/converter.ts create mode 100644 packages/megalodon/src/default.ts create mode 100644 packages/megalodon/src/entities/account.ts create mode 100644 packages/megalodon/src/entities/activity.ts create mode 100644 packages/megalodon/src/entities/announcement.ts create mode 100644 packages/megalodon/src/entities/application.ts create mode 100644 packages/megalodon/src/entities/async_attachment.ts create mode 100644 packages/megalodon/src/entities/attachment.ts create mode 100644 packages/megalodon/src/entities/card.ts create mode 100644 packages/megalodon/src/entities/context.ts create mode 100644 packages/megalodon/src/entities/conversation.ts create mode 100644 packages/megalodon/src/entities/emoji.ts create mode 100644 packages/megalodon/src/entities/featured_tag.ts create mode 100644 packages/megalodon/src/entities/field.ts create mode 100644 packages/megalodon/src/entities/filter.ts create mode 100644 packages/megalodon/src/entities/history.ts create mode 100644 packages/megalodon/src/entities/identity_proof.ts create mode 100644 packages/megalodon/src/entities/instance.ts create mode 100644 packages/megalodon/src/entities/list.ts create mode 100644 packages/megalodon/src/entities/marker.ts create mode 100644 packages/megalodon/src/entities/mention.ts create mode 100644 packages/megalodon/src/entities/notification.ts create mode 100644 packages/megalodon/src/entities/poll.ts create mode 100644 packages/megalodon/src/entities/poll_option.ts create mode 100644 packages/megalodon/src/entities/preferences.ts create mode 100644 packages/megalodon/src/entities/push_subscription.ts create mode 100644 packages/megalodon/src/entities/reaction.ts create mode 100644 packages/megalodon/src/entities/relationship.ts create mode 100644 packages/megalodon/src/entities/report.ts create mode 100644 packages/megalodon/src/entities/results.ts create mode 100644 packages/megalodon/src/entities/scheduled_status.ts create mode 100644 packages/megalodon/src/entities/source.ts create mode 100644 packages/megalodon/src/entities/stats.ts create mode 100644 packages/megalodon/src/entities/status.ts create mode 100644 packages/megalodon/src/entities/status_edit.ts create mode 100644 packages/megalodon/src/entities/status_params.ts create mode 100644 packages/megalodon/src/entities/tag.ts create mode 100644 packages/megalodon/src/entities/token.ts create mode 100644 packages/megalodon/src/entities/urls.ts create mode 100644 packages/megalodon/src/entity.ts create mode 100644 packages/megalodon/src/filter_context.ts create mode 100644 packages/megalodon/src/index.ts create mode 100644 packages/megalodon/src/megalodon.ts create mode 100644 packages/megalodon/src/misskey.ts create mode 100644 packages/megalodon/src/misskey/api_client.ts create mode 100644 packages/megalodon/src/misskey/entities/GetAll.ts create mode 100644 packages/megalodon/src/misskey/entities/announcement.ts create mode 100644 packages/megalodon/src/misskey/entities/app.ts create mode 100644 packages/megalodon/src/misskey/entities/blocking.ts create mode 100644 packages/megalodon/src/misskey/entities/createdNote.ts create mode 100644 packages/megalodon/src/misskey/entities/emoji.ts create mode 100644 packages/megalodon/src/misskey/entities/favorite.ts create mode 100644 packages/megalodon/src/misskey/entities/field.ts create mode 100644 packages/megalodon/src/misskey/entities/file.ts create mode 100644 packages/megalodon/src/misskey/entities/followRequest.ts create mode 100644 packages/megalodon/src/misskey/entities/follower.ts create mode 100644 packages/megalodon/src/misskey/entities/following.ts create mode 100644 packages/megalodon/src/misskey/entities/hashtag.ts create mode 100644 packages/megalodon/src/misskey/entities/list.ts create mode 100644 packages/megalodon/src/misskey/entities/meta.ts create mode 100644 packages/megalodon/src/misskey/entities/mute.ts create mode 100644 packages/megalodon/src/misskey/entities/note.ts create mode 100644 packages/megalodon/src/misskey/entities/notification.ts create mode 100644 packages/megalodon/src/misskey/entities/poll.ts create mode 100644 packages/megalodon/src/misskey/entities/reaction.ts create mode 100644 packages/megalodon/src/misskey/entities/relation.ts create mode 100644 packages/megalodon/src/misskey/entities/session.ts create mode 100644 packages/megalodon/src/misskey/entities/state.ts create mode 100644 packages/megalodon/src/misskey/entities/stats.ts create mode 100644 packages/megalodon/src/misskey/entities/user.ts create mode 100644 packages/megalodon/src/misskey/entities/userDetail.ts create mode 100644 packages/megalodon/src/misskey/entities/userDetailMe.ts create mode 100644 packages/megalodon/src/misskey/entities/userkey.ts create mode 100644 packages/megalodon/src/misskey/entity.ts create mode 100644 packages/megalodon/src/misskey/notification.ts create mode 100644 packages/megalodon/src/misskey/web_socket.ts create mode 100644 packages/megalodon/src/notification.ts create mode 100644 packages/megalodon/src/oauth.ts create mode 100644 packages/megalodon/src/parser.ts create mode 100644 packages/megalodon/src/proxy_config.ts create mode 100644 packages/megalodon/src/response.ts create mode 100644 packages/megalodon/test/integration/megalodon.spec.ts create mode 100644 packages/megalodon/test/integration/misskey.spec.ts create mode 100644 packages/megalodon/test/unit/misskey/api_client.spec.ts create mode 100644 packages/megalodon/test/unit/parser.spec.ts create mode 100644 packages/megalodon/tsconfig.json diff --git a/.gitignore b/.gitignore index 0a1a09c90d..3c55ec0d78 100644 --- a/.gitignore +++ b/.gitignore @@ -57,6 +57,9 @@ packages/backend/assets/LICENSE !/packages/backend/src/db !/packages/backend/src/server/api/endpoints/drive/files +packages/megalodon/lib +packages/megalodon/.idea + # blender backups *.blend1 *.blend2 diff --git a/Dockerfile b/Dockerfile index 7ba32ba832..c7d9a95d86 100644 --- a/Dockerfile +++ b/Dockerfile @@ -26,6 +26,7 @@ COPY packages/backend/package.json packages/backend/package.json COPY packages/client/package.json packages/client/package.json COPY packages/sw/package.json packages/sw/package.json COPY packages/firefish-js/package.json packages/firefish-js/package.json +COPY packages/megalodon/package.json packages/megalodon/package.json COPY packages/backend/native-utils/package.json packages/backend/native-utils/package.json COPY packages/backend/native-utils/npm/linux-x64-musl/package.json packages/backend/native-utils/npm/linux-x64-musl/package.json COPY packages/backend/native-utils/npm/linux-arm64-musl/package.json packages/backend/native-utils/npm/linux-arm64-musl/package.json @@ -55,6 +56,8 @@ RUN apt-get update && apt-get install -y libvips-dev zip unzip tini ffmpeg COPY . ./ +COPY --from=build /firefish/packages/megalodon /firefish/packages/megalodon + # Copy node modules COPY --from=build /firefish/node_modules /firefish/node_modules COPY --from=build /firefish/packages/backend/node_modules /firefish/packages/backend/node_modules diff --git a/packages/README.md b/packages/README.md index 75e38a4940..ea04817f06 100644 --- a/packages/README.md +++ b/packages/README.md @@ -7,3 +7,4 @@ This directory contains all of the packages Firefish uses. - `client`: Web interface written in Vue3 and TypeScript - `sw`: Web [Service Worker](https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API) written in TypeScript - `firefish-js`: TypeScript SDK for both backend and client, also published on [NPM](https://www.npmjs.com/package/firefish-js) for public use +- `megalodon`: TypeScript library used for partial Mastodon API compatibility diff --git a/packages/backend/package.json b/packages/backend/package.json index 2a84da576f..110b8e14ef 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -87,7 +87,7 @@ "koa-send": "5.0.1", "koa-slow": "2.1.0", "koa-views": "7.0.2", - "megalodon": "8.1.1", + "megalodon": "workspace:*", "meilisearch": "0.34.1", "mfm-js": "0.23.3", "mime-types": "2.1.35", diff --git a/packages/backend/src/server/api/mastodon/ApiMastodonCompatibleService.ts b/packages/backend/src/server/api/mastodon/ApiMastodonCompatibleService.ts index 3f6e671bd6..44485ac429 100644 --- a/packages/backend/src/server/api/mastodon/ApiMastodonCompatibleService.ts +++ b/packages/backend/src/server/api/mastodon/ApiMastodonCompatibleService.ts @@ -24,11 +24,7 @@ export function getClient( const accessTokenArr = authorization?.split(" ") ?? [null]; const accessToken = accessTokenArr[accessTokenArr.length - 1]; const generator = (megalodon as any).default; - const client = generator( - "firefish", - BASE_URL, - accessToken, - ) as MegalodonInterface; + const client = generator(BASE_URL, accessToken) as MegalodonInterface; return client; } diff --git a/packages/backend/src/server/api/mastodon/endpoints/auth.ts b/packages/backend/src/server/api/mastodon/endpoints/auth.ts index 3d6eb8c4d6..b55cb6388c 100644 --- a/packages/backend/src/server/api/mastodon/endpoints/auth.ts +++ b/packages/backend/src/server/api/mastodon/endpoints/auth.ts @@ -68,7 +68,7 @@ export function apiAuthMastodon(router: Router): void { website: body.website, redirect_uri: red, client_id: Buffer.from(appData.url || "").toString("base64"), - client_secret: appData.client_secret, + client_secret: appData.clientSecret, }; console.log(returns); ctx.body = returns; diff --git a/packages/backend/src/server/api/mastodon/endpoints/search.ts b/packages/backend/src/server/api/mastodon/endpoints/search.ts index 5bd24ca89b..8a48175579 100644 --- a/packages/backend/src/server/api/mastodon/endpoints/search.ts +++ b/packages/backend/src/server/api/mastodon/endpoints/search.ts @@ -1,7 +1,8 @@ +import megalodon, { MegalodonInterface } from "megalodon"; import Router from "@koa/router"; import { getClient } from "../ApiMastodonCompatibleService.js"; import axios from "axios"; -import Converter from "megalodon"; +import { Converter } from "megalodon"; import { convertTimelinesArgsId, limitToInt } from "./timeline.js"; import { convertAccount, convertStatus } from "../converters.js"; diff --git a/packages/backend/src/server/api/mastodon/endpoints/status.ts b/packages/backend/src/server/api/mastodon/endpoints/status.ts index 2c35843dd3..bc95d77769 100644 --- a/packages/backend/src/server/api/mastodon/endpoints/status.ts +++ b/packages/backend/src/server/api/mastodon/endpoints/status.ts @@ -380,7 +380,7 @@ export function apiStatusMastodon(router: Router): void { const accessTokens = ctx.headers.authorization; const client = getClient(BASE_URL, accessTokens); try { - const data = await client.createEmojiReaction( + const data = await client.reactStatus( convertId(ctx.params.id, IdType.FirefishId), ctx.params.name, ); @@ -400,7 +400,7 @@ export function apiStatusMastodon(router: Router): void { const accessTokens = ctx.headers.authorization; const client = getClient(BASE_URL, accessTokens); try { - const data = await client.deleteEmojiReaction( + const data = await client.unreactStatus( convertId(ctx.params.id, IdType.FirefishId), ctx.params.name, ); diff --git a/packages/backend/src/server/api/stream/index.ts b/packages/backend/src/server/api/stream/index.ts index 5a47f2cba7..e483683151 100644 --- a/packages/backend/src/server/api/stream/index.ts +++ b/packages/backend/src/server/api/stream/index.ts @@ -25,7 +25,7 @@ import { readNotification } from "../common/read-notification.js"; import channels from "./channels/index.js"; import type Channel from "./channel.js"; import type { StreamEventEmitter, StreamMessages } from "./types.js"; -import Converter from "megalodon"; +import { Converter } from "megalodon"; import { getClient } from "../mastodon/ApiMastodonCompatibleService.js"; /** diff --git a/packages/backend/src/server/index.ts b/packages/backend/src/server/index.ts index b967754d46..f26853eb8f 100644 --- a/packages/backend/src/server/index.ts +++ b/packages/backend/src/server/index.ts @@ -163,10 +163,10 @@ mastoRouter.post("/oauth/token", async (ctx) => { ctx.body = ret; return; } - let client_id: Array<string> | string | null = body.client_id; + let client_id: any = body.client_id; const BASE_URL = `${ctx.request.protocol}://${ctx.request.hostname}`; const generator = (megalodon as any).default; - const client = generator("firefish", BASE_URL, null) as MegalodonInterface; + const client = generator(BASE_URL, null) as MegalodonInterface; let token = null; if (body.code) { //m = body.code.match(/^([a-zA-Z0-9]{8})([a-zA-Z0-9]{4})([a-zA-Z0-9]{4})([a-zA-Z0-9]{4})([a-zA-Z0-9]{12})/); @@ -190,7 +190,7 @@ mastoRouter.post("/oauth/token", async (ctx) => { token ? token : "", ); const ret = { - access_token: atData.access_token, + access_token: atData.accessToken, token_type: "Bearer", scope: body.scope || "read write follow push", created_at: Math.floor(new Date().getTime() / 1000), diff --git a/packages/megalodon/package.json b/packages/megalodon/package.json new file mode 100644 index 0000000000..3403b94b47 --- /dev/null +++ b/packages/megalodon/package.json @@ -0,0 +1,83 @@ +{ + "name": "megalodon", + "private": true, + "main": "./lib/src/index.js", + "typings": "./lib/src/index.d.ts", + "scripts": { + "build": "tsc -p ./", + "build:debug": "pnpm run build", + "lint": "pnpm biome check **/*.ts --apply", + "format": "pnpm biome format --write src/**/*.ts", + "doc": "typedoc --out ../docs ./src", + "test": "NODE_ENV=test jest -u --maxWorkers=3" + }, + "jest": { + "moduleFileExtensions": [ + "ts", + "js" + ], + "moduleNameMapper": { + "^@/(.+)": "<rootDir>/src/$1", + "^~/(.+)": "<rootDir>/$1" + }, + "testMatch": [ + "**/test/**/*.spec.ts" + ], + "preset": "ts-jest/presets/default", + "transform": { + "^.+\\.(ts|tsx)$": "ts-jest" + }, + "globals": { + "ts-jest": { + "tsconfig": "tsconfig.json" + } + }, + "testEnvironment": "node" + }, + "dependencies": { + "@types/oauth": "^0.9.0", + "@types/ws": "^8.5.4", + "axios": "1.2.2", + "dayjs": "^1.11.7", + "form-data": "^4.0.0", + "https-proxy-agent": "^5.0.1", + "oauth": "^0.10.0", + "object-assign-deep": "^0.4.0", + "parse-link-header": "^2.0.0", + "socks-proxy-agent": "^7.0.0", + "typescript": "4.9.4", + "uuid": "^9.0.0", + "ws": "8.12.0", + "async-lock": "1.4.0" + }, + "devDependencies": { + "@types/core-js": "^2.5.0", + "@types/form-data": "^2.5.0", + "@types/jest": "^29.4.0", + "@types/object-assign-deep": "^0.4.0", + "@types/parse-link-header": "^2.0.0", + "@types/uuid": "^9.0.0", + "@types/node": "18.11.18", + "@typescript-eslint/eslint-plugin": "^5.49.0", + "@typescript-eslint/parser": "^5.49.0", + "@types/async-lock": "1.4.0", + "eslint": "^8.32.0", + "eslint-config-prettier": "^8.6.0", + "eslint-config-standard": "^16.0.3", + "eslint-plugin-import": "^2.27.5", + "eslint-plugin-node": "^11.0.0", + "eslint-plugin-prettier": "^4.2.1", + "eslint-plugin-promise": "^6.1.1", + "eslint-plugin-standard": "^5.0.0", + "jest": "^29.4.0", + "jest-worker": "^29.4.0", + "lodash": "^4.17.14", + "prettier": "^2.8.3", + "ts-jest": "^29.0.5", + "typedoc": "^0.23.24" + }, + "directories": { + "lib": "lib", + "test": "test" + } +} diff --git a/packages/megalodon/src/axios.d.ts b/packages/megalodon/src/axios.d.ts new file mode 100644 index 0000000000..f19fe38a2b --- /dev/null +++ b/packages/megalodon/src/axios.d.ts @@ -0,0 +1 @@ +declare module "axios/lib/adapters/http"; diff --git a/packages/megalodon/src/cancel.ts b/packages/megalodon/src/cancel.ts new file mode 100644 index 0000000000..f8e4729b8e --- /dev/null +++ b/packages/megalodon/src/cancel.ts @@ -0,0 +1,13 @@ +export class RequestCanceledError extends Error { + public isCancel: boolean; + + constructor(msg: string) { + super(msg); + this.isCancel = true; + Object.setPrototypeOf(this, RequestCanceledError); + } +} + +export const isCancel = (value: any): boolean => { + return value && value.isCancel; +}; diff --git a/packages/megalodon/src/converter.ts b/packages/megalodon/src/converter.ts new file mode 100644 index 0000000000..93d669fa7d --- /dev/null +++ b/packages/megalodon/src/converter.ts @@ -0,0 +1,3 @@ +import MisskeyAPI from "./misskey/api_client"; + +export default MisskeyAPI.Converter; diff --git a/packages/megalodon/src/default.ts b/packages/megalodon/src/default.ts new file mode 100644 index 0000000000..45bce13e21 --- /dev/null +++ b/packages/megalodon/src/default.ts @@ -0,0 +1,3 @@ +export const NO_REDIRECT = "urn:ietf:wg:oauth:2.0:oob"; +export const DEFAULT_SCOPE = ["read", "write", "follow"]; +export const DEFAULT_UA = "megalodon"; diff --git a/packages/megalodon/src/entities/account.ts b/packages/megalodon/src/entities/account.ts new file mode 100644 index 0000000000..06a85eb98e --- /dev/null +++ b/packages/megalodon/src/entities/account.ts @@ -0,0 +1,27 @@ +/// <reference path="emoji.ts" /> +/// <reference path="source.ts" /> +/// <reference path="field.ts" /> +namespace Entity { + export type Account = { + id: string; + username: string; + acct: string; + display_name: string; + locked: boolean; + created_at: string; + followers_count: number; + following_count: number; + statuses_count: number; + note: string; + url: string; + avatar: string; + avatar_static: string; + header: string; + header_static: string; + emojis: Array<Emoji>; + moved: Account | null; + fields: Array<Field>; + bot: boolean | null; + source?: Source; + }; +} diff --git a/packages/megalodon/src/entities/activity.ts b/packages/megalodon/src/entities/activity.ts new file mode 100644 index 0000000000..6bc0b6d80e --- /dev/null +++ b/packages/megalodon/src/entities/activity.ts @@ -0,0 +1,8 @@ +namespace Entity { + export type Activity = { + week: string; + statuses: string; + logins: string; + registrations: string; + }; +} diff --git a/packages/megalodon/src/entities/announcement.ts b/packages/megalodon/src/entities/announcement.ts new file mode 100644 index 0000000000..7c79831634 --- /dev/null +++ b/packages/megalodon/src/entities/announcement.ts @@ -0,0 +1,34 @@ +/// <reference path="tag.ts" /> +/// <reference path="emoji.ts" /> +/// <reference path="reaction.ts" /> + +namespace Entity { + export type Announcement = { + id: string; + content: string; + starts_at: string | null; + ends_at: string | null; + published: boolean; + all_day: boolean; + published_at: string; + updated_at: string; + read?: boolean; + mentions: Array<AnnouncementAccount>; + statuses: Array<AnnouncementStatus>; + tags: Array<Tag>; + emojis: Array<Emoji>; + reactions: Array<Reaction>; + }; + + export type AnnouncementAccount = { + id: string; + username: string; + url: string; + acct: string; + }; + + export type AnnouncementStatus = { + id: string; + url: string; + }; +} diff --git a/packages/megalodon/src/entities/application.ts b/packages/megalodon/src/entities/application.ts new file mode 100644 index 0000000000..9b98b12772 --- /dev/null +++ b/packages/megalodon/src/entities/application.ts @@ -0,0 +1,7 @@ +namespace Entity { + export type Application = { + name: string; + website?: string | null; + vapid_key?: string | null; + }; +} diff --git a/packages/megalodon/src/entities/async_attachment.ts b/packages/megalodon/src/entities/async_attachment.ts new file mode 100644 index 0000000000..9cc17acc5c --- /dev/null +++ b/packages/megalodon/src/entities/async_attachment.ts @@ -0,0 +1,14 @@ +/// <reference path="attachment.ts" /> +namespace Entity { + export type AsyncAttachment = { + id: string; + type: "unknown" | "image" | "gifv" | "video" | "audio"; + url: string | null; + remote_url: string | null; + preview_url: string; + text_url: string | null; + meta: Meta | null; + description: string | null; + blurhash: string | null; + }; +} diff --git a/packages/megalodon/src/entities/attachment.ts b/packages/megalodon/src/entities/attachment.ts new file mode 100644 index 0000000000..082c79eddb --- /dev/null +++ b/packages/megalodon/src/entities/attachment.ts @@ -0,0 +1,49 @@ +namespace Entity { + export type Sub = { + // For Image, Gifv, and Video + width?: number; + height?: number; + size?: string; + aspect?: number; + + // For Gifv and Video + frame_rate?: string; + + // For Audio, Gifv, and Video + duration?: number; + bitrate?: number; + }; + + export type Focus = { + x: number; + y: number; + }; + + export type Meta = { + original?: Sub; + small?: Sub; + focus?: Focus; + length?: string; + duration?: number; + fps?: number; + size?: string; + width?: number; + height?: number; + aspect?: number; + audio_encode?: string; + audio_bitrate?: string; + audio_channel?: string; + }; + + export type Attachment = { + id: string; + type: "unknown" | "image" | "gifv" | "video" | "audio"; + url: string; + remote_url: string | null; + preview_url: string | null; + text_url: string | null; + meta: Meta | null; + description: string | null; + blurhash: string | null; + }; +} diff --git a/packages/megalodon/src/entities/card.ts b/packages/megalodon/src/entities/card.ts new file mode 100644 index 0000000000..356d99aee4 --- /dev/null +++ b/packages/megalodon/src/entities/card.ts @@ -0,0 +1,16 @@ +namespace Entity { + export type Card = { + url: string; + title: string; + description: string; + type: "link" | "photo" | "video" | "rich"; + image?: string; + author_name?: string; + author_url?: string; + provider_name?: string; + provider_url?: string; + html?: string; + width?: number; + height?: number; + }; +} diff --git a/packages/megalodon/src/entities/context.ts b/packages/megalodon/src/entities/context.ts new file mode 100644 index 0000000000..a794a7c5a8 --- /dev/null +++ b/packages/megalodon/src/entities/context.ts @@ -0,0 +1,8 @@ +/// <reference path="status.ts" /> + +namespace Entity { + export type Context = { + ancestors: Array<Status>; + descendants: Array<Status>; + }; +} diff --git a/packages/megalodon/src/entities/conversation.ts b/packages/megalodon/src/entities/conversation.ts new file mode 100644 index 0000000000..2bdc196661 --- /dev/null +++ b/packages/megalodon/src/entities/conversation.ts @@ -0,0 +1,11 @@ +/// <reference path="account.ts" /> +/// <reference path="status.ts" /> + +namespace Entity { + export type Conversation = { + id: string; + accounts: Array<Account>; + last_status: Status | null; + unread: boolean; + }; +} diff --git a/packages/megalodon/src/entities/emoji.ts b/packages/megalodon/src/entities/emoji.ts new file mode 100644 index 0000000000..10c32ab0bd --- /dev/null +++ b/packages/megalodon/src/entities/emoji.ts @@ -0,0 +1,9 @@ +namespace Entity { + export type Emoji = { + shortcode: string; + static_url: string; + url: string; + visible_in_picker: boolean; + category: string; + }; +} diff --git a/packages/megalodon/src/entities/featured_tag.ts b/packages/megalodon/src/entities/featured_tag.ts new file mode 100644 index 0000000000..fc9f8c69cc --- /dev/null +++ b/packages/megalodon/src/entities/featured_tag.ts @@ -0,0 +1,8 @@ +namespace Entity { + export type FeaturedTag = { + id: string; + name: string; + statuses_count: number; + last_status_at: string; + }; +} diff --git a/packages/megalodon/src/entities/field.ts b/packages/megalodon/src/entities/field.ts new file mode 100644 index 0000000000..de4b6b2b72 --- /dev/null +++ b/packages/megalodon/src/entities/field.ts @@ -0,0 +1,7 @@ +namespace Entity { + export type Field = { + name: string; + value: string; + verified_at: string | null; + }; +} diff --git a/packages/megalodon/src/entities/filter.ts b/packages/megalodon/src/entities/filter.ts new file mode 100644 index 0000000000..55b7305cc3 --- /dev/null +++ b/packages/megalodon/src/entities/filter.ts @@ -0,0 +1,12 @@ +namespace Entity { + export type Filter = { + id: string; + phrase: string; + context: Array<FilterContext>; + expires_at: string | null; + irreversible: boolean; + whole_word: boolean; + }; + + export type FilterContext = string; +} diff --git a/packages/megalodon/src/entities/history.ts b/packages/megalodon/src/entities/history.ts new file mode 100644 index 0000000000..4676357d69 --- /dev/null +++ b/packages/megalodon/src/entities/history.ts @@ -0,0 +1,7 @@ +namespace Entity { + export type History = { + day: string; + uses: number; + accounts: number; + }; +} diff --git a/packages/megalodon/src/entities/identity_proof.ts b/packages/megalodon/src/entities/identity_proof.ts new file mode 100644 index 0000000000..3b42e6f412 --- /dev/null +++ b/packages/megalodon/src/entities/identity_proof.ts @@ -0,0 +1,9 @@ +namespace Entity { + export type IdentityProof = { + provider: string; + provider_username: string; + updated_at: string; + proof_url: string; + profile_url: string; + }; +} diff --git a/packages/megalodon/src/entities/instance.ts b/packages/megalodon/src/entities/instance.ts new file mode 100644 index 0000000000..9c0f572db4 --- /dev/null +++ b/packages/megalodon/src/entities/instance.ts @@ -0,0 +1,41 @@ +/// <reference path="account.ts" /> +/// <reference path="urls.ts" /> +/// <reference path="stats.ts" /> + +namespace Entity { + export type Instance = { + uri: string; + title: string; + description: string; + email: string; + version: string; + thumbnail: string | null; + urls: URLs; + stats: Stats; + languages: Array<string>; + contact_account: Account | null; + max_toot_chars?: number; + registrations?: boolean; + configuration?: { + statuses: { + max_characters: number; + max_media_attachments: number; + characters_reserved_per_url: number; + }; + media_attachments: { + supported_mime_types: Array<string>; + image_size_limit: number; + image_matrix_limit: number; + video_size_limit: number; + video_frame_limit: number; + video_matrix_limit: number; + }; + polls: { + max_options: number; + max_characters_per_option: number; + min_expiration: number; + max_expiration: number; + }; + }; + }; +} diff --git a/packages/megalodon/src/entities/list.ts b/packages/megalodon/src/entities/list.ts new file mode 100644 index 0000000000..97e75286b2 --- /dev/null +++ b/packages/megalodon/src/entities/list.ts @@ -0,0 +1,6 @@ +namespace Entity { + export type List = { + id: string; + title: string; + }; +} diff --git a/packages/megalodon/src/entities/marker.ts b/packages/megalodon/src/entities/marker.ts new file mode 100644 index 0000000000..7ee99282ca --- /dev/null +++ b/packages/megalodon/src/entities/marker.ts @@ -0,0 +1,15 @@ +namespace Entity { + export type Marker = { + home?: { + last_read_id: string; + version: number; + updated_at: string; + }; + notifications?: { + last_read_id: string; + version: number; + updated_at: string; + unread_count?: number; + }; + }; +} diff --git a/packages/megalodon/src/entities/mention.ts b/packages/megalodon/src/entities/mention.ts new file mode 100644 index 0000000000..4fe36a6553 --- /dev/null +++ b/packages/megalodon/src/entities/mention.ts @@ -0,0 +1,8 @@ +namespace Entity { + export type Mention = { + id: string; + username: string; + url: string; + acct: string; + }; +} diff --git a/packages/megalodon/src/entities/notification.ts b/packages/megalodon/src/entities/notification.ts new file mode 100644 index 0000000000..68eff3347e --- /dev/null +++ b/packages/megalodon/src/entities/notification.ts @@ -0,0 +1,15 @@ +/// <reference path="account.ts" /> +/// <reference path="status.ts" /> + +namespace Entity { + export type Notification = { + account: Account; + created_at: string; + id: string; + status?: Status; + reaction?: Reaction; + type: NotificationType; + }; + + export type NotificationType = string; +} diff --git a/packages/megalodon/src/entities/poll.ts b/packages/megalodon/src/entities/poll.ts new file mode 100644 index 0000000000..2539d68b20 --- /dev/null +++ b/packages/megalodon/src/entities/poll.ts @@ -0,0 +1,14 @@ +/// <reference path="poll_option.ts" /> + +namespace Entity { + export type Poll = { + id: string; + expires_at: string | null; + expired: boolean; + multiple: boolean; + votes_count: number; + options: Array<PollOption>; + voted: boolean; + own_votes: Array<number>; + }; +} diff --git a/packages/megalodon/src/entities/poll_option.ts b/packages/megalodon/src/entities/poll_option.ts new file mode 100644 index 0000000000..e818a8607b --- /dev/null +++ b/packages/megalodon/src/entities/poll_option.ts @@ -0,0 +1,6 @@ +namespace Entity { + export type PollOption = { + title: string; + votes_count: number | null; + }; +} diff --git a/packages/megalodon/src/entities/preferences.ts b/packages/megalodon/src/entities/preferences.ts new file mode 100644 index 0000000000..7994dc568e --- /dev/null +++ b/packages/megalodon/src/entities/preferences.ts @@ -0,0 +1,9 @@ +namespace Entity { + export type Preferences = { + "posting:default:visibility": "public" | "unlisted" | "private" | "direct"; + "posting:default:sensitive": boolean; + "posting:default:language": string | null; + "reading:expand:media": "default" | "show_all" | "hide_all"; + "reading:expand:spoilers": boolean; + }; +} diff --git a/packages/megalodon/src/entities/push_subscription.ts b/packages/megalodon/src/entities/push_subscription.ts new file mode 100644 index 0000000000..ad1146a242 --- /dev/null +++ b/packages/megalodon/src/entities/push_subscription.ts @@ -0,0 +1,16 @@ +namespace Entity { + export type Alerts = { + follow: boolean; + favourite: boolean; + mention: boolean; + reblog: boolean; + poll: boolean; + }; + + export type PushSubscription = { + id: string; + endpoint: string; + server_key: string; + alerts: Alerts; + }; +} diff --git a/packages/megalodon/src/entities/reaction.ts b/packages/megalodon/src/entities/reaction.ts new file mode 100644 index 0000000000..4edbec6a7d --- /dev/null +++ b/packages/megalodon/src/entities/reaction.ts @@ -0,0 +1,12 @@ +/// <reference path="account.ts" /> + +namespace Entity { + export type Reaction = { + count: number; + me: boolean; + name: string; + url?: string; + static_url?: string; + accounts?: Array<Account>; + }; +} diff --git a/packages/megalodon/src/entities/relationship.ts b/packages/megalodon/src/entities/relationship.ts new file mode 100644 index 0000000000..91802d5c88 --- /dev/null +++ b/packages/megalodon/src/entities/relationship.ts @@ -0,0 +1,17 @@ +namespace Entity { + export type Relationship = { + id: string; + following: boolean; + followed_by: boolean; + delivery_following?: boolean; + blocking: boolean; + blocked_by: boolean; + muting: boolean; + muting_notifications: boolean; + requested: boolean; + domain_blocking: boolean; + showing_reblogs: boolean; + endorsed: boolean; + notifying: boolean; + }; +} diff --git a/packages/megalodon/src/entities/report.ts b/packages/megalodon/src/entities/report.ts new file mode 100644 index 0000000000..6862a5fabe --- /dev/null +++ b/packages/megalodon/src/entities/report.ts @@ -0,0 +1,9 @@ +namespace Entity { + export type Report = { + id: string; + action_taken: string; + comment: string; + account_id: string; + status_ids: Array<string>; + }; +} diff --git a/packages/megalodon/src/entities/results.ts b/packages/megalodon/src/entities/results.ts new file mode 100644 index 0000000000..4448e53350 --- /dev/null +++ b/packages/megalodon/src/entities/results.ts @@ -0,0 +1,11 @@ +/// <reference path="account.ts" /> +/// <reference path="status.ts" /> +/// <reference path="tag.ts" /> + +namespace Entity { + export type Results = { + accounts: Array<Account>; + statuses: Array<Status>; + hashtags: Array<Tag>; + }; +} diff --git a/packages/megalodon/src/entities/scheduled_status.ts b/packages/megalodon/src/entities/scheduled_status.ts new file mode 100644 index 0000000000..78dfb8ed26 --- /dev/null +++ b/packages/megalodon/src/entities/scheduled_status.ts @@ -0,0 +1,10 @@ +/// <reference path="attachment.ts" /> +/// <reference path="status_params.ts" /> +namespace Entity { + export type ScheduledStatus = { + id: string; + scheduled_at: string; + params: StatusParams; + media_attachments: Array<Attachment>; + }; +} diff --git a/packages/megalodon/src/entities/source.ts b/packages/megalodon/src/entities/source.ts new file mode 100644 index 0000000000..913b02fda7 --- /dev/null +++ b/packages/megalodon/src/entities/source.ts @@ -0,0 +1,10 @@ +/// <reference path="field.ts" /> +namespace Entity { + export type Source = { + privacy: string | null; + sensitive: boolean | null; + language: string | null; + note: string; + fields: Array<Field>; + }; +} diff --git a/packages/megalodon/src/entities/stats.ts b/packages/megalodon/src/entities/stats.ts new file mode 100644 index 0000000000..6471df039a --- /dev/null +++ b/packages/megalodon/src/entities/stats.ts @@ -0,0 +1,7 @@ +namespace Entity { + export type Stats = { + user_count: number; + status_count: number; + domain_count: number; + }; +} diff --git a/packages/megalodon/src/entities/status.ts b/packages/megalodon/src/entities/status.ts new file mode 100644 index 0000000000..f27f728b54 --- /dev/null +++ b/packages/megalodon/src/entities/status.ts @@ -0,0 +1,45 @@ +/// <reference path="account.ts" /> +/// <reference path="application.ts" /> +/// <reference path="mention.ts" /> +/// <reference path="tag.ts" /> +/// <reference path="attachment.ts" /> +/// <reference path="emoji.ts" /> +/// <reference path="card.ts" /> +/// <reference path="poll.ts" /> +/// <reference path="reaction.ts" /> + +namespace Entity { + export type Status = { + id: string; + uri: string; + url: string; + account: Account; + in_reply_to_id: string | null; + in_reply_to_account_id: string | null; + reblog: Status | null; + content: string; + plain_content: string | null; + created_at: string; + emojis: Emoji[]; + replies_count: number; + reblogs_count: number; + favourites_count: number; + reblogged: boolean | null; + favourited: boolean | null; + muted: boolean | null; + sensitive: boolean; + spoiler_text: string; + visibility: "public" | "unlisted" | "private" | "direct"; + media_attachments: Array<Attachment>; + mentions: Array<Mention>; + tags: Array<Tag>; + card: Card | null; + poll: Poll | null; + application: Application | null; + language: string | null; + pinned: boolean | null; + reactions: Array<Reaction>; + quote: Status | null; + bookmarked: boolean; + }; +} diff --git a/packages/megalodon/src/entities/status_edit.ts b/packages/megalodon/src/entities/status_edit.ts new file mode 100644 index 0000000000..4040b4ff90 --- /dev/null +++ b/packages/megalodon/src/entities/status_edit.ts @@ -0,0 +1,23 @@ +/// <reference path="account.ts" /> +/// <reference path="application.ts" /> +/// <reference path="mention.ts" /> +/// <reference path="tag.ts" /> +/// <reference path="attachment.ts" /> +/// <reference path="emoji.ts" /> +/// <reference path="card.ts" /> +/// <reference path="poll.ts" /> +/// <reference path="reaction.ts" /> + +namespace Entity { + export type StatusEdit = { + account: Account; + content: string; + plain_content: string | null; + created_at: string; + emojis: Emoji[]; + sensitive: boolean; + spoiler_text: string; + media_attachments: Array<Attachment>; + poll: Poll | null; + }; +} diff --git a/packages/megalodon/src/entities/status_params.ts b/packages/megalodon/src/entities/status_params.ts new file mode 100644 index 0000000000..18908c01c1 --- /dev/null +++ b/packages/megalodon/src/entities/status_params.ts @@ -0,0 +1,12 @@ +namespace Entity { + export type StatusParams = { + text: string; + in_reply_to_id: string | null; + media_ids: Array<string> | null; + sensitive: boolean | null; + spoiler_text: string | null; + visibility: "public" | "unlisted" | "private" | "direct"; + scheduled_at: string | null; + application_id: string; + }; +} diff --git a/packages/megalodon/src/entities/tag.ts b/packages/megalodon/src/entities/tag.ts new file mode 100644 index 0000000000..ccc88aece6 --- /dev/null +++ b/packages/megalodon/src/entities/tag.ts @@ -0,0 +1,10 @@ +/// <reference path="history.ts" /> + +namespace Entity { + export type Tag = { + name: string; + url: string; + history: Array<History> | null; + following?: boolean; + }; +} diff --git a/packages/megalodon/src/entities/token.ts b/packages/megalodon/src/entities/token.ts new file mode 100644 index 0000000000..1583edafb1 --- /dev/null +++ b/packages/megalodon/src/entities/token.ts @@ -0,0 +1,8 @@ +namespace Entity { + export type Token = { + access_token: string; + token_type: string; + scope: string; + created_at: number; + }; +} diff --git a/packages/megalodon/src/entities/urls.ts b/packages/megalodon/src/entities/urls.ts new file mode 100644 index 0000000000..1ee9ed67c9 --- /dev/null +++ b/packages/megalodon/src/entities/urls.ts @@ -0,0 +1,5 @@ +namespace Entity { + export type URLs = { + streaming_api: string; + }; +} diff --git a/packages/megalodon/src/entity.ts b/packages/megalodon/src/entity.ts new file mode 100644 index 0000000000..b73d2b359b --- /dev/null +++ b/packages/megalodon/src/entity.ts @@ -0,0 +1,38 @@ +/// <reference path="./entities/account.ts" /> +/// <reference path="./entities/activity.ts" /> +/// <reference path="./entities/announcement.ts" /> +/// <reference path="./entities/application.ts" /> +/// <reference path="./entities/async_attachment.ts" /> +/// <reference path="./entities/attachment.ts" /> +/// <reference path="./entities/card.ts" /> +/// <reference path="./entities/context.ts" /> +/// <reference path="./entities/conversation.ts" /> +/// <reference path="./entities/emoji.ts" /> +/// <reference path="./entities/featured_tag.ts" /> +/// <reference path="./entities/field.ts" /> +/// <reference path="./entities/filter.ts" /> +/// <reference path="./entities/history.ts" /> +/// <reference path="./entities/identity_proof.ts" /> +/// <reference path="./entities/instance.ts" /> +/// <reference path="./entities/list.ts" /> +/// <reference path="./entities/marker.ts" /> +/// <reference path="./entities/mention.ts" /> +/// <reference path="./entities/notification.ts" /> +/// <reference path="./entities/poll.ts" /> +/// <reference path="./entities/poll_option.ts" /> +/// <reference path="./entities/preferences.ts" /> +/// <reference path="./entities/push_subscription.ts" /> +/// <reference path="./entities/reaction.ts" /> +/// <reference path="./entities/relationship.ts" /> +/// <reference path="./entities/report.ts" /> +/// <reference path="./entities/results.ts" /> +/// <reference path="./entities/scheduled_status.ts" /> +/// <reference path="./entities/source.ts" /> +/// <reference path="./entities/stats.ts" /> +/// <reference path="./entities/status.ts" /> +/// <reference path="./entities/status_params.ts" /> +/// <reference path="./entities/tag.ts" /> +/// <reference path="./entities/token.ts" /> +/// <reference path="./entities/urls.ts" /> + +export default Entity; diff --git a/packages/megalodon/src/filter_context.ts b/packages/megalodon/src/filter_context.ts new file mode 100644 index 0000000000..4c83cb15f2 --- /dev/null +++ b/packages/megalodon/src/filter_context.ts @@ -0,0 +1,11 @@ +import Entity from "./entity"; + +namespace FilterContext { + export const Home: Entity.FilterContext = "home"; + export const Notifications: Entity.FilterContext = "notifications"; + export const Public: Entity.FilterContext = "public"; + export const Thread: Entity.FilterContext = "thread"; + export const Account: Entity.FilterContext = "account"; +} + +export default FilterContext; diff --git a/packages/megalodon/src/index.ts b/packages/megalodon/src/index.ts new file mode 100644 index 0000000000..758d3a46ad --- /dev/null +++ b/packages/megalodon/src/index.ts @@ -0,0 +1,32 @@ +import Response from "./response"; +import OAuth from "./oauth"; +import { isCancel, RequestCanceledError } from "./cancel"; +import { ProxyConfig } from "./proxy_config"; +import generator, { + detector, + MegalodonInterface, + WebSocketInterface, +} from "./megalodon"; +import Misskey from "./misskey"; +import Entity from "./entity"; +import NotificationType from "./notification"; +import FilterContext from "./filter_context"; +import Converter from "./converter"; + +export { + Response, + OAuth, + RequestCanceledError, + isCancel, + ProxyConfig, + detector, + MegalodonInterface, + WebSocketInterface, + NotificationType, + FilterContext, + Misskey, + Entity, + Converter, +}; + +export default generator; diff --git a/packages/megalodon/src/megalodon.ts b/packages/megalodon/src/megalodon.ts new file mode 100644 index 0000000000..33a5790f67 --- /dev/null +++ b/packages/megalodon/src/megalodon.ts @@ -0,0 +1,1532 @@ +import Response from "./response"; +import OAuth from "./oauth"; +import proxyAgent, { ProxyConfig } from "./proxy_config"; +import Entity from "./entity"; +import axios, { AxiosRequestConfig } from "axios"; +import Misskey from "./misskey"; +import { DEFAULT_UA } from "./default"; + +export interface WebSocketInterface { + start(): void; + stop(): void; + // EventEmitter + on(event: string | symbol, listener: (...args: any[]) => void): this; + once(event: string | symbol, listener: (...args: any[]) => void): this; + removeListener( + event: string | symbol, + listener: (...args: any[]) => void, + ): this; + removeAllListeners(event?: string | symbol): this; +} + +export interface MegalodonInterface { + /** + * Cancel all requests in this instance. + * + * @return void + */ + cancel(): void; + + /** + * First, call createApp to get client_id and client_secret. + * Next, call generateAuthUrl to get authorization url. + * @param client_name Form Data, which is sent to /api/v1/apps + * @param options Form Data, which is sent to /api/v1/apps. and properties should be **snake_case** + */ + registerApp( + client_name: string, + options: Partial<{ + scopes: Array<string>; + redirect_uris: string; + website: string; + }>, + ): Promise<OAuth.AppData>; + + /** + * Call /api/v1/apps + * + * Create an application. + * @param client_name your application's name + * @param options Form Data + */ + createApp( + client_name: string, + options: Partial<{ + scopes: Array<string>; + redirect_uris: string; + website: string; + }>, + ): Promise<OAuth.AppData>; + + // ====================================== + // apps + // ====================================== + /** + * GET /api/v1/apps/verify_credentials + * + * @return An Application + */ + verifyAppCredentials(): Promise<Response<Entity.Application>>; + + // ====================================== + // apps/oauth + // ====================================== + + /** + * POST /oauth/token + * + * Fetch OAuth access token. + * Get an access token based client_id and client_secret and authorization code. + * @param client_id will be generated by #createApp or #registerApp + * @param client_secret will be generated by #createApp or #registerApp + * @param code will be generated by the link of #generateAuthUrl or #registerApp + * @param redirect_uri must be the same uri as the time when you register your OAuth application + */ + fetchAccessToken( + client_id: string | null, + client_secret: string, + code: string, + redirect_uri?: string, + ): Promise<OAuth.TokenData>; + + /** + * POST /oauth/token + * + * Refresh OAuth access token. + * Send refresh token and get new access token. + * @param client_id will be generated by #createApp or #registerApp + * @param client_secret will be generated by #createApp or #registerApp + * @param refresh_token will be get #fetchAccessToken + */ + refreshToken( + client_id: string, + client_secret: string, + refresh_token: string, + ): Promise<OAuth.TokenData>; + + /** + * POST /oauth/revoke + * + * Revoke an OAuth token. + * @param client_id will be generated by #createApp or #registerApp + * @param client_secret will be generated by #createApp or #registerApp + * @param token will be get #fetchAccessToken + */ + revokeToken( + client_id: string, + client_secret: string, + token: string, + ): Promise<Response<{}>>; + + // ====================================== + // accounts + // ====================================== + /** + * POST /api/v1/accounts + * + * @param username Username for the account. + * @param email Email for the account. + * @param password Password for the account. + * @param agreement Whether the user agrees to the local rules, terms, and policies. + * @param locale The language of the confirmation email that will be sent + * @param reason Text that will be reviewed by moderators if registrations require manual approval. + * @return An account token. + */ + registerAccount( + username: string, + email: string, + password: string, + agreement: boolean, + locale: string, + reason?: string | null, + ): Promise<Response<Entity.Token>>; + /** + * GET /api/v1/accounts/verify_credentials + * + * @return Account. + */ + verifyAccountCredentials(): Promise<Response<Entity.Account>>; + /** + * PATCH /api/v1/accounts/update_credentials + * + * @return An account. + */ + updateCredentials(options?: { + discoverable?: boolean; + bot?: boolean; + display_name?: string; + note?: string; + avatar?: string; + header?: string; + locked?: boolean; + source?: { + privacy?: string; + sensitive?: boolean; + language?: string; + }; + fields_attributes?: Array<{ name: string; value: string }>; + }): Promise<Response<Entity.Account>>; + /** + * GET /api/v1/accounts/:id + * + * @param id The account ID. + * @return An account. + */ + getAccount(id: string): Promise<Response<Entity.Account>>; + /** + * GET /api/v1/accounts/:id/statuses + * + * @param id The account ID. + + * @param options.limit Max number of results to return. Defaults to 20. + * @param options.max_id Return results older than ID. + * @param options.since_id Return results newer than ID but starting with most recent. + * @param options.min_id Return results newer than ID. + * @param options.pinned Return statuses which include pinned statuses. + * @param options.exclude_replies Return statuses which exclude replies. + * @param options.exclude_reblogs Return statuses which exclude reblogs. + * @param options.only_media Show only statuses with media attached? Defaults to false. + * @return Account's statuses. + */ + getAccountStatuses( + id: string, + options?: { + limit?: number; + max_id?: string; + since_id?: string; + min_id?: string; + pinned?: boolean; + exclude_replies?: boolean; + exclude_reblogs?: boolean; + only_media?: boolean; + }, + ): Promise<Response<Array<Entity.Status>>>; + /** + * GET /api/v1/pleroma/accounts/:id/favourites + * + * @param id Target account ID. + * @param options.limit Max number of results to return. + * @param options.max_id Return results order than ID. + * @param options.since_id Return results newer than ID. + * @return Array of statuses. + */ + getAccountFavourites( + id: string, + options?: { + limit?: number; + max_id?: string; + since_id?: string; + }, + ): Promise<Response<Array<Entity.Status>>>; + /** + * POST /api/v1/pleroma/accounts/:id/subscribe + * + * @param id Target account ID. + * @return Relationship. + */ + subscribeAccount(id: string): Promise<Response<Entity.Relationship>>; + /** + * POST /api/v1/pleroma/accounts/:id/unsubscribe + * + * @param id Target account ID. + * @return Relationship. + */ + unsubscribeAccount(id: string): Promise<Response<Entity.Relationship>>; + /** + * GET /api/v1/accounts/:id/followers + * + * @param id The account ID. + * @param options.limit Max number of results to return. Defaults to 40. + * @param options.max_id Return results older than ID. + * @param options.since_id Return results newer than ID. + * @return The array of accounts. + */ + getAccountFollowers( + id: string, + options?: { + limit?: number; + max_id?: string; + since_id?: string; + get_all?: boolean; + sleep_ms?: number; + }, + ): Promise<Response<Array<Entity.Account>>>; + + /** + * GET /api/v1/accounts/:id/featured_tags + * + * @param id The account ID. + * @return The array of accounts. + */ + getAccountFeaturedTags( + id: string, + ): Promise<Response<Array<Entity.FeaturedTag>>>; + + /** + * GET /api/v1/accounts/:id/following + * + * @param id The account ID. + * @param options.limit Max number of results to return. Defaults to 40. + * @param options.max_id Return results older than ID. + * @param options.since_id Return results newer than ID. + * @return The array of accounts. + */ + getAccountFollowing( + id: string, + options?: { + limit?: number; + max_id?: string; + since_id?: string; + get_all?: boolean; + sleep_ms?: number; + }, + ): Promise<Response<Array<Entity.Account>>>; + /** + * GET /api/v1/accounts/:id/lists + * + * @param id The account ID. + * @return The array of lists. + */ + getAccountLists(id: string): Promise<Response<Array<Entity.List>>>; + /** + * GET /api/v1/accounts/:id/identity_proofs + * + * @param id The account ID. + * @return Array of IdentityProof + */ + getIdentityProof(id: string): Promise<Response<Array<Entity.IdentityProof>>>; + /** + * POST /api/v1/accounts/:id/follow + * + * @param id The account ID. + * @param reblog Receive this account's reblogs in home timeline. + * @return Relationship + */ + followAccount( + id: string, + options?: { + reblog?: boolean; + }, + ): Promise<Response<Entity.Relationship>>; + /** + * POST /api/v1/accounts/:id/unfollow + * + * @param id The account ID. + * @return Relationship + */ + unfollowAccount(id: string): Promise<Response<Entity.Relationship>>; + /** + * POST /api/v1/accounts/:id/block + * + * @param id The account ID. + * @return Relationship + */ + blockAccount(id: string): Promise<Response<Entity.Relationship>>; + /** + * POST /api/v1/accounts/:id/unblock + * + * @param id The account ID. + * @return RElationship + */ + unblockAccount(id: string): Promise<Response<Entity.Relationship>>; + /** + * POST /api/v1/accounts/:id/mute + * + * @param id The account ID. + * @param notifications Mute notifications in addition to statuses. + * @return Relationship + */ + muteAccount( + id: string, + notifications: boolean, + ): Promise<Response<Entity.Relationship>>; + /** + * POST /api/v1/accounts/:id/unmute + * + * @param id The account ID. + * @return Relationship + */ + unmuteAccount(id: string): Promise<Response<Entity.Relationship>>; + /** + * POST /api/v1/accounts/:id/pin + * + * @param id The account ID. + * @return Relationship + */ + pinAccount(id: string): Promise<Response<Entity.Relationship>>; + /** + * POST /api/v1/accounts/:id/unpin + * + * @param id The account ID. + * @return Relationship + */ + unpinAccount(id: string): Promise<Response<Entity.Relationship>>; + /** + * GET /api/v1/accounts/relationships + * + * @param id The account ID. + * @return Relationship + */ + getRelationship(id: string): Promise<Response<Entity.Relationship>>; + /** + * Get multiple relationships in one method + * + * @param ids Array of account IDs. + * @return Array of Relationship. + */ + getRelationships( + ids: Array<string>, + ): Promise<Response<Array<Entity.Relationship>>>; + /** + * GET /api/v1/accounts/search + * + * @param q Search query. + * @param options.limit Max number of results to return. Defaults to 40. + * @param options.max_id Return results older than ID. + * @param options.since_id Return results newer than ID. + * @return The array of accounts. + */ + searchAccount( + q: string, + options?: { + following?: boolean; + resolve?: boolean; + limit?: number; + max_id?: string; + since_id?: string; + }, + ): Promise<Response<Array<Entity.Account>>>; + // ====================================== + // accounts/bookmarks + // ====================================== + /** + * GET /api/v1/bookmarks + * + * @param options.limit Max number of results to return. Defaults to 40. + * @param options.max_id Return results older than ID. + * @param options.since_id Return results newer than ID. + * @param options.min_id Return results immediately newer than ID. + * @return Array of statuses. + */ + getBookmarks(options?: { + limit?: number; + max_id?: string; + since_id?: string; + min_id?: string; + }): Promise<Response<Array<Entity.Status>>>; + // ====================================== + // accounts/favourites + // ====================================== + /** + * GET /api/v1/favourites + * + * @param options.limit Max number of results to return. Defaults to 40. + * @param options.max_id Return results older than ID. + * @param options.min_id Return results immediately newer than ID. + * @return Array of statuses. + */ + getFavourites(options?: { + limit?: number; + max_id?: string; + min_id?: string; + }): Promise<Response<Array<Entity.Status>>>; + // ====================================== + // accounts/mutes + // ====================================== + /** + * GET /api/v1/mutes + * + * @param options.limit Max number of results to return. Defaults to 40. + * @param options.max_id Return results older than ID. + * @param options.min_id Return results immediately newer than ID. + * @return Array of accounts. + */ + getMutes(options?: { + limit?: number; + max_id?: string; + min_id?: string; + }): Promise<Response<Array<Entity.Account>>>; + // ====================================== + // accounts/blocks + // ====================================== + /** + * GET /api/v1/blocks + * + * @param options.limit Max number of results to return. Defaults to 40. + * @param options.max_id Return results older than ID. + * @param options.min_id Return results immediately newer than ID. + * @return Array of accounts. + */ + getBlocks(options?: { + limit?: number; + max_id?: string; + min_id?: string; + }): Promise<Response<Array<Entity.Account>>>; + // ====================================== + // accounts/domain_blocks + // ====================================== + /** + * GET /api/v1/domain_blocks + * + * @param options.limit Max number of results to return. Defaults to 40. + * @param options.max_id Return results older than ID. + * @param options.min_id Return results immediately newer than ID. + * @return Array of domain name. + */ + getDomainBlocks(options?: { + limit?: number; + max_id?: string; + min_id?: string; + }): Promise<Response<Array<string>>>; + /** + * POST/api/v1/domain_blocks + * + * @param domain Domain to block. + */ + blockDomain(domain: string): Promise<Response<{}>>; + /** + * DELETE /api/v1/domain_blocks + * + * @param domain Domain to unblock + */ + unblockDomain(domain: string): Promise<Response<{}>>; + // ====================================== + // accounts/filters + // ====================================== + /** + * GET /api/v1/filters + * + * @return Array of filters. + */ + getFilters(): Promise<Response<Array<Entity.Filter>>>; + /** + * GET /api/v1/filters/:id + * + * @param id The filter ID. + * @return Filter. + */ + getFilter(id: string): Promise<Response<Entity.Filter>>; + /** + * POST /api/v1/filters + * + * @param phrase Text to be filtered. + * @param context Array of enumerable strings home, notifications, public, thread, account. At least one context must be specified. + * @param options.irreversible Should the server irreversibly drop matching entities from home and notifications? + * @param options.whole_word Consider word boundaries? + * @param options.expires_in ISO 8601 Datetime for when the filter expires. + * @return Filter + */ + createFilter( + phrase: string, + context: Array<Entity.FilterContext>, + options?: { + irreversible?: boolean; + whole_word?: boolean; + expires_in?: string; + }, + ): Promise<Response<Entity.Filter>>; + /** + * PUT /api/v1/filters/:id + * + * @param id The filter ID. + * @param phrase Text to be filtered. + * @param context Array of enumerable strings home, notifications, public, thread, account. At least one context must be specified. + * @param options.irreversible Should the server irreversibly drop matching entities from home and notifications? + * @param options.whole_word Consider word boundaries? + * @param options.expires_in ISO 8601 Datetime for when the filter expires. + * @return Filter + */ + updateFilter( + id: string, + phrase: string, + context: Array<Entity.FilterContext>, + options?: { + irreversible?: boolean; + whole_word?: boolean; + expires_in?: string; + }, + ): Promise<Response<Entity.Filter>>; + /** + * DELETE /api/v1/filters/:id + * + * @param id The filter ID. + * @return Removed filter. + */ + deleteFilter(id: string): Promise<Response<Entity.Filter>>; + // ====================================== + // accounts/reports + // ====================================== + /** + * POST /api/v1/reports + * + * @param account_id Target account ID. + * @param comment Reason of the report. + * @param options.status_ids Array of Statuses ids to attach to the report. + * @param options.forward If the account is remote, should the report be forwarded to the remote admin? + * @return Report + */ + report( + account_id: string, + comment: string, + options?: { status_ids?: Array<string>; forward?: boolean }, + ): Promise<Response<Entity.Report>>; + // ====================================== + // accounts/follow_requests + // ====================================== + /** + * GET /api/v1/follow_requests + * + * @param limit Maximum number of results. + * @return Array of account. + */ + getFollowRequests(limit?: number): Promise<Response<Array<Entity.Account>>>; + /** + * POST /api/v1/follow_requests/:id/authorize + * + * @param id Target account ID. + * @return Relationship. + */ + acceptFollowRequest(id: string): Promise<Response<Entity.Relationship>>; + /** + * POST /api/v1/follow_requests/:id/reject + * + * @param id Target account ID. + * @return Relationship. + */ + rejectFollowRequest(id: string): Promise<Response<Entity.Relationship>>; + // ====================================== + // accounts/endorsements + // ====================================== + /** + * GET /api/v1/endorsements + * + * @param options.limit Max number of results to return. Defaults to 40. + * @param options.max_id Return results older than ID. + * @param options.since_id Return results newer than ID. + * @return Array of accounts. + */ + getEndorsements(options?: { + limit?: number; + max_id?: string; + since_id?: string; + }): Promise<Response<Array<Entity.Account>>>; + // ====================================== + // accounts/featured_tags + // ====================================== + /** + * GET /api/v1/featured_tags + * + * @return Array of featured tag. + */ + getFeaturedTags(): Promise<Response<Array<Entity.FeaturedTag>>>; + /** + * POST /api/v1/featured_tags + * + * @param name Target hashtag name. + * @return FeaturedTag. + */ + createFeaturedTag(name: string): Promise<Response<Entity.FeaturedTag>>; + /** + * DELETE /api/v1/featured_tags/:id + * + * @param id Target featured tag id. + * @return Empty + */ + deleteFeaturedTag(id: string): Promise<Response<{}>>; + /** + * GET /api/v1/featured_tags/suggestions + * + * @return Array of tag. + */ + getSuggestedTags(): Promise<Response<Array<Entity.Tag>>>; + // ====================================== + // accounts/preferences + // ====================================== + /** + * GET /api/v1/preferences + * + * @return Preferences. + */ + getPreferences(): Promise<Response<Entity.Preferences>>; + // ====================================== + // accounts/suggestions + // ====================================== + /** + * GET /api/v1/suggestions + * + * @param limit Maximum number of results. + * @return Array of accounts. + */ + getSuggestions(limit?: number): Promise<Response<Array<Entity.Account>>>; + // ====================================== + // accounts/tags + // ====================================== + getFollowedTags(): Promise<Response<Array<Entity.Tag>>>; + /** + * GET /api/v1/tags/:id + * + * @param id Target hashtag id. + * @return Tag + */ + getTag(id: string): Promise<Response<Entity.Tag>>; + /** + * POST /api/v1/tags/:id/follow + * + * @param id Target hashtag id. + * @return Tag + */ + followTag(id: string): Promise<Response<Entity.Tag>>; + /** + * POST /api/v1/tags/:id/unfollow + * + * @param id Target hashtag id. + * @return Tag + */ + unfollowTag(id: string): Promise<Response<Entity.Tag>>; + // ====================================== + // statuses + // ====================================== + /** + * POST /api/v1/statuses + * + * @param status Text content of status. + * @param options.media_ids Array of Attachment ids. + * @param options.poll Poll object. + * @param options.in_reply_to_id ID of the status being replied to, if status is a reply. + * @param options.sensitive Mark status and attached media as sensitive? + * @param options.spoiler_text Text to be shown as a warning or subject before the actual content. + * @param options.visibility Visibility of the posted status. + * @param options.scheduled_at ISO 8601 Datetime at which to schedule a status. + * @param options.language ISO 639 language code for this status. + * @param options.quote_id ID of the status being quoted to, if status is a quote. + * @return Status + */ + postStatus( + status: string, + options?: { + media_ids?: Array<string>; + poll?: { + options: Array<string>; + expires_in: number; + multiple?: boolean; + hide_totals?: boolean; + }; + in_reply_to_id?: string; + sensitive?: boolean; + spoiler_text?: string; + visibility?: "public" | "unlisted" | "private" | "direct"; + scheduled_at?: string; + language?: string; + quote_id?: string; + }, + ): Promise<Response<Entity.Status>>; + /** + * GET /api/v1/statuses/:id + * + * @param id The target status id. + * @return Status + */ + getStatus(id: string): Promise<Response<Entity.Status>>; + /** + PUT /api/v1/statuses/:id + * + * @param id The target status id. + * @return Status + */ + editStatus( + id: string, + options: { + status?: string; + spoiler_text?: string; + sensitive?: boolean; + media_ids?: Array<string>; + poll?: { + options?: Array<string>; + expires_in?: number; + multiple?: boolean; + hide_totals?: boolean; + }; + }, + ): Promise<Response<Entity.Status>>; + /** + * DELETE /api/v1/statuses/:id + * + * @param id The target status id. + * @return Status + */ + deleteStatus(id: string): Promise<Response<{}>>; + /** + * GET /api/v1/statuses/:id/context + * + * Get parent and child statuses. + * @param id The target status id. + * @return Context + */ + getStatusContext( + id: string, + options?: { limit?: number; max_id?: string; since_id?: string }, + ): Promise<Response<Entity.Context>>; + /** + * GET /api/v1/statuses/:id/history + * + * Get status edit history. + * @param id The target status id. + * @return StatusEdit + */ + getStatusHistory(id: string): Promise<Response<Array<Entity.StatusEdit>>>; + /** + * GET /api/v1/statuses/:id/reblogged_by + * + * @param id The target status id. + * @return Array of accounts. + */ + getStatusRebloggedBy(id: string): Promise<Response<Array<Entity.Account>>>; + /** + * GET /api/v1/statuses/:id/favourited_by + * + * @param id The target status id. + * @return Array of accounts. + */ + getStatusFavouritedBy(id: string): Promise<Response<Array<Entity.Account>>>; + /** + * POST /api/v1/statuses/:id/favourite + * + * @param id The target status id. + * @return Status. + */ + favouriteStatus(id: string): Promise<Response<Entity.Status>>; + /** + * POST /api/v1/statuses/:id/unfavourite + * + * @param id The target status id. + * @return Status. + */ + unfavouriteStatus(id: string): Promise<Response<Entity.Status>>; + /** + * POST /api/v1/statuses/:id/reblog + * + * @param id The target status id. + * @return Status. + */ + reblogStatus(id: string): Promise<Response<Entity.Status>>; + /** + * POST /api/v1/statuses/:id/unreblog + * + * @param id The target status id. + * @return Status. + */ + unreblogStatus(id: string): Promise<Response<Entity.Status>>; + /** + * POST /api/v1/statuses/:id/bookmark + * + * @param id The target status id. + * @return Status. + */ + bookmarkStatus(id: string): Promise<Response<Entity.Status>>; + /** + * POST /api/v1/statuses/:id/unbookmark + * + * @param id The target status id. + * @return Status. + */ + unbookmarkStatus(id: string): Promise<Response<Entity.Status>>; + /** + * POST /api/v1/statuses/:id/mute + * + * @param id The target status id. + * @return Status + */ + muteStatus(id: string): Promise<Response<Entity.Status>>; + /** + * POST /api/v1/statuses/:id/unmute + * + * @param id The target status id. + * @return Status + */ + unmuteStatus(id: string): Promise<Response<Entity.Status>>; + /** + * POST /api/v1/statuses/:id/pin + * @param id The target status id. + * @return Status + */ + pinStatus(id: string): Promise<Response<Entity.Status>>; + /** + * POST /api/v1/statuses/:id/unpin + * + * @param id The target status id. + * @return Status + */ + unpinStatus(id: string): Promise<Response<Entity.Status>>; + /** + * POST /api/v1/statuses/:id/react/:name + * @param id The target status id. + * @param name The name of the emoji reaction to add. + * @return Status + */ + reactStatus(id: string, name: string): Promise<Response<Entity.Status>>; + /** + * POST /api/v1/statuses/:id/unreact/:name + * + * @param id The target status id. + * @param name The name of the emoji reaction to remove. + * @return Status + */ + unreactStatus(id: string, name: string): Promise<Response<Entity.Status>>; + // ====================================== + // statuses/media + // ====================================== + /** + * POST /api/v2/media + * + * @param file The file to be attached, using multipart form data. + * @param options.description A plain-text description of the media. + * @param options.focus Two floating points (x,y), comma-delimited, ranging from -1.0 to 1.0. + * @return Attachment + */ + uploadMedia( + file: any, + options?: { description?: string; focus?: string }, + ): Promise<Response<Entity.Attachment | Entity.AsyncAttachment>>; + /** + * GET /api/v1/media/:id + * + * @param id Target media ID. + * @return Attachment + */ + getMedia(id: string): Promise<Response<Entity.Attachment>>; + /** + * PUT /api/v1/media/:id + * + * @param id Target media ID. + * @param options.file The file to be attached, using multipart form data. + * @param options.description A plain-text description of the media. + * @param options.focus Two floating points (x,y), comma-delimited, ranging from -1.0 to 1.0. + * @param options.is_sensitive Whether the media is sensitive. + * @return Attachment + */ + updateMedia( + id: string, + options?: { + file?: any; + description?: string; + focus?: string; + is_sensitive?: boolean; + }, + ): Promise<Response<Entity.Attachment>>; + // ====================================== + // statuses/polls + // ====================================== + /** + * GET /api/v1/polls/:id + * + * @param id Target poll ID. + * @return Poll + */ + getPoll(id: string): Promise<Response<Entity.Poll>>; + /** + * POST /api/v1/polls/:id/votes + * + * @param id Target poll ID. + * @param choices Array of own votes containing index for each option (starting from 0). + * @return Poll + */ + votePoll(id: string, choices: Array<number>): Promise<Response<Entity.Poll>>; + // ====================================== + // statuses/scheduled_statuses + // ====================================== + /** + * GET /api/v1/scheduled_statuses + * + * @param options.limit Max number of results to return. Defaults to 20. + * @param options.max_id Return results older than ID. + * @param options.since_id Return results newer than ID. + * @param options.min_id Return results immediately newer than ID. + * @return Array of scheduled statuses. + */ + getScheduledStatuses(options?: { + limit?: number; + max_id?: string; + since_id?: string; + min_id?: string; + }): Promise<Response<Array<Entity.ScheduledStatus>>>; + /** + * GET /api/v1/scheduled_statuses/:id + * + * @param id Target status ID. + * @return ScheduledStatus. + */ + getScheduledStatus(id: string): Promise<Response<Entity.ScheduledStatus>>; + /** + * PUT /api/v1/scheduled_statuses/:id + * + * @param id Target scheduled status ID. + * @param scheduled_at ISO 8601 Datetime at which the status will be published. + * @return ScheduledStatus. + */ + scheduleStatus( + id: string, + scheduled_at?: string | null, + ): Promise<Response<Entity.ScheduledStatus>>; + /** + * DELETE /api/v1/scheduled_statuses/:id + * + * @param id Target scheduled status ID. + */ + cancelScheduledStatus(id: string): Promise<Response<{}>>; + // ====================================== + // timelines + // ====================================== + /** + * GET /api/v1/timelines/public + * + * @param options.only_media Show only statuses with media attached? Defaults to false. + * @param options.limit Max number of results to return. Defaults to 20. + * @param options.max_id Return results older than ID. + * @param options.since_id Return results newer than ID. + * @param options.min_id Return results immediately newer than ID. + * @return Array of statuses. + */ + getPublicTimeline(options?: { + only_media?: boolean; + limit?: number; + max_id?: string; + since_id?: string; + min_id?: string; + }): Promise<Response<Array<Entity.Status>>>; + /** + * GET /api/v1/timelines/public + * + * @param options.only_media Show only statuses with media attached? Defaults to false. + * @param options.limit Max number of results to return. Defaults to 20. + * @param options.max_id Return results older than ID. + * @param options.since_id Return results newer than ID. + * @param options.min_id Return results immediately newer than ID. + * @return Array of statuses. + */ + getLocalTimeline(options?: { + only_media?: boolean; + limit?: number; + max_id?: string; + since_id?: string; + min_id?: string; + }): Promise<Response<Array<Entity.Status>>>; + /** + * GET /api/v1/timelines/tag/:hashtag + * + * @param hashtag Content of a #hashtag, not including # symbol. + * @param options.local Show only local statuses? Defaults to false. + * @param options.only_media Show only statuses with media attached? Defaults to false. + * @param options.limit Max number of results to return. Defaults to 20. + * @param options.max_id Return results older than ID. + * @param options.since_id Return results newer than ID. + * @param options.min_id Return results immediately newer than ID. + * @return Array of statuses. + */ + getTagTimeline( + hashtag: string, + options?: { + local?: boolean; + only_media?: boolean; + limit?: number; + max_id?: string; + since_id?: string; + min_id?: string; + }, + ): Promise<Response<Array<Entity.Status>>>; + /** + * GET /api/v1/timelines/home + * + * @param options.local Show only local statuses? Defaults to false. + * @param options.limit Max number of results to return. Defaults to 20. + * @param options.max_id Return results older than ID. + * @param options.since_id Return results newer than ID. + * @param options.min_id Return results immediately newer than ID. + * @return Array of statuses. + */ + getHomeTimeline(options?: { + local?: boolean; + limit?: number; + max_id?: string; + since_id?: string; + min_id?: string; + }): Promise<Response<Array<Entity.Status>>>; + /** + * GET /api/v1/timelines/list/:list_id + * + * @param list_id Local ID of the list in the database. + * @param options.limit Max number of results to return. Defaults to 20. + * @param options.max_id Return results older than ID. + * @param options.since_id Return results newer than ID. + * @param options.min_id Return results immediately newer than ID. + * @return Array of statuses. + */ + getListTimeline( + list_id: string, + options?: { + limit?: number; + max_id?: string; + since_id?: string; + min_id?: string; + }, + ): Promise<Response<Array<Entity.Status>>>; + // ====================================== + // timelines/conversations + // ====================================== + /** + * GET /api/v1/conversations + * + * @param options.limit Max number of results to return. Defaults to 20. + * @param options.max_id Return results older than ID. + * @param options.since_id Return results newer than ID. + * @param options.min_id Return results immediately newer than ID. + * @return Array of statuses. + */ + getConversationTimeline(options?: { + limit?: number; + max_id?: string; + since_id?: string; + min_id?: string; + }): Promise<Response<Array<Entity.Conversation>>>; + /** + * DELETE /api/v1/conversations/:id + * + * @param id Target conversation ID. + */ + deleteConversation(id: string): Promise<Response<{}>>; + /** + * POST /api/v1/conversations/:id/read + * + * @param id Target conversation ID. + * @return Conversation. + */ + readConversation(id: string): Promise<Response<Entity.Conversation>>; + // ====================================== + // timelines/lists + // ====================================== + /** + * GET /api/v1/lists + * + * @return Array of lists. + */ + getLists(): Promise<Response<Array<Entity.List>>>; + /** + * GET /api/v1/lists/:id + * + * @param id Target list ID. + * @return List. + */ + getList(id: string): Promise<Response<Entity.List>>; + /** + * POST /api/v1/lists + * + * @param title List name. + * @return List. + */ + createList(title: string): Promise<Response<Entity.List>>; + /** + * PUT /api/v1/lists/:id + * + * @param id Target list ID. + * @param title New list name. + * @return List. + */ + updateList(id: string, title: string): Promise<Response<Entity.List>>; + /** + * DELETE /api/v1/lists/:id + * + * @param id Target list ID. + */ + deleteList(id: string): Promise<Response<{}>>; + /** + * GET /api/v1/lists/:id/accounts + * + * @param id Target list ID. + * @param options.limit Max number of results to return. + * @param options.max_id Return results older than ID. + * @param options.since_id Return results newer than ID. + * @param options.min_id Return results immediately newer than ID. + * @return Array of accounts. + */ + getAccountsInList( + id: string, + options?: { + limit?: number; + max_id?: string; + since_id?: string; + }, + ): Promise<Response<Array<Entity.Account>>>; + /** + * POST /api/v1/lists/:id/accounts + * + * @param id Target list ID. + * @param account_ids Array of account IDs to add to the list. + */ + addAccountsToList( + id: string, + account_ids: Array<string>, + ): Promise<Response<{}>>; + /** + * DELETE /api/v1/lists/:id/accounts + * + * @param id Target list ID. + * @param account_ids Array of account IDs to add to the list. + */ + deleteAccountsFromList( + id: string, + account_ids: Array<string>, + ): Promise<Response<{}>>; + // ====================================== + // timelines/markers + // ====================================== + /** + * GET /api/v1/markers + * + * @param timelines Array of timeline names, String enum anyOf home, notifications. + * @return Marker or empty object. + */ + getMarkers(timeline: Array<string>): Promise<Response<Entity.Marker | {}>>; + /** + * POST /api/v1/markers + * + * @param options.home Marker position of the last read status ID in home timeline. + * @param options.notifications Marker position of the last read notification ID in notifications. + * @return Marker. + */ + saveMarkers(options?: { + home?: { last_read_id: string }; + notifications?: { last_read_id: string }; + }): Promise<Response<Entity.Marker>>; + // ====================================== + // notifications + // ====================================== + /** + * GET /api/v1/notifications + * + * @param options.limit Max number of results to return. Defaults to 20. + * @param options.max_id Return results older than ID. + * @param options.since_id Return results newer than ID. + * @param options.min_id Return results immediately newer than ID. + * @param options.exclude_types Array of types to exclude. + * @param options.account_id Return only notifications received from this account. + * @return Array of notifications. + */ + getNotifications(options?: { + limit?: number; + max_id?: string; + since_id?: string; + min_id?: string; + exclude_types?: Array<Entity.NotificationType>; + account_id?: string; + }): Promise<Response<Array<Entity.Notification>>>; + /** + * GET /api/v1/notifications/:id + * + * @param id Target notification ID. + * @return Notification. + */ + getNotification(id: string): Promise<Response<Entity.Notification>>; + /** + * POST /api/v1/notifications/clear + */ + dismissNotifications(): Promise<Response<{}>>; + /** + * POST /api/v1/notifications/:id/dismiss + * + * @param id Target notification ID. + */ + dismissNotification(id: string): Promise<Response<{}>>; + /** + * POST /api/v1/pleroma/notifcations/read + * + * @param id A single notification ID to read + * @param max_id Read all notifications up to this ID + * @return Array of notifications + */ + readNotifications(options: { id?: string; max_id?: string }): Promise< + Response<Entity.Notification | Array<Entity.Notification>> + >; + // ====================================== + // notifications/push + // ====================================== + /** + * POST /api/v1/push/subscription + * + * @param subscription[endpoint] Endpoint URL that is called when a notification event occurs. + * @param subscription[keys][p256dh] User agent public key. Base64 encoded string of public key of ECDH key using prime256v1 curve. + * @param subscription[keys] Auth secret. Base64 encoded string of 16 bytes of random data. + * @param data[alerts][follow] Receive follow notifications? + * @param data[alerts][favourite] Receive favourite notifications? + * @param data[alerts][reblog] Receive reblog notifictaions? + * @param data[alerts][mention] Receive mention notifications? + * @param data[alerts][poll] Receive poll notifications? + * @return PushSubscription. + */ + subscribePushNotification( + subscription: { endpoint: string; keys: { p256dh: string; auth: string } }, + data?: { + alerts: { + follow?: boolean; + favourite?: boolean; + reblog?: boolean; + mention?: boolean; + poll?: boolean; + }; + } | null, + ): Promise<Response<Entity.PushSubscription>>; + /** + * GET /api/v1/push/subscription + * + * @return PushSubscription. + */ + getPushSubscription(): Promise<Response<Entity.PushSubscription>>; + /** + * PUT /api/v1/push/subscription + * + * @param data[alerts][follow] Receive follow notifications? + * @param data[alerts][favourite] Receive favourite notifications? + * @param data[alerts][reblog] Receive reblog notifictaions? + * @param data[alerts][mention] Receive mention notifications? + * @param data[alerts][poll] Receive poll notifications? + * @return PushSubscription. + */ + updatePushSubscription( + data?: { + alerts: { + follow?: boolean; + favourite?: boolean; + reblog?: boolean; + mention?: boolean; + poll?: boolean; + }; + } | null, + ): Promise<Response<Entity.PushSubscription>>; + /** + * DELETE /api/v1/push/subscription + */ + deletePushSubscription(): Promise<Response<{}>>; + // ====================================== + // search + // ====================================== + /** + * GET /api/v2/search + * + * @param q The search query. + * @param type Enum of search target. + * @param options.limit Maximum number of results to load, per type. Defaults to 20. Max 40. + * @param options.max_id Return results older than this id. + * @param options.min_id Return results immediately newer than this id. + * @param options.resolve Attempt WebFinger lookup. Defaults to false. + * @param options.following Only include accounts that the user is following. Defaults to false. + * @param options.account_id If provided, statuses returned will be authored only by this account. + * @param options.exclude_unreviewed Filter out unreviewed tags? Defaults to false. + * @return Results. + */ + search( + q: string, + type: "accounts" | "hashtags" | "statuses", + options?: { + limit?: number; + max_id?: string; + min_id?: string; + resolve?: boolean; + offset?: number; + following?: boolean; + account_id?: string; + exclude_unreviewed?: boolean; + }, + ): Promise<Response<Entity.Results>>; + + // ====================================== + // instance + // ====================================== + /** + * GET /api/v1/instance + */ + getInstance(): Promise<Response<Entity.Instance>>; + + /** + * GET /api/v1/instance/peers + */ + getInstancePeers(): Promise<Response<Array<string>>>; + + /** + * GET /api/v1/instance/activity + */ + getInstanceActivity(): Promise<Response<Array<Entity.Activity>>>; + + // ====================================== + // instance/trends + // ====================================== + /** + * GET /api/v1/trends + * + * @param limit Maximum number of results to return. Defaults to 10. + */ + getInstanceTrends( + limit?: number | null, + ): Promise<Response<Array<Entity.Tag>>>; + + // ====================================== + // instance/directory + // ====================================== + /** + * GET /api/v1/directory + * + * @param options.limit How many accounts to load. Default 40. + * @param options.offset How many accounts to skip before returning results. Default 0. + * @param options.order Order of results. + * @param options.local Only return local accounts. + * @return Array of accounts. + */ + getInstanceDirectory(options?: { + limit?: number; + offset?: number; + order?: "active" | "new"; + local?: boolean; + }): Promise<Response<Array<Entity.Account>>>; + + // ====================================== + // instance/custom_emojis + // ====================================== + /** + * GET /api/v1/custom_emojis + * + * @return Array of emojis. + */ + getInstanceCustomEmojis(): Promise<Response<Array<Entity.Emoji>>>; + + // ====================================== + // instance/announcements + // ====================================== + /** + * GET /api/v1/announcements + * + * @param with_dismissed Include announcements dismissed by the user. Defaults to false. + * @return Array of announcements. + */ + getInstanceAnnouncements( + with_dismissed?: boolean | null, + ): Promise<Response<Array<Entity.Announcement>>>; + + /** + * POST /api/v1/announcements/:id/dismiss + */ + dismissInstanceAnnouncement(id: string): Promise<Response<{}>>; + + // ====================================== + // Emoji reactions + // ====================================== + createEmojiReaction( + id: string, + emoji: string, + ): Promise<Response<Entity.Status>>; + deleteEmojiReaction( + id: string, + emoji: string, + ): Promise<Response<Entity.Status>>; + getEmojiReactions(id: string): Promise<Response<Array<Entity.Reaction>>>; + getEmojiReaction( + id: string, + emoji: string, + ): Promise<Response<Entity.Reaction>>; + + // ====================================== + // WebSocket + // ====================================== + userSocket(): WebSocketInterface; + publicSocket(): WebSocketInterface; + localSocket(): WebSocketInterface; + tagSocket(tag: string): WebSocketInterface; + listSocket(list_id: string): WebSocketInterface; + directSocket(): WebSocketInterface; +} + +export class NoImplementedError extends Error { + constructor(err?: string) { + super(err); + + this.name = new.target.name; + Object.setPrototypeOf(this, new.target.prototype); + } +} + +export class ArgumentError extends Error { + constructor(err?: string) { + super(err); + + this.name = new.target.name; + Object.setPrototypeOf(this, new.target.prototype); + } +} + +export class UnexpectedError extends Error { + constructor(err?: string) { + super(err); + + this.name = new.target.name; + Object.setPrototypeOf(this, new.target.prototype); + } +} + +type Instance = { + title: string; + uri: string; + urls: { + streaming_api: string; + }; + version: string; +}; + +/** + * Detect SNS type. + * Now support Mastodon, Pleroma and Pixelfed. + * + * @param url Base URL of SNS. + * @param proxyConfig Proxy setting, or set false if don't use proxy. + * @return SNS name. + */ +export const detector = async ( + url: string, + proxyConfig: ProxyConfig | false = false, +): Promise<"mastodon" | "pleroma" | "misskey"> => { + let options: AxiosRequestConfig = { + headers: { + "User-Agent": DEFAULT_UA, + }, + }; + if (proxyConfig) { + options = Object.assign(options, { + httpsAgent: proxyAgent(proxyConfig), + }); + } + try { + const res = await axios.get<Instance>(url + "/api/v1/instance", options); + if (res.data.version.includes("Pleroma")) { + return "pleroma"; + } else { + return "mastodon"; + } + } catch (err) { + await axios.post<{}>(url + "/api/meta", {}, options); + return "misskey"; + } +}; + +/** + * Get client for each SNS according to megalodon interface. + * + * @param baseUrl hostname or base URL. + * @param accessToken access token from OAuth2 authorization + * @param userAgent UserAgent is specified in header on request. + * @param proxyConfig Proxy setting, or set false if don't use proxy. + * @return Client instance for each SNS you specified. + */ +const generator = ( + baseUrl: string, + accessToken: string | null = null, + userAgent: string | null = null, + proxyConfig: ProxyConfig | false = false, +): MegalodonInterface => + new Misskey(baseUrl, accessToken, userAgent, proxyConfig); + +export default generator; diff --git a/packages/megalodon/src/misskey.ts b/packages/megalodon/src/misskey.ts new file mode 100644 index 0000000000..25922a2ffc --- /dev/null +++ b/packages/megalodon/src/misskey.ts @@ -0,0 +1,3436 @@ +import FormData from "form-data"; +import AsyncLock from "async-lock"; + +import MisskeyAPI from "./misskey/api_client"; +import { DEFAULT_UA } from "./default"; +import { ProxyConfig } from "./proxy_config"; +import OAuth from "./oauth"; +import Response from "./response"; +import Entity from "./entity"; +import { + MegalodonInterface, + WebSocketInterface, + NoImplementedError, + ArgumentError, + UnexpectedError, +} from "./megalodon"; +import MegalodonEntity from "@/entity"; +import fs from "node:fs"; +import MisskeyNotificationType from "./misskey/notification"; + +type AccountCache = { + locks: AsyncLock; + accounts: Entity.Account[]; +}; + +export default class Misskey implements MegalodonInterface { + public client: MisskeyAPI.Interface; + public converter: MisskeyAPI.Converter; + public baseUrl: string; + public proxyConfig: ProxyConfig | false; + + /** + * @param baseUrl hostname or base URL + * @param accessToken access token from OAuth2 authorization + * @param userAgent UserAgent is specified in header on request. + * @param proxyConfig Proxy setting, or set false if don't use proxy. + */ + constructor( + baseUrl: string, + accessToken: string | null = null, + userAgent: string | null = DEFAULT_UA, + proxyConfig: ProxyConfig | false = false, + ) { + let token = ""; + if (accessToken) { + token = accessToken; + } + let agent: string = DEFAULT_UA; + if (userAgent) { + agent = userAgent; + } + this.converter = new MisskeyAPI.Converter(baseUrl); + this.client = new MisskeyAPI.Client( + baseUrl, + token, + agent, + proxyConfig, + this.converter, + ); + this.baseUrl = baseUrl; + this.proxyConfig = proxyConfig; + } + + private baseUrlToHost(baseUrl: string): string { + return baseUrl.replace("https://", ""); + } + + public cancel(): void { + return this.client.cancel(); + } + + public async registerApp( + client_name: string, + options: Partial<{ + scopes: Array<string>; + redirect_uris: string; + website: string; + }> = { + scopes: MisskeyAPI.DEFAULT_SCOPE, + redirect_uris: this.baseUrl, + }, + ): Promise<OAuth.AppData> { + return this.createApp(client_name, options).then(async (appData) => { + return this.generateAuthUrlAndToken(appData.client_secret).then( + (session) => { + appData.url = session.url; + appData.session_token = session.token; + return appData; + }, + ); + }); + } + + /** + * POST /api/app/create + * + * Create an application. + * @param client_name Your application's name. + * @param options Form data. + */ + public async createApp( + client_name: string, + options: Partial<{ + scopes: Array<string>; + redirect_uris: string; + website: string; + }> = { + scopes: MisskeyAPI.DEFAULT_SCOPE, + redirect_uris: this.baseUrl, + }, + ): Promise<OAuth.AppData> { + const redirect_uris = options.redirect_uris || this.baseUrl; + const scopes = options.scopes || MisskeyAPI.DEFAULT_SCOPE; + + const params: { + name: string; + description: string; + permission: Array<string>; + callbackUrl: string; + } = { + name: client_name, + description: "", + permission: scopes, + callbackUrl: redirect_uris, + }; + + /** + * The response is: + { + "id": "xxxxxxxxxx", + "name": "string", + "callbackUrl": "string", + "permission": [ + "string" + ], + "secret": "string" + } + */ + return this.client + .post<MisskeyAPI.Entity.App>("/api/app/create", params) + .then((res: Response<MisskeyAPI.Entity.App>) => { + const appData: OAuth.AppDataFromServer = { + id: res.data.id, + name: res.data.name, + website: null, + redirect_uri: res.data.callbackUrl, + client_id: "", + client_secret: res.data.secret, + }; + return OAuth.AppData.from(appData); + }); + } + + /** + * POST /api/auth/session/generate + */ + public async generateAuthUrlAndToken( + clientSecret: string, + ): Promise<MisskeyAPI.Entity.Session> { + return this.client + .post<MisskeyAPI.Entity.Session>("/api/auth/session/generate", { + appSecret: clientSecret, + }) + .then((res: Response<MisskeyAPI.Entity.Session>) => res.data); + } + + // ====================================== + // apps + // ====================================== + public async verifyAppCredentials(): Promise<Response<Entity.Application>> { + return new Promise((_, reject) => { + const err = new NoImplementedError("misskey does not support"); + reject(err); + }); + } + + // ====================================== + // apps/oauth + // ====================================== + /** + * POST /api/auth/session/userkey + * + * @param _client_id This parameter is not used in this method. + * @param client_secret Application secret key which will be provided in createApp. + * @param session_token Session token string which will be provided in generateAuthUrlAndToken. + * @param _redirect_uri This parameter is not used in this method. + */ + public async fetchAccessToken( + _client_id: string | null, + client_secret: string, + session_token: string, + _redirect_uri?: string, + ): Promise<OAuth.TokenData> { + return this.client + .post<MisskeyAPI.Entity.UserKey>("/api/auth/session/userkey", { + appSecret: client_secret, + token: session_token, + }) + .then((res) => { + const token = new OAuth.TokenData( + res.data.accessToken, + "misskey", + "", + 0, + null, + null, + ); + return token; + }); + } + + public async refreshToken( + _client_id: string, + _client_secret: string, + _refresh_token: string, + ): Promise<OAuth.TokenData> { + return new Promise((_, reject) => { + const err = new NoImplementedError("misskey does not support"); + reject(err); + }); + } + + public async revokeToken( + _client_id: string, + _client_secret: string, + _token: string, + ): Promise<Response<{}>> { + return new Promise((_, reject) => { + const err = new NoImplementedError("misskey does not support"); + reject(err); + }); + } + + // ====================================== + // accounts + // ====================================== + public async registerAccount( + _username: string, + _email: string, + _password: string, + _agreement: boolean, + _locale: string, + _reason?: string | null, + ): Promise<Response<Entity.Token>> { + return new Promise((_, reject) => { + const err = new NoImplementedError("misskey does not support"); + reject(err); + }); + } + + /** + * POST /api/i + */ + public async verifyAccountCredentials(): Promise<Response<Entity.Account>> { + return this.client + .post<MisskeyAPI.Entity.UserDetail>("/api/i") + .then((res) => { + return Object.assign(res, { + data: this.converter.userDetail( + res.data, + this.baseUrlToHost(this.baseUrl), + ), + }); + }); + } + + /** + * POST /api/i/update + */ + public async updateCredentials(options?: { + discoverable?: boolean; + bot?: boolean; + display_name?: string; + note?: string; + avatar?: string; + header?: string; + locked?: boolean; + source?: { + privacy?: string; + sensitive?: boolean; + language?: string; + } | null; + fields_attributes?: Array<{ name: string; value: string }>; + }): Promise<Response<Entity.Account>> { + let params = {}; + if (options) { + if (options.bot !== undefined) { + params = Object.assign(params, { + isBot: options.bot, + }); + } + if (options.display_name) { + params = Object.assign(params, { + name: options.display_name, + }); + } + if (options.note) { + params = Object.assign(params, { + description: options.note, + }); + } + if (options.locked !== undefined) { + params = Object.assign(params, { + isLocked: options.locked, + }); + } + if (options.source) { + if (options.source.language) { + params = Object.assign(params, { + lang: options.source.language, + }); + } + if (options.source.sensitive) { + params = Object.assign(params, { + alwaysMarkNsfw: options.source.sensitive, + }); + } + } + } + return this.client + .post<MisskeyAPI.Entity.UserDetail>("/api/i", params) + .then((res) => { + return Object.assign(res, { + data: this.converter.userDetail( + res.data, + this.baseUrlToHost(this.baseUrl), + ), + }); + }); + } + + /** + * POST /api/users/show + */ + public async getAccount(id: string): Promise<Response<Entity.Account>> { + return this.client + .post<MisskeyAPI.Entity.UserDetail>("/api/users/show", { + userId: id, + }) + .then((res) => { + return Object.assign(res, { + data: this.converter.userDetail( + res.data, + this.baseUrlToHost(this.baseUrl), + ), + }); + }); + } + + public async getAccountByName( + user: string, + host: string | null, + ): Promise<Response<Entity.Account>> { + return this.client + .post<MisskeyAPI.Entity.UserDetail>("/api/users/show", { + username: user, + host: host ?? null, + }) + .then((res) => { + return Object.assign(res, { + data: this.converter.userDetail( + res.data, + this.baseUrlToHost(this.baseUrl), + ), + }); + }); + } + + /** + * POST /api/users/notes + */ + public async getAccountStatuses( + id: string, + options?: { + limit?: number; + max_id?: string; + since_id?: string; + pinned?: boolean; + exclude_replies: boolean; + exclude_reblogs: boolean; + only_media?: boolean; + }, + ): Promise<Response<Array<Entity.Status>>> { + const accountCache = this.getFreshAccountCache(); + + if (options?.pinned) { + return this.client + .post<MisskeyAPI.Entity.UserDetail>("/api/users/show", { + userId: id, + }) + .then(async (res) => { + if (res.data.pinnedNotes) { + return { + ...res, + data: await Promise.all( + res.data.pinnedNotes.map((n) => + this.noteWithDetails( + n, + this.baseUrlToHost(this.baseUrl), + accountCache, + ), + ), + ), + }; + } + return { ...res, data: [] }; + }); + } + + let params = { + userId: id, + }; + if (options) { + if (options.limit) { + params = Object.assign(params, { + limit: options.limit, + }); + } else { + params = Object.assign(params, { + limit: 20, + }); + } + if (options.max_id) { + params = Object.assign(params, { + untilId: options.max_id, + }); + } + if (options.since_id) { + params = Object.assign(params, { + sinceId: options.since_id, + }); + } + if (options.exclude_replies) { + params = Object.assign(params, { + includeReplies: false, + }); + } + if (options.exclude_reblogs) { + params = Object.assign(params, { + includeMyRenotes: false, + }); + } + if (options.only_media) { + params = Object.assign(params, { + withFiles: options.only_media, + }); + } + } else { + params = Object.assign(params, { + limit: 20, + }); + } + return this.client + .post<Array<MisskeyAPI.Entity.Note>>("/api/users/notes", params) + .then(async (res) => { + const statuses: Array<Entity.Status> = await Promise.all( + res.data.map((note) => + this.noteWithDetails( + note, + this.baseUrlToHost(this.baseUrl), + accountCache, + ), + ), + ); + return Object.assign(res, { + data: statuses, + }); + }); + } + + public async getAccountFavourites( + id: string, + options?: { + limit?: number; + max_id?: string; + since_id?: string; + }, + ): Promise<Response<Array<Entity.Status>>> { + const accountCache = this.getFreshAccountCache(); + + let params = { + userId: id, + }; + if (options) { + if (options.limit) { + params = Object.assign(params, { + limit: options.limit <= 100 ? options.limit : 100, + }); + } + if (options.max_id) { + params = Object.assign(params, { + untilId: options.max_id, + }); + } + if (options.since_id) { + params = Object.assign(params, { + sinceId: options.since_id, + }); + } + } + return this.client + .post<Array<MisskeyAPI.Entity.Favorite>>("/api/users/reactions", params) + .then(async (res) => { + return Object.assign(res, { + data: await Promise.all( + res.data.map((fav) => + this.noteWithDetails( + fav.note, + this.baseUrlToHost(this.baseUrl), + accountCache, + ), + ), + ), + }); + }); + } + + public async subscribeAccount( + _id: string, + ): Promise<Response<Entity.Relationship>> { + return new Promise((_, reject) => { + const err = new NoImplementedError("misskey does not support"); + reject(err); + }); + } + + public async unsubscribeAccount( + _id: string, + ): Promise<Response<Entity.Relationship>> { + return new Promise((_, reject) => { + const err = new NoImplementedError("misskey does not support"); + reject(err); + }); + } + + /** + * POST /api/users/followers + */ + public async getAccountFollowers( + id: string, + options?: { + limit?: number; + max_id?: string; + since_id?: string; + }, + ): Promise<Response<Array<Entity.Account>>> { + let params = { + userId: id, + }; + if (options) { + if (options.limit) { + params = Object.assign(params, { + limit: options.limit <= 100 ? options.limit : 100, + }); + } else { + params = Object.assign(params, { + limit: 40, + }); + } + } else { + params = Object.assign(params, { + limit: 40, + }); + } + return this.client + .post<Array<MisskeyAPI.Entity.Follower>>("/api/users/followers", params) + .then(async (res) => { + return Object.assign(res, { + data: await Promise.all( + res.data.map(async (f) => + this.getAccount(f.followerId).then((p) => p.data), + ), + ), + }); + }); + } + + /** + * POST /api/users/following + */ + public async getAccountFollowing( + id: string, + options?: { + limit?: number; + max_id?: string; + since_id?: string; + }, + ): Promise<Response<Array<Entity.Account>>> { + let params = { + userId: id, + }; + if (options) { + if (options.limit) { + params = Object.assign(params, { + limit: options.limit <= 100 ? options.limit : 100, + }); + } + } + return this.client + .post<Array<MisskeyAPI.Entity.Following>>("/api/users/following", params) + .then(async (res) => { + return Object.assign(res, { + data: await Promise.all( + res.data.map(async (f) => + this.getAccount(f.followeeId).then((p) => p.data), + ), + ), + }); + }); + } + + public async getAccountLists( + _id: string, + ): Promise<Response<Array<Entity.List>>> { + return new Promise((_, reject) => { + const err = new NoImplementedError("misskey does not support"); + reject(err); + }); + } + + public async getIdentityProof( + _id: string, + ): Promise<Response<Array<Entity.IdentityProof>>> { + return new Promise((_, reject) => { + const err = new NoImplementedError("misskey does not support"); + reject(err); + }); + } + + /** + * POST /api/following/create + */ + public async followAccount( + id: string, + _options?: { reblog?: boolean }, + ): Promise<Response<Entity.Relationship>> { + await this.client.post<{}>("/api/following/create", { + userId: id, + }); + return this.client + .post<MisskeyAPI.Entity.Relation>("/api/users/relation", { + userId: id, + }) + .then((res) => { + return Object.assign(res, { + data: this.converter.relation(res.data), + }); + }); + } + + /** + * POST /api/following/delete + */ + public async unfollowAccount( + id: string, + ): Promise<Response<Entity.Relationship>> { + await this.client.post<{}>("/api/following/delete", { + userId: id, + }); + return this.client + .post<MisskeyAPI.Entity.Relation>("/api/users/relation", { + userId: id, + }) + .then((res) => { + return Object.assign(res, { + data: this.converter.relation(res.data), + }); + }); + } + + /** + * POST /api/blocking/create + */ + public async blockAccount( + id: string, + ): Promise<Response<Entity.Relationship>> { + await this.client.post<{}>("/api/blocking/create", { + userId: id, + }); + return this.client + .post<MisskeyAPI.Entity.Relation>("/api/users/relation", { + userId: id, + }) + .then((res) => { + return Object.assign(res, { + data: this.converter.relation(res.data), + }); + }); + } + + /** + * POST /api/blocking/delete + */ + public async unblockAccount( + id: string, + ): Promise<Response<Entity.Relationship>> { + await this.client.post<{}>("/api/blocking/delete", { + userId: id, + }); + return this.client + .post<MisskeyAPI.Entity.Relation>("/api/users/relation", { + userId: id, + }) + .then((res) => { + return Object.assign(res, { + data: this.converter.relation(res.data), + }); + }); + } + + /** + * POST /api/mute/create + */ + public async muteAccount( + id: string, + _notifications: boolean, + ): Promise<Response<Entity.Relationship>> { + await this.client.post<{}>("/api/mute/create", { + userId: id, + }); + return this.client + .post<MisskeyAPI.Entity.Relation>("/api/users/relation", { + userId: id, + }) + .then((res) => { + return Object.assign(res, { + data: this.converter.relation(res.data), + }); + }); + } + + /** + * POST /api/mute/delete + */ + public async unmuteAccount( + id: string, + ): Promise<Response<Entity.Relationship>> { + await this.client.post<{}>("/api/mute/delete", { + userId: id, + }); + return this.client + .post<MisskeyAPI.Entity.Relation>("/api/users/relation", { + userId: id, + }) + .then((res) => { + return Object.assign(res, { + data: this.converter.relation(res.data), + }); + }); + } + + public async pinAccount(_id: string): Promise<Response<Entity.Relationship>> { + return new Promise((_, reject) => { + const err = new NoImplementedError("misskey does not support"); + reject(err); + }); + } + + public async unpinAccount( + _id: string, + ): Promise<Response<Entity.Relationship>> { + return new Promise((_, reject) => { + const err = new NoImplementedError("misskey does not support"); + reject(err); + }); + } + + /** + * POST /api/users/relation + * + * @param id The accountID, for example `'1sdfag'` + */ + public async getRelationship( + id: string, + ): Promise<Response<Entity.Relationship>> { + return this.client + .post<MisskeyAPI.Entity.Relation>("/api/users/relation", { + userId: id, + }) + .then((res) => { + return Object.assign(res, { + data: this.converter.relation(res.data), + }); + }); + } + + /** + * POST /api/users/relation + * + * @param id Array of account ID, for example `['1sdfag', 'ds12aa']`. + */ + public async getRelationships( + ids: Array<string>, + ): Promise<Response<Array<Entity.Relationship>>> { + return Promise.all(ids.map((id) => this.getRelationship(id))).then( + (results) => ({ + ...results[0], + data: results.map((r) => r.data), + }), + ); + } + + /** + * POST /api/users/search + */ + public async searchAccount( + q: string, + options?: { + following?: boolean; + resolve?: boolean; + limit?: number; + max_id?: string; + since_id?: string; + }, + ): Promise<Response<Array<Entity.Account>>> { + let params = { + query: q, + detail: true, + }; + if (options) { + if (options.resolve !== undefined) { + params = Object.assign(params, { + localOnly: options.resolve, + }); + } + if (options.limit) { + params = Object.assign(params, { + limit: options.limit, + }); + } else { + params = Object.assign(params, { + limit: 40, + }); + } + } else { + params = Object.assign(params, { + limit: 40, + }); + } + return this.client + .post<Array<MisskeyAPI.Entity.UserDetail>>("/api/users/search", params) + .then((res) => { + return Object.assign(res, { + data: res.data.map((u) => + this.converter.userDetail(u, this.baseUrlToHost(this.baseUrl)), + ), + }); + }); + } + + // ====================================== + // accounts/bookmarks + // ====================================== + /** + * POST /api/i/favorites + */ + public async getBookmarks(options?: { + limit?: number; + max_id?: string; + since_id?: string; + min_id?: string; + }): Promise<Response<Array<Entity.Status>>> { + const accountCache = this.getFreshAccountCache(); + + let params = {}; + if (options) { + if (options.limit) { + params = Object.assign(params, { + limit: options.limit <= 100 ? options.limit : 100, + }); + } else { + params = Object.assign(params, { + limit: 40, + }); + } + if (options.max_id) { + params = Object.assign(params, { + untilId: options.max_id, + }); + } + if (options.min_id) { + params = Object.assign(params, { + sinceId: options.min_id, + }); + } + } else { + params = Object.assign(params, { + limit: 40, + }); + } + return this.client + .post<Array<MisskeyAPI.Entity.Favorite>>("/api/i/favorites", params) + .then(async (res) => { + return Object.assign(res, { + data: await Promise.all( + res.data.map((s) => + this.noteWithDetails( + s.note, + this.baseUrlToHost(this.baseUrl), + accountCache, + ), + ), + ), + }); + }); + } + + // ====================================== + // accounts/favourites + // ====================================== + public async getFavourites(options?: { + limit?: number; + max_id?: string; + min_id?: string; + }): Promise<Response<Array<Entity.Status>>> { + const userId = await this.client + .post<MisskeyAPI.Entity.UserDetail>("/api/i") + .then((res) => res.data.id); + return this.getAccountFavourites(userId, options); + } + + // ====================================== + // accounts/mutes + // ====================================== + /** + * POST /api/mute/list + */ + public async getMutes(options?: { + limit?: number; + max_id?: string; + min_id?: string; + }): Promise<Response<Array<Entity.Account>>> { + let params = {}; + if (options) { + if (options.limit) { + params = Object.assign(params, { + limit: options.limit, + }); + } else { + params = Object.assign(params, { + limit: 40, + }); + } + if (options.max_id) { + params = Object.assign(params, { + untilId: options.max_id, + }); + } + if (options.min_id) { + params = Object.assign(params, { + sinceId: options.min_id, + }); + } + } else { + params = Object.assign(params, { + limit: 40, + }); + } + return this.client + .post<Array<MisskeyAPI.Entity.Mute>>("/api/mute/list", params) + .then((res) => { + return Object.assign(res, { + data: res.data.map((mute) => + this.converter.userDetail( + mute.mutee, + this.baseUrlToHost(this.baseUrl), + ), + ), + }); + }); + } + + // ====================================== + // accounts/blocks + // ====================================== + /** + * POST /api/blocking/list + */ + public async getBlocks(options?: { + limit?: number; + max_id?: string; + min_id?: string; + }): Promise<Response<Array<Entity.Account>>> { + let params = {}; + if (options) { + if (options.limit) { + params = Object.assign(params, { + limit: options.limit, + }); + } else { + params = Object.assign(params, { + limit: 40, + }); + } + if (options.max_id) { + params = Object.assign(params, { + untilId: options.max_id, + }); + } + if (options.min_id) { + params = Object.assign(params, { + sinceId: options.min_id, + }); + } + } else { + params = Object.assign(params, { + limit: 40, + }); + } + return this.client + .post<Array<MisskeyAPI.Entity.Blocking>>("/api/blocking/list", params) + .then((res) => { + return Object.assign(res, { + data: res.data.map((blocking) => + this.converter.userDetail( + blocking.blockee, + this.baseUrlToHost(this.baseUrl), + ), + ), + }); + }); + } + + // ====================================== + // accounts/domain_blocks + // ====================================== + public async getDomainBlocks(_options?: { + limit?: number; + max_id?: string; + min_id?: string; + }): Promise<Response<Array<string>>> { + return new Promise((_, reject) => { + const err = new NoImplementedError("misskey does not support"); + reject(err); + }); + } + + public async blockDomain(_domain: string): Promise<Response<{}>> { + return new Promise((_, reject) => { + const err = new NoImplementedError("misskey does not support"); + reject(err); + }); + } + + public async unblockDomain(_domain: string): Promise<Response<{}>> { + return new Promise((_, reject) => { + const err = new NoImplementedError("misskey does not support"); + reject(err); + }); + } + + // ====================================== + // accounts/filters + // ====================================== + public async getFilters(): Promise<Response<Array<Entity.Filter>>> { + return new Promise((_, reject) => { + const err = new NoImplementedError("misskey does not support"); + reject(err); + }); + } + + public async getFilter(_id: string): Promise<Response<Entity.Filter>> { + return new Promise((_, reject) => { + const err = new NoImplementedError("misskey does not support"); + reject(err); + }); + } + + public async createFilter( + _phrase: string, + _context: Array<string>, + _options?: { + irreversible?: boolean; + whole_word?: boolean; + expires_in?: string; + }, + ): Promise<Response<Entity.Filter>> { + return new Promise((_, reject) => { + const err = new NoImplementedError("misskey does not support"); + reject(err); + }); + } + + public async updateFilter( + _id: string, + _phrase: string, + _context: Array<string>, + _options?: { + irreversible?: boolean; + whole_word?: boolean; + expires_in?: string; + }, + ): Promise<Response<Entity.Filter>> { + return new Promise((_, reject) => { + const err = new NoImplementedError("misskey does not support"); + reject(err); + }); + } + + public async deleteFilter(_id: string): Promise<Response<Entity.Filter>> { + return new Promise((_, reject) => { + const err = new NoImplementedError("misskey does not support"); + reject(err); + }); + } + + // ====================================== + // accounts/reports + // ====================================== + /** + * POST /api/users/report-abuse + */ + public async report( + account_id: string, + comment: string, + _options?: { + status_ids?: Array<string>; + forward?: boolean; + }, + ): Promise<Response<Entity.Report>> { + return this.client + .post<{}>("/api/users/report-abuse", { + userId: account_id, + comment: comment, + }) + .then((res) => { + return Object.assign(res, { + data: { + id: "", + action_taken: "", + comment: comment, + account_id: account_id, + status_ids: [], + }, + }); + }); + } + + // ====================================== + // accounts/follow_requests + // ====================================== + /** + * POST /api/following/requests/list + */ + public async getFollowRequests( + _limit?: number, + ): Promise<Response<Array<Entity.Account>>> { + return this.client + .post<Array<MisskeyAPI.Entity.FollowRequest>>( + "/api/following/requests/list", + ) + .then((res) => { + return Object.assign(res, { + data: res.data.map((r) => this.converter.user(r.follower)), + }); + }); + } + + /** + * POST /api/following/requests/accept + */ + public async acceptFollowRequest( + id: string, + ): Promise<Response<Entity.Relationship>> { + await this.client.post<{}>("/api/following/requests/accept", { + userId: id, + }); + return this.client + .post<MisskeyAPI.Entity.Relation>("/api/users/relation", { + userId: id, + }) + .then((res) => { + return Object.assign(res, { + data: this.converter.relation(res.data), + }); + }); + } + + /** + * POST /api/following/requests/reject + */ + public async rejectFollowRequest( + id: string, + ): Promise<Response<Entity.Relationship>> { + await this.client.post<{}>("/api/following/requests/reject", { + userId: id, + }); + return this.client + .post<MisskeyAPI.Entity.Relation>("/api/users/relation", { + userId: id, + }) + .then((res) => { + return Object.assign(res, { + data: this.converter.relation(res.data), + }); + }); + } + + // ====================================== + // accounts/endorsements + // ====================================== + public async getEndorsements(_options?: { + limit?: number; + max_id?: string; + since_id?: string; + }): Promise<Response<Array<Entity.Account>>> { + return new Promise((_, reject) => { + const err = new NoImplementedError("misskey does not support"); + reject(err); + }); + } + + // ====================================== + // accounts/featured_tags + // ====================================== + public async getFeaturedTags(): Promise<Response<Array<Entity.FeaturedTag>>> { + return this.getAccountFeaturedTags(); + } + + public async getAccountFeaturedTags(): Promise< + Response<Array<Entity.FeaturedTag>> + > { + const tags: Entity.FeaturedTag[] = []; + const res: Response = { + headers: undefined, + statusText: "", + status: 200, + data: tags, + }; + return new Promise((resolve) => resolve(res)); + } + + public async createFeaturedTag( + _name: string, + ): Promise<Response<Entity.FeaturedTag>> { + return new Promise((_, reject) => { + const err = new NoImplementedError("misskey does not support"); + reject(err); + }); + } + + public async deleteFeaturedTag(_id: string): Promise<Response<{}>> { + return new Promise((_, reject) => { + const err = new NoImplementedError("misskey does not support"); + reject(err); + }); + } + + public async getSuggestedTags(): Promise<Response<Array<Entity.Tag>>> { + return new Promise((_, reject) => { + const err = new NoImplementedError("misskey does not support"); + reject(err); + }); + } + + // ====================================== + // accounts/preferences + // ====================================== + public async getPreferences(): Promise<Response<Entity.Preferences>> { + return this.client + .post<MisskeyAPI.Entity.UserDetailMe>("/api/i") + .then(async (res) => { + return Object.assign(res, { + data: this.converter.userPreferences( + res.data, + await this.getDefaultPostPrivacy(), + ), + }); + }); + } + + // ====================================== + // accounts/suggestions + // ====================================== + /** + * POST /api/users/recommendation + */ + public async getSuggestions( + limit?: number, + ): Promise<Response<Array<Entity.Account>>> { + let params = {}; + if (limit) { + params = Object.assign(params, { + limit: limit, + }); + } + return this.client + .post<Array<MisskeyAPI.Entity.UserDetail>>( + "/api/users/recommendation", + params, + ) + .then((res) => ({ + ...res, + data: res.data.map((u) => + this.converter.userDetail(u, this.baseUrlToHost(this.baseUrl)), + ), + })); + } + + // ====================================== + // accounts/tags + // ====================================== + public async getFollowedTags(): Promise<Response<Array<Entity.Tag>>> { + const tags: Entity.Tag[] = []; + const res: Response = { + headers: undefined, + statusText: "", + status: 200, + data: tags, + }; + return new Promise((resolve) => resolve(res)); + } + + public async getTag(_id: string): Promise<Response<Entity.Tag>> { + return new Promise((_, reject) => { + const err = new NoImplementedError("misskey does not support"); + reject(err); + }); + } + + public async followTag(_id: string): Promise<Response<Entity.Tag>> { + return new Promise((_, reject) => { + const err = new NoImplementedError("misskey does not support"); + reject(err); + }); + } + + public async unfollowTag(_id: string): Promise<Response<Entity.Tag>> { + return new Promise((_, reject) => { + const err = new NoImplementedError("misskey does not support"); + reject(err); + }); + } + + // ====================================== + // statuses + // ====================================== + public async postStatus( + status: string, + options?: { + media_ids?: Array<string>; + poll?: { + options: Array<string>; + expires_in: number; + multiple?: boolean; + hide_totals?: boolean; + }; + in_reply_to_id?: string; + sensitive?: boolean; + spoiler_text?: string; + visibility?: "public" | "unlisted" | "private" | "direct"; + scheduled_at?: string; + language?: string; + quote_id?: string; + }, + ): Promise<Response<Entity.Status>> { + let params = { + text: status, + }; + if (options) { + if (options.media_ids) { + params = Object.assign(params, { + fileIds: options.media_ids, + }); + } + if (options.poll) { + let pollParam = { + choices: options.poll.options, + expiresAt: null, + expiredAfter: options.poll.expires_in * 1000, + }; + if (options.poll.multiple !== undefined) { + pollParam = Object.assign(pollParam, { + multiple: options.poll.multiple, + }); + } + params = Object.assign(params, { + poll: pollParam, + }); + } + if (options.in_reply_to_id) { + params = Object.assign(params, { + replyId: options.in_reply_to_id, + }); + } + if (options.sensitive) { + params = Object.assign(params, { + cw: "", + }); + } + if (options.spoiler_text) { + params = Object.assign(params, { + cw: options.spoiler_text, + }); + } + if (options.visibility) { + params = Object.assign(params, { + visibility: this.converter.encodeVisibility(options.visibility), + }); + } + if (options.quote_id) { + params = Object.assign(params, { + renoteId: options.quote_id, + }); + } + } + return this.client + .post<MisskeyAPI.Entity.CreatedNote>("/api/notes/create", params) + .then(async (res) => ({ + ...res, + data: await this.noteWithDetails( + res.data.createdNote, + this.baseUrlToHost(this.baseUrl), + this.getFreshAccountCache(), + ), + })); + } + + /** + * POST /api/notes/show + */ + public async getStatus(id: string): Promise<Response<Entity.Status>> { + return this.client + .post<MisskeyAPI.Entity.Note>("/api/notes/show", { + noteId: id, + }) + .then(async (res) => ({ + ...res, + data: await this.noteWithDetails( + res.data, + this.baseUrlToHost(this.baseUrl), + this.getFreshAccountCache(), + ), + })); + } + + private getFreshAccountCache(): AccountCache { + return { + locks: new AsyncLock(), + accounts: [], + }; + } + + public async notificationWithDetails( + n: MisskeyAPI.Entity.Notification, + host: string, + cache: AccountCache, + ): Promise<MegalodonEntity.Notification> { + const notification = this.converter.notification(n, host); + if (n.note) + notification.status = await this.noteWithDetails(n.note, host, cache); + if (notification.account) + notification.account = ( + await this.getAccount(notification.account.id) + ).data; + return notification; + } + + public async noteWithDetails( + n: MisskeyAPI.Entity.Note, + host: string, + cache: AccountCache, + ): Promise<MegalodonEntity.Status> { + const status = await this.addUserDetailsToStatus( + this.converter.note(n, host), + cache, + ); + status.bookmarked = await this.isStatusBookmarked(n.id); + return this.addMentionsToStatus(status, cache); + } + + public async isStatusBookmarked(id: string): Promise<boolean> { + return this.client + .post<MisskeyAPI.Entity.State>("/api/notes/state", { + noteId: id, + }) + .then((p) => p.data.isFavorited ?? false); + } + + public async addUserDetailsToStatus( + status: Entity.Status, + cache: AccountCache, + ): Promise<Entity.Status> { + if ( + status.account.followers_count === 0 && + status.account.followers_count === 0 && + status.account.statuses_count === 0 + ) + status.account = + (await this.getAccountCached( + status.account.id, + status.account.acct, + cache, + )) ?? status.account; + + if (status.reblog != null) + status.reblog = await this.addUserDetailsToStatus(status.reblog, cache); + + if (status.quote != null) + status.quote = await this.addUserDetailsToStatus(status.quote, cache); + + return status; + } + + public async addMentionsToStatus( + status: Entity.Status, + cache: AccountCache, + ): Promise<Entity.Status> { + if (status.mentions.length > 0) return status; + + if (status.reblog != null) + status.reblog = await this.addMentionsToStatus(status.reblog, cache); + + if (status.quote != null) + status.quote = await this.addMentionsToStatus(status.quote, cache); + + const idx = status.account.acct.indexOf("@"); + const origin = idx < 0 ? null : status.account.acct.substring(idx + 1); + + status.mentions = ( + await this.getMentions(status.plain_content!, origin, cache) + ).filter((p) => p != null); + for (const m of status.mentions.filter( + (value, index, array) => array.indexOf(value) === index, + )) { + const regexFull = new RegExp( + `(?<=^|\\s|>)@${m.acct}(?=[^a-zA-Z0-9]|$)`, + "gi", + ); + const regexLocalUser = new RegExp( + `(?<=^|\\s|>)@${m.acct}@${this.baseUrlToHost( + this.baseUrl, + )}(?=[^a-zA-Z0-9]|$)`, + "gi", + ); + const regexRemoteUser = new RegExp( + `(?<=^|\\s|>)@${m.username}(?=[^a-zA-Z0-9@]|$)`, + "gi", + ); + + if (m.acct == m.username) { + status.content = status.content.replace(regexLocalUser, `@${m.acct}`); + } else if (!status.content.match(regexFull)) { + status.content = status.content.replace(regexRemoteUser, `@${m.acct}`); + } + + status.content = status.content.replace( + regexFull, + `<a href="${m.url}" class="u-url mention" rel="nofollow noopener noreferrer" target="_blank">@${m.acct}</a>`, + ); + } + return status; + } + + public async getMentions( + text: string, + origin: string | null, + cache: AccountCache, + ): Promise<Entity.Mention[]> { + const mentions: Entity.Mention[] = []; + + if (text == undefined) return mentions; + + const mentionMatch = text.matchAll( + /(?<=^|\s)@(?<user>[a-zA-Z0-9_]+)(?:@(?<host>[a-zA-Z0-9-.]+\.[a-zA-Z0-9-]+)|)(?=[^a-zA-Z0-9]|$)/g, + ); + + for (const m of mentionMatch) { + try { + if (m.groups == null) continue; + + const account = await this.getAccountByNameCached( + m.groups.user, + m.groups.host ?? origin, + cache, + ); + + if (account == null) continue; + + mentions.push({ + id: account.id, + url: account.url, + username: account.username, + acct: account.acct, + }); + } catch {} + } + + return mentions; + } + + public async getAccountByNameCached( + user: string, + host: string | null, + cache: AccountCache, + ): Promise<Entity.Account | undefined | null> { + const acctToFind = host == null ? user : `${user}@${host}`; + + return await cache.locks.acquire(acctToFind, async () => { + const cacheHit = cache.accounts.find((p) => p.acct === acctToFind); + const account = + cacheHit ?? (await this.getAccountByName(user, host ?? null)).data; + + if (!account) { + return null; + } + + if (cacheHit == null) { + cache.accounts.push(account); + } + + return account; + }); + } + + public async getAccountCached( + id: string, + acct: string, + cache: AccountCache, + ): Promise<Entity.Account | undefined | null> { + return await cache.locks.acquire(acct, async () => { + const cacheHit = cache.accounts.find((p) => p.id === id); + const account = cacheHit ?? (await this.getAccount(id)).data; + + if (!account) { + return null; + } + + if (cacheHit == null) { + cache.accounts.push(account); + } + + return account; + }); + } + + public async editStatus( + _id: string, + _options: { + status?: string; + spoiler_text?: string; + sensitive?: boolean; + media_ids?: Array<string>; + poll?: { + options?: Array<string>; + expires_in?: number; + multiple?: boolean; + hide_totals?: boolean; + }; + }, + ): Promise<Response<Entity.Status>> { + return new Promise((_, reject) => { + const err = new NoImplementedError("misskey does not support"); + reject(err); + }); + } + + /** + * POST /api/notes/delete + */ + public async deleteStatus(id: string): Promise<Response<{}>> { + return this.client.post<{}>("/api/notes/delete", { + noteId: id, + }); + } + + /** + * POST /api/notes/children + */ + public async getStatusContext( + id: string, + options?: { limit?: number; max_id?: string; since_id?: string }, + ): Promise<Response<Entity.Context>> { + let params = { + noteId: id, + }; + if (options) { + if (options.limit) { + params = Object.assign(params, { + limit: options.limit, + depth: 12, + }); + } else { + params = Object.assign(params, { + limit: 30, + depth: 12, + }); + } + if (options.max_id) { + params = Object.assign(params, { + untilId: options.max_id, + }); + } + if (options.since_id) { + params = Object.assign(params, { + sinceId: options.since_id, + }); + } + } else { + params = Object.assign(params, { + limit: 30, + depth: 12, + }); + } + return this.client + .post<Array<MisskeyAPI.Entity.Note>>("/api/notes/children", params) + .then(async (res) => { + const accountCache = this.getFreshAccountCache(); + const conversation = await this.client.post< + Array<MisskeyAPI.Entity.Note> + >("/api/notes/conversation", params); + const parents = await Promise.all( + conversation.data.map((n) => + this.noteWithDetails( + n, + this.baseUrlToHost(this.baseUrl), + accountCache, + ), + ), + ); + + const context: Entity.Context = { + ancestors: parents.reverse(), + descendants: this.dfs( + await Promise.all( + res.data.map((n) => + this.noteWithDetails( + n, + this.baseUrlToHost(this.baseUrl), + accountCache, + ), + ), + ), + ), + }; + return { + ...res, + data: context, + }; + }); + } + + private dfs(graph: Entity.Status[]) { + // we don't need to run dfs if we have zero or one elements + if (graph.length <= 1) { + return graph; + } + + // sort the graph first, so we can grab the correct starting point + graph = graph.sort((a, b) => { + if (a.id < b.id) return -1; + if (a.id > b.id) return 1; + return 0; + }); + + const initialPostId = graph[0].in_reply_to_id; + + // populate stack with all top level replies + const stack = graph + .filter((reply) => reply.in_reply_to_id === initialPostId) + .reverse(); + const visited = new Set(); + const result = []; + + while (stack.length) { + const currentPost = stack.pop(); + + if (currentPost === undefined) return result; + + if (!visited.has(currentPost)) { + visited.add(currentPost); + result.push(currentPost); + + for (const reply of graph + .filter((reply) => reply.in_reply_to_id === currentPost.id) + .reverse()) { + stack.push(reply); + } + } + } + + return result; + } + + public async getStatusHistory(): Promise<Response<Array<Entity.StatusEdit>>> { + // FIXME: stub, implement once we have note edit history in the database + const history: Entity.StatusEdit[] = []; + const res: Response = { + headers: undefined, + statusText: "", + status: 200, + data: history, + }; + return new Promise((resolve) => resolve(res)); + } + + /** + * POST /api/notes/renotes + */ + public async getStatusRebloggedBy( + id: string, + ): Promise<Response<Array<Entity.Account>>> { + return this.client + .post<Array<MisskeyAPI.Entity.Note>>("/api/notes/renotes", { + noteId: id, + }) + .then(async (res) => ({ + ...res, + data: ( + await Promise.all(res.data.map((n) => this.getAccount(n.user.id))) + ).map((p) => p.data), + })); + } + + public async getStatusFavouritedBy( + id: string, + ): Promise<Response<Array<Entity.Account>>> { + return this.client + .post<Array<MisskeyAPI.Entity.Reaction>>("/api/notes/reactions", { + noteId: id, + }) + .then(async (res) => ({ + ...res, + data: ( + await Promise.all(res.data.map((n) => this.getAccount(n.user.id))) + ).map((p) => p.data), + })); + } + + public async favouriteStatus(id: string): Promise<Response<Entity.Status>> { + return this.createEmojiReaction(id, await this.getDefaultFavoriteEmoji()); + } + + private async getDefaultFavoriteEmoji(): Promise<string> { + // NOTE: get-unsecure is calckey's extension. + // Misskey doesn't have this endpoint and regular `/i/registry/get` won't work + // unless you have a 'nativeToken', which is reserved for the frontend webapp. + + return await this.client + .post<Array<string>>("/api/i/registry/get-unsecure", { + key: "reactions", + scope: ["client", "base"], + }) + .then((res) => res.data[0] ?? "⭐"); + } + + private async getDefaultPostPrivacy(): Promise< + "public" | "unlisted" | "private" | "direct" + > { + // NOTE: get-unsecure is calckey's extension. + // Misskey doesn't have this endpoint and regular `/i/registry/get` won't work + // unless you have a 'nativeToken', which is reserved for the frontend webapp. + + return this.client + .post<string>("/api/i/registry/get-unsecure", { + key: "defaultNoteVisibility", + scope: ["client", "base"], + }) + .then((res) => { + if ( + !res.data || + (res.data != "public" && + res.data != "home" && + res.data != "followers" && + res.data != "specified") + ) + return "public"; + return this.converter.visibility(res.data); + }) + .catch((_) => "public"); + } + + public async unfavouriteStatus(id: string): Promise<Response<Entity.Status>> { + // NOTE: Misskey allows only one reaction per status, so we don't need to care what that emoji was. + return this.deleteEmojiReaction(id, ""); + } + + /** + * POST /api/notes/create + */ + public async reblogStatus(id: string): Promise<Response<Entity.Status>> { + return this.client + .post<MisskeyAPI.Entity.CreatedNote>("/api/notes/create", { + renoteId: id, + }) + .then(async (res) => ({ + ...res, + data: await this.noteWithDetails( + res.data.createdNote, + this.baseUrlToHost(this.baseUrl), + this.getFreshAccountCache(), + ), + })); + } + + /** + * POST /api/notes/unrenote + */ + public async unreblogStatus(id: string): Promise<Response<Entity.Status>> { + await this.client.post<{}>("/api/notes/unrenote", { + noteId: id, + }); + return this.client + .post<MisskeyAPI.Entity.Note>("/api/notes/show", { + noteId: id, + }) + .then(async (res) => ({ + ...res, + data: await this.noteWithDetails( + res.data, + this.baseUrlToHost(this.baseUrl), + this.getFreshAccountCache(), + ), + })); + } + + /** + * POST /api/notes/favorites/create + */ + public async bookmarkStatus(id: string): Promise<Response<Entity.Status>> { + await this.client.post<{}>("/api/notes/favorites/create", { + noteId: id, + }); + return this.client + .post<MisskeyAPI.Entity.Note>("/api/notes/show", { + noteId: id, + }) + .then(async (res) => ({ + ...res, + data: await this.noteWithDetails( + res.data, + this.baseUrlToHost(this.baseUrl), + this.getFreshAccountCache(), + ), + })); + } + + /** + * POST /api/notes/favorites/delete + */ + public async unbookmarkStatus(id: string): Promise<Response<Entity.Status>> { + await this.client.post<{}>("/api/notes/favorites/delete", { + noteId: id, + }); + return this.client + .post<MisskeyAPI.Entity.Note>("/api/notes/show", { + noteId: id, + }) + .then(async (res) => ({ + ...res, + data: await this.noteWithDetails( + res.data, + this.baseUrlToHost(this.baseUrl), + this.getFreshAccountCache(), + ), + })); + } + + public async muteStatus(_id: string): Promise<Response<Entity.Status>> { + return new Promise((_, reject) => { + const err = new NoImplementedError("misskey does not support"); + reject(err); + }); + } + + public async unmuteStatus(_id: string): Promise<Response<Entity.Status>> { + return new Promise((_, reject) => { + const err = new NoImplementedError("misskey does not support"); + reject(err); + }); + } + + /** + * POST /api/i/pin + */ + public async pinStatus(id: string): Promise<Response<Entity.Status>> { + await this.client.post<{}>("/api/i/pin", { + noteId: id, + }); + return this.client + .post<MisskeyAPI.Entity.Note>("/api/notes/show", { + noteId: id, + }) + .then(async (res) => ({ + ...res, + data: await this.noteWithDetails( + res.data, + this.baseUrlToHost(this.baseUrl), + this.getFreshAccountCache(), + ), + })); + } + + /** + * POST /api/i/unpin + */ + public async unpinStatus(id: string): Promise<Response<Entity.Status>> { + await this.client.post<{}>("/api/i/unpin", { + noteId: id, + }); + return this.client + .post<MisskeyAPI.Entity.Note>("/api/notes/show", { + noteId: id, + }) + .then(async (res) => ({ + ...res, + data: await this.noteWithDetails( + res.data, + this.baseUrlToHost(this.baseUrl), + this.getFreshAccountCache(), + ), + })); + } + + /** + * Convert a Unicode emoji or custom emoji name to a Misskey reaction. + * @see Misskey's reaction-lib.ts + */ + private reactionName(name: string): string { + // See: https://github.com/tc39/proposal-regexp-unicode-property-escapes#matching-emoji + const isUnicodeEmoji = + /\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation}|\p{Emoji}\uFE0F/gu.test( + name, + ); + if (isUnicodeEmoji) { + return name; + } + return `:${name}:`; + } + + /** + * POST /api/notes/reactions/create + */ + public async reactStatus( + id: string, + name: string, + ): Promise<Response<Entity.Status>> { + await this.client.post<{}>("/api/notes/reactions/create", { + noteId: id, + reaction: this.reactionName(name), + }); + return this.client + .post<MisskeyAPI.Entity.Note>("/api/notes/show", { + noteId: id, + }) + .then(async (res) => ({ + ...res, + data: await this.noteWithDetails( + res.data, + this.baseUrlToHost(this.baseUrl), + this.getFreshAccountCache(), + ), + })); + } + + /** + * POST /api/notes/reactions/delete + */ + public async unreactStatus( + id: string, + name: string, + ): Promise<Response<Entity.Status>> { + await this.client.post<{}>("/api/notes/reactions/delete", { + noteId: id, + reaction: this.reactionName(name), + }); + return this.client + .post<MisskeyAPI.Entity.Note>("/api/notes/show", { + noteId: id, + }) + .then(async (res) => ({ + ...res, + data: await this.noteWithDetails( + res.data, + this.baseUrlToHost(this.baseUrl), + this.getFreshAccountCache(), + ), + })); + } + + // ====================================== + // statuses/media + // ====================================== + /** + * POST /api/drive/files/create + */ + public async uploadMedia( + file: any, + options?: { description?: string; focus?: string }, + ): Promise<Response<Entity.Attachment>> { + const formData = new FormData(); + formData.append("file", fs.createReadStream(file.path), { + contentType: file.mimetype, + }); + + if (file.originalname != null && file.originalname !== "file") + formData.append("name", file.originalname); + + if (options?.description != null) + formData.append("comment", options.description); + + let headers: { [key: string]: string } = {}; + if (typeof formData.getHeaders === "function") { + headers = formData.getHeaders(); + } + return this.client + .post<MisskeyAPI.Entity.File>( + "/api/drive/files/create", + formData, + headers, + ) + .then((res) => ({ ...res, data: this.converter.file(res.data) })); + } + + public async getMedia(id: string): Promise<Response<Entity.Attachment>> { + const res = await this.client.post<MisskeyAPI.Entity.File>( + "/api/drive/files/show", + { fileId: id }, + ); + return { ...res, data: this.converter.file(res.data) }; + } + + /** + * POST /api/drive/files/update + */ + public async updateMedia( + id: string, + options?: { + file?: any; + description?: string; + focus?: string; + is_sensitive?: boolean; + }, + ): Promise<Response<Entity.Attachment>> { + let params = { + fileId: id, + }; + if (options) { + if (options.is_sensitive !== undefined) { + params = Object.assign(params, { + isSensitive: options.is_sensitive, + }); + } + + if (options.description !== undefined) { + params = Object.assign(params, { + comment: options.description, + }); + } + } + return this.client + .post<MisskeyAPI.Entity.File>("/api/drive/files/update", params) + .then((res) => ({ ...res, data: this.converter.file(res.data) })); + } + + // ====================================== + // statuses/polls + // ====================================== + public async getPoll(id: string): Promise<Response<Entity.Poll>> { + const res = await this.getStatus(id); + if (res.data.poll == null) throw new Error("poll not found"); + return { ...res, data: res.data.poll }; + } + + /** + * POST /api/notes/polls/vote + */ + public async votePoll( + id: string, + choices: Array<number>, + ): Promise<Response<Entity.Poll>> { + if (!id) { + return new Promise((_, reject) => { + const err = new ArgumentError("id is required"); + reject(err); + }); + } + + for (const c of choices) { + const params = { + noteId: id, + choice: +c, + }; + await this.client.post<{}>("/api/notes/polls/vote", params); + } + + const res = await this.client + .post<MisskeyAPI.Entity.Note>("/api/notes/show", { + noteId: id, + }) + .then(async (res) => { + const note = await this.noteWithDetails( + res.data, + this.baseUrlToHost(this.baseUrl), + this.getFreshAccountCache(), + ); + return { ...res, data: note.poll }; + }); + if (!res.data) { + return new Promise((_, reject) => { + const err = new UnexpectedError("poll does not exist"); + reject(err); + }); + } + return { ...res, data: res.data }; + } + + // ====================================== + // statuses/scheduled_statuses + // ====================================== + public async getScheduledStatuses(_options?: { + limit?: number; + max_id?: string; + since_id?: string; + min_id?: string; + }): Promise<Response<Array<Entity.ScheduledStatus>>> { + return new Promise((_, reject) => { + const err = new NoImplementedError("misskey does not support"); + reject(err); + }); + } + + public async getScheduledStatus( + _id: string, + ): Promise<Response<Entity.ScheduledStatus>> { + return new Promise((_, reject) => { + const err = new NoImplementedError("misskey does not support"); + reject(err); + }); + } + + public async scheduleStatus( + _id: string, + _scheduled_at?: string | null, + ): Promise<Response<Entity.ScheduledStatus>> { + return new Promise((_, reject) => { + const err = new NoImplementedError("misskey does not support"); + reject(err); + }); + } + + public async cancelScheduledStatus(_id: string): Promise<Response<{}>> { + return new Promise((_, reject) => { + const err = new NoImplementedError("misskey does not support"); + reject(err); + }); + } + + // ====================================== + // timelines + // ====================================== + /** + * POST /api/notes/global-timeline + */ + public async getPublicTimeline(options?: { + only_media?: boolean; + limit?: number; + max_id?: string; + since_id?: string; + min_id?: string; + }): Promise<Response<Array<Entity.Status>>> { + const accountCache = this.getFreshAccountCache(); + + let params = {}; + if (options) { + if (options.only_media !== undefined) { + params = Object.assign(params, { + withFiles: options.only_media, + }); + } + if (options.limit) { + params = Object.assign(params, { + limit: options.limit, + }); + } else { + params = Object.assign(params, { + limit: 20, + }); + } + if (options.max_id) { + params = Object.assign(params, { + untilId: options.max_id, + }); + } + if (options.since_id) { + params = Object.assign(params, { + sinceId: options.since_id, + }); + } + if (options.min_id) { + params = Object.assign(params, { + sinceId: options.min_id, + }); + } + } else { + params = Object.assign(params, { + limit: 20, + }); + } + return this.client + .post<Array<MisskeyAPI.Entity.Note>>("/api/notes/global-timeline", params) + .then(async (res) => ({ + ...res, + data: ( + await Promise.all( + res.data.map((n) => + this.noteWithDetails( + n, + this.baseUrlToHost(this.baseUrl), + accountCache, + ), + ), + ) + ).sort(this.sortByIdDesc), + })); + } + + /** + * POST /api/notes/local-timeline + */ + public async getLocalTimeline(options?: { + only_media?: boolean; + limit?: number; + max_id?: string; + since_id?: string; + min_id?: string; + }): Promise<Response<Array<Entity.Status>>> { + const accountCache = this.getFreshAccountCache(); + + let params = {}; + if (options) { + if (options.only_media !== undefined) { + params = Object.assign(params, { + withFiles: options.only_media, + }); + } + if (options.limit) { + params = Object.assign(params, { + limit: options.limit, + }); + } else { + params = Object.assign(params, { + limit: 20, + }); + } + if (options.max_id) { + params = Object.assign(params, { + untilId: options.max_id, + }); + } + if (options.since_id) { + params = Object.assign(params, { + sinceId: options.since_id, + }); + } + if (options.min_id) { + params = Object.assign(params, { + sinceId: options.min_id, + }); + } + } else { + params = Object.assign(params, { + limit: 20, + }); + } + return this.client + .post<Array<MisskeyAPI.Entity.Note>>("/api/notes/local-timeline", params) + .then(async (res) => ({ + ...res, + data: ( + await Promise.all( + res.data.map((n) => + this.noteWithDetails( + n, + this.baseUrlToHost(this.baseUrl), + accountCache, + ), + ), + ) + ).sort(this.sortByIdDesc), + })); + } + + /** + * POST /api/notes/search-by-tag + */ + public async getTagTimeline( + hashtag: string, + options?: { + local?: boolean; + only_media?: boolean; + limit?: number; + max_id?: string; + since_id?: string; + min_id?: string; + }, + ): Promise<Response<Array<Entity.Status>>> { + const accountCache = this.getFreshAccountCache(); + + let params = { + tag: hashtag, + }; + if (options) { + if (options.only_media !== undefined) { + params = Object.assign(params, { + withFiles: options.only_media, + }); + } + if (options.limit) { + params = Object.assign(params, { + limit: options.limit, + }); + } else { + params = Object.assign(params, { + limit: 20, + }); + } + if (options.max_id) { + params = Object.assign(params, { + untilId: options.max_id, + }); + } + if (options.since_id) { + params = Object.assign(params, { + sinceId: options.since_id, + }); + } + if (options.min_id) { + params = Object.assign(params, { + sinceId: options.min_id, + }); + } + } else { + params = Object.assign(params, { + limit: 20, + }); + } + return this.client + .post<Array<MisskeyAPI.Entity.Note>>("/api/notes/search-by-tag", params) + .then(async (res) => ({ + ...res, + data: ( + await Promise.all( + res.data.map((n) => + this.noteWithDetails( + n, + this.baseUrlToHost(this.baseUrl), + accountCache, + ), + ), + ) + ).sort(this.sortByIdDesc), + })); + } + + /** + * POST /api/notes/timeline + */ + public async getHomeTimeline(options?: { + local?: boolean; + limit?: number; + max_id?: string; + since_id?: string; + min_id?: string; + }): Promise<Response<Array<Entity.Status>>> { + const accountCache = this.getFreshAccountCache(); + + let params = { + withFiles: false, + }; + if (options) { + if (options.limit) { + params = Object.assign(params, { + limit: options.limit, + }); + } else { + params = Object.assign(params, { + limit: 20, + }); + } + if (options.max_id) { + params = Object.assign(params, { + untilId: options.max_id, + }); + } + if (options.since_id) { + params = Object.assign(params, { + sinceId: options.since_id, + }); + } + if (options.min_id) { + params = Object.assign(params, { + sinceId: options.min_id, + }); + } + } else { + params = Object.assign(params, { + limit: 20, + }); + } + return this.client + .post<Array<MisskeyAPI.Entity.Note>>("/api/notes/timeline", params) + .then(async (res) => ({ + ...res, + data: ( + await Promise.all( + res.data.map((n) => + this.noteWithDetails( + n, + this.baseUrlToHost(this.baseUrl), + accountCache, + ), + ), + ) + ).sort(this.sortByIdDesc), + })); + } + + /** + * POST /api/notes/user-list-timeline + */ + public async getListTimeline( + list_id: string, + options?: { + limit?: number; + max_id?: string; + since_id?: string; + min_id?: string; + }, + ): Promise<Response<Array<Entity.Status>>> { + const accountCache = this.getFreshAccountCache(); + + let params = { + listId: list_id, + withFiles: false, + }; + if (options) { + if (options.limit) { + params = Object.assign(params, { + limit: options.limit, + }); + } else { + params = Object.assign(params, { + limit: 20, + }); + } + if (options.max_id) { + params = Object.assign(params, { + untilId: options.max_id, + }); + } + if (options.since_id) { + params = Object.assign(params, { + sinceId: options.since_id, + }); + } + if (options.min_id) { + params = Object.assign(params, { + sinceId: options.min_id, + }); + } + } else { + params = Object.assign(params, { + limit: 20, + }); + } + return this.client + .post<Array<MisskeyAPI.Entity.Note>>( + "/api/notes/user-list-timeline", + params, + ) + .then(async (res) => ({ + ...res, + data: ( + await Promise.all( + res.data.map((n) => + this.noteWithDetails( + n, + this.baseUrlToHost(this.baseUrl), + accountCache, + ), + ), + ) + ).sort(this.sortByIdDesc), + })); + } + + // ====================================== + // timelines/conversations + // ====================================== + /** + * POST /api/notes/mentions + */ + public async getConversationTimeline(options?: { + limit?: number; + max_id?: string; + since_id?: string; + min_id?: string; + }): Promise<Response<Array<Entity.Conversation>>> { + let params = { + visibility: "specified", + }; + if (options) { + if (options.limit) { + params = Object.assign(params, { + limit: options.limit, + }); + } else { + params = Object.assign(params, { + limit: 20, + }); + } + if (options.max_id) { + params = Object.assign(params, { + untilId: options.max_id, + }); + } + if (options.since_id) { + params = Object.assign(params, { + sinceId: options.since_id, + }); + } + if (options.min_id) { + params = Object.assign(params, { + sinceId: options.min_id, + }); + } + } else { + params = Object.assign(params, { + limit: 20, + }); + } + return this.client + .post<Array<MisskeyAPI.Entity.Note>>("/api/notes/mentions", params) + .then((res) => ({ + ...res, + data: res.data.map((n) => + this.converter.noteToConversation( + n, + this.baseUrlToHost(this.baseUrl), + ), + ), + })); + // FIXME: ^ this should also parse mentions + } + + public async deleteConversation(_id: string): Promise<Response<{}>> { + return new Promise((_, reject) => { + const err = new NoImplementedError("misskey does not support"); + reject(err); + }); + } + + public async readConversation( + _id: string, + ): Promise<Response<Entity.Conversation>> { + return new Promise((_, reject) => { + const err = new NoImplementedError("misskey does not support"); + reject(err); + }); + } + + private sortByIdDesc(a: Entity.Status, b: Entity.Status): number { + if (a.id < b.id) return 1; + if (a.id > b.id) return -1; + + return 0; + } + + // ====================================== + // timelines/lists + // ====================================== + /** + * POST /api/users/lists/list + */ + public async getLists(): Promise<Response<Array<Entity.List>>> { + return this.client + .post<Array<MisskeyAPI.Entity.List>>("/api/users/lists/list") + .then((res) => ({ + ...res, + data: res.data.map((l) => this.converter.list(l)), + })); + } + + /** + * POST /api/users/lists/show + */ + public async getList(id: string): Promise<Response<Entity.List>> { + return this.client + .post<MisskeyAPI.Entity.List>("/api/users/lists/show", { + listId: id, + }) + .then((res) => ({ ...res, data: this.converter.list(res.data) })); + } + + /** + * POST /api/users/lists/create + */ + public async createList(title: string): Promise<Response<Entity.List>> { + return this.client + .post<MisskeyAPI.Entity.List>("/api/users/lists/create", { + name: title, + }) + .then((res) => ({ ...res, data: this.converter.list(res.data) })); + } + + /** + * POST /api/users/lists/update + */ + public async updateList( + id: string, + title: string, + ): Promise<Response<Entity.List>> { + return this.client + .post<MisskeyAPI.Entity.List>("/api/users/lists/update", { + listId: id, + name: title, + }) + .then((res) => ({ ...res, data: this.converter.list(res.data) })); + } + + /** + * POST /api/users/lists/delete + */ + public async deleteList(id: string): Promise<Response<{}>> { + return this.client.post<{}>("/api/users/lists/delete", { + listId: id, + }); + } + + /** + * POST /api/users/lists/show + */ + public async getAccountsInList( + id: string, + _options?: { + limit?: number; + max_id?: string; + since_id?: string; + }, + ): Promise<Response<Array<Entity.Account>>> { + const res = await this.client.post<MisskeyAPI.Entity.List>( + "/api/users/lists/show", + { + listId: id, + }, + ); + const promise = res.data.userIds.map((userId) => this.getAccount(userId)); + const accounts = await Promise.all(promise); + return { ...res, data: accounts.map((r) => r.data) }; + } + + /** + * POST /api/users/lists/push + */ + public async addAccountsToList( + id: string, + account_ids: Array<string>, + ): Promise<Response<{}>> { + return this.client.post<{}>("/api/users/lists/push", { + listId: id, + userId: account_ids[0], + }); + } + + /** + * POST /api/users/lists/pull + */ + public async deleteAccountsFromList( + id: string, + account_ids: Array<string>, + ): Promise<Response<{}>> { + return this.client.post<{}>("/api/users/lists/pull", { + listId: id, + userId: account_ids[0], + }); + } + + // ====================================== + // timelines/markers + // ====================================== + public async getMarkers( + _timeline: Array<string>, + ): Promise<Response<Entity.Marker | {}>> { + return new Promise((_, reject) => { + const err = new NoImplementedError("misskey does not support"); + reject(err); + }); + } + + public async saveMarkers(_options?: { + home?: { last_read_id: string }; + notifications?: { last_read_id: string }; + }): Promise<Response<Entity.Marker>> { + return new Promise((_, reject) => { + const err = new NoImplementedError("misskey does not support"); + reject(err); + }); + } + + // ====================================== + // notifications + // ====================================== + /** + * POST /api/i/notifications + */ + public async getNotifications(options?: { + limit?: number; + max_id?: string; + since_id?: string; + min_id?: string; + exclude_type?: Array<Entity.NotificationType>; + account_id?: string; + }): Promise<Response<Array<Entity.Notification>>> { + let params = {}; + if (options) { + if (options.limit) { + params = Object.assign(params, { + limit: options.limit <= 100 ? options.limit : 100, + }); + } else { + params = Object.assign(params, { + limit: 20, + }); + } + if (options.max_id) { + params = Object.assign(params, { + untilId: options.max_id, + }); + } + if (options.since_id) { + params = Object.assign(params, { + sinceId: options.since_id, + }); + } + if (options.min_id) { + params = Object.assign(params, { + sinceId: options.min_id, + }); + } + if (options.exclude_type) { + params = Object.assign(params, { + excludeType: options.exclude_type.map((e) => + this.converter.encodeNotificationType(e), + ), + }); + } + } else { + params = Object.assign(params, { + limit: 20, + }); + } + const cache = this.getFreshAccountCache(); + return this.client + .post<Array<MisskeyAPI.Entity.Notification>>( + "/api/i/notifications", + params, + ) + .then(async (res) => ({ + ...res, + data: await Promise.all( + res.data + .filter( + (p) => p.type != MisskeyNotificationType.FollowRequestAccepted, + ) // these aren't supported on mastodon + .map((n) => + this.notificationWithDetails( + n, + this.baseUrlToHost(this.baseUrl), + cache, + ), + ), + ), + })); + } + + public async getNotification( + _id: string, + ): Promise<Response<Entity.Notification>> { + return new Promise((_, reject) => { + const err = new NoImplementedError("misskey does not support"); + reject(err); + }); + } + + /** + * POST /api/notifications/mark-all-as-read + */ + public async dismissNotifications(): Promise<Response<{}>> { + return this.client.post<{}>("/api/notifications/mark-all-as-read"); + } + + public async dismissNotification(_id: string): Promise<Response<{}>> { + return new Promise((_, reject) => { + const err = new NoImplementedError("misskey does not support"); + reject(err); + }); + } + + public async readNotifications(_options: { + id?: string; + max_id?: string; + }): Promise<Response<Entity.Notification | Array<Entity.Notification>>> { + return new Promise((_, reject) => { + const err = new NoImplementedError("mastodon does not support"); + reject(err); + }); + } + + // ====================================== + // notifications/push + // ====================================== + public async subscribePushNotification( + _subscription: { endpoint: string; keys: { p256dh: string; auth: string } }, + _data?: { + alerts: { + follow?: boolean; + favourite?: boolean; + reblog?: boolean; + mention?: boolean; + poll?: boolean; + }; + } | null, + ): Promise<Response<Entity.PushSubscription>> { + return new Promise((_, reject) => { + const err = new NoImplementedError("misskey does not support"); + reject(err); + }); + } + + public async getPushSubscription(): Promise< + Response<Entity.PushSubscription> + > { + return new Promise((_, reject) => { + const err = new NoImplementedError("misskey does not support"); + reject(err); + }); + } + + public async updatePushSubscription( + _data?: { + alerts: { + follow?: boolean; + favourite?: boolean; + reblog?: boolean; + mention?: boolean; + poll?: boolean; + }; + } | null, + ): Promise<Response<Entity.PushSubscription>> { + return new Promise((_, reject) => { + const err = new NoImplementedError("misskey does not support"); + reject(err); + }); + } + + /** + * DELETE /api/v1/push/subscription + */ + public async deletePushSubscription(): Promise<Response<{}>> { + return new Promise((_, reject) => { + const err = new NoImplementedError("misskey does not support"); + reject(err); + }); + } + + // ====================================== + // search + // ====================================== + public async search( + q: string, + type: "accounts" | "hashtags" | "statuses", + options?: { + limit?: number; + max_id?: string; + min_id?: string; + resolve?: boolean; + offset?: number; + following?: boolean; + account_id?: string; + exclude_unreviewed?: boolean; + }, + ): Promise<Response<Entity.Results>> { + const accountCache = this.getFreshAccountCache(); + + switch (type) { + case "accounts": { + if (q.startsWith("http://") || q.startsWith("https://")) { + return this.client + .post("/api/ap/show", { uri: q }) + .then(async (res) => { + if (res.status != 200 || res.data.type != "User") { + res.status = 200; + res.statusText = "OK"; + res.data = { + accounts: [], + statuses: [], + hashtags: [], + }; + + return res; + } + + const account = await this.converter.userDetail( + res.data.object as MisskeyAPI.Entity.UserDetail, + this.baseUrlToHost(this.baseUrl), + ); + + return { + ...res, + data: { + accounts: + options?.max_id && options?.max_id >= account.id + ? [] + : [account], + statuses: [], + hashtags: [], + }, + }; + }); + } + let params = { + query: q, + }; + if (options) { + if (options.limit) { + params = Object.assign(params, { + limit: options.limit, + }); + } else { + params = Object.assign(params, { + limit: 20, + }); + } + if (options.offset) { + params = Object.assign(params, { + offset: options.offset, + }); + } + if (options.resolve) { + params = Object.assign(params, { + localOnly: options.resolve, + }); + } + } else { + params = Object.assign(params, { + limit: 20, + }); + } + + try { + const match = q.match( + /^@(?<user>[a-zA-Z0-9_]+)(?:@(?<host>[a-zA-Z0-9-.]+\.[a-zA-Z0-9-]+)|)$/, + ); + if (match) { + const lookupQuery = { + username: match.groups?.user, + host: match.groups?.host, + }; + + const result = await this.client + .post<MisskeyAPI.Entity.UserDetail>( + "/api/users/show", + lookupQuery, + ) + .then((res) => ({ + ...res, + data: { + accounts: [ + this.converter.userDetail( + res.data, + this.baseUrlToHost(this.baseUrl), + ), + ], + statuses: [], + hashtags: [], + }, + })); + + if (result.status !== 200) { + result.status = 200; + result.statusText = "OK"; + result.data = { + accounts: [], + statuses: [], + hashtags: [], + }; + } + + return result; + } + } catch {} + + return this.client + .post<Array<MisskeyAPI.Entity.UserDetail>>( + "/api/users/search", + params, + ) + .then((res) => ({ + ...res, + data: { + accounts: res.data.map((u) => + this.converter.userDetail(u, this.baseUrlToHost(this.baseUrl)), + ), + statuses: [], + hashtags: [], + }, + })); + } + case "statuses": { + if (q.startsWith("http://") || q.startsWith("https://")) { + return this.client + .post("/api/ap/show", { uri: q }) + .then(async (res) => { + if (res.status != 200 || res.data.type != "Note") { + res.status = 200; + res.statusText = "OK"; + res.data = { + accounts: [], + statuses: [], + hashtags: [], + }; + + return res; + } + + const post = await this.noteWithDetails( + res.data.object as MisskeyAPI.Entity.Note, + this.baseUrlToHost(this.baseUrl), + accountCache, + ); + + return { + ...res, + data: { + accounts: [], + statuses: + options?.max_id && options.max_id >= post.id ? [] : [post], + hashtags: [], + }, + }; + }); + } + let params = { + query: q, + }; + if (options) { + if (options.limit) { + params = Object.assign(params, { + limit: options.limit, + }); + } + if (options.offset) { + params = Object.assign(params, { + offset: options.offset, + }); + } + if (options.max_id) { + params = Object.assign(params, { + untilId: options.max_id, + }); + } + if (options.min_id) { + params = Object.assign(params, { + sinceId: options.min_id, + }); + } + if (options.account_id) { + params = Object.assign(params, { + userId: options.account_id, + }); + } + } + return this.client + .post<Array<MisskeyAPI.Entity.Note>>("/api/notes/search", params) + .then(async (res) => ({ + ...res, + data: { + accounts: [], + statuses: await Promise.all( + res.data.map((n) => + this.noteWithDetails( + n, + this.baseUrlToHost(this.baseUrl), + accountCache, + ), + ), + ), + hashtags: [], + }, + })); + } + case "hashtags": { + let params = { + query: q, + }; + if (options) { + if (options.limit) { + params = Object.assign(params, { + limit: options.limit, + }); + } + if (options.offset) { + params = Object.assign(params, { + offset: options.offset, + }); + } + } + return this.client + .post<Array<string>>("/api/hashtags/search", params) + .then((res) => ({ + ...res, + data: { + accounts: [], + statuses: [], + hashtags: res.data.map((h) => ({ + name: h, + url: h, + history: null, + following: false, + })), + }, + })); + } + } + } + + // ====================================== + // instance + // ====================================== + /** + * POST /api/meta + * POST /api/stats + */ + public async getInstance(): Promise<Response<Entity.Instance>> { + const meta = await this.client + .post<MisskeyAPI.Entity.Meta>("/api/meta") + .then((res) => res.data); + return this.client + .post<MisskeyAPI.Entity.Stats>("/api/stats") + .then((res) => ({ ...res, data: this.converter.meta(meta, res.data) })); + } + + public async getInstancePeers(): Promise<Response<Array<string>>> { + return new Promise((_, reject) => { + const err = new NoImplementedError("misskey does not support"); + reject(err); + }); + } + + public async getInstanceActivity(): Promise< + Response<Array<Entity.Activity>> + > { + return new Promise((_, reject) => { + const err = new NoImplementedError("misskey does not support"); + reject(err); + }); + } + + // ====================================== + // instance/trends + // ====================================== + /** + * POST /api/hashtags/trend + */ + public async getInstanceTrends( + _limit?: number | null, + ): Promise<Response<Array<Entity.Tag>>> { + return this.client + .post<Array<MisskeyAPI.Entity.Hashtag>>("/api/hashtags/trend") + .then((res) => ({ + ...res, + data: res.data.map((h) => this.converter.hashtag(h)), + })); + } + + // ====================================== + // instance/directory + // ====================================== + public async getInstanceDirectory(_options?: { + limit?: number; + offset?: number; + order?: "active" | "new"; + local?: boolean; + }): Promise<Response<Array<Entity.Account>>> { + return new Promise((_, reject) => { + const err = new NoImplementedError("misskey does not support"); + reject(err); + }); + } + + // ====================================== + // instance/custom_emojis + // ====================================== + /** + * POST /api/meta + */ + public async getInstanceCustomEmojis(): Promise< + Response<Array<Entity.Emoji>> + > { + return this.client + .post<MisskeyAPI.Entity.Meta>("/api/meta") + .then((res) => ({ + ...res, + data: res.data.emojis.map((e) => this.converter.emoji(e)), + })); + } + + // ====================================== + // instance/announcements + // ====================================== + public async getInstanceAnnouncements( + with_dismissed?: boolean | null, + ): Promise<Response<Array<Entity.Announcement>>> { + let params = {}; + if (with_dismissed) { + params = Object.assign(params, { + withUnreads: with_dismissed, + }); + } + return this.client + .post<Array<MisskeyAPI.Entity.Announcement>>("/api/announcements", params) + .then((res) => ({ + ...res, + data: res.data.map((t) => this.converter.announcement(t)), + })); + } + + public async dismissInstanceAnnouncement(id: string): Promise<Response<{}>> { + return this.client.post<{}>("/api/i/read-announcement", { + announcementId: id, + }); + } + + // ====================================== + // Emoji reactions + // ====================================== + /** + * POST /api/notes/reactions/create + * + * @param {string} id Target note ID. + * @param {string} emoji Reaction emoji string. This string is raw unicode emoji. + */ + public async createEmojiReaction( + id: string, + emoji: string, + ): Promise<Response<Entity.Status>> { + await this.client.post<{}>("/api/notes/reactions/create", { + noteId: id, + reaction: emoji, + }); + return this.client + .post<MisskeyAPI.Entity.Note>("/api/notes/show", { + noteId: id, + }) + .then(async (res) => ({ + ...res, + data: await this.noteWithDetails( + res.data, + this.baseUrlToHost(this.baseUrl), + this.getFreshAccountCache(), + ), + })); + } + + /** + * POST /api/notes/reactions/delete + */ + public async deleteEmojiReaction( + id: string, + _emoji: string, + ): Promise<Response<Entity.Status>> { + await this.client.post<{}>("/api/notes/reactions/delete", { + noteId: id, + }); + return this.client + .post<MisskeyAPI.Entity.Note>("/api/notes/show", { + noteId: id, + }) + .then(async (res) => ({ + ...res, + data: await this.noteWithDetails( + res.data, + this.baseUrlToHost(this.baseUrl), + this.getFreshAccountCache(), + ), + })); + } + + public async getEmojiReactions( + id: string, + ): Promise<Response<Array<Entity.Reaction>>> { + return this.client + .post<Array<MisskeyAPI.Entity.Reaction>>("/api/notes/reactions", { + noteId: id, + }) + .then((res) => ({ + ...res, + data: this.converter.reactions(res.data), + })); + } + + public async getEmojiReaction( + _id: string, + _emoji: string, + ): Promise<Response<Entity.Reaction>> { + return new Promise((_, reject) => { + const err = new NoImplementedError("misskey does not support"); + reject(err); + }); + } + + public userSocket(): WebSocketInterface { + return this.client.socket("user"); + } + + public publicSocket(): WebSocketInterface { + return this.client.socket("globalTimeline"); + } + + public localSocket(): WebSocketInterface { + return this.client.socket("localTimeline"); + } + + public tagSocket(_tag: string): WebSocketInterface { + throw new NoImplementedError("TODO: implement"); + } + + public listSocket(list_id: string): WebSocketInterface { + return this.client.socket("list", list_id); + } + + public directSocket(): WebSocketInterface { + return this.client.socket("conversation"); + } +} diff --git a/packages/megalodon/src/misskey/api_client.ts b/packages/megalodon/src/misskey/api_client.ts new file mode 100644 index 0000000000..47932cbf19 --- /dev/null +++ b/packages/megalodon/src/misskey/api_client.ts @@ -0,0 +1,727 @@ +import axios, { AxiosResponse, AxiosRequestConfig } from "axios"; +import dayjs from "dayjs"; +import FormData from "form-data"; + +import { DEFAULT_UA } from "../default"; +import proxyAgent, { ProxyConfig } from "../proxy_config"; +import Response from "../response"; +import MisskeyEntity from "./entity"; +import MegalodonEntity from "../entity"; +import WebSocket from "./web_socket"; +import MisskeyNotificationType from "./notification"; +import NotificationType from "../notification"; + +namespace MisskeyAPI { + export namespace Entity { + export type App = MisskeyEntity.App; + export type Announcement = MisskeyEntity.Announcement; + export type Blocking = MisskeyEntity.Blocking; + export type Choice = MisskeyEntity.Choice; + export type CreatedNote = MisskeyEntity.CreatedNote; + export type Emoji = MisskeyEntity.Emoji; + export type Favorite = MisskeyEntity.Favorite; + export type Field = MisskeyEntity.Field; + export type File = MisskeyEntity.File; + export type Follower = MisskeyEntity.Follower; + export type Following = MisskeyEntity.Following; + export type FollowRequest = MisskeyEntity.FollowRequest; + export type Hashtag = MisskeyEntity.Hashtag; + export type List = MisskeyEntity.List; + export type Meta = MisskeyEntity.Meta; + export type Mute = MisskeyEntity.Mute; + export type Note = MisskeyEntity.Note; + export type Notification = MisskeyEntity.Notification; + export type Poll = MisskeyEntity.Poll; + export type Reaction = MisskeyEntity.Reaction; + export type Relation = MisskeyEntity.Relation; + export type User = MisskeyEntity.User; + export type UserDetail = MisskeyEntity.UserDetail; + export type UserDetailMe = MisskeyEntity.UserDetailMe; + export type GetAll = MisskeyEntity.GetAll; + export type UserKey = MisskeyEntity.UserKey; + export type Session = MisskeyEntity.Session; + export type Stats = MisskeyEntity.Stats; + export type State = MisskeyEntity.State; + export type APIEmoji = { emojis: Emoji[] }; + } + + export class Converter { + private baseUrl: string; + private instanceHost: string; + private plcUrl: string; + private modelOfAcct = { + id: "1", + username: "none", + acct: "none", + display_name: "none", + locked: true, + bot: true, + discoverable: false, + group: false, + created_at: "1971-01-01T00:00:00.000Z", + note: "", + url: "plc", + avatar: "plc", + avatar_static: "plc", + header: "plc", + header_static: "plc", + followers_count: -1, + following_count: 0, + statuses_count: 0, + last_status_at: "1971-01-01T00:00:00.000Z", + noindex: true, + emojis: [], + fields: [], + moved: null, + }; + + constructor(baseUrl: string) { + this.baseUrl = baseUrl; + this.instanceHost = baseUrl.substring(baseUrl.indexOf("//") + 2); + this.plcUrl = `${baseUrl}/static-assets/transparent.png`; + this.modelOfAcct.url = this.plcUrl; + this.modelOfAcct.avatar = this.plcUrl; + this.modelOfAcct.avatar_static = this.plcUrl; + this.modelOfAcct.header = this.plcUrl; + this.modelOfAcct.header_static = this.plcUrl; + } + + // FIXME: Properly render MFM instead of just escaping HTML characters. + escapeMFM = (text: string): string => + text + .replace(/&/g, "&") + .replace(/</g, "<") + .replace(/>/g, ">") + .replace(/"/g, """) + .replace(/'/g, "'") + .replace(/`/g, "`") + .replace(/\r?\n/g, "<br>"); + + emoji = (e: Entity.Emoji): MegalodonEntity.Emoji => { + return { + shortcode: e.name, + static_url: e.url, + url: e.url, + visible_in_picker: true, + category: e.category, + }; + }; + + field = (f: Entity.Field): MegalodonEntity.Field => ({ + name: f.name, + value: this.escapeMFM(f.value), + verified_at: null, + }); + + user = (u: Entity.User): MegalodonEntity.Account => { + let acct = u.username; + let acctUrl = `https://${u.host || this.instanceHost}/@${u.username}`; + if (u.host) { + acct = `${u.username}@${u.host}`; + acctUrl = `https://${u.host}/@${u.username}`; + } + return { + id: u.id, + username: u.username, + acct: acct, + display_name: u.name || u.username, + locked: false, + created_at: new Date().toISOString(), + followers_count: 0, + following_count: 0, + statuses_count: 0, + note: "", + url: acctUrl, + avatar: u.avatarUrl, + avatar_static: u.avatarUrl, + header: this.plcUrl, + header_static: this.plcUrl, + emojis: u.emojis.map((e) => this.emoji(e)), + moved: null, + fields: [], + bot: false, + }; + }; + + userDetail = ( + u: Entity.UserDetail, + host: string, + ): MegalodonEntity.Account => { + let acct = u.username; + host = host.replace("https://", ""); + let acctUrl = `https://${host || u.host || this.instanceHost}/@${ + u.username + }`; + if (u.host) { + acct = `${u.username}@${u.host}`; + acctUrl = `https://${u.host}/@${u.username}`; + } + return { + id: u.id, + username: u.username, + acct: acct, + display_name: u.name || u.username, + locked: u.isLocked, + created_at: u.createdAt, + followers_count: u.followersCount, + following_count: u.followingCount, + statuses_count: u.notesCount, + note: u.description?.replace(/\n|\\n/g, "<br>") ?? "", + url: acctUrl, + avatar: u.avatarUrl, + avatar_static: u.avatarUrl, + header: u.bannerUrl ?? this.plcUrl, + header_static: u.bannerUrl ?? this.plcUrl, + emojis: u.emojis.map((e) => this.emoji(e)), + moved: null, + fields: u.fields.map((f) => this.field(f)), + bot: u.isBot, + }; + }; + + userPreferences = ( + u: MisskeyAPI.Entity.UserDetailMe, + v: "public" | "unlisted" | "private" | "direct", + ): MegalodonEntity.Preferences => { + return { + "reading:expand:media": "default", + "reading:expand:spoilers": false, + "posting:default:language": u.lang, + "posting:default:sensitive": u.alwaysMarkNsfw, + "posting:default:visibility": v, + }; + }; + + visibility = ( + v: "public" | "home" | "followers" | "specified", + ): "public" | "unlisted" | "private" | "direct" => { + switch (v) { + case "public": + return v; + case "home": + return "unlisted"; + case "followers": + return "private"; + case "specified": + return "direct"; + } + }; + + encodeVisibility = ( + v: "public" | "unlisted" | "private" | "direct", + ): "public" | "home" | "followers" | "specified" => { + switch (v) { + case "public": + return v; + case "unlisted": + return "home"; + case "private": + return "followers"; + case "direct": + return "specified"; + } + }; + + fileType = ( + s: string, + ): "unknown" | "image" | "gifv" | "video" | "audio" => { + if (s === "image/gif") { + return "gifv"; + } + if (s.includes("image")) { + return "image"; + } + if (s.includes("video")) { + return "video"; + } + if (s.includes("audio")) { + return "audio"; + } + return "unknown"; + }; + + file = (f: Entity.File): MegalodonEntity.Attachment => { + return { + id: f.id, + type: this.fileType(f.type), + url: f.url, + remote_url: f.url, + preview_url: f.thumbnailUrl, + text_url: f.url, + meta: { + width: f.properties.width, + height: f.properties.height, + }, + description: f.comment, + blurhash: f.blurhash, + }; + }; + + follower = (f: Entity.Follower): MegalodonEntity.Account => { + return this.user(f.follower); + }; + + following = (f: Entity.Following): MegalodonEntity.Account => { + return this.user(f.followee); + }; + + relation = (r: Entity.Relation): MegalodonEntity.Relationship => { + return { + id: r.id, + following: r.isFollowing, + followed_by: r.isFollowed, + blocking: r.isBlocking, + blocked_by: r.isBlocked, + muting: r.isMuted, + muting_notifications: false, + requested: r.hasPendingFollowRequestFromYou, + domain_blocking: false, + showing_reblogs: true, + endorsed: false, + notifying: false, + }; + }; + + choice = (c: Entity.Choice): MegalodonEntity.PollOption => { + return { + title: c.text, + votes_count: c.votes, + }; + }; + + poll = (p: Entity.Poll, id: string): MegalodonEntity.Poll => { + const now = dayjs(); + const expire = dayjs(p.expiresAt); + const count = p.choices.reduce((sum, choice) => sum + choice.votes, 0); + return { + id: id, + expires_at: p.expiresAt, + expired: now.isAfter(expire), + multiple: p.multiple, + votes_count: count, + options: p.choices.map((c) => this.choice(c)), + voted: p.choices.some((c) => c.isVoted), + own_votes: p.choices + .filter((c) => c.isVoted) + .map((c) => p.choices.indexOf(c)), + }; + }; + + note = (n: Entity.Note, host: string): MegalodonEntity.Status => { + host = host.replace("https://", ""); + + return { + id: n.id, + uri: n.uri ? n.uri : `https://${host}/notes/${n.id}`, + url: n.uri ? n.uri : `https://${host}/notes/${n.id}`, + account: this.user(n.user), + in_reply_to_id: n.replyId, + in_reply_to_account_id: n.reply?.userId ?? null, + reblog: n.renote ? this.note(n.renote, host) : null, + content: n.text ? this.escapeMFM(n.text) : "", + plain_content: n.text ? n.text : null, + created_at: n.createdAt, + // Remove reaction emojis with names containing @ from the emojis list. + emojis: n.emojis + .filter((e) => e.name.indexOf("@") === -1) + .map((e) => this.emoji(e)), + replies_count: n.repliesCount, + reblogs_count: n.renoteCount, + favourites_count: this.getTotalReactions(n.reactions), + reblogged: false, + favourited: !!n.myReaction, + muted: false, + sensitive: n.files ? n.files.some((f) => f.isSensitive) : false, + spoiler_text: n.cw ? n.cw : "", + visibility: this.visibility(n.visibility), + media_attachments: n.files ? n.files.map((f) => this.file(f)) : [], + mentions: [], + tags: [], + card: null, + poll: n.poll ? this.poll(n.poll, n.id) : null, + application: null, + language: null, + pinned: null, + // Use emojis list to provide URLs for emoji reactions. + reactions: this.mapReactions(n.emojis, n.reactions, n.myReaction), + bookmarked: false, + quote: n.renote && n.text ? this.note(n.renote, host) : null, + }; + }; + + mapReactions = ( + emojis: Array<MisskeyEntity.Emoji>, + r: { [key: string]: number }, + myReaction?: string, + ): Array<MegalodonEntity.Reaction> => { + // Map of emoji shortcodes to image URLs. + const emojiUrls = new Map<string, string>( + emojis.map((e) => [e.name, e.url]), + ); + return Object.keys(r).map((key) => { + // Strip colons from custom emoji reaction names to match emoji shortcodes. + const shortcode = key.replaceAll(":", ""); + // If this is a custom emoji (vs. a Unicode emoji), find its image URL. + const url = emojiUrls.get(shortcode); + // Finally, remove trailing @. from local custom emoji reaction names. + const name = shortcode.replace("@.", ""); + return { + count: r[key], + me: key === myReaction, + name, + url, + // We don't actually have a static version of the asset, but clients expect one anyway. + static_url: url, + }; + }); + }; + + getTotalReactions = (r: { [key: string]: number }): number => { + return Object.values(r).length > 0 + ? Object.values(r).reduce( + (previousValue, currentValue) => previousValue + currentValue, + ) + : 0; + }; + + reactions = ( + r: Array<Entity.Reaction>, + ): Array<MegalodonEntity.Reaction> => { + const result: Array<MegalodonEntity.Reaction> = []; + for (const e of r) { + const i = result.findIndex((res) => res.name === e.type); + if (i >= 0) { + result[i].count++; + } else { + result.push({ + count: 1, + me: false, + name: e.type, + }); + } + } + return result; + }; + + noteToConversation = ( + n: Entity.Note, + host: string, + ): MegalodonEntity.Conversation => { + const accounts: Array<MegalodonEntity.Account> = [this.user(n.user)]; + if (n.reply) { + accounts.push(this.user(n.reply.user)); + } + return { + id: n.id, + accounts: accounts, + last_status: this.note(n, host), + unread: false, + }; + }; + + list = (l: Entity.List): MegalodonEntity.List => ({ + id: l.id, + title: l.name, + }); + + encodeNotificationType = ( + e: MegalodonEntity.NotificationType, + ): MisskeyEntity.NotificationType => { + switch (e) { + case NotificationType.Follow: + return MisskeyNotificationType.Follow; + case NotificationType.Mention: + return MisskeyNotificationType.Reply; + case NotificationType.Favourite: + case NotificationType.Reaction: + return MisskeyNotificationType.Reaction; + case NotificationType.Reblog: + return MisskeyNotificationType.Renote; + case NotificationType.Poll: + return MisskeyNotificationType.PollEnded; + case NotificationType.FollowRequest: + return MisskeyNotificationType.ReceiveFollowRequest; + default: + return e; + } + }; + + decodeNotificationType = ( + e: MisskeyEntity.NotificationType, + ): MegalodonEntity.NotificationType => { + switch (e) { + case MisskeyNotificationType.Follow: + return NotificationType.Follow; + case MisskeyNotificationType.Mention: + case MisskeyNotificationType.Reply: + return NotificationType.Mention; + case MisskeyNotificationType.Renote: + case MisskeyNotificationType.Quote: + return NotificationType.Reblog; + case MisskeyNotificationType.Reaction: + return NotificationType.Reaction; + case MisskeyNotificationType.PollEnded: + return NotificationType.Poll; + case MisskeyNotificationType.ReceiveFollowRequest: + return NotificationType.FollowRequest; + case MisskeyNotificationType.FollowRequestAccepted: + return NotificationType.Follow; + default: + return e; + } + }; + + announcement = (a: Entity.Announcement): MegalodonEntity.Announcement => ({ + id: a.id, + content: `<h1>${this.escapeMFM(a.title)}</h1>${this.escapeMFM(a.text)}`, + starts_at: null, + ends_at: null, + published: true, + all_day: false, + published_at: a.createdAt, + updated_at: a.updatedAt, + read: a.isRead, + mentions: [], + statuses: [], + tags: [], + emojis: [], + reactions: [], + }); + + notification = ( + n: Entity.Notification, + host: string, + ): MegalodonEntity.Notification => { + let notification = { + id: n.id, + account: n.user ? this.user(n.user) : this.modelOfAcct, + created_at: n.createdAt, + type: this.decodeNotificationType(n.type), + }; + if (n.note) { + notification = Object.assign(notification, { + status: this.note(n.note, host), + }); + if (notification.type === NotificationType.Poll) { + notification = Object.assign(notification, { + account: this.note(n.note, host).account, + }); + } + if (n.reaction) { + notification = Object.assign(notification, { + reaction: this.mapReactions(n.note.emojis, { [n.reaction]: 1 })[0], + }); + } + } + return notification; + }; + + stats = (s: Entity.Stats): MegalodonEntity.Stats => { + return { + user_count: s.usersCount, + status_count: s.notesCount, + domain_count: s.instances, + }; + }; + + meta = (m: Entity.Meta, s: Entity.Stats): MegalodonEntity.Instance => { + const wss = m.uri.replace(/^https:\/\//, "wss://"); + return { + uri: m.uri, + title: m.name, + description: m.description, + email: m.maintainerEmail, + version: m.version, + thumbnail: m.bannerUrl, + urls: { + streaming_api: `${wss}/streaming`, + }, + stats: this.stats(s), + languages: m.langs, + contact_account: null, + max_toot_chars: m.maxNoteTextLength, + registrations: !m.disableRegistration, + }; + }; + + hashtag = (h: Entity.Hashtag): MegalodonEntity.Tag => { + return { + name: h.tag, + url: h.tag, + history: null, + following: false, + }; + }; + } + + export const DEFAULT_SCOPE = [ + "read:account", + "write:account", + "read:blocks", + "write:blocks", + "read:drive", + "write:drive", + "read:favorites", + "write:favorites", + "read:following", + "write:following", + "read:mutes", + "write:mutes", + "write:notes", + "read:notifications", + "write:notifications", + "read:reactions", + "write:reactions", + "write:votes", + ]; + + /** + * Interface + */ + export interface Interface { + post<T = any>( + path: string, + params?: any, + headers?: { [key: string]: string }, + ): Promise<Response<T>>; + cancel(): void; + socket( + channel: + | "user" + | "localTimeline" + | "hybridTimeline" + | "globalTimeline" + | "conversation" + | "list", + listId?: string, + ): WebSocket; + } + + /** + * Misskey API client. + * + * Usign axios for request, you will handle promises. + */ + export class Client implements Interface { + private accessToken: string | null; + private baseUrl: string; + private userAgent: string; + private abortController: AbortController; + private proxyConfig: ProxyConfig | false = false; + private converter: Converter; + + /** + * @param baseUrl hostname or base URL + * @param accessToken access token from OAuth2 authorization + * @param userAgent UserAgent is specified in header on request. + * @param proxyConfig Proxy setting, or set false if don't use proxy. + * @param converter Converter instance. + */ + constructor( + baseUrl: string, + accessToken: string | null, + userAgent: string = DEFAULT_UA, + proxyConfig: ProxyConfig | false = false, + converter: Converter, + ) { + this.accessToken = accessToken; + this.baseUrl = baseUrl; + this.userAgent = userAgent; + this.proxyConfig = proxyConfig; + this.abortController = new AbortController(); + this.converter = converter; + axios.defaults.signal = this.abortController.signal; + } + + /** + * POST request to mastodon REST API. + * @param path relative path from baseUrl + * @param params Form data + * @param headers Request header object + */ + public async post<T>( + path: string, + params: any = {}, + headers: { [key: string]: string } = {}, + ): Promise<Response<T>> { + let options: AxiosRequestConfig = { + headers: headers, + maxContentLength: Infinity, + maxBodyLength: Infinity, + }; + if (this.proxyConfig) { + options = Object.assign(options, { + httpAgent: proxyAgent(this.proxyConfig), + httpsAgent: proxyAgent(this.proxyConfig), + }); + } + let bodyParams = params; + if (this.accessToken) { + if (params instanceof FormData) { + bodyParams.append("i", this.accessToken); + } else { + bodyParams = Object.assign(params, { + i: this.accessToken, + }); + } + } + + return axios + .post<T>(this.baseUrl + path, bodyParams, options) + .then((resp: AxiosResponse<T>) => { + const res: Response<T> = { + data: resp.data, + status: resp.status, + statusText: resp.statusText, + headers: resp.headers, + }; + return res; + }); + } + + /** + * Cancel all requests in this instance. + * @returns void + */ + public cancel(): void { + return this.abortController.abort(); + } + + /** + * Get connection and receive websocket connection for Misskey API. + * + * @param channel Channel name is user, localTimeline, hybridTimeline, globalTimeline, conversation or list. + * @param listId This parameter is required only list channel. + */ + public socket( + channel: + | "user" + | "localTimeline" + | "hybridTimeline" + | "globalTimeline" + | "conversation" + | "list", + listId?: string, + ): WebSocket { + if (!this.accessToken) { + throw new Error("accessToken is required"); + } + const url = `${this.baseUrl}/streaming`; + const streaming = new WebSocket( + url, + channel, + this.accessToken, + listId, + this.userAgent, + this.proxyConfig, + this.converter, + ); + process.nextTick(() => { + streaming.start(); + }); + return streaming; + } + } +} + +export default MisskeyAPI; diff --git a/packages/megalodon/src/misskey/entities/GetAll.ts b/packages/megalodon/src/misskey/entities/GetAll.ts new file mode 100644 index 0000000000..94ace2f184 --- /dev/null +++ b/packages/megalodon/src/misskey/entities/GetAll.ts @@ -0,0 +1,6 @@ +namespace MisskeyEntity { + export type GetAll = { + tutorial: number; + defaultNoteVisibility: "public" | "home" | "followers" | "specified"; + }; +} diff --git a/packages/megalodon/src/misskey/entities/announcement.ts b/packages/megalodon/src/misskey/entities/announcement.ts new file mode 100644 index 0000000000..7594ba7efc --- /dev/null +++ b/packages/megalodon/src/misskey/entities/announcement.ts @@ -0,0 +1,10 @@ +namespace MisskeyEntity { + export type Announcement = { + id: string; + createdAt: string; + updatedAt: string; + text: string; + title: string; + isRead?: boolean; + }; +} diff --git a/packages/megalodon/src/misskey/entities/app.ts b/packages/megalodon/src/misskey/entities/app.ts new file mode 100644 index 0000000000..5924060d81 --- /dev/null +++ b/packages/megalodon/src/misskey/entities/app.ts @@ -0,0 +1,9 @@ +namespace MisskeyEntity { + export type App = { + id: string; + name: string; + callbackUrl: string; + permission: Array<string>; + secret: string; + }; +} diff --git a/packages/megalodon/src/misskey/entities/blocking.ts b/packages/megalodon/src/misskey/entities/blocking.ts new file mode 100644 index 0000000000..3e56790a7b --- /dev/null +++ b/packages/megalodon/src/misskey/entities/blocking.ts @@ -0,0 +1,10 @@ +/// <reference path="userDetail.ts" /> + +namespace MisskeyEntity { + export type Blocking = { + id: string; + createdAt: string; + blockeeId: string; + blockee: UserDetail; + }; +} diff --git a/packages/megalodon/src/misskey/entities/createdNote.ts b/packages/megalodon/src/misskey/entities/createdNote.ts new file mode 100644 index 0000000000..235f7063fb --- /dev/null +++ b/packages/megalodon/src/misskey/entities/createdNote.ts @@ -0,0 +1,7 @@ +/// <reference path="note.ts" /> + +namespace MisskeyEntity { + export type CreatedNote = { + createdNote: Note; + }; +} diff --git a/packages/megalodon/src/misskey/entities/emoji.ts b/packages/megalodon/src/misskey/entities/emoji.ts new file mode 100644 index 0000000000..d320760e91 --- /dev/null +++ b/packages/megalodon/src/misskey/entities/emoji.ts @@ -0,0 +1,9 @@ +namespace MisskeyEntity { + export type Emoji = { + name: string; + host: string | null; + url: string; + aliases: Array<string>; + category: string; + }; +} diff --git a/packages/megalodon/src/misskey/entities/favorite.ts b/packages/megalodon/src/misskey/entities/favorite.ts new file mode 100644 index 0000000000..ba948f2e73 --- /dev/null +++ b/packages/megalodon/src/misskey/entities/favorite.ts @@ -0,0 +1,10 @@ +/// <reference path="note.ts" /> + +namespace MisskeyEntity { + export type Favorite = { + id: string; + createdAt: string; + noteId: string; + note: Note; + }; +} diff --git a/packages/megalodon/src/misskey/entities/field.ts b/packages/megalodon/src/misskey/entities/field.ts new file mode 100644 index 0000000000..8bbb2d7c42 --- /dev/null +++ b/packages/megalodon/src/misskey/entities/field.ts @@ -0,0 +1,7 @@ +namespace MisskeyEntity { + export type Field = { + name: string; + value: string; + verified?: string; + }; +} diff --git a/packages/megalodon/src/misskey/entities/file.ts b/packages/megalodon/src/misskey/entities/file.ts new file mode 100644 index 0000000000..e823dde1be --- /dev/null +++ b/packages/megalodon/src/misskey/entities/file.ts @@ -0,0 +1,20 @@ +namespace MisskeyEntity { + export type File = { + id: string; + createdAt: string; + name: string; + type: string; + md5: string; + size: number; + isSensitive: boolean; + properties: { + width: number; + height: number; + avgColor: string; + }; + url: string; + thumbnailUrl: string; + comment: string; + blurhash: string; + }; +} diff --git a/packages/megalodon/src/misskey/entities/followRequest.ts b/packages/megalodon/src/misskey/entities/followRequest.ts new file mode 100644 index 0000000000..60bd0e0abc --- /dev/null +++ b/packages/megalodon/src/misskey/entities/followRequest.ts @@ -0,0 +1,9 @@ +/// <reference path="user.ts" /> + +namespace MisskeyEntity { + export type FollowRequest = { + id: string; + follower: User; + followee: User; + }; +} diff --git a/packages/megalodon/src/misskey/entities/follower.ts b/packages/megalodon/src/misskey/entities/follower.ts new file mode 100644 index 0000000000..34ae825519 --- /dev/null +++ b/packages/megalodon/src/misskey/entities/follower.ts @@ -0,0 +1,11 @@ +/// <reference path="userDetail.ts" /> + +namespace MisskeyEntity { + export type Follower = { + id: string; + createdAt: string; + followeeId: string; + followerId: string; + follower: UserDetail; + }; +} diff --git a/packages/megalodon/src/misskey/entities/following.ts b/packages/megalodon/src/misskey/entities/following.ts new file mode 100644 index 0000000000..6cbc8f1c39 --- /dev/null +++ b/packages/megalodon/src/misskey/entities/following.ts @@ -0,0 +1,11 @@ +/// <reference path="userDetail.ts" /> + +namespace MisskeyEntity { + export type Following = { + id: string; + createdAt: string; + followeeId: string; + followerId: string; + followee: UserDetail; + }; +} diff --git a/packages/megalodon/src/misskey/entities/hashtag.ts b/packages/megalodon/src/misskey/entities/hashtag.ts new file mode 100644 index 0000000000..3ec4d6675b --- /dev/null +++ b/packages/megalodon/src/misskey/entities/hashtag.ts @@ -0,0 +1,7 @@ +namespace MisskeyEntity { + export type Hashtag = { + tag: string; + chart: Array<number>; + usersCount: number; + }; +} diff --git a/packages/megalodon/src/misskey/entities/list.ts b/packages/megalodon/src/misskey/entities/list.ts new file mode 100644 index 0000000000..60706592a4 --- /dev/null +++ b/packages/megalodon/src/misskey/entities/list.ts @@ -0,0 +1,8 @@ +namespace MisskeyEntity { + export type List = { + id: string; + createdAt: string; + name: string; + userIds: Array<string>; + }; +} diff --git a/packages/megalodon/src/misskey/entities/meta.ts b/packages/megalodon/src/misskey/entities/meta.ts new file mode 100644 index 0000000000..97827fe8fd --- /dev/null +++ b/packages/megalodon/src/misskey/entities/meta.ts @@ -0,0 +1,18 @@ +/// <reference path="emoji.ts" /> + +namespace MisskeyEntity { + export type Meta = { + maintainerName: string; + maintainerEmail: string; + name: string; + version: string; + uri: string; + description: string; + langs: Array<string>; + disableRegistration: boolean; + disableLocalTimeline: boolean; + bannerUrl: string; + maxNoteTextLength: 3000; + emojis: Array<Emoji>; + }; +} diff --git a/packages/megalodon/src/misskey/entities/mute.ts b/packages/megalodon/src/misskey/entities/mute.ts new file mode 100644 index 0000000000..7975b3d315 --- /dev/null +++ b/packages/megalodon/src/misskey/entities/mute.ts @@ -0,0 +1,10 @@ +/// <reference path="userDetail.ts" /> + +namespace MisskeyEntity { + export type Mute = { + id: string; + createdAt: string; + muteeId: string; + mutee: UserDetail; + }; +} diff --git a/packages/megalodon/src/misskey/entities/note.ts b/packages/megalodon/src/misskey/entities/note.ts new file mode 100644 index 0000000000..64a0a50785 --- /dev/null +++ b/packages/megalodon/src/misskey/entities/note.ts @@ -0,0 +1,32 @@ +/// <reference path="user.ts" /> +/// <reference path="emoji.ts" /> +/// <reference path="file.ts" /> +/// <reference path="poll.ts" /> + +namespace MisskeyEntity { + export type Note = { + id: string; + createdAt: string; + userId: string; + user: User; + text: string | null; + cw: string | null; + visibility: "public" | "home" | "followers" | "specified"; + renoteCount: number; + repliesCount: number; + reactions: { [key: string]: number }; + emojis: Array<Emoji>; + fileIds: Array<string>; + files: Array<File>; + replyId: string | null; + renoteId: string | null; + uri?: string; + reply?: Note; + renote?: Note; + viaMobile?: boolean; + tags?: Array<string>; + poll?: Poll; + mentions?: Array<string>; + myReaction?: string; + }; +} diff --git a/packages/megalodon/src/misskey/entities/notification.ts b/packages/megalodon/src/misskey/entities/notification.ts new file mode 100644 index 0000000000..7ecb911537 --- /dev/null +++ b/packages/megalodon/src/misskey/entities/notification.ts @@ -0,0 +1,17 @@ +/// <reference path="user.ts" /> +/// <reference path="note.ts" /> + +namespace MisskeyEntity { + export type Notification = { + id: string; + createdAt: string; + // https://github.com/syuilo/misskey/blob/056942391aee135eb6c77aaa63f6ed5741d701a6/src/models/entities/notification.ts#L50-L62 + type: NotificationType; + userId: string; + user: User; + note?: Note; + reaction?: string; + }; + + export type NotificationType = string; +} diff --git a/packages/megalodon/src/misskey/entities/poll.ts b/packages/megalodon/src/misskey/entities/poll.ts new file mode 100644 index 0000000000..9f6bfa40d2 --- /dev/null +++ b/packages/megalodon/src/misskey/entities/poll.ts @@ -0,0 +1,13 @@ +namespace MisskeyEntity { + export type Choice = { + text: string; + votes: number; + isVoted: boolean; + }; + + export type Poll = { + multiple: boolean; + expiresAt: string; + choices: Array<Choice>; + }; +} diff --git a/packages/megalodon/src/misskey/entities/reaction.ts b/packages/megalodon/src/misskey/entities/reaction.ts new file mode 100644 index 0000000000..b35a25bfb5 --- /dev/null +++ b/packages/megalodon/src/misskey/entities/reaction.ts @@ -0,0 +1,11 @@ +/// <reference path="user.ts" /> + +namespace MisskeyEntity { + export type Reaction = { + id: string; + createdAt: string; + user: User; + url?: string; + type: string; + }; +} diff --git a/packages/megalodon/src/misskey/entities/relation.ts b/packages/megalodon/src/misskey/entities/relation.ts new file mode 100644 index 0000000000..6db4a1b167 --- /dev/null +++ b/packages/megalodon/src/misskey/entities/relation.ts @@ -0,0 +1,12 @@ +namespace MisskeyEntity { + export type Relation = { + id: string; + isFollowing: boolean; + hasPendingFollowRequestFromYou: boolean; + hasPendingFollowRequestToYou: boolean; + isFollowed: boolean; + isBlocking: boolean; + isBlocked: boolean; + isMuted: boolean; + }; +} diff --git a/packages/megalodon/src/misskey/entities/session.ts b/packages/megalodon/src/misskey/entities/session.ts new file mode 100644 index 0000000000..572333ff0b --- /dev/null +++ b/packages/megalodon/src/misskey/entities/session.ts @@ -0,0 +1,6 @@ +namespace MisskeyEntity { + export type Session = { + token: string; + url: string; + }; +} diff --git a/packages/megalodon/src/misskey/entities/state.ts b/packages/megalodon/src/misskey/entities/state.ts new file mode 100644 index 0000000000..62d60ce282 --- /dev/null +++ b/packages/megalodon/src/misskey/entities/state.ts @@ -0,0 +1,7 @@ +namespace MisskeyEntity { + export type State = { + isFavorited: boolean; + isMutedThread: boolean; + isWatching: boolean; + }; +} diff --git a/packages/megalodon/src/misskey/entities/stats.ts b/packages/megalodon/src/misskey/entities/stats.ts new file mode 100644 index 0000000000..9832a0ad8a --- /dev/null +++ b/packages/megalodon/src/misskey/entities/stats.ts @@ -0,0 +1,9 @@ +namespace MisskeyEntity { + export type Stats = { + notesCount: number; + originalNotesCount: number; + usersCount: number; + originalUsersCount: number; + instances: number; + }; +} diff --git a/packages/megalodon/src/misskey/entities/user.ts b/packages/megalodon/src/misskey/entities/user.ts new file mode 100644 index 0000000000..96610f6e6d --- /dev/null +++ b/packages/megalodon/src/misskey/entities/user.ts @@ -0,0 +1,13 @@ +/// <reference path="emoji.ts" /> + +namespace MisskeyEntity { + export type User = { + id: string; + name: string; + username: string; + host: string | null; + avatarUrl: string; + avatarColor: string; + emojis: Array<Emoji>; + }; +} diff --git a/packages/megalodon/src/misskey/entities/userDetail.ts b/packages/megalodon/src/misskey/entities/userDetail.ts new file mode 100644 index 0000000000..0f5bd5f644 --- /dev/null +++ b/packages/megalodon/src/misskey/entities/userDetail.ts @@ -0,0 +1,34 @@ +/// <reference path="emoji.ts" /> +/// <reference path="field.ts" /> +/// <reference path="note.ts" /> + +namespace MisskeyEntity { + export type UserDetail = { + id: string; + name: string; + username: string; + host: string | null; + avatarUrl: string; + avatarColor: string; + isAdmin: boolean; + isModerator: boolean; + isBot: boolean; + isCat: boolean; + emojis: Array<Emoji>; + createdAt: string; + bannerUrl: string; + bannerColor: string; + isLocked: boolean; + isSilenced: boolean; + isSuspended: boolean; + description: string; + followersCount: number; + followingCount: number; + notesCount: number; + avatarId: string; + bannerId: string; + pinnedNoteIds?: Array<string>; + pinnedNotes?: Array<Note>; + fields: Array<Field>; + }; +} diff --git a/packages/megalodon/src/misskey/entities/userDetailMe.ts b/packages/megalodon/src/misskey/entities/userDetailMe.ts new file mode 100644 index 0000000000..272e65ffa4 --- /dev/null +++ b/packages/megalodon/src/misskey/entities/userDetailMe.ts @@ -0,0 +1,36 @@ +/// <reference path="emoji.ts" /> +/// <reference path="field.ts" /> +/// <reference path="note.ts" /> + +namespace MisskeyEntity { + export type UserDetailMe = { + id: string; + name: string; + username: string; + host: string | null; + avatarUrl: string; + avatarColor: string; + isAdmin: boolean; + isModerator: boolean; + isBot: boolean; + isCat: boolean; + emojis: Array<Emoji>; + createdAt: string; + bannerUrl: string; + bannerColor: string; + isLocked: boolean; + isSilenced: boolean; + isSuspended: boolean; + description: string; + followersCount: number; + followingCount: number; + notesCount: number; + avatarId: string; + bannerId: string; + pinnedNoteIds?: Array<string>; + pinnedNotes?: Array<Note>; + fields: Array<Field>; + alwaysMarkNsfw: boolean; + lang: string | null; + }; +} diff --git a/packages/megalodon/src/misskey/entities/userkey.ts b/packages/megalodon/src/misskey/entities/userkey.ts new file mode 100644 index 0000000000..921af65536 --- /dev/null +++ b/packages/megalodon/src/misskey/entities/userkey.ts @@ -0,0 +1,8 @@ +/// <reference path="user.ts" /> + +namespace MisskeyEntity { + export type UserKey = { + accessToken: string; + user: User; + }; +} diff --git a/packages/megalodon/src/misskey/entity.ts b/packages/megalodon/src/misskey/entity.ts new file mode 100644 index 0000000000..72a80f9d96 --- /dev/null +++ b/packages/megalodon/src/misskey/entity.ts @@ -0,0 +1,28 @@ +/// <reference path="entities/app.ts" /> +/// <reference path="entities/announcement.ts" /> +/// <reference path="entities/blocking.ts" /> +/// <reference path="entities/createdNote.ts" /> +/// <reference path="entities/emoji.ts" /> +/// <reference path="entities/favorite.ts" /> +/// <reference path="entities/field.ts" /> +/// <reference path="entities/file.ts" /> +/// <reference path="entities/follower.ts" /> +/// <reference path="entities/following.ts" /> +/// <reference path="entities/followRequest.ts" /> +/// <reference path="entities/hashtag.ts" /> +/// <reference path="entities/list.ts" /> +/// <reference path="entities/meta.ts" /> +/// <reference path="entities/mute.ts" /> +/// <reference path="entities/note.ts" /> +/// <reference path="entities/notification.ts" /> +/// <reference path="entities/poll.ts" /> +/// <reference path="entities/reaction.ts" /> +/// <reference path="entities/relation.ts" /> +/// <reference path="entities/user.ts" /> +/// <reference path="entities/userDetail.ts" /> +/// <reference path="entities/userDetailMe.ts" /> +/// <reference path="entities/userkey.ts" /> +/// <reference path="entities/session.ts" /> +/// <reference path="entities/stats.ts" /> + +export default MisskeyEntity; diff --git a/packages/megalodon/src/misskey/notification.ts b/packages/megalodon/src/misskey/notification.ts new file mode 100644 index 0000000000..eb7c2d23d8 --- /dev/null +++ b/packages/megalodon/src/misskey/notification.ts @@ -0,0 +1,18 @@ +import MisskeyEntity from "./entity"; + +namespace MisskeyNotificationType { + export const Follow: MisskeyEntity.NotificationType = "follow"; + export const Mention: MisskeyEntity.NotificationType = "mention"; + export const Reply: MisskeyEntity.NotificationType = "reply"; + export const Renote: MisskeyEntity.NotificationType = "renote"; + export const Quote: MisskeyEntity.NotificationType = "quote"; + export const Reaction: MisskeyEntity.NotificationType = "favourite"; + export const PollEnded: MisskeyEntity.NotificationType = "pollEnded"; + export const ReceiveFollowRequest: MisskeyEntity.NotificationType = + "receiveFollowRequest"; + export const FollowRequestAccepted: MisskeyEntity.NotificationType = + "followRequestAccepted"; + export const GroupInvited: MisskeyEntity.NotificationType = "groupInvited"; +} + +export default MisskeyNotificationType; diff --git a/packages/megalodon/src/misskey/web_socket.ts b/packages/megalodon/src/misskey/web_socket.ts new file mode 100644 index 0000000000..677f2049d3 --- /dev/null +++ b/packages/megalodon/src/misskey/web_socket.ts @@ -0,0 +1,458 @@ +import WS from "ws"; +import dayjs, { Dayjs } from "dayjs"; +import { v4 as uuid } from "uuid"; +import { EventEmitter } from "events"; +import { WebSocketInterface } from "../megalodon"; +import proxyAgent, { ProxyConfig } from "../proxy_config"; +import MisskeyAPI from "./api_client"; + +/** + * WebSocket + * Misskey is not support http streaming. It supports websocket instead of streaming. + * So this class connect to Misskey server with WebSocket. + */ +export default class WebSocket + extends EventEmitter + implements WebSocketInterface +{ + public url: string; + public channel: + | "user" + | "localTimeline" + | "hybridTimeline" + | "globalTimeline" + | "conversation" + | "list"; + public parser: any; + public headers: { [key: string]: string }; + public proxyConfig: ProxyConfig | false = false; + public listId: string | null = null; + private _converter: MisskeyAPI.Converter; + private _accessToken: string; + private _reconnectInterval: number; + private _reconnectMaxAttempts: number; + private _reconnectCurrentAttempts: number; + private _connectionClosed: boolean; + private _client: WS | null = null; + private _channelID: string; + private _pongReceivedTimestamp: Dayjs; + private _heartbeatInterval = 60000; + private _pongWaiting = false; + + /** + * @param url Full url of websocket: e.g. wss://firefish.io/streaming + * @param channel Channel name is user, localTimeline, hybridTimeline, globalTimeline, conversation or list. + * @param accessToken The access token. + * @param listId This parameter is required when you specify list as channel. + */ + constructor( + url: string, + channel: + | "user" + | "localTimeline" + | "hybridTimeline" + | "globalTimeline" + | "conversation" + | "list", + accessToken: string, + listId: string | undefined, + userAgent: string, + proxyConfig: ProxyConfig | false = false, + converter: MisskeyAPI.Converter, + ) { + super(); + this.url = url; + this.parser = new Parser(); + this.channel = channel; + this.headers = { + "User-Agent": userAgent, + }; + if (listId === undefined) { + this.listId = null; + } else { + this.listId = listId; + } + this.proxyConfig = proxyConfig; + this._accessToken = accessToken; + this._reconnectInterval = 10000; + this._reconnectMaxAttempts = Infinity; + this._reconnectCurrentAttempts = 0; + this._connectionClosed = false; + this._channelID = uuid(); + this._pongReceivedTimestamp = dayjs(); + this._converter = converter; + } + + /** + * Start websocket connection. + */ + public start() { + this._connectionClosed = false; + this._resetRetryParams(); + this._startWebSocketConnection(); + } + + private baseUrlToHost(baseUrl: string): string { + return baseUrl.replace("https://", ""); + } + + /** + * Reset connection and start new websocket connection. + */ + private _startWebSocketConnection() { + this._resetConnection(); + this._setupParser(); + this._client = this._connect(); + this._bindSocket(this._client); + } + + /** + * Stop current connection. + */ + public stop() { + this._connectionClosed = true; + this._resetConnection(); + this._resetRetryParams(); + } + + /** + * Clean up current connection, and listeners. + */ + private _resetConnection() { + if (this._client) { + this._client.close(1000); + this._client.removeAllListeners(); + this._client = null; + } + + if (this.parser) { + this.parser.removeAllListeners(); + } + } + + /** + * Resets the parameters used in reconnect. + */ + private _resetRetryParams() { + this._reconnectCurrentAttempts = 0; + } + + /** + * Connect to the endpoint. + */ + private _connect(): WS { + let options: WS.ClientOptions = { + headers: this.headers, + }; + if (this.proxyConfig) { + options = Object.assign(options, { + agent: proxyAgent(this.proxyConfig), + }); + } + const cli: WS = new WS(`${this.url}?i=${this._accessToken}`, options); + return cli; + } + + /** + * Connect specified channels in websocket. + */ + private _channel() { + if (!this._client) { + return; + } + switch (this.channel) { + case "conversation": + this._client.send( + JSON.stringify({ + type: "connect", + body: { + channel: "main", + id: this._channelID, + }, + }), + ); + break; + case "user": + this._client.send( + JSON.stringify({ + type: "connect", + body: { + channel: "main", + id: this._channelID, + }, + }), + ); + this._client.send( + JSON.stringify({ + type: "connect", + body: { + channel: "homeTimeline", + id: this._channelID, + }, + }), + ); + break; + case "list": + this._client.send( + JSON.stringify({ + type: "connect", + body: { + channel: "userList", + id: this._channelID, + params: { + listId: this.listId, + }, + }, + }), + ); + break; + default: + this._client.send( + JSON.stringify({ + type: "connect", + body: { + channel: this.channel, + id: this._channelID, + }, + }), + ); + break; + } + } + + /** + * Reconnects to the same endpoint. + */ + + private _reconnect() { + setTimeout(() => { + // Skip reconnect when client is connecting. + // https://github.com/websockets/ws/blob/7.2.1/lib/websocket.js#L365 + if (this._client && this._client.readyState === WS.CONNECTING) { + return; + } + + if (this._reconnectCurrentAttempts < this._reconnectMaxAttempts) { + this._reconnectCurrentAttempts++; + this._clearBinding(); + if (this._client) { + // In reconnect, we want to close the connection immediately, + // because recoonect is necessary when some problems occur. + this._client.terminate(); + } + // Call connect methods + console.log("Reconnecting"); + this._client = this._connect(); + this._bindSocket(this._client); + } + }, this._reconnectInterval); + } + + /** + * Clear binding event for websocket client. + */ + private _clearBinding() { + if (this._client) { + this._client.removeAllListeners("close"); + this._client.removeAllListeners("pong"); + this._client.removeAllListeners("open"); + this._client.removeAllListeners("message"); + this._client.removeAllListeners("error"); + } + } + + /** + * Bind event for web socket client. + * @param client A WebSocket instance. + */ + private _bindSocket(client: WS) { + client.on("close", (code: number, _reason: Buffer) => { + if (code === 1000) { + this.emit("close", {}); + } else { + console.log(`Closed connection with ${code}`); + if (!this._connectionClosed) { + this._reconnect(); + } + } + }); + client.on("pong", () => { + this._pongWaiting = false; + this.emit("pong", {}); + this._pongReceivedTimestamp = dayjs(); + // It is required to anonymous function since get this scope in checkAlive. + setTimeout( + () => this._checkAlive(this._pongReceivedTimestamp), + this._heartbeatInterval, + ); + }); + client.on("open", () => { + this.emit("connect", {}); + this._channel(); + // Call first ping event. + setTimeout(() => { + client.ping(""); + }, 10000); + }); + client.on("message", (data: WS.Data, isBinary: boolean) => { + this.parser.parse(data, isBinary, this._channelID); + }); + client.on("error", (err: Error) => { + this.emit("error", err); + }); + } + + /** + * Set up parser when receive message. + */ + private _setupParser() { + this.parser.on("update", (note: MisskeyAPI.Entity.Note) => { + this.emit( + "update", + this._converter.note(note, this.baseUrlToHost(this.url)), + ); + }); + this.parser.on( + "notification", + (notification: MisskeyAPI.Entity.Notification) => { + this.emit( + "notification", + this._converter.notification( + notification, + this.baseUrlToHost(this.url), + ), + ); + }, + ); + this.parser.on("conversation", (note: MisskeyAPI.Entity.Note) => { + this.emit( + "conversation", + this._converter.noteToConversation(note, this.baseUrlToHost(this.url)), + ); + }); + this.parser.on("error", (err: Error) => { + this.emit("parser-error", err); + }); + } + + /** + * Call ping and wait to pong. + */ + private _checkAlive(timestamp: Dayjs) { + const now: Dayjs = dayjs(); + // Block multiple calling, if multiple pong event occur. + // It the duration is less than interval, through ping. + if ( + now.diff(timestamp) > this._heartbeatInterval - 1000 && + !this._connectionClosed + ) { + // Skip ping when client is connecting. + // https://github.com/websockets/ws/blob/7.2.1/lib/websocket.js#L289 + if (this._client && this._client.readyState !== WS.CONNECTING) { + this._pongWaiting = true; + this._client.ping(""); + setTimeout(() => { + if (this._pongWaiting) { + this._pongWaiting = false; + this._reconnect(); + } + }, 10000); + } + } + } +} + +/** + * Parser + * This class provides parser for websocket message. + */ +export class Parser extends EventEmitter { + /** + * @param message Message body of websocket. + * @param channelID Parse only messages which has same channelID. + */ + public parse(data: WS.Data, isBinary: boolean, channelID: string) { + const message = isBinary ? data : data.toString(); + if (typeof message !== "string") { + this.emit("heartbeat", {}); + return; + } + + if (message === "") { + this.emit("heartbeat", {}); + return; + } + + let obj: { + type: string; + body: { + id: string; + type: string; + body: any; + }; + }; + let body: { + id: string; + type: string; + body: any; + }; + + try { + obj = JSON.parse(message); + if (obj.type !== "channel") { + return; + } + if (!obj.body) { + return; + } + body = obj.body; + if (body.id !== channelID) { + return; + } + } catch (err) { + this.emit( + "error", + new Error( + `Error parsing websocket reply: ${message}, error message: ${err}`, + ), + ); + return; + } + + switch (body.type) { + case "note": + this.emit("update", body.body as MisskeyAPI.Entity.Note); + break; + case "notification": + this.emit("notification", body.body as MisskeyAPI.Entity.Notification); + break; + case "mention": { + const note = body.body as MisskeyAPI.Entity.Note; + if (note.visibility === "specified") { + this.emit("conversation", note); + } + break; + } + // When renote and followed event, the same notification will be received. + case "renote": + case "followed": + case "follow": + case "unfollow": + case "receiveFollowRequest": + case "meUpdated": + case "readAllNotifications": + case "readAllUnreadSpecifiedNotes": + case "readAllAntennas": + case "readAllUnreadMentions": + case "unreadNotification": + // Ignore these events + break; + default: + this.emit( + "error", + new Error(`Unknown event has received: ${JSON.stringify(body)}`), + ); + break; + } + } +} diff --git a/packages/megalodon/src/notification.ts b/packages/megalodon/src/notification.ts new file mode 100644 index 0000000000..84cd23e40d --- /dev/null +++ b/packages/megalodon/src/notification.ts @@ -0,0 +1,14 @@ +import Entity from "./entity"; + +namespace NotificationType { + export const Follow: Entity.NotificationType = "follow"; + export const Favourite: Entity.NotificationType = "favourite"; + export const Reblog: Entity.NotificationType = "reblog"; + export const Mention: Entity.NotificationType = "mention"; + export const Reaction: Entity.NotificationType = "reaction"; + export const FollowRequest: Entity.NotificationType = "follow_request"; + export const Status: Entity.NotificationType = "status"; + export const Poll: Entity.NotificationType = "poll"; +} + +export default NotificationType; diff --git a/packages/megalodon/src/oauth.ts b/packages/megalodon/src/oauth.ts new file mode 100644 index 0000000000..f0df721f0a --- /dev/null +++ b/packages/megalodon/src/oauth.ts @@ -0,0 +1,123 @@ +/** + * OAuth + * Response data when oauth request. + **/ +namespace OAuth { + export type AppDataFromServer = { + id: string; + name: string; + website: string | null; + redirect_uri: string; + client_id: string; + client_secret: string; + }; + + export type TokenDataFromServer = { + access_token: string; + token_type: string; + scope: string; + created_at: number; + expires_in: number | null; + refresh_token: string | null; + }; + + export class AppData { + public url: string | null; + public session_token: string | null; + constructor( + public id: string, + public name: string, + public website: string | null, + public redirect_uri: string, + public client_id: string, + public client_secret: string, + ) { + this.url = null; + this.session_token = null; + } + + /** + * Serialize raw application data from server + * @param raw from server + */ + static from(raw: AppDataFromServer) { + return new this( + raw.id, + raw.name, + raw.website, + raw.redirect_uri, + raw.client_id, + raw.client_secret, + ); + } + + get redirectUri() { + return this.redirect_uri; + } + get clientId() { + return this.client_id; + } + get clientSecret() { + return this.client_secret; + } + } + + export class TokenData { + public _scope: string; + constructor( + public access_token: string, + public token_type: string, + scope: string, + public created_at: number, + public expires_in: number | null = null, + public refresh_token: string | null = null, + ) { + this._scope = scope; + } + + /** + * Serialize raw token data from server + * @param raw from server + */ + static from(raw: TokenDataFromServer) { + return new this( + raw.access_token, + raw.token_type, + raw.scope, + raw.created_at, + raw.expires_in, + raw.refresh_token, + ); + } + + /** + * OAuth Aceess Token + */ + get accessToken() { + return this.access_token; + } + get tokenType() { + return this.token_type; + } + get scope() { + return this._scope; + } + /** + * Application ID + */ + get createdAt() { + return this.created_at; + } + get expiresIn() { + return this.expires_in; + } + /** + * OAuth Refresh Token + */ + get refreshToken() { + return this.refresh_token; + } + } +} + +export default OAuth; diff --git a/packages/megalodon/src/parser.ts b/packages/megalodon/src/parser.ts new file mode 100644 index 0000000000..2ddf2ac2e6 --- /dev/null +++ b/packages/megalodon/src/parser.ts @@ -0,0 +1,94 @@ +import { EventEmitter } from "events"; +import Entity from "./entity"; + +/** + * Parser + * Parse response data in streaming. + **/ +export class Parser extends EventEmitter { + private message: string; + + constructor() { + super(); + this.message = ""; + } + + public parse(chunk: string) { + // skip heartbeats + if (chunk === ":thump\n") { + this.emit("heartbeat", {}); + return; + } + + this.message += chunk; + chunk = this.message; + + const size: number = chunk.length; + let start = 0; + let offset = 0; + let curr: string | undefined; + let next: string | undefined; + + while (offset < size) { + curr = chunk[offset]; + next = chunk[offset + 1]; + + if (curr === "\n" && next === "\n") { + const piece: string = chunk.slice(start, offset); + + offset += 2; + start = offset; + + if (!piece.length) continue; // empty object + + const root: Array<string> = piece.split("\n"); + + // should never happen, as long as mastodon doesn't change API messages + if (root.length !== 2) continue; + + // remove event and data markers + const event: string = root[0].substr(7); + const data: string = root[1].substr(6); + + let jsonObj = {}; + try { + jsonObj = JSON.parse(data); + } catch (err) { + // delete event does not have json object + if (event !== "delete") { + this.emit( + "error", + new Error( + `Error parsing API reply: '${piece}', error message: '${err}'`, + ), + ); + continue; + } + } + switch (event) { + case "update": + this.emit("update", jsonObj as Entity.Status); + break; + case "notification": + this.emit("notification", jsonObj as Entity.Notification); + break; + case "conversation": + this.emit("conversation", jsonObj as Entity.Conversation); + break; + case "delete": + // When delete, data is an ID of the deleted status + this.emit("delete", data); + break; + default: + this.emit( + "error", + new Error(`Unknown event has received: ${event}`), + ); + continue; + } + } + offset++; + } + this.message = chunk.slice(start, size); + } +} diff --git a/packages/megalodon/src/proxy_config.ts b/packages/megalodon/src/proxy_config.ts new file mode 100644 index 0000000000..fadbcf084e --- /dev/null +++ b/packages/megalodon/src/proxy_config.ts @@ -0,0 +1,92 @@ +import { HttpsProxyAgent, HttpsProxyAgentOptions } from "https-proxy-agent"; +import { SocksProxyAgent, SocksProxyAgentOptions } from "socks-proxy-agent"; + +export type ProxyConfig = { + host: string; + port: number; + auth?: { + username: string; + password: string; + }; + protocol: + | "http" + | "https" + | "socks4" + | "socks4a" + | "socks5" + | "socks5h" + | "socks"; +}; + +class ProxyProtocolError extends Error {} + +const proxyAgent = ( + proxyConfig: ProxyConfig, +): HttpsProxyAgent | SocksProxyAgent => { + switch (proxyConfig.protocol) { + case "http": { + let options: HttpsProxyAgentOptions = { + host: proxyConfig.host, + port: proxyConfig.port, + secureProxy: false, + }; + if (proxyConfig.auth) { + options = Object.assign(options, { + auth: `${proxyConfig.auth.username}:${proxyConfig.auth.password}`, + }); + } + const httpsAgent = new HttpsProxyAgent(options); + return httpsAgent; + } + case "https": { + let options: HttpsProxyAgentOptions = { + host: proxyConfig.host, + port: proxyConfig.port, + secureProxy: true, + }; + if (proxyConfig.auth) { + options = Object.assign(options, { + auth: `${proxyConfig.auth.username}:${proxyConfig.auth.password}`, + }); + } + const httpsAgent = new HttpsProxyAgent(options); + return httpsAgent; + } + case "socks4": + case "socks4a": { + let options: SocksProxyAgentOptions = { + type: 4, + hostname: proxyConfig.host, + port: proxyConfig.port, + }; + if (proxyConfig.auth) { + options = Object.assign(options, { + userId: proxyConfig.auth.username, + password: proxyConfig.auth.password, + }); + } + const socksAgent = new SocksProxyAgent(options); + return socksAgent; + } + case "socks5": + case "socks5h": + case "socks": { + let options: SocksProxyAgentOptions = { + type: 5, + hostname: proxyConfig.host, + port: proxyConfig.port, + }; + if (proxyConfig.auth) { + options = Object.assign(options, { + userId: proxyConfig.auth.username, + password: proxyConfig.auth.password, + }); + } + const socksAgent = new SocksProxyAgent(options); + return socksAgent; + } + default: + throw new ProxyProtocolError("protocol is not accepted"); + } +}; +export default proxyAgent; diff --git a/packages/megalodon/src/response.ts b/packages/megalodon/src/response.ts new file mode 100644 index 0000000000..13fd8ab574 --- /dev/null +++ b/packages/megalodon/src/response.ts @@ -0,0 +1,8 @@ +type Response<T = any> = { + data: T; + status: number; + statusText: string; + headers: any; +}; + +export default Response; diff --git a/packages/megalodon/test/integration/megalodon.spec.ts b/packages/megalodon/test/integration/megalodon.spec.ts new file mode 100644 index 0000000000..8964535509 --- /dev/null +++ b/packages/megalodon/test/integration/megalodon.spec.ts @@ -0,0 +1,27 @@ +import { detector } from '../../src/index' + +describe('detector', () => { + describe('mastodon', () => { + const url = 'https://fedibird.com' + it('should be mastodon', async () => { + const mastodon = await detector(url) + expect(mastodon).toEqual('mastodon') + }) + }) + + describe('pleroma', () => { + const url = 'https://pleroma.soykaf.com' + it('should be pleroma', async () => { + const pleroma = await detector(url) + expect(pleroma).toEqual('pleroma') + }) + }) + + describe('misskey', () => { + const url = 'https://misskey.io' + it('should be misskey', async () => { + const misskey = await detector(url) + expect(misskey).toEqual('misskey') + }) + }) +}) diff --git a/packages/megalodon/test/integration/misskey.spec.ts b/packages/megalodon/test/integration/misskey.spec.ts new file mode 100644 index 0000000000..0ec1288428 --- /dev/null +++ b/packages/megalodon/test/integration/misskey.spec.ts @@ -0,0 +1,204 @@ +import MisskeyEntity from '@/misskey/entity' +import MisskeyNotificationType from '@/misskey/notification' +import Misskey from '@/misskey' +import MegalodonNotificationType from '@/notification' +import axios, { AxiosResponse } from 'axios' + +jest.mock('axios') + +const user: MisskeyEntity.User = { + id: '1', + name: 'test_user', + username: 'TestUser', + host: 'misskey.io', + avatarUrl: 'https://example.com/icon.png', + avatarColor: '#000000', + emojis: [] +} + +const note: MisskeyEntity.Note = { + id: '1', + createdAt: '2021-02-01T01:49:29', + userId: '1', + user: user, + text: 'hogehoge', + cw: null, + visibility: 'public', + renoteCount: 0, + repliesCount: 0, + reactions: {}, + emojis: [], + fileIds: [], + files: [], + replyId: null, + renoteId: null +} + +const follow: MisskeyEntity.Notification = { + id: '1', + createdAt: '2021-02-01T01:49:29', + userId: user.id, + user: user, + type: MisskeyNotificationType.Follow +} + +const mention: MisskeyEntity.Notification = { + id: '1', + createdAt: '2021-02-01T01:49:29', + userId: user.id, + user: user, + type: MisskeyNotificationType.Mention, + note: note +} + +const reply: MisskeyEntity.Notification = { + id: '1', + createdAt: '2021-02-01T01:49:29', + userId: user.id, + user: user, + type: MisskeyNotificationType.Reply, + note: note +} + +const renote: MisskeyEntity.Notification = { + id: '1', + createdAt: '2021-02-01T01:49:29', + userId: user.id, + user: user, + type: MisskeyNotificationType.Renote, + note: note +} + +const quote: MisskeyEntity.Notification = { + id: '1', + createdAt: '2021-02-01T01:49:29', + userId: user.id, + user: user, + type: MisskeyNotificationType.Quote, + note: note +} + +const reaction: MisskeyEntity.Notification = { + id: '1', + createdAt: '2021-02-01T01:49:29', + userId: user.id, + user: user, + type: MisskeyNotificationType.Reaction, + note: note, + reaction: '♥' +} + +const pollVote: MisskeyEntity.Notification = { + id: '1', + createdAt: '2021-02-01T01:49:29', + userId: user.id, + user: user, + type: MisskeyNotificationType.PollEnded, + note: note +} + +const receiveFollowRequest: MisskeyEntity.Notification = { + id: '1', + createdAt: '2021-02-01T01:49:29', + userId: user.id, + user: user, + type: MisskeyNotificationType.ReceiveFollowRequest +} + +const followRequestAccepted: MisskeyEntity.Notification = { + id: '1', + createdAt: '2021-02-01T01:49:29', + userId: user.id, + user: user, + type: MisskeyNotificationType.FollowRequestAccepted +} + +const groupInvited: MisskeyEntity.Notification = { + id: '1', + createdAt: '2021-02-01T01:49:29', + userId: user.id, + user: user, + type: MisskeyNotificationType.GroupInvited +} + +;(axios.CancelToken.source as any).mockImplementation(() => { + return { + token: { + throwIfRequested: () => {}, + promise: { + then: () => {}, + catch: () => {} + } + } + } +}) + +describe('getNotifications', () => { + const client = new Misskey('http://localhost', 'sample token') + const cases: Array<{ event: MisskeyEntity.Notification; expected: Entity.NotificationType; title: string }> = [ + { + event: follow, + expected: MegalodonNotificationType.Follow, + title: 'follow' + }, + { + event: mention, + expected: MegalodonNotificationType.Mention, + title: 'mention' + }, + { + event: reply, + expected: MegalodonNotificationType.Mention, + title: 'reply' + }, + { + event: renote, + expected: MegalodonNotificationType.Reblog, + title: 'renote' + }, + { + event: quote, + expected: MegalodonNotificationType.Reblog, + title: 'quote' + }, + { + event: reaction, + expected: MegalodonNotificationType.Reaction, + title: 'reaction' + }, + { + event: pollVote, + expected: MegalodonNotificationType.Poll, + title: 'pollVote' + }, + { + event: receiveFollowRequest, + expected: MegalodonNotificationType.FollowRequest, + title: 'receiveFollowRequest' + }, + { + event: followRequestAccepted, + expected: MegalodonNotificationType.Follow, + title: 'followRequestAccepted' + }, + { + event: groupInvited, + expected: MisskeyNotificationType.GroupInvited, + title: 'groupInvited' + } + ] + cases.forEach(c => { + it(`should be ${c.title} event`, async () => { + const mockResponse: AxiosResponse<Array<MisskeyEntity.Notification>> = { + data: [c.event], + status: 200, + statusText: '200OK', + headers: {}, + config: {} + } + ;(axios.post as any).mockResolvedValue(mockResponse) + const res = await client.getNotifications() + expect(res.data[0].type).toEqual(c.expected) + }) + }) +}) diff --git a/packages/megalodon/test/unit/misskey/api_client.spec.ts b/packages/megalodon/test/unit/misskey/api_client.spec.ts new file mode 100644 index 0000000000..7cf33b983d --- /dev/null +++ b/packages/megalodon/test/unit/misskey/api_client.spec.ts @@ -0,0 +1,233 @@ +import MisskeyAPI from '@/misskey/api_client' +import MegalodonEntity from '@/entity' +import MisskeyEntity from '@/misskey/entity' +import MegalodonNotificationType from '@/notification' +import MisskeyNotificationType from '@/misskey/notification' + +const user: MisskeyEntity.User = { + id: '1', + name: 'test_user', + username: 'TestUser', + host: 'misskey.io', + avatarUrl: 'https://example.com/icon.png', + avatarColor: '#000000', + emojis: [] +} + +const converter: MisskeyAPI.Converter = new MisskeyAPI.Converter("https://example.com") + +describe('api_client', () => { + describe('notification', () => { + describe('encode', () => { + it('megalodon notification type should be encoded to misskey notification type', () => { + const cases: Array<{ src: MegalodonEntity.NotificationType; dist: MisskeyEntity.NotificationType }> = [ + { + src: MegalodonNotificationType.Follow, + dist: MisskeyNotificationType.Follow + }, + { + src: MegalodonNotificationType.Mention, + dist: MisskeyNotificationType.Reply + }, + { + src: MegalodonNotificationType.Favourite, + dist: MisskeyNotificationType.Reaction + }, + { + src: MegalodonNotificationType.Reaction, + dist: MisskeyNotificationType.Reaction + }, + { + src: MegalodonNotificationType.Reblog, + dist: MisskeyNotificationType.Renote + }, + { + src: MegalodonNotificationType.Poll, + dist: MisskeyNotificationType.PollEnded + }, + { + src: MegalodonNotificationType.FollowRequest, + dist: MisskeyNotificationType.ReceiveFollowRequest + } + ] + cases.forEach(c => { + expect(converter.encodeNotificationType(c.src)).toEqual(c.dist) + }) + }) + }) + describe('decode', () => { + it('misskey notification type should be decoded to megalodon notification type', () => { + const cases: Array<{ src: MisskeyEntity.NotificationType; dist: MegalodonEntity.NotificationType }> = [ + { + src: MisskeyNotificationType.Follow, + dist: MegalodonNotificationType.Follow + }, + { + src: MisskeyNotificationType.Mention, + dist: MegalodonNotificationType.Mention + }, + { + src: MisskeyNotificationType.Reply, + dist: MegalodonNotificationType.Mention + }, + { + src: MisskeyNotificationType.Renote, + dist: MegalodonNotificationType.Reblog + }, + { + src: MisskeyNotificationType.Quote, + dist: MegalodonNotificationType.Reblog + }, + { + src: MisskeyNotificationType.Reaction, + dist: MegalodonNotificationType.Reaction + }, + { + src: MisskeyNotificationType.PollEnded, + dist: MegalodonNotificationType.Poll + }, + { + src: MisskeyNotificationType.ReceiveFollowRequest, + dist: MegalodonNotificationType.FollowRequest + }, + { + src: MisskeyNotificationType.FollowRequestAccepted, + dist: MegalodonNotificationType.Follow + } + ] + cases.forEach(c => { + expect(converter.decodeNotificationType(c.src)).toEqual(c.dist) + }) + }) + }) + }) + describe('reactions', () => { + it('should be mapped', () => { + const misskeyReactions = [ + { + id: '1', + createdAt: '2020-04-21T13:04:13.968Z', + user: { + id: '81u70uwsja', + name: 'h3poteto', + username: 'h3poteto', + host: null, + avatarUrl: 'https://s3.arkjp.net/misskey/thumbnail-63807d97-20ca-40ba-9493-179aa48065c1.png', + avatarColor: 'rgb(146,189,195)', + emojis: [] + }, + type: '❤' + }, + { + id: '2', + createdAt: '2020-04-21T13:04:13.968Z', + user: { + id: '81u70uwsja', + name: 'h3poteto', + username: 'h3poteto', + host: null, + avatarUrl: 'https://s3.arkjp.net/misskey/thumbnail-63807d97-20ca-40ba-9493-179aa48065c1.png', + avatarColor: 'rgb(146,189,195)', + emojis: [] + }, + type: '❤' + }, + { + id: '3', + createdAt: '2020-04-21T13:04:13.968Z', + user: { + id: '81u70uwsja', + name: 'h3poteto', + username: 'h3poteto', + host: null, + avatarUrl: 'https://s3.arkjp.net/misskey/thumbnail-63807d97-20ca-40ba-9493-179aa48065c1.png', + avatarColor: 'rgb(146,189,195)', + emojis: [] + }, + type: '☺' + }, + { + id: '4', + createdAt: '2020-04-21T13:04:13.968Z', + user: { + id: '81u70uwsja', + name: 'h3poteto', + username: 'h3poteto', + host: null, + avatarUrl: 'https://s3.arkjp.net/misskey/thumbnail-63807d97-20ca-40ba-9493-179aa48065c1.png', + avatarColor: 'rgb(146,189,195)', + emojis: [] + }, + type: '❤' + } + ] + + const reactions = converter.reactions(misskeyReactions) + expect(reactions).toEqual([ + { + count: 3, + me: false, + name: '❤' + }, + { + count: 1, + me: false, + name: '☺' + } + ]) + }) + }) + + describe('status', () => { + describe('plain content', () => { + it('should be exported plain content and html content', () => { + const plainContent = 'hoge\nfuga\nfuga' + const content = 'hoge<br>fuga<br>fuga' + const note: MisskeyEntity.Note = { + id: '1', + createdAt: '2021-02-01T01:49:29', + userId: '1', + user: user, + text: plainContent, + cw: null, + visibility: 'public', + renoteCount: 0, + repliesCount: 0, + reactions: {}, + emojis: [], + fileIds: [], + files: [], + replyId: null, + renoteId: null + } + const megalodonStatus = converter.note(note, user.host || 'misskey.io') + expect(megalodonStatus.plain_content).toEqual(plainContent) + expect(megalodonStatus.content).toEqual(content) + }) + it('html tags should be escaped', () => { + const plainContent = '<p>hoge\nfuga\nfuga<p>' + const content = '<p>hoge<br>fuga<br>fuga<p>' + const note: MisskeyEntity.Note = { + id: '1', + createdAt: '2021-02-01T01:49:29', + userId: '1', + user: user, + text: plainContent, + cw: null, + visibility: 'public', + renoteCount: 0, + repliesCount: 0, + reactions: {}, + emojis: [], + fileIds: [], + files: [], + replyId: null, + renoteId: null + } + const megalodonStatus = converter.note(note, user.host || 'misskey.io') + expect(megalodonStatus.plain_content).toEqual(plainContent) + expect(megalodonStatus.content).toEqual(content) + }) + }) + }) +}) diff --git a/packages/megalodon/test/unit/parser.spec.ts b/packages/megalodon/test/unit/parser.spec.ts new file mode 100644 index 0000000000..5174a647c6 --- /dev/null +++ b/packages/megalodon/test/unit/parser.spec.ts @@ -0,0 +1,152 @@ +import { Parser } from '@/parser' +import Entity from '@/entity' + +const account: Entity.Account = { + id: '1', + username: 'h3poteto', + acct: 'h3poteto@pleroma.io', + display_name: 'h3poteto', + locked: false, + created_at: '2019-03-26T21:30:32', + followers_count: 10, + following_count: 10, + statuses_count: 100, + note: 'engineer', + url: 'https://pleroma.io', + avatar: '', + avatar_static: '', + header: '', + header_static: '', + emojis: [], + moved: null, + fields: [], + bot: false +} + +const status: Entity.Status = { + id: '1', + uri: 'http://example.com', + url: 'http://example.com', + account: account, + in_reply_to_id: null, + in_reply_to_account_id: null, + reblog: null, + content: 'hoge', + plain_content: 'hoge', + created_at: '2019-03-26T21:40:32', + emojis: [], + replies_count: 0, + reblogs_count: 0, + favourites_count: 0, + reblogged: null, + favourited: null, + muted: null, + sensitive: false, + spoiler_text: '', + visibility: 'public', + media_attachments: [], + mentions: [], + tags: [], + card: null, + poll: null, + application: { + name: 'Web' + } as Entity.Application, + language: null, + pinned: null, + reactions: [], + bookmarked: false, + quote: null +} + +const notification: Entity.Notification = { + id: '1', + account: account, + status: status, + type: 'favourite', + created_at: '2019-04-01T17:01:32' +} + +const conversation: Entity.Conversation = { + id: '1', + accounts: [account], + last_status: status, + unread: true +} + +describe('Parser', () => { + let parser: Parser + + beforeEach(() => { + parser = new Parser() + }) + + describe('parse', () => { + describe('message is heartbeat', () => { + const message: string = ':thump\n' + it('should be called', () => { + const spy = jest.fn() + parser.on('heartbeat', spy) + parser.parse(message) + expect(spy).toHaveBeenLastCalledWith({}) + }) + }) + + describe('message is not json', () => { + describe('event is delete', () => { + const message = `event: delete\ndata: 12asdf34\n\n` + it('should be called', () => { + const spy = jest.fn() + parser.once('delete', spy) + parser.parse(message) + expect(spy).toHaveBeenCalledWith('12asdf34') + }) + }) + + describe('event is not delete', () => { + const message = `event: event\ndata: 12asdf34\n\n` + it('should be error', () => { + const error = jest.fn() + const deleted = jest.fn() + parser.once('error', error) + parser.once('delete', deleted) + parser.parse(message) + expect(error).toHaveBeenCalled() + expect(deleted).not.toHaveBeenCalled() + }) + }) + }) + + describe('message is json', () => { + describe('event is update', () => { + const message = `event: update\ndata: ${JSON.stringify(status)}\n\n` + it('should be called', () => { + const spy = jest.fn() + parser.once('update', spy) + parser.parse(message) + expect(spy).toHaveBeenCalledWith(status) + }) + }) + + describe('event is notification', () => { + const message = `event: notification\ndata: ${JSON.stringify(notification)}\n\n` + it('should be called', () => { + const spy = jest.fn() + parser.once('notification', spy) + parser.parse(message) + expect(spy).toHaveBeenCalledWith(notification) + }) + }) + + describe('event is conversation', () => { + const message = `event: conversation\ndata: ${JSON.stringify(conversation)}\n\n` + it('should be called', () => { + const spy = jest.fn() + parser.once('conversation', spy) + parser.parse(message) + expect(spy).toHaveBeenCalledWith(conversation) + }) + }) + }) + }) +}) diff --git a/packages/megalodon/tsconfig.json b/packages/megalodon/tsconfig.json new file mode 100644 index 0000000000..5a9bfbde9a --- /dev/null +++ b/packages/megalodon/tsconfig.json @@ -0,0 +1,64 @@ +{ + "compilerOptions": { + /* Basic Options */ + "target": "es5", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017','ES2018' or 'ESNEXT'. */ + "module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */ + "lib": ["es2021", "dom"], /* Specify library files to be included in the compilation. */ + // "allowJs": true, /* Allow javascript files to be compiled. */ + // "checkJs": true, /* Report errors in .js files. */ + // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */ + "declaration": true, /* Generates corresponding '.d.ts' file. */ + // "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ + // "sourceMap": true, /* Generates corresponding '.map' file. */ + // "outFile": "./", /* Concatenate and emit output to single file. */ + "outDir": "./lib", /* Redirect output structure to the directory. */ + "rootDir": "./", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ + // "composite": true, /* Enable project compilation */ + "removeComments": true, /* Do not emit comments to output. */ + // "noEmit": true, /* Do not emit outputs. */ + // "importHelpers": true, /* Import emit helpers from 'tslib'. */ + "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ + // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ + + /* Strict Type-Checking Options */ + "strict": true, /* Enable all strict type-checking options. */ + "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ + "strictNullChecks": true, /* Enable strict null checks. */ + "strictFunctionTypes": true, /* Enable strict checking of function types. */ + "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */ + "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ + "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ + + /* Additional Checks */ + "noUnusedLocals": false, /* Report errors on unused locals. */ + "noUnusedParameters": true, /* Report errors on unused parameters. */ + "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ + "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ + + /* Module Resolution Options */ + "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */ + "baseUrl": "./", /* Base directory to resolve non-absolute module names. */ + "paths": { + "@*": ["src*"], + "~*": ["./*"] + }, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ + // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ + // "typeRoots": [], /* List of folders to include type definitions from. */ + // "types": [], /* Type declaration files to be included in compilation. */ + // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ + "esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */ + // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ + + /* Source Map Options */ + // "sourceRoot": "./", /* Specify the location where debugger should locate TypeScript files instead of source locations. */ + // "mapRoot": "./", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */ + // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ + + /* Experimental Options */ + // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ + // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ + }, + "include": ["./src", "./test"], + "exclude": ["node_modules", "example"] +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f56048c1bd..42feff5589 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -280,8 +280,8 @@ importers: specifier: 7.0.2 version: 7.0.2(@types/koa@2.13.8)(ejs@3.1.9)(pug@3.0.2) megalodon: - specifier: 8.1.1 - version: 8.1.1 + specifier: workspace:* + version: link:../megalodon meilisearch: specifier: 0.34.1 version: 0.34.1 @@ -950,6 +950,124 @@ importers: specifier: 5.1.3 version: 5.1.3 + packages/megalodon: + dependencies: + '@types/oauth': + specifier: ^0.9.0 + version: 0.9.1 + '@types/ws': + specifier: ^8.5.4 + version: 8.5.5 + async-lock: + specifier: 1.4.0 + version: 1.4.0 + axios: + specifier: 1.2.2 + version: 1.2.2 + dayjs: + specifier: ^1.11.7 + version: 1.11.10 + form-data: + specifier: ^4.0.0 + version: 4.0.0 + https-proxy-agent: + specifier: ^5.0.1 + version: 5.0.1 + oauth: + specifier: ^0.10.0 + version: 0.10.0 + object-assign-deep: + specifier: ^0.4.0 + version: 0.4.0 + parse-link-header: + specifier: ^2.0.0 + version: 2.0.0 + socks-proxy-agent: + specifier: ^7.0.0 + version: 7.0.0 + typescript: + specifier: 4.9.4 + version: 4.9.4 + uuid: + specifier: ^9.0.0 + version: 9.0.0 + ws: + specifier: 8.12.0 + version: 8.12.0 + devDependencies: + '@types/async-lock': + specifier: 1.4.0 + version: 1.4.0 + '@types/core-js': + specifier: ^2.5.0 + version: 2.5.7 + '@types/form-data': + specifier: ^2.5.0 + version: 2.5.0 + '@types/jest': + specifier: ^29.4.0 + version: 29.5.6 + '@types/node': + specifier: 18.11.18 + version: 18.11.18 + '@types/object-assign-deep': + specifier: ^0.4.0 + version: 0.4.2 + '@types/parse-link-header': + specifier: ^2.0.0 + version: 2.0.2 + '@types/uuid': + specifier: ^9.0.0 + version: 9.0.3 + '@typescript-eslint/eslint-plugin': + specifier: ^5.49.0 + version: 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.46.0)(typescript@4.9.4) + '@typescript-eslint/parser': + specifier: ^5.49.0 + version: 5.62.0(eslint@8.46.0)(typescript@4.9.4) + eslint: + specifier: ^8.32.0 + version: 8.46.0 + eslint-config-prettier: + specifier: ^8.6.0 + version: 8.9.0(eslint@8.46.0) + eslint-config-standard: + specifier: ^16.0.3 + version: 16.0.3(eslint-plugin-import@2.28.0)(eslint-plugin-node@11.1.0)(eslint-plugin-promise@6.1.1)(eslint@8.46.0) + eslint-plugin-import: + specifier: ^2.27.5 + version: 2.28.0(@typescript-eslint/parser@5.62.0)(eslint@8.46.0) + eslint-plugin-node: + specifier: ^11.0.0 + version: 11.1.0(eslint@8.46.0) + eslint-plugin-prettier: + specifier: ^4.2.1 + version: 4.2.1(eslint-config-prettier@8.9.0)(eslint@8.46.0)(prettier@2.8.8) + eslint-plugin-promise: + specifier: ^6.1.1 + version: 6.1.1(eslint@8.46.0) + eslint-plugin-standard: + specifier: ^5.0.0 + version: 5.0.0(eslint@8.46.0) + jest: + specifier: ^29.4.0 + version: 29.7.0(@types/node@18.11.18) + jest-worker: + specifier: ^29.4.0 + version: 29.7.0 + lodash: + specifier: ^4.17.14 + version: 4.17.21 + prettier: + specifier: ^2.8.3 + version: 2.8.8 + ts-jest: + specifier: ^29.0.5 + version: 29.1.1(@babel/core@7.22.10)(jest@29.7.0)(typescript@4.9.4) + typedoc: + specifier: ^0.23.24 + version: 0.23.28(typescript@4.9.4) + packages/sw: optionalDependencies: '@swc/core-android-arm64': @@ -1209,6 +1327,16 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true + /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.22.10): + resolution: {integrity: sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.10 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.22.10): resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: @@ -2197,6 +2325,18 @@ packages: slash: 3.0.0 dev: true + /@jest/console@29.7.0: + resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + '@types/node': 20.5.8 + chalk: 4.1.2 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + slash: 3.0.0 + dev: true + /@jest/core@27.5.1(ts-node@10.4.0): resolution: {integrity: sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -2242,6 +2382,49 @@ packages: - utf-8-validate dev: true + /@jest/core@29.7.0: + resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/console': 29.7.0 + '@jest/reporters': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.5.8 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + ci-info: 3.8.0 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-changed-files: 29.7.0 + jest-config: 29.7.0(@types/node@20.5.8) + jest-haste-map: 29.7.0 + jest-message-util: 29.7.0 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-resolve-dependencies: 29.7.0 + jest-runner: 29.7.0 + jest-runtime: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + jest-watcher: 29.7.0 + micromatch: 4.0.5 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + - ts-node + dev: true + /@jest/environment@27.5.1: resolution: {integrity: sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -2252,6 +2435,33 @@ packages: jest-mock: 27.5.1 dev: true + /@jest/environment@29.7.0: + resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.5.8 + jest-mock: 29.7.0 + dev: true + + /@jest/expect-utils@29.7.0: + resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + jest-get-type: 29.6.3 + dev: true + + /@jest/expect@29.7.0: + resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + expect: 29.7.0 + jest-snapshot: 29.7.0 + transitivePeerDependencies: + - supports-color + dev: true + /@jest/fake-timers@27.5.1: resolution: {integrity: sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -2264,6 +2474,18 @@ packages: jest-util: 27.5.1 dev: true + /@jest/fake-timers@29.7.0: + resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + '@sinonjs/fake-timers': 10.3.0 + '@types/node': 20.5.8 + jest-message-util: 29.7.0 + jest-mock: 29.7.0 + jest-util: 29.7.0 + dev: true + /@jest/globals@27.5.1: resolution: {integrity: sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -2273,6 +2495,18 @@ packages: expect: 27.5.1 dev: true + /@jest/globals@29.7.0: + resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.7.0 + '@jest/expect': 29.7.0 + '@jest/types': 29.6.3 + jest-mock: 29.7.0 + transitivePeerDependencies: + - supports-color + dev: true + /@jest/reporters@27.5.1: resolution: {integrity: sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -2311,6 +2545,43 @@ packages: - supports-color dev: true + /@jest/reporters@29.7.0: + resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@bcoe/v8-coverage': 0.2.3 + '@jest/console': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@jridgewell/trace-mapping': 0.3.19 + '@types/node': 20.5.8 + chalk: 4.1.2 + collect-v8-coverage: 1.0.2 + exit: 0.1.2 + glob: 7.2.3 + graceful-fs: 4.2.11 + istanbul-lib-coverage: 3.2.0 + istanbul-lib-instrument: 6.0.1 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 4.0.1 + istanbul-reports: 3.1.6 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + jest-worker: 29.7.0 + slash: 3.0.0 + string-length: 4.0.2 + strip-ansi: 6.0.1 + v8-to-istanbul: 9.1.3 + transitivePeerDependencies: + - supports-color + dev: true + /@jest/schemas@29.6.0: resolution: {integrity: sha512-rxLjXyJBTL4LQeJW3aKo0M/+GkCOXsO+8i9Iu7eDb6KwtP65ayoDsitrdPBtujxQ88k4wI2FNYfa6TOGwSn6cQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -2318,6 +2589,13 @@ packages: '@sinclair/typebox': 0.27.8 dev: true + /@jest/schemas@29.6.3: + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@sinclair/typebox': 0.27.8 + dev: true + /@jest/source-map@27.5.1: resolution: {integrity: sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -2327,6 +2605,15 @@ packages: source-map: 0.6.1 dev: true + /@jest/source-map@29.6.3: + resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jridgewell/trace-mapping': 0.3.19 + callsites: 3.1.0 + graceful-fs: 4.2.11 + dev: true + /@jest/test-result@27.5.1: resolution: {integrity: sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -2337,6 +2624,16 @@ packages: collect-v8-coverage: 1.0.2 dev: true + /@jest/test-result@29.7.0: + resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/console': 29.7.0 + '@jest/types': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.4 + collect-v8-coverage: 1.0.2 + dev: true + /@jest/test-sequencer@27.5.1: resolution: {integrity: sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -2349,6 +2646,16 @@ packages: - supports-color dev: true + /@jest/test-sequencer@29.7.0: + resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/test-result': 29.7.0 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + slash: 3.0.0 + dev: true + /@jest/transform@27.5.1: resolution: {integrity: sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -2372,6 +2679,29 @@ packages: - supports-color dev: true + /@jest/transform@29.7.0: + resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/core': 7.22.10 + '@jest/types': 29.6.3 + '@jridgewell/trace-mapping': 0.3.19 + babel-plugin-istanbul: 6.1.1 + chalk: 4.1.2 + convert-source-map: 2.0.0 + fast-json-stable-stringify: 2.1.0 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + jest-regex-util: 29.6.3 + jest-util: 29.7.0 + micromatch: 4.0.5 + pirates: 4.0.6 + slash: 3.0.0 + write-file-atomic: 4.0.2 + transitivePeerDependencies: + - supports-color + dev: true + /@jest/types@27.5.1: resolution: {integrity: sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -2383,6 +2713,18 @@ packages: chalk: 4.1.2 dev: true + /@jest/types@29.6.3: + resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.4 + '@types/istanbul-reports': 3.0.1 + '@types/node': 20.5.8 + '@types/yargs': 17.0.29 + chalk: 4.1.2 + dev: true + /@jridgewell/gen-mapping@0.3.3: resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} engines: {node: '>=6.0.0'} @@ -2902,6 +3244,18 @@ packages: dependencies: type-detect: 4.0.8 + /@sinonjs/commons@3.0.0: + resolution: {integrity: sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==} + dependencies: + type-detect: 4.0.8 + dev: true + + /@sinonjs/fake-timers@10.3.0: + resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} + dependencies: + '@sinonjs/commons': 3.0.0 + dev: true + /@sinonjs/fake-timers@8.1.0: resolution: {integrity: sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==} dependencies: @@ -3432,6 +3786,10 @@ packages: resolution: {integrity: sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==} dev: true + /@types/async-lock@1.4.0: + resolution: {integrity: sha512-2+rYSaWrpdbQG3SA0LmMT6YxWLrI81AqpMlSkw3QtFc2HGDufkweQSn30Eiev7x9LL0oyFrBqk1PXOnB9IEgKg==} + dev: true + /@types/babel__core@7.20.1: resolution: {integrity: sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw==} dependencies: @@ -3502,6 +3860,10 @@ packages: '@types/keygrip': 1.0.2 '@types/node': 20.5.8 + /@types/core-js@2.5.7: + resolution: {integrity: sha512-EhO4Lcd2Rs2bZvQwIDMZ1qsaZk8DpdOkQCbKpK0vt7fSjJGXrCA7EPauR/BZ7eJXks1een4FX7JtlhS136fklA==} + dev: true + /@types/disposable-email-domains@1.0.4: resolution: {integrity: sha512-AmKPD8vBZzvey/jeg+YAIH/xJE3D6edOXz+YUooSCcHesGzFyzke83kj1j4d0LUR9nkSHIRklUVdcAMleuWLpg==} dev: false @@ -3561,6 +3923,13 @@ packages: '@types/node': 18.11.18 dev: true + /@types/form-data@2.5.0: + resolution: {integrity: sha512-23/wYiuckYYtFpL+4RPWiWmRQH2BjFuqCUi2+N3amB1a1Drv+i/byTrGvlLwRVLFNAZbwpbQ7JvTK+VCAPMbcg==} + deprecated: This is a stub types definition. form-data provides its own type definitions, so you do not need this installed. + dependencies: + form-data: 4.0.0 + dev: true + /@types/formidable@2.0.6: resolution: {integrity: sha512-L4HcrA05IgQyNYJj6kItuIkXrInJvsXTPC5B1i64FggWKKqSL+4hgt7asiSNva75AoLQjq29oPxFfU4GAQ6Z2w==} dependencies: @@ -3635,6 +4004,13 @@ packages: pretty-format: 27.5.1 dev: true + /@types/jest@29.5.6: + resolution: {integrity: sha512-/t9NnzkOpXb4Nfvg17ieHE6EeSjDS2SGSpNYfoLbUAeL/EOueU/RSdOWFpfQTXBEM7BguYW1XQ0EbM+6RlIh6w==} + dependencies: + expect: 29.7.0 + pretty-format: 29.6.2 + dev: true + /@types/js-yaml@4.0.5: resolution: {integrity: sha512-FhpRzf927MNQdRZP0J5DLIdTXhjLYzeUTmLAu69mnVksLH9CJY3IuSeEgbKUki7GQZm0WqDkGzyxju2EZGD2wA==} dev: true @@ -3884,13 +4260,10 @@ packages: resolution: {integrity: sha512-a1iY62/a3yhZ7qH7cNUsxoI3U/0Fe9+RnuFrpTKr+0WVOzbKlSLojShCKe20aOD1Sppv+i8Zlq0pLDuTJnwS4A==} dependencies: '@types/node': 18.11.18 - dev: true - /@types/oauth@0.9.2: - resolution: {integrity: sha512-Nu3/abQ6yR9VlsCdX3aiGsWFkj6OJvJqDvg/36t8Gwf2mFXdBZXPDN3K+2yfeA6Lo2m1Q12F8Qil9TZ48nWhOQ==} - dependencies: - '@types/node': 20.5.8 - dev: false + /@types/object-assign-deep@0.4.2: + resolution: {integrity: sha512-iF6qYKjYdg/kFg3AEM/msyh1+U4zZW043d2TnCS9fwib00nc8Asj+38LgIpkO/UpfUMRgJ0m/tHATwU2F8Bfow==} + dev: true /@types/offscreencanvas@2019.3.0: resolution: {integrity: sha512-esIJx9bQg+QYF0ra8GnvfianIY8qWB0GBx54PK5Eps6m+xTj86KLavHv6qDhzKcu5UUOgNfJ2pWaIIV7TRUd9Q==} @@ -3900,6 +4273,10 @@ packages: resolution: {integrity: sha512-PGcyveRIpL1XIqK8eBsmRBt76eFgtzuPiSTyKHZxnGemp2yzGzWpjYKAfK3wIMiU7eH+851yEpiuP8JZerTmWg==} dev: false + /@types/parse-link-header@2.0.2: + resolution: {integrity: sha512-RKU5SIF0oyM2ZI0ubw66FkM/0RJUv/r84I7vJcXkcICcfeOpd1WXfpcqkFJPaWli5z3YdxMsfWojyU5uofT6sA==} + dev: true + /@types/picomatch@2.3.0: resolution: {integrity: sha512-O397rnSS9iQI4OirieAtsDqvCj4+3eY1J+EPdNTKuHuRWIfUoGyzX294o8C4KJYaLqgSrd2o60c5EqCU8Zv02g==} dev: true @@ -4104,6 +4481,12 @@ packages: '@types/yargs-parser': 21.0.0 dev: true + /@types/yargs@17.0.29: + resolution: {integrity: sha512-nacjqA3ee9zRF/++a3FUY1suHTFKZeHba2n8WeDw9cCVdmzmHpIxyzOJBcpHvvEmS8E9KqWlSnWHUkOrkhWcvA==} + dependencies: + '@types/yargs-parser': 21.0.0 + dev: true + /@types/yauzl@2.10.0: resolution: {integrity: sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==} requiresBuild: true @@ -4112,6 +4495,34 @@ packages: dev: true optional: true + /@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.46.0)(typescript@4.9.4): + resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + '@typescript-eslint/parser': ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@eslint-community/regexpp': 4.6.2 + '@typescript-eslint/parser': 5.62.0(eslint@8.46.0)(typescript@4.9.4) + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/type-utils': 5.62.0(eslint@8.46.0)(typescript@4.9.4) + '@typescript-eslint/utils': 5.62.0(eslint@8.46.0)(typescript@4.9.4) + debug: 4.3.4(supports-color@8.1.1) + eslint: 8.46.0 + graphemer: 1.4.0 + ignore: 5.2.4 + natural-compare-lite: 1.4.0 + semver: 7.5.4 + tsutils: 3.21.0(typescript@4.9.4) + typescript: 4.9.4 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.46.0)(typescript@5.2.2): resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -4170,6 +4581,26 @@ packages: - supports-color dev: true + /@typescript-eslint/parser@5.62.0(eslint@8.46.0)(typescript@4.9.4): + resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.4) + debug: 4.3.4(supports-color@8.1.1) + eslint: 8.46.0 + typescript: 4.9.4 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/parser@5.62.0(eslint@8.46.0)(typescript@5.2.2): resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -4227,6 +4658,26 @@ packages: '@typescript-eslint/visitor-keys': 6.3.0 dev: true + /@typescript-eslint/type-utils@5.62.0(eslint@8.46.0)(typescript@4.9.4): + resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '*' + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.4) + '@typescript-eslint/utils': 5.62.0(eslint@8.46.0)(typescript@4.9.4) + debug: 4.3.4(supports-color@8.1.1) + eslint: 8.46.0 + tsutils: 3.21.0(typescript@4.9.4) + typescript: 4.9.4 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/type-utils@5.62.0(eslint@8.46.0)(typescript@5.2.2): resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -4277,6 +4728,27 @@ packages: engines: {node: ^16.0.0 || >=18.0.0} dev: true + /@typescript-eslint/typescript-estree@5.62.0(typescript@4.9.4): + resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 + debug: 4.3.4(supports-color@8.1.1) + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.5.4 + tsutils: 3.21.0(typescript@4.9.4) + typescript: 4.9.4 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/typescript-estree@5.62.0(typescript@5.2.2): resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -4319,6 +4791,26 @@ packages: - supports-color dev: true + /@typescript-eslint/utils@5.62.0(eslint@8.46.0)(typescript@4.9.4): + resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.46.0) + '@types/json-schema': 7.0.12 + '@types/semver': 7.5.0 + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.4) + eslint: 8.46.0 + eslint-scope: 5.1.1 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + /@typescript-eslint/utils@5.62.0(eslint@8.46.0)(typescript@5.2.2): resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -4798,6 +5290,10 @@ packages: resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} engines: {node: '>=12'} + /ansi-sequence-parser@1.1.1: + resolution: {integrity: sha512-vJXt3yiaUL4UU546s3rPXlsry/RnM730G1+HkpKE012AN0sx1eOrxSu95oKDIonskeLTijMgqWZ3uDEe3NFvyg==} + dev: true + /ansi-styles@2.2.1: resolution: {integrity: sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==} engines: {node: '>=0.10.0'} @@ -5169,6 +5665,10 @@ packages: stream-exhaust: 1.0.2 dev: true + /async-lock@1.4.0: + resolution: {integrity: sha512-coglx5yIWuetakm3/1dsX9hxCNox22h7+V80RQOu2XUUMidtArxKoZoOtHUPuR84SycKTXzgGzAUR5hJxujyJQ==} + dev: false + /async-settle@1.0.0: resolution: {integrity: sha512-VPXfB4Vk49z1LHHodrEQ6Xf7W4gg1w0dAPROHngx7qgDjqmIQ+fXmwgGXTW/ITLai0YLSvWepJOP9EVpMnEAcw==} engines: {node: '>= 0.10'} @@ -5325,8 +5825,8 @@ packages: - debug dev: true - /axios@1.4.0: - resolution: {integrity: sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==} + /axios@1.2.2: + resolution: {integrity: sha512-bz/J4gS2S3I7mpN/YZfGFTqhXTYzRho8Ay38w2otuuDR322KzFIWm/4W2K6gIwvWaws5n+mnb7D1lN9uD+QH6Q==} dependencies: follow-redirects: 1.15.2(debug@4.3.4) form-data: 4.0.0 @@ -5335,8 +5835,8 @@ packages: - debug dev: false - /axios@1.5.1: - resolution: {integrity: sha512-Q28iYCWzNHjAm+yEAot5QaAMxhMghWLFVf7rRdwhUI+c2jix2DUXjAHXVi+s1ibs3mjPO/cCgbA++3BjD0vP/A==} + /axios@1.4.0: + resolution: {integrity: sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==} dependencies: follow-redirects: 1.15.2(debug@4.3.4) form-data: 4.0.0 @@ -5368,6 +5868,24 @@ packages: - supports-color dev: true + /babel-jest@29.7.0(@babel/core@7.22.10): + resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.8.0 + dependencies: + '@babel/core': 7.22.10 + '@jest/transform': 29.7.0 + '@types/babel__core': 7.20.1 + babel-plugin-istanbul: 6.1.1 + babel-preset-jest: 29.6.3(@babel/core@7.22.10) + chalk: 4.1.2 + graceful-fs: 4.2.11 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + dev: true + /babel-plugin-istanbul@6.1.1: resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} engines: {node: '>=8'} @@ -5391,6 +5909,16 @@ packages: '@types/babel__traverse': 7.20.1 dev: true + /babel-plugin-jest-hoist@29.6.3: + resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/template': 7.22.5 + '@babel/types': 7.22.10 + '@types/babel__core': 7.20.1 + '@types/babel__traverse': 7.20.1 + dev: true + /babel-preset-current-node-syntax@1.0.1(@babel/core@7.22.10): resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} peerDependencies: @@ -5422,6 +5950,17 @@ packages: babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.10) dev: true + /babel-preset-jest@29.6.3(@babel/core@7.22.10): + resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.22.10 + babel-plugin-jest-hoist: 29.6.3 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.10) + dev: true + /babel-walk@3.0.0-canary-5: resolution: {integrity: sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw==} engines: {node: '>= 10.0.0'} @@ -6711,6 +7250,10 @@ packages: /convert-source-map@1.9.0: resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} + /convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + dev: true + /convert-to-spaces@2.0.1: resolution: {integrity: sha512-rcQ1bsQO9799wq24uE5AM2tAILy4gXGIK/njFWcVQkGNZ96edlpY+A7bjwvzjYvLDyzmG1MmMLZhpcsb+klNMQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -6769,6 +7312,25 @@ packages: readable-stream: 3.6.2 dev: false + /create-jest@29.7.0(@types/node@18.11.18): + resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + dependencies: + '@jest/types': 29.6.3 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-config: 29.7.0(@types/node@18.11.18) + jest-util: 29.7.0 + prompts: 2.4.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + dev: true + /create-require@1.1.1: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} @@ -7172,6 +7734,15 @@ packages: resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} dev: true + /dedent@1.5.1: + resolution: {integrity: sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==} + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + dev: true + /deep-email-validator@0.1.21: resolution: {integrity: sha512-DBAmMzbr+MAubXQ+TS9tZuPwLcdKscb8YzKZiwoLqF3NmaeEgXvSSHhZ0EXOFeKFE2FNWC4mNXCyiQ/JdFXUwg==} dependencies: @@ -7352,6 +7923,11 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true + /diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + /diff@4.0.2: resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} engines: {node: '>=0.3.1'} @@ -7517,6 +8093,11 @@ packages: /electron-to-chromium@1.4.488: resolution: {integrity: sha512-Dv4sTjiW7t/UWGL+H8ZkgIjtUAVZDgb/PwGWvMsCT7jipzUV/u5skbLXPFKb6iV0tiddVi/bcS2/kUrczeWgIQ==} + /emittery@0.13.1: + resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} + engines: {node: '>=12'} + dev: true + /emittery@0.8.1: resolution: {integrity: sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==} engines: {node: '>=10'} @@ -7814,6 +8395,20 @@ packages: eslint: 8.46.0 dev: true + /eslint-config-standard@16.0.3(eslint-plugin-import@2.28.0)(eslint-plugin-node@11.1.0)(eslint-plugin-promise@6.1.1)(eslint@8.46.0): + resolution: {integrity: sha512-x4fmJL5hGqNJKGHSjnLdgA6U6h1YW/G2dW9fA+cyVur4SK6lyue8+UgNKWlZtUDTXvgKDD/Oa3GQjmB5kjtVvg==} + peerDependencies: + eslint: ^7.12.1 + eslint-plugin-import: ^2.22.1 + eslint-plugin-node: ^11.1.0 + eslint-plugin-promise: ^4.2.1 || ^5.0.0 + dependencies: + eslint: 8.46.0 + eslint-plugin-import: 2.28.0(@typescript-eslint/parser@5.62.0)(eslint@8.46.0) + eslint-plugin-node: 11.1.0(eslint@8.46.0) + eslint-plugin-promise: 6.1.1(eslint@8.46.0) + dev: true + /eslint-formatter-pretty@4.1.0: resolution: {integrity: sha512-IsUTtGxF1hrH6lMWiSl1WbGaiP01eT6kzywdY1U+zLc0MP+nwEnUiS9UI8IaOTUhTeQJLlCEWIbXINBH4YJbBQ==} engines: {node: '>=10'} @@ -7859,7 +8454,7 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.62.0(eslint@8.46.0)(typescript@5.2.2) + '@typescript-eslint/parser': 5.62.0(eslint@8.46.0)(typescript@4.9.4) debug: 3.2.7(supports-color@8.1.1) eslint: 8.46.0 eslint-import-resolver-node: 0.3.9 @@ -7907,6 +8502,17 @@ packages: eslint: 8.46.0 dev: true + /eslint-plugin-es@3.0.1(eslint@8.46.0): + resolution: {integrity: sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==} + engines: {node: '>=8.10.0'} + peerDependencies: + eslint: '>=4.19.1' + dependencies: + eslint: 8.46.0 + eslint-utils: 2.1.0 + regexpp: 3.2.0 + dev: true + /eslint-plugin-es@4.1.0(eslint@8.46.0): resolution: {integrity: sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==} engines: {node: '>=8.10.0'} @@ -7955,7 +8561,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.62.0(eslint@8.46.0)(typescript@5.2.2) + '@typescript-eslint/parser': 5.62.0(eslint@8.46.0)(typescript@4.9.4) array-includes: 3.1.6 array.prototype.findlastindex: 1.2.2 array.prototype.flat: 1.3.1 @@ -8095,6 +8701,38 @@ packages: semver: 7.5.4 dev: true + /eslint-plugin-node@11.1.0(eslint@8.46.0): + resolution: {integrity: sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==} + engines: {node: '>=8.10.0'} + peerDependencies: + eslint: '>=5.16.0' + dependencies: + eslint: 8.46.0 + eslint-plugin-es: 3.0.1(eslint@8.46.0) + eslint-utils: 2.1.0 + ignore: 5.2.4 + minimatch: 3.1.2 + resolve: 1.22.4 + semver: 6.3.1 + dev: true + + /eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.9.0)(eslint@8.46.0)(prettier@2.8.8): + resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} + engines: {node: '>=12.0.0'} + peerDependencies: + eslint: '>=7.28.0' + eslint-config-prettier: '*' + prettier: '>=2.0.0' + peerDependenciesMeta: + eslint-config-prettier: + optional: true + dependencies: + eslint: 8.46.0 + eslint-config-prettier: 8.9.0(eslint@8.46.0) + prettier: 2.8.8 + prettier-linter-helpers: 1.0.0 + dev: true + /eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.9.0)(eslint@8.46.0)(prettier@3.0.3): resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} engines: {node: '>=12.0.0'} @@ -8151,6 +8789,15 @@ packages: eslint: 8.46.0 dev: true + /eslint-plugin-standard@5.0.0(eslint@8.46.0): + resolution: {integrity: sha512-eSIXPc9wBM4BrniMzJRBm2uoVuXz2EPa+NXPk2+itrVt+r5SbKFERx/IgrK/HmfjddyKVz2f+j+7gBRvu19xLg==} + deprecated: 'standard 16.0.0 and eslint-config-standard 16.0.0 no longer require the eslint-plugin-standard package. You can remove it from your dependencies with ''npm rm eslint-plugin-standard''. More info here: https://github.com/standard/standard/issues/1316' + peerDependencies: + eslint: '>=5.0.0' + dependencies: + eslint: 8.46.0 + dev: true + /eslint-plugin-tsdoc@0.2.17: resolution: {integrity: sha512-xRmVi7Zx44lOBuYqG8vzTXuL6IdGOeF9nHX17bjJ8+VE6fsxpdGem0/SBTmAwgYMKYB1WBkqRJVQ+n8GK041pA==} dependencies: @@ -8581,6 +9228,17 @@ packages: jest-message-util: 27.5.1 dev: true + /expect@29.7.0: + resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/expect-utils': 29.7.0 + jest-get-type: 29.6.3 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + dev: true + /exponential-backoff@3.1.1: resolution: {integrity: sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==} dev: false @@ -9039,7 +9697,6 @@ packages: asynckit: 0.4.0 combined-stream: 1.0.8 mime-types: 2.1.35 - dev: false /formdata-polyfill@4.0.10: resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} @@ -10003,16 +10660,6 @@ packages: - supports-color dev: false - /https-proxy-agent@7.0.2: - resolution: {integrity: sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==} - engines: {node: '>= 14'} - dependencies: - agent-base: 7.1.0 - debug: 4.3.4(supports-color@8.1.1) - transitivePeerDependencies: - - supports-color - dev: false - /human-signals@1.1.1: resolution: {integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==} engines: {node: '>=8.12.0'} @@ -10772,6 +11419,19 @@ packages: - supports-color dev: true + /istanbul-lib-instrument@6.0.1: + resolution: {integrity: sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA==} + engines: {node: '>=10'} + dependencies: + '@babel/core': 7.22.10 + '@babel/parser': 7.22.10 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.0 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + dev: true + /istanbul-lib-report@3.0.1: resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} engines: {node: '>=10'} @@ -10836,6 +11496,15 @@ packages: throat: 6.0.2 dev: true + /jest-changed-files@29.7.0: + resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + execa: 5.1.1 + jest-util: 29.7.0 + p-limit: 3.1.0 + dev: true + /jest-circus@27.5.1: resolution: {integrity: sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -10863,6 +11532,35 @@ packages: - supports-color dev: true + /jest-circus@29.7.0: + resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.7.0 + '@jest/expect': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.5.8 + chalk: 4.1.2 + co: 4.6.0 + dedent: 1.5.1 + is-generator-fn: 2.1.0 + jest-each: 29.7.0 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-runtime: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + p-limit: 3.1.0 + pretty-format: 29.7.0 + pure-rand: 6.0.4 + slash: 3.0.0 + stack-utils: 2.0.6 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + dev: true + /jest-cli@27.5.1(ts-node@10.4.0): resolution: {integrity: sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -10893,6 +11591,34 @@ packages: - utf-8-validate dev: true + /jest-cli@29.7.0(@types/node@18.11.18): + resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/core': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + chalk: 4.1.2 + create-jest: 29.7.0(@types/node@18.11.18) + exit: 0.1.2 + import-local: 3.1.0 + jest-config: 29.7.0(@types/node@18.11.18) + jest-util: 29.7.0 + jest-validate: 29.7.0 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + dev: true + /jest-config@27.5.1(ts-node@10.4.0): resolution: {integrity: sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -10934,6 +11660,86 @@ packages: - utf-8-validate dev: true + /jest-config@29.7.0(@types/node@18.11.18): + resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@types/node': '*' + ts-node: '>=9.0.0' + peerDependenciesMeta: + '@types/node': + optional: true + ts-node: + optional: true + dependencies: + '@babel/core': 7.22.10 + '@jest/test-sequencer': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 18.11.18 + babel-jest: 29.7.0(@babel/core@7.22.10) + chalk: 4.1.2 + ci-info: 3.8.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 29.7.0 + jest-environment-node: 29.7.0 + jest-get-type: 29.6.3 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-runner: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + micromatch: 4.0.5 + parse-json: 5.2.0 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + dev: true + + /jest-config@29.7.0(@types/node@20.5.8): + resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@types/node': '*' + ts-node: '>=9.0.0' + peerDependenciesMeta: + '@types/node': + optional: true + ts-node: + optional: true + dependencies: + '@babel/core': 7.22.10 + '@jest/test-sequencer': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.5.8 + babel-jest: 29.7.0(@babel/core@7.22.10) + chalk: 4.1.2 + ci-info: 3.8.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 29.7.0 + jest-environment-node: 29.7.0 + jest-get-type: 29.6.3 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-runner: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + micromatch: 4.0.5 + parse-json: 5.2.0 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + dev: true + /jest-diff@27.5.1: resolution: {integrity: sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -10954,6 +11760,16 @@ packages: pretty-format: 29.6.2 dev: true + /jest-diff@29.7.0: + resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + chalk: 4.1.2 + diff-sequences: 29.6.3 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + dev: true + /jest-docblock@27.5.1: resolution: {integrity: sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -10961,6 +11777,13 @@ packages: detect-newline: 3.1.0 dev: true + /jest-docblock@29.7.0: + resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + detect-newline: 3.1.0 + dev: true + /jest-each@27.5.1: resolution: {integrity: sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -10972,6 +11795,17 @@ packages: pretty-format: 27.5.1 dev: true + /jest-each@29.7.0: + resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + chalk: 4.1.2 + jest-get-type: 29.6.3 + jest-util: 29.7.0 + pretty-format: 29.7.0 + dev: true + /jest-environment-jsdom@27.5.1: resolution: {integrity: sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -11002,6 +11836,18 @@ packages: jest-util: 27.5.1 dev: true + /jest-environment-node@29.7.0: + resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.5.8 + jest-mock: 29.7.0 + jest-util: 29.7.0 + dev: true + /jest-fetch-mock@3.0.3: resolution: {integrity: sha512-Ux1nWprtLrdrH4XwE7O7InRY6psIi3GOsqNESJgMJ+M5cv4A8Lh7SN9d2V2kKRZ8ebAfcd1LNyZguAOb6JiDqw==} dependencies: @@ -11021,6 +11867,11 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true + /jest-get-type@29.6.3: + resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + /jest-haste-map@27.5.1: resolution: {integrity: sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -11041,6 +11892,25 @@ packages: fsevents: 2.3.2 dev: true + /jest-haste-map@29.7.0: + resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + '@types/graceful-fs': 4.1.6 + '@types/node': 20.5.8 + anymatch: 3.1.3 + fb-watchman: 2.0.2 + graceful-fs: 4.2.11 + jest-regex-util: 29.6.3 + jest-util: 29.7.0 + jest-worker: 29.7.0 + micromatch: 4.0.5 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.2 + dev: true + /jest-jasmine2@27.5.1: resolution: {integrity: sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -11074,6 +11944,14 @@ packages: pretty-format: 27.5.1 dev: true + /jest-leak-detector@29.7.0: + resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + dev: true + /jest-matcher-utils@27.5.1: resolution: {integrity: sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -11084,6 +11962,16 @@ packages: pretty-format: 27.5.1 dev: true + /jest-matcher-utils@29.7.0: + resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + chalk: 4.1.2 + jest-diff: 29.7.0 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + dev: true + /jest-message-util@27.5.1: resolution: {integrity: sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -11099,6 +11987,21 @@ packages: stack-utils: 2.0.6 dev: true + /jest-message-util@29.7.0: + resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/code-frame': 7.22.10 + '@jest/types': 29.6.3 + '@types/stack-utils': 2.0.1 + chalk: 4.1.2 + graceful-fs: 4.2.11 + micromatch: 4.0.5 + pretty-format: 29.7.0 + slash: 3.0.0 + stack-utils: 2.0.6 + dev: true + /jest-mock@27.5.1: resolution: {integrity: sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -11107,6 +12010,15 @@ packages: '@types/node': 20.5.8 dev: true + /jest-mock@29.7.0: + resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + '@types/node': 20.5.8 + jest-util: 29.7.0 + dev: true + /jest-pnp-resolver@1.2.3(jest-resolve@27.5.1): resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} engines: {node: '>=6'} @@ -11119,11 +12031,28 @@ packages: jest-resolve: 27.5.1 dev: true + /jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): + resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} + engines: {node: '>=6'} + peerDependencies: + jest-resolve: '*' + peerDependenciesMeta: + jest-resolve: + optional: true + dependencies: + jest-resolve: 29.7.0 + dev: true + /jest-regex-util@27.5.1: resolution: {integrity: sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dev: true + /jest-regex-util@29.6.3: + resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + /jest-resolve-dependencies@27.5.1: resolution: {integrity: sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -11135,6 +12064,16 @@ packages: - supports-color dev: true + /jest-resolve-dependencies@29.7.0: + resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + jest-regex-util: 29.6.3 + jest-snapshot: 29.7.0 + transitivePeerDependencies: + - supports-color + dev: true + /jest-resolve@27.5.1: resolution: {integrity: sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -11151,6 +12090,21 @@ packages: slash: 3.0.0 dev: true + /jest-resolve@29.7.0: + resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + chalk: 4.1.2 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + jest-pnp-resolver: 1.2.3(jest-resolve@29.7.0) + jest-util: 29.7.0 + jest-validate: 29.7.0 + resolve: 1.22.4 + resolve.exports: 2.0.2 + slash: 3.0.0 + dev: true + /jest-runner@27.5.1: resolution: {integrity: sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -11183,6 +12137,35 @@ packages: - utf-8-validate dev: true + /jest-runner@29.7.0: + resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/console': 29.7.0 + '@jest/environment': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.5.8 + chalk: 4.1.2 + emittery: 0.13.1 + graceful-fs: 4.2.11 + jest-docblock: 29.7.0 + jest-environment-node: 29.7.0 + jest-haste-map: 29.7.0 + jest-leak-detector: 29.7.0 + jest-message-util: 29.7.0 + jest-resolve: 29.7.0 + jest-runtime: 29.7.0 + jest-util: 29.7.0 + jest-watcher: 29.7.0 + jest-worker: 29.7.0 + p-limit: 3.1.0 + source-map-support: 0.5.13 + transitivePeerDependencies: + - supports-color + dev: true + /jest-runtime@27.5.1: resolution: {integrity: sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -11213,6 +12196,36 @@ packages: - supports-color dev: true + /jest-runtime@29.7.0: + resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/globals': 29.7.0 + '@jest/source-map': 29.6.3 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.5.8 + chalk: 4.1.2 + cjs-module-lexer: 1.2.3 + collect-v8-coverage: 1.0.2 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + jest-message-util: 29.7.0 + jest-mock: 29.7.0 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + slash: 3.0.0 + strip-bom: 4.0.0 + transitivePeerDependencies: + - supports-color + dev: true + /jest-serializer@27.5.1: resolution: {integrity: sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -11251,6 +12264,34 @@ packages: - supports-color dev: true + /jest-snapshot@29.7.0: + resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/core': 7.22.10 + '@babel/generator': 7.22.10 + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.10) + '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.22.10) + '@babel/types': 7.22.10 + '@jest/expect-utils': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.10) + chalk: 4.1.2 + expect: 29.7.0 + graceful-fs: 4.2.11 + jest-diff: 29.7.0 + jest-get-type: 29.6.3 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + natural-compare: 1.4.0 + pretty-format: 29.7.0 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + dev: true + /jest-util@27.5.1: resolution: {integrity: sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -11263,6 +12304,18 @@ packages: picomatch: 2.3.1 dev: true + /jest-util@29.7.0: + resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + '@types/node': 20.5.8 + chalk: 4.1.2 + ci-info: 3.8.0 + graceful-fs: 4.2.11 + picomatch: 2.3.1 + dev: true + /jest-validate@27.5.1: resolution: {integrity: sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -11275,6 +12328,18 @@ packages: pretty-format: 27.5.1 dev: true + /jest-validate@29.7.0: + resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + camelcase: 6.3.0 + chalk: 4.1.2 + jest-get-type: 29.6.3 + leven: 3.1.0 + pretty-format: 29.7.0 + dev: true + /jest-watcher@27.5.1: resolution: {integrity: sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -11288,6 +12353,20 @@ packages: string-length: 4.0.2 dev: true + /jest-watcher@29.7.0: + resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.5.8 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + emittery: 0.13.1 + jest-util: 29.7.0 + string-length: 4.0.2 + dev: true + /jest-websocket-mock@2.2.1(mock-socket@9.0.8): resolution: {integrity: sha512-fhsGLXrPfs06PhHoxqOSA9yZ6Rb4qYrf4Wcm7/nfRzjlrf1gIeuhYUkzMRjjE0TMQ37SwkmeLanwrZY4ZaNp8g==} peerDependencies: @@ -11306,6 +12385,16 @@ packages: supports-color: 8.1.1 dev: true + /jest-worker@29.7.0: + resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@types/node': 20.5.8 + jest-util: 29.7.0 + merge-stream: 2.0.0 + supports-color: 8.1.1 + dev: true + /jest@27.4.5(ts-node@10.4.0): resolution: {integrity: sha512-uT5MiVN3Jppt314kidCk47MYIRilJjA/l2mxwiuzzxGUeJIvA8/pDaJOAX5KWvjAo7SCydcW0/4WEtgbLMiJkg==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -11327,6 +12416,27 @@ packages: - utf-8-validate dev: true + /jest@29.7.0(@types/node@18.11.18): + resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/core': 29.7.0 + '@jest/types': 29.6.3 + import-local: 3.1.0 + jest-cli: 29.7.0(@types/node@18.11.18) + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + dev: true + /jju@1.4.0: resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} dev: true @@ -11547,6 +12657,10 @@ packages: semver: 7.5.4 dev: true + /jsonc-parser@3.2.0: + resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} + dev: true + /jsonfile@4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} optionalDependencies: @@ -12241,6 +13355,10 @@ packages: engines: {node: '>=12'} dev: false + /lunr@2.3.9: + resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==} + dev: true + /luxon@3.3.0: resolution: {integrity: sha512-An0UCfG/rSiqtAIiBPO0Y9/zAnHUZxAMiCpTd5h2smgsj7GGmcenvrvww2cqNA8/4A5ZrD1gJpHN2mIHZQF+Mg==} engines: {node: '>=12'} @@ -12350,6 +13468,12 @@ packages: object-visit: 1.0.1 dev: true + /marked@4.3.0: + resolution: {integrity: sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==} + engines: {node: '>= 12'} + hasBin: true + dev: true + /matchdep@2.0.0: resolution: {integrity: sha512-LFgVbaHIHMqCRuCZyfCtUOq9/Lnzhi7Z0KFUE2fhD54+JN2jLh3hC02RLkqauJ3U4soU6H1J3tfj/Byk7GoEjA==} engines: {node: '>= 0.10.0'} @@ -12405,30 +13529,6 @@ packages: engines: {node: '>= 0.6'} dev: false - /megalodon@8.1.1: - resolution: {integrity: sha512-K7YjGmRbNkJao2E0hadJCW3IDloufVPUbYA/3+RFDFZvZO5v1MBz3rU4OixIgrHHY74PVTkSU8YHzyv7KA4rhA==} - engines: {node: '>=15.0.0'} - dependencies: - '@types/oauth': 0.9.2 - '@types/ws': 8.5.5 - axios: 1.5.1 - dayjs: 1.11.10 - form-data: 4.0.0 - https-proxy-agent: 7.0.2 - oauth: 0.10.0 - object-assign-deep: 0.4.0 - parse-link-header: 2.0.0 - socks-proxy-agent: 8.0.2 - typescript: 5.2.2 - uuid: 9.0.1 - ws: 8.14.2 - transitivePeerDependencies: - - bufferutil - - debug - - supports-color - - utf-8-validate - dev: false - /meilisearch@0.34.1: resolution: {integrity: sha512-7mrLp88JfrbvhAMhOjNPzHGd2iCLHgzNhkveMxppMOToMLQw4Ygof4ksQ9uFi7SKq3UwEhIoMoFT1rUHLD3vWQ==} dependencies: @@ -12580,6 +13680,13 @@ packages: dependencies: brace-expansion: 2.0.1 + /minimatch@7.4.6: + resolution: {integrity: sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==} + engines: {node: '>=10'} + dependencies: + brace-expansion: 2.0.1 + dev: true + /minimatch@9.0.1: resolution: {integrity: sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==} engines: {node: '>=16 || 14 >=14.17'} @@ -14270,6 +15377,15 @@ packages: react-is: 18.2.0 dev: true + /pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.6.3 + ansi-styles: 5.2.0 + react-is: 18.2.0 + dev: true + /pretty-hrtime@1.0.3: resolution: {integrity: sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==} engines: {node: '>= 0.8'} @@ -14495,6 +15611,10 @@ packages: resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} engines: {node: '>=6'} + /pure-rand@6.0.4: + resolution: {integrity: sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA==} + dev: true + /pureimage@0.4.8: resolution: {integrity: sha512-/yNBs67VB4moPB7tqfupxFhYYaSlpnBpDb5995B0FP+vTqKwR2KD2uEIvch9NmpqUpVnsXcDOsFgmuGTgLX/Lg==} engines: {node: '>=14.19.0'} @@ -15033,6 +16153,11 @@ packages: engines: {node: '>=10'} dev: true + /resolve.exports@2.0.2: + resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} + engines: {node: '>=10'} + dev: true + /resolve@1.19.0: resolution: {integrity: sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==} dependencies: @@ -15383,6 +16508,15 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} + /shiki@0.14.5: + resolution: {integrity: sha512-1gCAYOcmCFONmErGTrS1fjzJLA7MGZmKzrBNX7apqSwhyITJg2O102uFzXUeBxNnEkDA9vHIKLyeKq0V083vIw==} + dependencies: + ansi-sequence-parser: 1.1.1 + jsonc-parser: 3.2.0 + vscode-oniguruma: 1.7.0 + vscode-textmate: 8.0.0 + dev: true + /side-channel@1.0.4: resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} dependencies: @@ -15503,17 +16637,6 @@ packages: - supports-color dev: false - /socks-proxy-agent@8.0.2: - resolution: {integrity: sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g==} - engines: {node: '>= 14'} - dependencies: - agent-base: 7.1.0 - debug: 4.3.4(supports-color@8.1.1) - socks: 2.7.1 - transitivePeerDependencies: - - supports-color - dev: false - /socks@2.7.1: resolution: {integrity: sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==} engines: {node: '>= 10.13.0', npm: '>= 3.0.0'} @@ -15564,6 +16687,13 @@ packages: decode-uri-component: 0.2.2 dev: true + /source-map-support@0.5.13: + resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + dev: true + /source-map-support@0.5.21: resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} dependencies: @@ -16500,6 +17630,40 @@ packages: yargs-parser: 20.2.9 dev: true + /ts-jest@29.1.1(@babel/core@7.22.10)(jest@29.7.0)(typescript@4.9.4): + resolution: {integrity: sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + '@babel/core': '>=7.0.0-beta.0 <8' + '@jest/types': ^29.0.0 + babel-jest: ^29.0.0 + esbuild: '*' + jest: ^29.0.0 + typescript: '>=4.3 <6' + peerDependenciesMeta: + '@babel/core': + optional: true + '@jest/types': + optional: true + babel-jest: + optional: true + esbuild: + optional: true + dependencies: + '@babel/core': 7.22.10 + bs-logger: 0.2.6 + fast-json-stable-stringify: 2.1.0 + jest: 29.7.0(@types/node@18.11.18) + jest-util: 29.7.0 + json5: 2.2.3 + lodash.memoize: 4.1.2 + make-error: 1.3.6 + semver: 7.5.4 + typescript: 4.9.4 + yargs-parser: 21.1.1 + dev: true + /ts-loader@9.4.4(typescript@5.1.6)(webpack@5.88.2): resolution: {integrity: sha512-MLukxDHBl8OJ5Dk3y69IsKVFRA/6MwzEqBgh+OXMPB/OD01KQuWPFd1WAQP8a5PeSCAxfnkhiuWqfmFJzJQt9w==} engines: {node: '>=12.0.0'} @@ -16633,6 +17797,16 @@ packages: engines: {node: '>=0.6.x'} dev: false + /tsutils@3.21.0(typescript@4.9.4): + resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} + engines: {node: '>= 6'} + peerDependencies: + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + dependencies: + tslib: 1.14.1 + typescript: 4.9.4 + dev: true + /tsutils@3.21.0(typescript@5.2.2): resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} @@ -16755,6 +17929,20 @@ packages: /typedarray@0.0.6: resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} + /typedoc@0.23.28(typescript@4.9.4): + resolution: {integrity: sha512-9x1+hZWTHEQcGoP7qFmlo4unUoVJLB0H/8vfO/7wqTnZxg4kPuji9y3uRzEu0ZKez63OJAUmiGhUrtukC6Uj3w==} + engines: {node: '>= 14.14'} + hasBin: true + peerDependencies: + typescript: 4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x + dependencies: + lunr: 2.3.9 + marked: 4.3.0 + minimatch: 7.4.6 + shiki: 0.14.5 + typescript: 4.9.4 + dev: true + /typeorm@0.3.17(ioredis@5.3.2)(pg@8.11.3)(ts-node@10.9.1): resolution: {integrity: sha512-UDjUEwIQalO9tWw9O2A4GU+sT3oyoUXheHJy4ft+RFdnRdQctdQ34L9SqE2p7LdwzafHx1maxT+bqXON+Qnmig==} engines: {node: '>= 12.9.0'} @@ -16835,6 +18023,11 @@ packages: - supports-color dev: false + /typescript@4.9.4: + resolution: {integrity: sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==} + engines: {node: '>=4.2.0'} + hasBin: true + /typescript@5.0.4: resolution: {integrity: sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==} engines: {node: '>=12.20'} @@ -16856,6 +18049,7 @@ packages: resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==} engines: {node: '>=14.17'} hasBin: true + dev: true /ulid@2.3.0: resolution: {integrity: sha512-keqHubrlpvT6G2wH0OEfSW4mquYRcbe/J8NMmveoQOjUqmo+hXtO+ORCpWhdbZ7k72UtY61BL7haGxW6enBnjw==} @@ -17086,11 +18280,6 @@ packages: resolution: {integrity: sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==} hasBin: true - /uuid@9.0.1: - resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} - hasBin: true - dev: false - /v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} @@ -17103,6 +18292,15 @@ packages: source-map: 0.7.4 dev: true + /v8-to-istanbul@9.1.3: + resolution: {integrity: sha512-9lDD+EVI2fjFsMWXc6dy5JJzBsVTcQ2fVkfBvncZ6xJWG9wtBhOldG+mHkSL0+V1K/xgZz0JDO5UT5hFwHUghg==} + engines: {node: '>=10.12.0'} + dependencies: + '@jridgewell/trace-mapping': 0.3.19 + '@types/istanbul-lib-coverage': 2.0.4 + convert-source-map: 2.0.0 + dev: true + /v8flags@3.2.0: resolution: {integrity: sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==} engines: {node: '>= 0.10'} @@ -17256,6 +18454,14 @@ packages: resolution: {integrity: sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==} engines: {node: '>=0.10.0'} + /vscode-oniguruma@1.7.0: + resolution: {integrity: sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==} + dev: true + + /vscode-textmate@8.0.0: + resolution: {integrity: sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==} + dev: true + /vue-draggable-plus@0.2.6(@types/sortablejs@1.15.1): resolution: {integrity: sha512-d+0omKIBIfLiJFggc6H4ePRaifbX+33+OiCMsxn8rG59yWXlJGrobexxgXetnSo/1NLTd0TkYZKNc4CA6iwJZw==} peerDependencies: @@ -17624,6 +18830,14 @@ packages: typedarray-to-buffer: 3.1.5 dev: true + /write-file-atomic@4.0.2: + resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + dependencies: + imurmurhash: 0.1.4 + signal-exit: 3.0.7 + dev: true + /write-file-atomic@5.0.1: resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -17645,6 +18859,19 @@ packages: optional: true dev: true + /ws@8.12.0: + resolution: {integrity: sha512-kU62emKIdKVeEIOIKVegvqpXMSTAMLJozpHZaJNDYqBjzlSYXQGviYwN1osDLJ9av68qHd4a2oSjd7yD4pacig==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: false + /ws@8.13.0: resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} engines: {node: '>=10.0.0'} @@ -17658,19 +18885,6 @@ packages: optional: true dev: true - /ws@8.14.2: - resolution: {integrity: sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - dev: false - /xev@3.0.2: resolution: {integrity: sha512-8kxuH95iMXzHZj+fwqfA4UrPcYOy6bGIgfWzo9Ji23JoEc30ge/Z++Ubkiuy8c0+M64nXmmxrmJ7C8wnuBhluw==} dev: false diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index c70c008eaf..fd5cd65e6d 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -4,3 +4,4 @@ packages: - 'packages/client' - 'packages/sw' - 'packages/firefish-js' + - 'packages/megalodon' diff --git a/scripts/clean-all.js b/scripts/clean-all.js index 7beed3fe26..e3394f4098 100644 --- a/scripts/clean-all.js +++ b/scripts/clean-all.js @@ -46,6 +46,14 @@ const { join } = require("node:path"); recursive: true, force: true, }); + fs.rmSync(join(__dirname, "/../packages/megalodon/lib"), { + recursive: true, + force: true, + }); + fs.rmSync(join(__dirname, "/../packages/megalodon/node_modules"), { + recursive: true, + force: true, + }); fs.rmSync(join(__dirname, "/../built"), { recursive: true, force: true }); fs.rmSync(join(__dirname, "/../node_modules"), { diff --git a/scripts/clean.js b/scripts/clean.js index e4ae085b4c..455c436285 100644 --- a/scripts/clean.js +++ b/scripts/clean.js @@ -23,5 +23,9 @@ const { join } = require("node:path"); recursive: true, force: true, }); + fs.rmSync(join(__dirname, "/../packages/megalodon/lib"), { + recursive: true, + force: true, + }); fs.rmSync(join(__dirname, "/../built"), { recursive: true, force: true }); })(); From 3e3cbb60c6df71b5c2f0df7e9e84d4ebb7dd74d9 Mon Sep 17 00:00:00 2001 From: naskya <m@naskya.net> Date: Thu, 19 Oct 2023 07:28:20 +0900 Subject: [PATCH 04/74] fix?: icon and defaultStore imports --- packages/client/src/components/form/folder.vue | 5 ++++- packages/client/src/components/form/suspense.vue | 16 ++++++---------- .../pages/page-editor/page-editor.container.vue | 1 + .../page-editor/page-editor.script-block.vue | 5 +++-- packages/client/src/scripts/icon.ts | 2 +- packages/client/src/scripts/preprocess.ts | 2 +- 6 files changed, 16 insertions(+), 15 deletions(-) diff --git a/packages/client/src/components/form/folder.vue b/packages/client/src/components/form/folder.vue index 9446dabe6d..c289701d83 100644 --- a/packages/client/src/components/form/folder.vue +++ b/packages/client/src/components/form/folder.vue @@ -18,11 +18,14 @@ </template> <script lang="ts" setup> +import { ref } from "vue"; import icon from "@/scripts/icon"; -defineProps<{ +const props = defineProps<{ defaultOpen: boolean; }>(); + +const opened = ref(props.defaultOpen); </script> <style lang="scss" scoped> diff --git a/packages/client/src/components/form/suspense.vue b/packages/client/src/components/form/suspense.vue index 9aac57713d..d563ea1bc7 100644 --- a/packages/client/src/components/form/suspense.vue +++ b/packages/client/src/components/form/suspense.vue @@ -1,12 +1,8 @@ <template> - <!-- - FIXME: defaultStore and icon are undefined for some reason <transition :name="defaultStore.state.animation ? 'fade' : ''" mode="out-in" > - --> - <transition name="" mode="out-in"> <div v-if="pending"> <MkLoading /> </div> @@ -16,13 +12,11 @@ <div v-else> <div class="wszdbhzo"> <div> - <!-- <i :class="icon('ph-warning')"></i> --> - <i class="ph-warning ph-bold ph-lg"></i> + <i :class="icon('ph-warning')"></i> {{ i18n.ts.somethingHappened }} </div> <MkButton inline class="retry" @click="retry"> - <!-- <i :class="icon('ph-arrow-clockwise')"></i> --> - <i class="ph-arrow-clockwise ph-bold ph-lg"></i> + <i :class="icon('ph-arrow-clockwise')"></i> {{ i18n.ts.retry }}</MkButton > </div> @@ -35,8 +29,8 @@ import type { PropType } from "vue"; import { defineComponent, ref, watch } from "vue"; import MkButton from "@/components/MkButton.vue"; import { i18n } from "@/i18n"; -// import { defaultStore } from "@/store"; -// import icon from "@/scripts/icon"; +import { defaultStore } from "@/store"; +import icon from "@/scripts/icon"; export default defineComponent({ components: { @@ -96,6 +90,8 @@ export default defineComponent({ result, retry, i18n, + defaultStore, + icon, }; }, }); diff --git a/packages/client/src/pages/page-editor/page-editor.container.vue b/packages/client/src/pages/page-editor/page-editor.container.vue index 18ac745831..f769fc211c 100644 --- a/packages/client/src/pages/page-editor/page-editor.container.vue +++ b/packages/client/src/pages/page-editor/page-editor.container.vue @@ -75,6 +75,7 @@ export default defineComponent({ return { showBody: this.expanded, i18n, + icon, }; }, methods: { diff --git a/packages/client/src/pages/page-editor/page-editor.script-block.vue b/packages/client/src/pages/page-editor/page-editor.script-block.vue index 918de6e13e..e271fcf795 100644 --- a/packages/client/src/pages/page-editor/page-editor.script-block.vue +++ b/packages/client/src/pages/page-editor/page-editor.script-block.vue @@ -17,7 +17,7 @@ > <template #func> <button class="_button" @click="changeType()"> - <i :class="icon('ph-pencil')"></i> + <i :class="iconClass('ph-pencil')"></i> </button> </template> @@ -158,7 +158,7 @@ import * as os from "@/os"; import { isLiteralValue } from "@/scripts/hpml/expr"; import { funcDefs } from "@/scripts/hpml/lib"; import { i18n } from "@/i18n"; -import icon from "@/scripts/icon"; +import iconClass from "@/scripts/icon"; export default defineComponent({ components: { @@ -207,6 +207,7 @@ export default defineComponent({ warn: null, slots: "", i18n, + iconClass, }; }, diff --git a/packages/client/src/scripts/icon.ts b/packages/client/src/scripts/icon.ts index 49d447bb1e..71f643fdc8 100644 --- a/packages/client/src/scripts/icon.ts +++ b/packages/client/src/scripts/icon.ts @@ -1,5 +1,5 @@ import { defaultStore } from "@/store"; -export default function icon(name: string, large = true): string { +export default function (name: string, large = true): string { return `${name} ${large ? "ph-lg" : ""} ${defaultStore.state.iconSet}`; } diff --git a/packages/client/src/scripts/preprocess.ts b/packages/client/src/scripts/preprocess.ts index 835e2185d5..867a99097b 100644 --- a/packages/client/src/scripts/preprocess.ts +++ b/packages/client/src/scripts/preprocess.ts @@ -2,7 +2,7 @@ import * as mfm from "mfm-js"; import { defaultStore } from "@/store"; import { expandKaTeXMacro } from "@/scripts/katex-macro"; -export default function preprocess(text: string): string { +export default function (text: string): string { if (defaultStore.state.enableCustomKaTeXMacro) { const parsedKaTeXMacro = localStorage.getItem("customKaTeXMacroParsed") ?? "{}"; From 91a417f77cce1b6e35e7ba8e594eb08d7e703e5b Mon Sep 17 00:00:00 2001 From: naskya <m@naskya.net> Date: Wed, 18 Oct 2023 22:30:27 +0000 Subject: [PATCH 05/74] dev19 --- package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 9d4519c727..0203670c41 100644 --- a/package.json +++ b/package.json @@ -1,12 +1,12 @@ { "name": "firefish", - "version": "1.0.5-dev18", + "version": "1.0.5-dev19", "codename": "aqua", "repository": { "type": "git", "url": "https://git.joinfirefish.org/firefish/firefish.git" }, - "packageManager": "pnpm@8.8.0", + "packageManager": "pnpm@8.9.2", "private": true, "scripts": { "rebuild": "pnpm run clean && pnpm run build", @@ -64,7 +64,7 @@ "gulp-replace": "1.1.4", "gulp-terser": "2.1.0", "install-peers": "^1.0.4", - "pnpm": "8.8.0", + "pnpm": "8.9.2", "start-server-and-test": "1.15.2", "typescript": "5.2.2" } From 0a44d0652244240aa50fbae3ea88c616c8e1c136 Mon Sep 17 00:00:00 2001 From: naskya <m@naskya.net> Date: Thu, 19 Oct 2023 07:34:34 +0900 Subject: [PATCH 06/74] fix textarea --- packages/client/src/components/form/textarea.vue | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/packages/client/src/components/form/textarea.vue b/packages/client/src/components/form/textarea.vue index 4c00311942..23197e1d71 100644 --- a/packages/client/src/components/form/textarea.vue +++ b/packages/client/src/components/form/textarea.vue @@ -32,9 +32,7 @@ class="save" @click="updated" > - <!-- FIXME: icon function doesn't work here --> - <!-- <i :class="icon('ph-floppy-disk-back')"></i> --> - <i class="ph-floppy-disk-back ph-bold ph-lg"></i> + <i :class="icon('ph-floppy-disk-back')"></i> {{ i18n.ts.save }}</MkButton > </div> @@ -53,7 +51,7 @@ import { import { debounce } from "throttle-debounce"; import MkButton from "@/components/MkButton.vue"; import { i18n } from "@/i18n"; -// import icon from "@/scripts/icon"; +import icon from "@/scripts/icon"; export default defineComponent({ components: { @@ -192,6 +190,7 @@ export default defineComponent({ onKeydown, updated, i18n, + icon, }; }, }); From 0b8b4ea48d38915e318a8c1ca2717478d924eb87 Mon Sep 17 00:00:00 2001 From: naskya <m@naskya.net> Date: Wed, 18 Oct 2023 23:46:07 +0000 Subject: [PATCH 07/74] fix components/form/suspense.vue --- packages/client/src/components/form/suspense.vue | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/client/src/components/form/suspense.vue b/packages/client/src/components/form/suspense.vue index d563ea1bc7..543e8e09bf 100644 --- a/packages/client/src/components/form/suspense.vue +++ b/packages/client/src/components/form/suspense.vue @@ -12,11 +12,11 @@ <div v-else> <div class="wszdbhzo"> <div> - <i :class="icon('ph-warning')"></i> + <i :class="iconClass('ph-warning')"></i> {{ i18n.ts.somethingHappened }} </div> <MkButton inline class="retry" @click="retry"> - <i :class="icon('ph-arrow-clockwise')"></i> + <i :class="iconClass('ph-arrow-clockwise')"></i> {{ i18n.ts.retry }}</MkButton > </div> @@ -30,7 +30,7 @@ import { defineComponent, ref, watch } from "vue"; import MkButton from "@/components/MkButton.vue"; import { i18n } from "@/i18n"; import { defaultStore } from "@/store"; -import icon from "@/scripts/icon"; +import iconClass from "@/scripts/icon"; export default defineComponent({ components: { @@ -91,7 +91,7 @@ export default defineComponent({ retry, i18n, defaultStore, - icon, + iconClass, }; }, }); From fd3d788aad51145f4e7f1aecbe2e56ad4800b9a1 Mon Sep 17 00:00:00 2001 From: naskya <m@naskya.net> Date: Thu, 19 Oct 2023 14:41:16 +0900 Subject: [PATCH 08/74] fix: properly bypass word mute check if signed out --- packages/client/src/components/MkNote.vue | 2 +- packages/client/src/components/MkNoteDetailed.vue | 2 +- packages/client/src/components/MkNoteSub.vue | 2 +- packages/client/src/scripts/check-word-mute.ts | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/client/src/components/MkNote.vue b/packages/client/src/components/MkNote.vue index 7463d32f96..7a63f9012e 100644 --- a/packages/client/src/components/MkNote.vue +++ b/packages/client/src/components/MkNote.vue @@ -359,7 +359,7 @@ const isDeleted = ref(false); const muted = ref( getWordSoftMute( note.value, - $i.id, + $i?.id, defaultStore.state.mutedWords, defaultStore.state.mutedLangs, ), diff --git a/packages/client/src/components/MkNoteDetailed.vue b/packages/client/src/components/MkNoteDetailed.vue index 5e0770e151..a2e9c10db8 100644 --- a/packages/client/src/components/MkNoteDetailed.vue +++ b/packages/client/src/components/MkNoteDetailed.vue @@ -235,7 +235,7 @@ const isDeleted = ref(false); const muted = ref( getWordSoftMute( note.value, - $i.id, + $i?.id, defaultStore.state.mutedWords, defaultStore.state.mutedLangs, ), diff --git a/packages/client/src/components/MkNoteSub.vue b/packages/client/src/components/MkNoteSub.vue index 535320079d..1dd1351700 100644 --- a/packages/client/src/components/MkNoteSub.vue +++ b/packages/client/src/components/MkNoteSub.vue @@ -268,7 +268,7 @@ const isDeleted = ref(false); const muted = ref( getWordSoftMute( note.value, - $i.id, + $i?.id, defaultStore.state.mutedWords, defaultStore.state.mutedLangs, ), diff --git a/packages/client/src/scripts/check-word-mute.ts b/packages/client/src/scripts/check-word-mute.ts index 7bdf6a9685..730351c590 100644 --- a/packages/client/src/scripts/check-word-mute.ts +++ b/packages/client/src/scripts/check-word-mute.ts @@ -79,7 +79,7 @@ export function getWordSoftMute( mutedWords: Array<string | string[]>, mutedLangs: Array<string | string[]>, ): Muted { - if (note.userId === meId) return NotMuted; + if (meId == null || note.userId === meId) return NotMuted; if (mutedWords.length > 0) { const noteMuted = checkWordMute(note, mutedWords); From c21a24ee928e307b0583d7abb109cfae64dcc131 Mon Sep 17 00:00:00 2001 From: naskya <m@naskya.net> Date: Thu, 19 Oct 2023 14:46:20 +0900 Subject: [PATCH 09/74] fix: null error in renote button --- .../client/src/components/MkRenoteButton.vue | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/packages/client/src/components/MkRenoteButton.vue b/packages/client/src/components/MkRenoteButton.vue index 90ecb3217f..0c0790d86e 100644 --- a/packages/client/src/components/MkRenoteButton.vue +++ b/packages/client/src/components/MkRenoteButton.vue @@ -73,13 +73,16 @@ useTooltip(buttonRef, async (showing) => { }); const hasRenotedBefore = ref(false); -os.api("notes/renotes", { - noteId: props.note.id, - userId: $i.id, - limit: 1, -}).then((res) => { - hasRenotedBefore.value = res.length > 0; -}); + +if ($i != null) { + os.api("notes/renotes", { + noteId: props.note.id, + userId: $i.id, + limit: 1, + }).then((res) => { + hasRenotedBefore.value = res.length > 0; + }); +} const renote = (viaKeyboard = false, ev?: MouseEvent) => { pleaseLogin(); From a954a06fad6d984d945eeec760f98fca848b8630 Mon Sep 17 00:00:00 2001 From: naskya <m@naskya.net> Date: Thu, 19 Oct 2023 14:47:30 +0900 Subject: [PATCH 10/74] fix: define icon --- packages/client/src/ui/visitor/header.vue | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/client/src/ui/visitor/header.vue b/packages/client/src/ui/visitor/header.vue index 42d2e3955d..5458efb656 100644 --- a/packages/client/src/ui/visitor/header.vue +++ b/packages/client/src/ui/visitor/header.vue @@ -130,6 +130,7 @@ export default defineComponent({ !instance.disableLocalTimeline || !instance.disableRecommendedTimeline || !instance.disableGlobalTimeline, + icon, }; }, From e0aebd8f327dddec4493ac6463ec75a927a4ccd6 Mon Sep 17 00:00:00 2001 From: ThatOneCalculator <kainoa@t1c.dev> Date: Thu, 19 Oct 2023 10:55:48 -0700 Subject: [PATCH 11/74] fix: :bug: MkDialog/MkWaitingDialog icons --- packages/client/src/components/MkDialog.vue | 17 ++++++----------- .../client/src/components/MkWaitingDialog.vue | 4 ++-- 2 files changed, 8 insertions(+), 13 deletions(-) diff --git a/packages/client/src/components/MkDialog.vue b/packages/client/src/components/MkDialog.vue index ce1bfc3871..216fb4500a 100644 --- a/packages/client/src/components/MkDialog.vue +++ b/packages/client/src/components/MkDialog.vue @@ -11,32 +11,27 @@ </div> <div v-else-if="!input && !select" - :class="[$style.icon, $style['type_' + type]]" + :class="[$style.icon, $style[`type_${type}`]]" > <i v-if="type === 'success'" - :class="$style.iconInner" - class="ph-check ph-lg" + :class="[$style.iconInner, iconClass('ph-check')]" ></i> <i v-else-if="type === 'error'" - :class="$style.iconInner" - class="ph-circle-wavy-warning ph-lg" + :class="[$style.iconInner, iconClass('ph-circle-wavy-warning')]" ></i> <i v-else-if="type === 'warning'" - :class="$style.iconInner" - class="ph-warning ph-lg" + :class="[$style.iconInner, iconClass('ph-warning')]" ></i> <i v-else-if="type === 'info'" - :class="$style.iconInner" - class="ph-info ph-lg" + :class="[$style.iconInner, iconClass('ph-info')]" ></i> <i v-else-if="type === 'question'" - :class="$style.iconInner" - class="ph-circle-question ph-lg" + :class="[$style.iconInner, iconClass('ph-question')]" ></i> <MkLoading v-else-if="type === 'waiting'" diff --git a/packages/client/src/components/MkWaitingDialog.vue b/packages/client/src/components/MkWaitingDialog.vue index 944ec29374..b5732c951d 100644 --- a/packages/client/src/components/MkWaitingDialog.vue +++ b/packages/client/src/components/MkWaitingDialog.vue @@ -14,8 +14,7 @@ > <i v-if="success" - :class="[$style.icon, $style.success]" - class="ph-check ph-lg" + :class="[$style.icon, $style.success, iconClass('ph-check')]" ></i> <MkLoading v-else @@ -32,6 +31,7 @@ <script lang="ts" setup> import { shallowRef, watch } from "vue"; import MkModal from "@/components/MkModal.vue"; +import iconClass from "@/scripts/icon" const modal = shallowRef<InstanceType<typeof MkModal>>(); From 291cd65417de39d97118008c8c6ac7b79ccd1afd Mon Sep 17 00:00:00 2001 From: ThatOneCalculator <kainoa@t1c.dev> Date: Thu, 19 Oct 2023 11:24:58 -0700 Subject: [PATCH 12/74] fix: :bug: icon in titleContainer --- packages/client/src/components/global/MkPageHeader.vue | 2 +- packages/client/src/pages/admin/_header_.vue | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/client/src/components/global/MkPageHeader.vue b/packages/client/src/components/global/MkPageHeader.vue index 78abe21b3e..f6f32fc2f9 100644 --- a/packages/client/src/components/global/MkPageHeader.vue +++ b/packages/client/src/components/global/MkPageHeader.vue @@ -43,7 +43,7 @@ <i v-else-if="metadata.icon && !narrow" class="icon" - :class="metadata.icon" + :class="icon(metadata.icon)" ></i> <div class="title"> diff --git a/packages/client/src/pages/admin/_header_.vue b/packages/client/src/pages/admin/_header_.vue index 0192a48c0d..6d2506a177 100644 --- a/packages/client/src/pages/admin/_header_.vue +++ b/packages/client/src/pages/admin/_header_.vue @@ -2,7 +2,7 @@ <div ref="el" class="fdidabkc" :style="{ background: bg }" @click="onClick"> <template v-if="metadata"> <div class="titleContainer" @click="showTabsPopup"> - <i v-if="metadata.icon" class="icon" :class="metadata.icon"></i> + <i v-if="metadata.icon" class="icon" :class="icon(metadata.icon)"></i> <div class="title"> <div class="title">{{ metadata.title }}</div> @@ -63,6 +63,7 @@ import { scrollToTop } from "@/scripts/scroll"; import MkButton from "@/components/MkButton.vue"; import { globalEvents } from "@/events"; import { injectPageMetadata } from "@/scripts/page-metadata"; +import icon from "@/scripts/icon" interface Tab { key?: string | null; From 027b4db37bba385ab9131ce5dc618db104d4687e Mon Sep 17 00:00:00 2001 From: ThatOneCalculator <kainoa@t1c.dev> Date: Thu, 19 Oct 2023 16:18:21 -0700 Subject: [PATCH 13/74] refactor: :recycle: firefish-js build --- packages/firefish-js/.editorconfig | 7 - packages/firefish-js/.swcrc | 1 + packages/firefish-js/README.md | 1 - packages/firefish-js/api-extractor.json | 364 - packages/firefish-js/codecov.yml | 2 - packages/firefish-js/etc/firefish-js.api.json | 9814 ----------------- packages/firefish-js/etc/firefish-js.api.md | 2839 ----- .../firefish-js/markdown/firefish-js.acct.md | 14 - ...firefish-js.api.apiclient._constructor_.md | 24 - .../firefish-js.api.apiclient.credential.md | 11 - .../firefish-js.api.apiclient.fetch.md | 11 - .../markdown/firefish-js.api.apiclient.md | 32 - .../firefish-js.api.apiclient.origin.md | 11 - .../firefish-js.api.apiclient.request.md | 57 - .../markdown/firefish-js.api.apierror.md | 17 - .../markdown/firefish-js.api.fetchlike.md | 22 - .../markdown/firefish-js.api.isapierror.md | 22 - .../firefish-js/markdown/firefish-js.api.md | 25 - ...fish-js.channelconnection._constructor_.md | 22 - .../firefish-js.channelconnection.channel.md | 11 - .../firefish-js.channelconnection.dispose.md | 15 - .../firefish-js.channelconnection.id.md | 11 - .../firefish-js.channelconnection.incount.md | 11 - .../markdown/firefish-js.channelconnection.md | 39 - .../firefish-js.channelconnection.name.md | 11 - .../firefish-js.channelconnection.outcount.md | 11 - .../firefish-js.channelconnection.send.md | 26 - .../firefish-js.channelconnection.stream.md | 11 - .../markdown/firefish-js.channels.md | 143 - .../markdown/firefish-js.endpoints.md | 1911 ---- .../markdown/firefish-js.entities.ad.md | 11 - .../firefish-js.entities.announcement.md | 21 - .../markdown/firefish-js.entities.antenna.md | 29 - .../markdown/firefish-js.entities.app.md | 11 - .../firefish-js.entities.authsession.md | 17 - .../markdown/firefish-js.entities.blocking.md | 18 - .../markdown/firefish-js.entities.channel.md | 15 - .../markdown/firefish-js.entities.clip.md | 11 - .../firefish-js.entities.customemoji.md | 17 - .../firefish-js.entities.datestring.md | 11 - ...sh-js.entities.detailedinstancemetadata.md | 15 - .../firefish-js.entities.drivefile.md | 26 - .../firefish-js.entities.drivefolder.md | 11 - .../firefish-js.entities.following.md | 18 - ...-js.entities.followingfolloweepopulated.md | 15 - ...-js.entities.followingfollowerpopulated.md | 15 - .../firefish-js.entities.followrequest.md | 17 - .../firefish-js.entities.gallerypost.md | 11 - .../markdown/firefish-js.entities.id.md | 11 - .../markdown/firefish-js.entities.instance.md | 40 - .../firefish-js.entities.instancemetadata.md | 15 - ...refish-js.entities.liteinstancemetadata.md | 46 - .../markdown/firefish-js.entities.md | 51 - .../firefish-js.entities.medetailed.md | 40 - .../firefish-js.entities.messagingmessage.md | 27 - .../markdown/firefish-js.entities.note.md | 51 - .../firefish-js.entities.notefavorite.md | 18 - .../firefish-js.entities.notereaction.md | 18 - .../firefish-js.entities.notification.md | 82 - .../firefish-js.entities.origintype.md | 11 - .../markdown/firefish-js.entities.page.md | 33 - .../firefish-js.entities.pageevent.md | 19 - .../firefish-js.entities.serverinfo.md | 24 - .../markdown/firefish-js.entities.signin.md | 19 - .../markdown/firefish-js.entities.stats.md | 19 - .../markdown/firefish-js.entities.user.md | 13 - .../firefish-js.entities.userdetailed.md | 56 - .../firefish-js.entities.usergroup.md | 11 - .../markdown/firefish-js.entities.userlist.md | 18 - .../markdown/firefish-js.entities.userlite.md | 35 - .../firefish-js.entities.usersorting.md | 17 - .../markdown/firefish-js.ffvisibility.md | 11 - packages/firefish-js/markdown/firefish-js.md | 43 - .../markdown/firefish-js.mutednotereasons.md | 16 - .../markdown/firefish-js.notevisibilities.md | 16 - .../markdown/firefish-js.notificationtypes.md | 24 - .../markdown/firefish-js.permissions.md | 11 - .../firefish-js.stream._constructor_.md | 30 - .../markdown/firefish-js.stream.close.md | 15 - .../firefish-js.stream.disconnecttochannel.md | 22 - .../markdown/firefish-js.stream.md | 36 - ...refish-js.stream.removesharedconnection.md | 22 - ...sh-js.stream.removesharedconnectionpool.md | 22 - .../markdown/firefish-js.stream.send.md | 23 - .../markdown/firefish-js.stream.state.md | 11 - .../markdown/firefish-js.stream.usechannel.md | 28 - packages/firefish-js/markdown/index.md | 12 - packages/firefish-js/package.json | 19 +- packages/firefish-js/src/streaming.ts | 3 +- pnpm-lock.yaml | 19 +- 90 files changed, 17 insertions(+), 16825 deletions(-) delete mode 100644 packages/firefish-js/.editorconfig delete mode 100644 packages/firefish-js/api-extractor.json delete mode 100644 packages/firefish-js/codecov.yml delete mode 100644 packages/firefish-js/etc/firefish-js.api.json delete mode 100644 packages/firefish-js/etc/firefish-js.api.md delete mode 100644 packages/firefish-js/markdown/firefish-js.acct.md delete mode 100644 packages/firefish-js/markdown/firefish-js.api.apiclient._constructor_.md delete mode 100644 packages/firefish-js/markdown/firefish-js.api.apiclient.credential.md delete mode 100644 packages/firefish-js/markdown/firefish-js.api.apiclient.fetch.md delete mode 100644 packages/firefish-js/markdown/firefish-js.api.apiclient.md delete mode 100644 packages/firefish-js/markdown/firefish-js.api.apiclient.origin.md delete mode 100644 packages/firefish-js/markdown/firefish-js.api.apiclient.request.md delete mode 100644 packages/firefish-js/markdown/firefish-js.api.apierror.md delete mode 100644 packages/firefish-js/markdown/firefish-js.api.fetchlike.md delete mode 100644 packages/firefish-js/markdown/firefish-js.api.isapierror.md delete mode 100644 packages/firefish-js/markdown/firefish-js.api.md delete mode 100644 packages/firefish-js/markdown/firefish-js.channelconnection._constructor_.md delete mode 100644 packages/firefish-js/markdown/firefish-js.channelconnection.channel.md delete mode 100644 packages/firefish-js/markdown/firefish-js.channelconnection.dispose.md delete mode 100644 packages/firefish-js/markdown/firefish-js.channelconnection.id.md delete mode 100644 packages/firefish-js/markdown/firefish-js.channelconnection.incount.md delete mode 100644 packages/firefish-js/markdown/firefish-js.channelconnection.md delete mode 100644 packages/firefish-js/markdown/firefish-js.channelconnection.name.md delete mode 100644 packages/firefish-js/markdown/firefish-js.channelconnection.outcount.md delete mode 100644 packages/firefish-js/markdown/firefish-js.channelconnection.send.md delete mode 100644 packages/firefish-js/markdown/firefish-js.channelconnection.stream.md delete mode 100644 packages/firefish-js/markdown/firefish-js.channels.md delete mode 100644 packages/firefish-js/markdown/firefish-js.endpoints.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.ad.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.announcement.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.antenna.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.app.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.authsession.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.blocking.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.channel.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.clip.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.customemoji.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.datestring.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.detailedinstancemetadata.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.drivefile.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.drivefolder.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.following.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.followingfolloweepopulated.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.followingfollowerpopulated.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.followrequest.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.gallerypost.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.id.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.instance.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.instancemetadata.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.liteinstancemetadata.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.medetailed.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.messagingmessage.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.note.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.notefavorite.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.notereaction.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.notification.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.origintype.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.page.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.pageevent.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.serverinfo.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.signin.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.stats.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.user.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.userdetailed.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.usergroup.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.userlist.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.userlite.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.usersorting.md delete mode 100644 packages/firefish-js/markdown/firefish-js.ffvisibility.md delete mode 100644 packages/firefish-js/markdown/firefish-js.md delete mode 100644 packages/firefish-js/markdown/firefish-js.mutednotereasons.md delete mode 100644 packages/firefish-js/markdown/firefish-js.notevisibilities.md delete mode 100644 packages/firefish-js/markdown/firefish-js.notificationtypes.md delete mode 100644 packages/firefish-js/markdown/firefish-js.permissions.md delete mode 100644 packages/firefish-js/markdown/firefish-js.stream._constructor_.md delete mode 100644 packages/firefish-js/markdown/firefish-js.stream.close.md delete mode 100644 packages/firefish-js/markdown/firefish-js.stream.disconnecttochannel.md delete mode 100644 packages/firefish-js/markdown/firefish-js.stream.md delete mode 100644 packages/firefish-js/markdown/firefish-js.stream.removesharedconnection.md delete mode 100644 packages/firefish-js/markdown/firefish-js.stream.removesharedconnectionpool.md delete mode 100644 packages/firefish-js/markdown/firefish-js.stream.send.md delete mode 100644 packages/firefish-js/markdown/firefish-js.stream.state.md delete mode 100644 packages/firefish-js/markdown/firefish-js.stream.usechannel.md delete mode 100644 packages/firefish-js/markdown/index.md diff --git a/packages/firefish-js/.editorconfig b/packages/firefish-js/.editorconfig deleted file mode 100644 index da178f0707..0000000000 --- a/packages/firefish-js/.editorconfig +++ /dev/null @@ -1,7 +0,0 @@ -root = true - -[*] -indent_style = tab -indent_size = 2 -charset = utf-8 -insert_final_newline = true diff --git a/packages/firefish-js/.swcrc b/packages/firefish-js/.swcrc index 508e597b5c..0fbb5c87c5 100644 --- a/packages/firefish-js/.swcrc +++ b/packages/firefish-js/.swcrc @@ -1,5 +1,6 @@ { "$schema": "https://json.schemastore.org/swcrc", + "sourceMaps": true, "jsc": { "parser": { "syntax": "typescript", diff --git a/packages/firefish-js/README.md b/packages/firefish-js/README.md index 24839275ab..e75ba12681 100644 --- a/packages/firefish-js/README.md +++ b/packages/firefish-js/README.md @@ -6,4 +6,3 @@ https://www.npmjs.com/package/firefish-js To fully build, run `pnpm i && pnpm run render`. - diff --git a/packages/firefish-js/api-extractor.json b/packages/firefish-js/api-extractor.json deleted file mode 100644 index a95281a6d5..0000000000 --- a/packages/firefish-js/api-extractor.json +++ /dev/null @@ -1,364 +0,0 @@ -/** - * Config file for API Extractor. For more info, please visit: https://api-extractor.com - */ -{ - "$schema": "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json", - - /** - * Optionally specifies another JSON config file that this file extends from. This provides a way for - * standard settings to be shared across multiple projects. - * - * If the path starts with "./" or "../", the path is resolved relative to the folder of the file that contains - * the "extends" field. Otherwise, the first path segment is interpreted as an NPM package name, and will be - * resolved using NodeJS require(). - * - * SUPPORTED TOKENS: none - * DEFAULT VALUE: "" - */ - // "extends": "./shared/api-extractor-base.json" - // "extends": "my-package/include/api-extractor-base.json" - - /** - * Determines the "<projectFolder>" token that can be used with other config file settings. The project folder - * typically contains the tsconfig.json and package.json config files, but the path is user-defined. - * - * The path is resolved relative to the folder of the config file that contains the setting. - * - * The default value for "projectFolder" is the token "<lookup>", which means the folder is determined by traversing - * parent folders, starting from the folder containing api-extractor.json, and stopping at the first folder - * that contains a tsconfig.json file. If a tsconfig.json file cannot be found in this way, then an error - * will be reported. - * - * SUPPORTED TOKENS: <lookup> - * DEFAULT VALUE: "<lookup>" - */ - // "projectFolder": "..", - - /** - * (REQUIRED) Specifies the .d.ts file to be used as the starting point for analysis. API Extractor - * analyzes the symbols exported by this module. - * - * The file extension must be ".d.ts" and not ".ts". - * - * The path is resolved relative to the folder of the config file that contains the setting; to change this, - * prepend a folder token such as "<projectFolder>". - * - * SUPPORTED TOKENS: <projectFolder>, <packageName>, <unscopedPackageName> - */ - "mainEntryPointFilePath": "<projectFolder>/built/index.d.ts", - - /** - * A list of NPM package names whose exports should be treated as part of this package. - * - * For example, suppose that Webpack is used to generate a distributed bundle for the project "library1", - * and another NPM package "library2" is embedded in this bundle. Some types from library2 may become part - * of the exported API for library1, but by default API Extractor would generate a .d.ts rollup that explicitly - * imports library2. To avoid this, we can specify: - * - * "bundledPackages": [ "library2" ], - * - * This would direct API Extractor to embed those types directly in the .d.ts rollup, as if they had been - * local files for library1. - */ - "bundledPackages": [], - - /** - * Determines how the TypeScript compiler engine will be invoked by API Extractor. - */ - "compiler": { - /** - * Specifies the path to the tsconfig.json file to be used by API Extractor when analyzing the project. - * - * The path is resolved relative to the folder of the config file that contains the setting; to change this, - * prepend a folder token such as "<projectFolder>". - * - * Note: This setting will be ignored if "overrideTsconfig" is used. - * - * SUPPORTED TOKENS: <projectFolder>, <packageName>, <unscopedPackageName> - * DEFAULT VALUE: "<projectFolder>/tsconfig.json" - */ - // "tsconfigFilePath": "<projectFolder>/tsconfig.json", - /** - * Provides a compiler configuration that will be used instead of reading the tsconfig.json file from disk. - * The object must conform to the TypeScript tsconfig schema: - * - * http://json.schemastore.org/tsconfig - * - * If omitted, then the tsconfig.json file will be read from the "projectFolder". - * - * DEFAULT VALUE: no overrideTsconfig section - */ - // "overrideTsconfig": { - // . . . - // } - /** - * This option causes the compiler to be invoked with the --skipLibCheck option. This option is not recommended - * and may cause API Extractor to produce incomplete or incorrect declarations, but it may be required when - * dependencies contain declarations that are incompatible with the TypeScript engine that API Extractor uses - * for its analysis. Where possible, the underlying issue should be fixed rather than relying on skipLibCheck. - * - * DEFAULT VALUE: false - */ - // "skipLibCheck": true, - }, - - /** - * Configures how the API report file (*.api.md) will be generated. - */ - "apiReport": { - /** - * (REQUIRED) Whether to generate an API report. - */ - "enabled": true - - /** - * The filename for the API report files. It will be combined with "reportFolder" or "reportTempFolder" to produce - * a full file path. - * - * The file extension should be ".api.md", and the string should not contain a path separator such as "\" or "/". - * - * SUPPORTED TOKENS: <packageName>, <unscopedPackageName> - * DEFAULT VALUE: "<unscopedPackageName>.api.md" - */ - // "reportFileName": "<unscopedPackageName>.api.md", - - /** - * Specifies the folder where the API report file is written. The file name portion is determined by - * the "reportFileName" setting. - * - * The API report file is normally tracked by Git. Changes to it can be used to trigger a branch policy, - * e.g. for an API review. - * - * The path is resolved relative to the folder of the config file that contains the setting; to change this, - * prepend a folder token such as "<projectFolder>". - * - * SUPPORTED TOKENS: <projectFolder>, <packageName>, <unscopedPackageName> - * DEFAULT VALUE: "<projectFolder>/etc/" - */ - // "reportFolder": "<projectFolder>/etc/", - - /** - * Specifies the folder where the temporary report file is written. The file name portion is determined by - * the "reportFileName" setting. - * - * After the temporary file is written to disk, it is compared with the file in the "reportFolder". - * If they are different, a production build will fail. - * - * The path is resolved relative to the folder of the config file that contains the setting; to change this, - * prepend a folder token such as "<projectFolder>". - * - * SUPPORTED TOKENS: <projectFolder>, <packageName>, <unscopedPackageName> - * DEFAULT VALUE: "<projectFolder>/temp/" - */ - // "reportTempFolder": "<projectFolder>/temp/" - }, - - /** - * Configures how the doc model file (*.api.json) will be generated. - */ - "docModel": { - /** - * (REQUIRED) Whether to generate a doc model file. - */ - "enabled": true - - /** - * The output path for the doc model file. The file extension should be ".api.json". - * - * The path is resolved relative to the folder of the config file that contains the setting; to change this, - * prepend a folder token such as "<projectFolder>". - * - * SUPPORTED TOKENS: <projectFolder>, <packageName>, <unscopedPackageName> - * DEFAULT VALUE: "<projectFolder>/temp/<unscopedPackageName>.api.json" - */ - // "apiJsonFilePath": "<projectFolder>/temp/<unscopedPackageName>.api.json" - }, - - /** - * Configures how the .d.ts rollup file will be generated. - */ - "dtsRollup": { - /** - * (REQUIRED) Whether to generate the .d.ts rollup file. - */ - "enabled": false - - /** - * Specifies the output path for a .d.ts rollup file to be generated without any trimming. - * This file will include all declarations that are exported by the main entry point. - * - * If the path is an empty string, then this file will not be written. - * - * The path is resolved relative to the folder of the config file that contains the setting; to change this, - * prepend a folder token such as "<projectFolder>". - * - * SUPPORTED TOKENS: <projectFolder>, <packageName>, <unscopedPackageName> - * DEFAULT VALUE: "<projectFolder>/dist/<unscopedPackageName>.d.ts" - */ - // "untrimmedFilePath": "<projectFolder>/dist/<unscopedPackageName>.d.ts", - - /** - * Specifies the output path for a .d.ts rollup file to be generated with trimming for a "beta" release. - * This file will include only declarations that are marked as "@public" or "@beta". - * - * The path is resolved relative to the folder of the config file that contains the setting; to change this, - * prepend a folder token such as "<projectFolder>". - * - * SUPPORTED TOKENS: <projectFolder>, <packageName>, <unscopedPackageName> - * DEFAULT VALUE: "" - */ - // "betaTrimmedFilePath": "<projectFolder>/dist/<unscopedPackageName>-beta.d.ts", - - /** - * Specifies the output path for a .d.ts rollup file to be generated with trimming for a "public" release. - * This file will include only declarations that are marked as "@public". - * - * If the path is an empty string, then this file will not be written. - * - * The path is resolved relative to the folder of the config file that contains the setting; to change this, - * prepend a folder token such as "<projectFolder>". - * - * SUPPORTED TOKENS: <projectFolder>, <packageName>, <unscopedPackageName> - * DEFAULT VALUE: "" - */ - // "publicTrimmedFilePath": "<projectFolder>/dist/<unscopedPackageName>-public.d.ts", - - /** - * When a declaration is trimmed, by default it will be replaced by a code comment such as - * "Excluded from this release type: exampleMember". Set "omitTrimmingComments" to true to remove the - * declaration completely. - * - * DEFAULT VALUE: false - */ - // "omitTrimmingComments": true - }, - - /** - * Configures how the tsdoc-metadata.json file will be generated. - */ - "tsdocMetadata": { - /** - * Whether to generate the tsdoc-metadata.json file. - * - * DEFAULT VALUE: true - */ - // "enabled": true, - /** - * Specifies where the TSDoc metadata file should be written. - * - * The path is resolved relative to the folder of the config file that contains the setting; to change this, - * prepend a folder token such as "<projectFolder>". - * - * The default value is "<lookup>", which causes the path to be automatically inferred from the "tsdocMetadata", - * "typings" or "main" fields of the project's package.json. If none of these fields are set, the lookup - * falls back to "tsdoc-metadata.json" in the package folder. - * - * SUPPORTED TOKENS: <projectFolder>, <packageName>, <unscopedPackageName> - * DEFAULT VALUE: "<lookup>" - */ - // "tsdocMetadataFilePath": "<projectFolder>/dist/tsdoc-metadata.json" - }, - - /** - * Specifies what type of newlines API Extractor should use when writing output files. By default, the output files - * will be written with Windows-style newlines. To use POSIX-style newlines, specify "lf" instead. - * To use the OS's default newline kind, specify "os". - * - * DEFAULT VALUE: "crlf" - */ - // "newlineKind": "crlf", - - /** - * Configures how API Extractor reports error and warning messages produced during analysis. - * - * There are three sources of messages: compiler messages, API Extractor messages, and TSDoc messages. - */ - "messages": { - /** - * Configures handling of diagnostic messages reported by the TypeScript compiler engine while analyzing - * the input .d.ts files. - * - * TypeScript message identifiers start with "TS" followed by an integer. For example: "TS2551" - * - * DEFAULT VALUE: A single "default" entry with logLevel=warning. - */ - "compilerMessageReporting": { - /** - * Configures the default routing for messages that don't match an explicit rule in this table. - */ - "default": { - /** - * Specifies whether the message should be written to the the tool's output log. Note that - * the "addToApiReportFile" property may supersede this option. - * - * Possible values: "error", "warning", "none" - * - * Errors cause the build to fail and return a nonzero exit code. Warnings cause a production build fail - * and return a nonzero exit code. For a non-production build (e.g. when "api-extractor run" includes - * the "--local" option), the warning is displayed but the build will not fail. - * - * DEFAULT VALUE: "warning" - */ - "logLevel": "warning" - - /** - * When addToApiReportFile is true: If API Extractor is configured to write an API report file (.api.md), - * then the message will be written inside that file; otherwise, the message is instead logged according to - * the "logLevel" option. - * - * DEFAULT VALUE: false - */ - // "addToApiReportFile": false - } - - // "TS2551": { - // "logLevel": "warning", - // "addToApiReportFile": true - // }, - // - // . . . - }, - - /** - * Configures handling of messages reported by API Extractor during its analysis. - * - * API Extractor message identifiers start with "ae-". For example: "ae-extra-release-tag" - * - * DEFAULT VALUE: See api-extractor-defaults.json for the complete table of extractorMessageReporting mappings - */ - "extractorMessageReporting": { - "default": { - "logLevel": "none" - // "addToApiReportFile": false - } - - // "ae-extra-release-tag": { - // "logLevel": "warning", - // "addToApiReportFile": true - // }, - // - // . . . - }, - - /** - * Configures handling of messages reported by the TSDoc parser when analyzing code comments. - * - * TSDoc message identifiers start with "tsdoc-". For example: "tsdoc-link-tag-unescaped-text" - * - * DEFAULT VALUE: A single "default" entry with logLevel=warning. - */ - "tsdocMessageReporting": { - "default": { - "logLevel": "warning" - // "addToApiReportFile": false - } - - // "tsdoc-link-tag-unescaped-text": { - // "logLevel": "warning", - // "addToApiReportFile": true - // }, - // - // . . . - } - } -} diff --git a/packages/firefish-js/codecov.yml b/packages/firefish-js/codecov.yml deleted file mode 100644 index 5242987213..0000000000 --- a/packages/firefish-js/codecov.yml +++ /dev/null @@ -1,2 +0,0 @@ -codecov: - token: d55e1270-f20a-4727-aa05-2bd57793315a diff --git a/packages/firefish-js/etc/firefish-js.api.json b/packages/firefish-js/etc/firefish-js.api.json deleted file mode 100644 index 8cb56a2d70..0000000000 --- a/packages/firefish-js/etc/firefish-js.api.json +++ /dev/null @@ -1,9814 +0,0 @@ -{ - "metadata": { - "toolPackage": "@microsoft/api-extractor", - "toolVersion": "7.36.0", - "schemaVersion": 1011, - "oldestForwardsCompatibleVersion": 1001, - "tsdocConfig": { - "$schema": "https://developer.microsoft.com/json-schemas/tsdoc/v0/tsdoc.schema.json", - "noStandardTags": true, - "tagDefinitions": [ - { - "tagName": "@alpha", - "syntaxKind": "modifier" - }, - { - "tagName": "@beta", - "syntaxKind": "modifier" - }, - { - "tagName": "@defaultValue", - "syntaxKind": "block" - }, - { - "tagName": "@decorator", - "syntaxKind": "block", - "allowMultiple": true - }, - { - "tagName": "@deprecated", - "syntaxKind": "block" - }, - { - "tagName": "@eventProperty", - "syntaxKind": "modifier" - }, - { - "tagName": "@example", - "syntaxKind": "block", - "allowMultiple": true - }, - { - "tagName": "@experimental", - "syntaxKind": "modifier" - }, - { - "tagName": "@inheritDoc", - "syntaxKind": "inline" - }, - { - "tagName": "@internal", - "syntaxKind": "modifier" - }, - { - "tagName": "@label", - "syntaxKind": "inline" - }, - { - "tagName": "@link", - "syntaxKind": "inline", - "allowMultiple": true - }, - { - "tagName": "@override", - "syntaxKind": "modifier" - }, - { - "tagName": "@packageDocumentation", - "syntaxKind": "modifier" - }, - { - "tagName": "@param", - "syntaxKind": "block", - "allowMultiple": true - }, - { - "tagName": "@privateRemarks", - "syntaxKind": "block" - }, - { - "tagName": "@public", - "syntaxKind": "modifier" - }, - { - "tagName": "@readonly", - "syntaxKind": "modifier" - }, - { - "tagName": "@remarks", - "syntaxKind": "block" - }, - { - "tagName": "@returns", - "syntaxKind": "block" - }, - { - "tagName": "@sealed", - "syntaxKind": "modifier" - }, - { - "tagName": "@see", - "syntaxKind": "block" - }, - { - "tagName": "@throws", - "syntaxKind": "block", - "allowMultiple": true - }, - { - "tagName": "@typeParam", - "syntaxKind": "block", - "allowMultiple": true - }, - { - "tagName": "@virtual", - "syntaxKind": "modifier" - }, - { - "tagName": "@betaDocumentation", - "syntaxKind": "modifier" - }, - { - "tagName": "@internalRemarks", - "syntaxKind": "block" - }, - { - "tagName": "@preapproved", - "syntaxKind": "modifier" - } - ], - "supportForTags": { - "@alpha": true, - "@beta": true, - "@defaultValue": true, - "@decorator": true, - "@deprecated": true, - "@eventProperty": true, - "@example": true, - "@experimental": true, - "@inheritDoc": true, - "@internal": true, - "@label": true, - "@link": true, - "@override": true, - "@packageDocumentation": true, - "@param": true, - "@privateRemarks": true, - "@public": true, - "@readonly": true, - "@remarks": true, - "@returns": true, - "@sealed": true, - "@see": true, - "@throws": true, - "@typeParam": true, - "@virtual": true, - "@betaDocumentation": true, - "@internalRemarks": true, - "@preapproved": true - }, - "reportUnsupportedHtmlElements": false - } - }, - "kind": "Package", - "canonicalReference": "firefish-js!", - "docComment": "", - "name": "firefish-js", - "preserveMemberOrder": false, - "members": [ - { - "kind": "EntryPoint", - "canonicalReference": "firefish-js!", - "name": "", - "preserveMemberOrder": false, - "members": [ - { - "kind": "TypeAlias", - "canonicalReference": "firefish-js!Acct:type", - "docComment": "", - "excerptTokens": [ - { - "kind": "Content", - "text": "export declare type Acct = " - }, - { - "kind": "Content", - "text": "{\n\tusername: string;\n\thost: string | null;\n}" - }, - { - "kind": "Content", - "text": ";" - } - ], - "fileUrlPath": "src/acct.ts", - "releaseTag": "Public", - "name": "Acct", - "typeTokenRange": { - "startIndex": 1, - "endIndex": 2 - } - }, - { - "kind": "Namespace", - "canonicalReference": "firefish-js!api:namespace", - "docComment": "", - "excerptTokens": [], - "fileUrlPath": "src/index.ts", - "releaseTag": "None", - "name": "api", - "preserveMemberOrder": false, - "members": [ - { - "kind": "Class", - "canonicalReference": "firefish-js!api.APIClient:class", - "docComment": "", - "excerptTokens": [ - { - "kind": "Content", - "text": "export declare class APIClient " - } - ], - "fileUrlPath": "src/api.ts", - "releaseTag": "Public", - "isAbstract": false, - "name": "APIClient", - "preserveMemberOrder": false, - "members": [ - { - "kind": "Constructor", - "canonicalReference": "firefish-js!api.APIClient:constructor(1)", - "docComment": "/**\n * Constructs a new instance of the `APIClient` class\n */\n", - "excerptTokens": [ - { - "kind": "Content", - "text": "constructor(opts: " - }, - { - "kind": "Content", - "text": "{\n\t\torigin: " - }, - { - "kind": "Reference", - "text": "APIClient", - "canonicalReference": "firefish-js!api.APIClient:class" - }, - { - "kind": "Content", - "text": "[\"origin\"];\n\t\tcredential?: " - }, - { - "kind": "Reference", - "text": "APIClient", - "canonicalReference": "firefish-js!api.APIClient:class" - }, - { - "kind": "Content", - "text": "[\"credential\"];\n\t\tfetch?: " - }, - { - "kind": "Reference", - "text": "APIClient", - "canonicalReference": "firefish-js!api.APIClient:class" - }, - { - "kind": "Content", - "text": "[\"fetch\"] | null | undefined;\n\t}" - }, - { - "kind": "Content", - "text": ");" - } - ], - "releaseTag": "Public", - "isProtected": false, - "overloadIndex": 1, - "parameters": [ - { - "parameterName": "opts", - "parameterTypeTokenRange": { - "startIndex": 1, - "endIndex": 8 - }, - "isOptional": false - } - ] - }, - { - "kind": "Property", - "canonicalReference": "firefish-js!api.APIClient#credential:member", - "docComment": "", - "excerptTokens": [ - { - "kind": "Content", - "text": "credential: " - }, - { - "kind": "Content", - "text": "string | null | undefined" - }, - { - "kind": "Content", - "text": ";" - } - ], - "isReadonly": false, - "isOptional": false, - "releaseTag": "Public", - "name": "credential", - "propertyTypeTokenRange": { - "startIndex": 1, - "endIndex": 2 - }, - "isStatic": false, - "isProtected": false, - "isAbstract": false - }, - { - "kind": "Property", - "canonicalReference": "firefish-js!api.APIClient#fetch:member", - "docComment": "", - "excerptTokens": [ - { - "kind": "Content", - "text": "fetch: " - }, - { - "kind": "Reference", - "text": "FetchLike", - "canonicalReference": "firefish-js!api.FetchLike:type" - }, - { - "kind": "Content", - "text": ";" - } - ], - "isReadonly": false, - "isOptional": false, - "releaseTag": "Public", - "name": "fetch", - "propertyTypeTokenRange": { - "startIndex": 1, - "endIndex": 2 - }, - "isStatic": false, - "isProtected": false, - "isAbstract": false - }, - { - "kind": "Property", - "canonicalReference": "firefish-js!api.APIClient#origin:member", - "docComment": "", - "excerptTokens": [ - { - "kind": "Content", - "text": "origin: " - }, - { - "kind": "Content", - "text": "string" - }, - { - "kind": "Content", - "text": ";" - } - ], - "isReadonly": false, - "isOptional": false, - "releaseTag": "Public", - "name": "origin", - "propertyTypeTokenRange": { - "startIndex": 1, - "endIndex": 2 - }, - "isStatic": false, - "isProtected": false, - "isAbstract": false - }, - { - "kind": "Method", - "canonicalReference": "firefish-js!api.APIClient#request:member(1)", - "docComment": "", - "excerptTokens": [ - { - "kind": "Content", - "text": "request<E extends " - }, - { - "kind": "Content", - "text": "keyof " - }, - { - "kind": "Reference", - "text": "Endpoints", - "canonicalReference": "firefish-js!Endpoints:type" - }, - { - "kind": "Content", - "text": ", P extends " - }, - { - "kind": "Reference", - "text": "Endpoints", - "canonicalReference": "firefish-js!Endpoints:type" - }, - { - "kind": "Content", - "text": "[E][\"req\"]" - }, - { - "kind": "Content", - "text": ">(\n\t\tendpoint: " - }, - { - "kind": "Content", - "text": "E" - }, - { - "kind": "Content", - "text": ",\n\t\tparams?: " - }, - { - "kind": "Content", - "text": "P" - }, - { - "kind": "Content", - "text": ",\n\t\tcredential?: " - }, - { - "kind": "Content", - "text": "string | null | undefined" - }, - { - "kind": "Content", - "text": ",\n\t): " - }, - { - "kind": "Reference", - "text": "Promise", - "canonicalReference": "!Promise:interface" - }, - { - "kind": "Content", - "text": "<\n\t\t" - }, - { - "kind": "Reference", - "text": "Endpoints", - "canonicalReference": "firefish-js!Endpoints:type" - }, - { - "kind": "Content", - "text": "[E][\"res\"] extends {\n\t\t\t$switch: {\n\t\t\t\t$cases: [any, any][];\n\t\t\t\t$default: any;\n\t\t\t};\n\t\t}\n\t\t\t? " - }, - { - "kind": "Reference", - "text": "IsCaseMatched", - "canonicalReference": "firefish-js!~IsCaseMatched:type" - }, - { - "kind": "Content", - "text": "<E, P, 0> extends true\n\t\t\t\t? " - }, - { - "kind": "Reference", - "text": "GetCaseResult", - "canonicalReference": "firefish-js!~GetCaseResult:type" - }, - { - "kind": "Content", - "text": "<E, P, 0>\n\t\t\t\t: " - }, - { - "kind": "Reference", - "text": "IsCaseMatched", - "canonicalReference": "firefish-js!~IsCaseMatched:type" - }, - { - "kind": "Content", - "text": "<E, P, 1> extends true\n\t\t\t\t? " - }, - { - "kind": "Reference", - "text": "GetCaseResult", - "canonicalReference": "firefish-js!~GetCaseResult:type" - }, - { - "kind": "Content", - "text": "<E, P, 1>\n\t\t\t\t: " - }, - { - "kind": "Reference", - "text": "IsCaseMatched", - "canonicalReference": "firefish-js!~IsCaseMatched:type" - }, - { - "kind": "Content", - "text": "<E, P, 2> extends true\n\t\t\t\t? " - }, - { - "kind": "Reference", - "text": "GetCaseResult", - "canonicalReference": "firefish-js!~GetCaseResult:type" - }, - { - "kind": "Content", - "text": "<E, P, 2>\n\t\t\t\t: " - }, - { - "kind": "Reference", - "text": "IsCaseMatched", - "canonicalReference": "firefish-js!~IsCaseMatched:type" - }, - { - "kind": "Content", - "text": "<E, P, 3> extends true\n\t\t\t\t? " - }, - { - "kind": "Reference", - "text": "GetCaseResult", - "canonicalReference": "firefish-js!~GetCaseResult:type" - }, - { - "kind": "Content", - "text": "<E, P, 3>\n\t\t\t\t: " - }, - { - "kind": "Reference", - "text": "IsCaseMatched", - "canonicalReference": "firefish-js!~IsCaseMatched:type" - }, - { - "kind": "Content", - "text": "<E, P, 4> extends true\n\t\t\t\t? " - }, - { - "kind": "Reference", - "text": "GetCaseResult", - "canonicalReference": "firefish-js!~GetCaseResult:type" - }, - { - "kind": "Content", - "text": "<E, P, 4>\n\t\t\t\t: " - }, - { - "kind": "Reference", - "text": "IsCaseMatched", - "canonicalReference": "firefish-js!~IsCaseMatched:type" - }, - { - "kind": "Content", - "text": "<E, P, 5> extends true\n\t\t\t\t? " - }, - { - "kind": "Reference", - "text": "GetCaseResult", - "canonicalReference": "firefish-js!~GetCaseResult:type" - }, - { - "kind": "Content", - "text": "<E, P, 5>\n\t\t\t\t: " - }, - { - "kind": "Reference", - "text": "IsCaseMatched", - "canonicalReference": "firefish-js!~IsCaseMatched:type" - }, - { - "kind": "Content", - "text": "<E, P, 6> extends true\n\t\t\t\t? " - }, - { - "kind": "Reference", - "text": "GetCaseResult", - "canonicalReference": "firefish-js!~GetCaseResult:type" - }, - { - "kind": "Content", - "text": "<E, P, 6>\n\t\t\t\t: " - }, - { - "kind": "Reference", - "text": "IsCaseMatched", - "canonicalReference": "firefish-js!~IsCaseMatched:type" - }, - { - "kind": "Content", - "text": "<E, P, 7> extends true\n\t\t\t\t? " - }, - { - "kind": "Reference", - "text": "GetCaseResult", - "canonicalReference": "firefish-js!~GetCaseResult:type" - }, - { - "kind": "Content", - "text": "<E, P, 7>\n\t\t\t\t: " - }, - { - "kind": "Reference", - "text": "IsCaseMatched", - "canonicalReference": "firefish-js!~IsCaseMatched:type" - }, - { - "kind": "Content", - "text": "<E, P, 8> extends true\n\t\t\t\t? " - }, - { - "kind": "Reference", - "text": "GetCaseResult", - "canonicalReference": "firefish-js!~GetCaseResult:type" - }, - { - "kind": "Content", - "text": "<E, P, 8>\n\t\t\t\t: " - }, - { - "kind": "Reference", - "text": "IsCaseMatched", - "canonicalReference": "firefish-js!~IsCaseMatched:type" - }, - { - "kind": "Content", - "text": "<E, P, 9> extends true\n\t\t\t\t? " - }, - { - "kind": "Reference", - "text": "GetCaseResult", - "canonicalReference": "firefish-js!~GetCaseResult:type" - }, - { - "kind": "Content", - "text": "<E, P, 9>\n\t\t\t\t: " - }, - { - "kind": "Reference", - "text": "Endpoints", - "canonicalReference": "firefish-js!Endpoints:type" - }, - { - "kind": "Content", - "text": "[E][\"res\"][\"$switch\"][\"$default\"]\n\t\t\t: " - }, - { - "kind": "Reference", - "text": "Endpoints", - "canonicalReference": "firefish-js!Endpoints:type" - }, - { - "kind": "Content", - "text": "[E][\"res\"]\n\t>" - }, - { - "kind": "Content", - "text": ";" - } - ], - "typeParameters": [ - { - "typeParameterName": "E", - "constraintTokenRange": { - "startIndex": 1, - "endIndex": 3 - }, - "defaultTypeTokenRange": { - "startIndex": 0, - "endIndex": 0 - } - }, - { - "typeParameterName": "P", - "constraintTokenRange": { - "startIndex": 4, - "endIndex": 6 - }, - "defaultTypeTokenRange": { - "startIndex": 0, - "endIndex": 0 - } - } - ], - "isStatic": false, - "returnTypeTokenRange": { - "startIndex": 13, - "endIndex": 61 - }, - "releaseTag": "Public", - "isProtected": false, - "overloadIndex": 1, - "parameters": [ - { - "parameterName": "endpoint", - "parameterTypeTokenRange": { - "startIndex": 7, - "endIndex": 8 - }, - "isOptional": false - }, - { - "parameterName": "params", - "parameterTypeTokenRange": { - "startIndex": 9, - "endIndex": 10 - }, - "isOptional": true - }, - { - "parameterName": "credential", - "parameterTypeTokenRange": { - "startIndex": 11, - "endIndex": 12 - }, - "isOptional": true - } - ], - "isOptional": false, - "isAbstract": false, - "name": "request" - } - ], - "implementsTokenRanges": [] - }, - { - "kind": "TypeAlias", - "canonicalReference": "firefish-js!api.APIError:type", - "docComment": "", - "excerptTokens": [ - { - "kind": "Content", - "text": "export declare type APIError = " - }, - { - "kind": "Content", - "text": "{\n\tid: string;\n\tcode: string;\n\tmessage: string;\n\tkind: \"client\" | \"server\";\n\tinfo: " - }, - { - "kind": "Reference", - "text": "Record", - "canonicalReference": "!Record:type" - }, - { - "kind": "Content", - "text": "<string, any>;\n}" - }, - { - "kind": "Content", - "text": ";" - } - ], - "fileUrlPath": "src/api.ts", - "releaseTag": "Public", - "name": "APIError", - "typeTokenRange": { - "startIndex": 1, - "endIndex": 4 - } - }, - { - "kind": "TypeAlias", - "canonicalReference": "firefish-js!api.FetchLike:type", - "docComment": "", - "excerptTokens": [ - { - "kind": "Content", - "text": "export declare type FetchLike = " - }, - { - "kind": "Content", - "text": "(\n\tinput: string,\n\tinit?: {\n\t\tmethod?: string;\n\t\tbody?: string;\n\t\tcredentials?: " - }, - { - "kind": "Reference", - "text": "RequestCredentials", - "canonicalReference": "!RequestCredentials:type" - }, - { - "kind": "Content", - "text": ";\n\t\tcache?: " - }, - { - "kind": "Reference", - "text": "RequestCache", - "canonicalReference": "!RequestCache:type" - }, - { - "kind": "Content", - "text": ";\n\t},\n) => " - }, - { - "kind": "Reference", - "text": "Promise", - "canonicalReference": "!Promise:interface" - }, - { - "kind": "Content", - "text": "<{\n\tstatus: number;\n\tjson(): " - }, - { - "kind": "Reference", - "text": "Promise", - "canonicalReference": "!Promise:interface" - }, - { - "kind": "Content", - "text": "<any>;\n}>" - }, - { - "kind": "Content", - "text": ";" - } - ], - "fileUrlPath": "src/api.ts", - "releaseTag": "Public", - "name": "FetchLike", - "typeTokenRange": { - "startIndex": 1, - "endIndex": 10 - } - }, - { - "kind": "Function", - "canonicalReference": "firefish-js!api.isAPIError:function(1)", - "docComment": "", - "excerptTokens": [ - { - "kind": "Content", - "text": "export declare function isAPIError(reason: " - }, - { - "kind": "Content", - "text": "any" - }, - { - "kind": "Content", - "text": "): " - }, - { - "kind": "Reference", - "text": "reason", - "canonicalReference": "firefish-js!~reason" - }, - { - "kind": "Content", - "text": " is " - }, - { - "kind": "Reference", - "text": "APIError", - "canonicalReference": "firefish-js!api.APIError:type" - }, - { - "kind": "Content", - "text": ";" - } - ], - "fileUrlPath": "src/api.ts", - "returnTypeTokenRange": { - "startIndex": 3, - "endIndex": 6 - }, - "releaseTag": "Public", - "overloadIndex": 1, - "parameters": [ - { - "parameterName": "reason", - "parameterTypeTokenRange": { - "startIndex": 1, - "endIndex": 2 - }, - "isOptional": false - } - ], - "name": "isAPIError" - } - ] - }, - { - "kind": "Class", - "canonicalReference": "firefish-js!ChannelConnection:class", - "docComment": "", - "excerptTokens": [ - { - "kind": "Content", - "text": "export declare abstract class Connection<\n\tChannel extends " - }, - { - "kind": "Reference", - "text": "AnyOf", - "canonicalReference": "firefish-js!~AnyOf:type" - }, - { - "kind": "Content", - "text": "<" - }, - { - "kind": "Reference", - "text": "Channels", - "canonicalReference": "firefish-js!Channels:type" - }, - { - "kind": "Content", - "text": ">" - }, - { - "kind": "Content", - "text": " = " - }, - { - "kind": "Content", - "text": "any" - }, - { - "kind": "Content", - "text": ",\n> extends " - }, - { - "kind": "Reference", - "text": "EventEmitter", - "canonicalReference": "eventemitter3!EventEmitter.EventEmitter" - }, - { - "kind": "Content", - "text": "<Channel[\"events\"]>" - }, - { - "kind": "Content", - "text": " " - } - ], - "fileUrlPath": "src/streaming.ts", - "releaseTag": "Public", - "typeParameters": [ - { - "typeParameterName": "Channel", - "constraintTokenRange": { - "startIndex": 1, - "endIndex": 5 - }, - "defaultTypeTokenRange": { - "startIndex": 6, - "endIndex": 7 - } - } - ], - "isAbstract": true, - "name": "ChannelConnection", - "preserveMemberOrder": false, - "members": [ - { - "kind": "Constructor", - "canonicalReference": "firefish-js!ChannelConnection:constructor(1)", - "docComment": "/**\n * Constructs a new instance of the `Connection` class\n */\n", - "excerptTokens": [ - { - "kind": "Content", - "text": "constructor(stream: " - }, - { - "kind": "Reference", - "text": "Stream", - "canonicalReference": "firefish-js!Stream:class" - }, - { - "kind": "Content", - "text": ", channel: " - }, - { - "kind": "Content", - "text": "string" - }, - { - "kind": "Content", - "text": ", name?: " - }, - { - "kind": "Content", - "text": "string" - }, - { - "kind": "Content", - "text": ");" - } - ], - "releaseTag": "Public", - "isProtected": false, - "overloadIndex": 1, - "parameters": [ - { - "parameterName": "stream", - "parameterTypeTokenRange": { - "startIndex": 1, - "endIndex": 2 - }, - "isOptional": false - }, - { - "parameterName": "channel", - "parameterTypeTokenRange": { - "startIndex": 3, - "endIndex": 4 - }, - "isOptional": false - }, - { - "parameterName": "name", - "parameterTypeTokenRange": { - "startIndex": 5, - "endIndex": 6 - }, - "isOptional": true - } - ] - }, - { - "kind": "Property", - "canonicalReference": "firefish-js!ChannelConnection#channel:member", - "docComment": "", - "excerptTokens": [ - { - "kind": "Content", - "text": "channel: " - }, - { - "kind": "Content", - "text": "string" - }, - { - "kind": "Content", - "text": ";" - } - ], - "isReadonly": false, - "isOptional": false, - "releaseTag": "Public", - "name": "channel", - "propertyTypeTokenRange": { - "startIndex": 1, - "endIndex": 2 - }, - "isStatic": false, - "isProtected": false, - "isAbstract": false - }, - { - "kind": "Method", - "canonicalReference": "firefish-js!ChannelConnection#dispose:member(1)", - "docComment": "", - "excerptTokens": [ - { - "kind": "Content", - "text": "abstract dispose(): " - }, - { - "kind": "Content", - "text": "void" - }, - { - "kind": "Content", - "text": ";" - } - ], - "isStatic": false, - "returnTypeTokenRange": { - "startIndex": 1, - "endIndex": 2 - }, - "releaseTag": "Public", - "isProtected": false, - "overloadIndex": 1, - "parameters": [], - "isOptional": false, - "isAbstract": true, - "name": "dispose" - }, - { - "kind": "Property", - "canonicalReference": "firefish-js!ChannelConnection#id:member", - "docComment": "", - "excerptTokens": [ - { - "kind": "Content", - "text": "abstract id: " - }, - { - "kind": "Content", - "text": "string" - }, - { - "kind": "Content", - "text": ";" - } - ], - "isReadonly": false, - "isOptional": false, - "releaseTag": "Public", - "name": "id", - "propertyTypeTokenRange": { - "startIndex": 1, - "endIndex": 2 - }, - "isStatic": false, - "isProtected": false, - "isAbstract": true - }, - { - "kind": "Property", - "canonicalReference": "firefish-js!ChannelConnection#inCount:member", - "docComment": "", - "excerptTokens": [ - { - "kind": "Content", - "text": "inCount: " - }, - { - "kind": "Content", - "text": "number" - }, - { - "kind": "Content", - "text": ";" - } - ], - "isReadonly": false, - "isOptional": false, - "releaseTag": "Public", - "name": "inCount", - "propertyTypeTokenRange": { - "startIndex": 1, - "endIndex": 2 - }, - "isStatic": false, - "isProtected": false, - "isAbstract": false - }, - { - "kind": "Property", - "canonicalReference": "firefish-js!ChannelConnection#name:member", - "docComment": "", - "excerptTokens": [ - { - "kind": "Content", - "text": "name?: " - }, - { - "kind": "Content", - "text": "string" - }, - { - "kind": "Content", - "text": ";" - } - ], - "isReadonly": false, - "isOptional": true, - "releaseTag": "Public", - "name": "name", - "propertyTypeTokenRange": { - "startIndex": 1, - "endIndex": 2 - }, - "isStatic": false, - "isProtected": false, - "isAbstract": false - }, - { - "kind": "Property", - "canonicalReference": "firefish-js!ChannelConnection#outCount:member", - "docComment": "", - "excerptTokens": [ - { - "kind": "Content", - "text": "outCount: " - }, - { - "kind": "Content", - "text": "number" - }, - { - "kind": "Content", - "text": ";" - } - ], - "isReadonly": false, - "isOptional": false, - "releaseTag": "Public", - "name": "outCount", - "propertyTypeTokenRange": { - "startIndex": 1, - "endIndex": 2 - }, - "isStatic": false, - "isProtected": false, - "isAbstract": false - }, - { - "kind": "Method", - "canonicalReference": "firefish-js!ChannelConnection#send:member(1)", - "docComment": "", - "excerptTokens": [ - { - "kind": "Content", - "text": "send<T extends " - }, - { - "kind": "Content", - "text": "keyof Channel[\"receives\"]" - }, - { - "kind": "Content", - "text": ">(\n\t\ttype: " - }, - { - "kind": "Content", - "text": "T" - }, - { - "kind": "Content", - "text": ",\n\t\tbody: " - }, - { - "kind": "Content", - "text": "Channel[\"receives\"][T]" - }, - { - "kind": "Content", - "text": ",\n\t): " - }, - { - "kind": "Content", - "text": "void" - }, - { - "kind": "Content", - "text": ";" - } - ], - "typeParameters": [ - { - "typeParameterName": "T", - "constraintTokenRange": { - "startIndex": 1, - "endIndex": 2 - }, - "defaultTypeTokenRange": { - "startIndex": 0, - "endIndex": 0 - } - } - ], - "isStatic": false, - "returnTypeTokenRange": { - "startIndex": 7, - "endIndex": 8 - }, - "releaseTag": "Public", - "isProtected": false, - "overloadIndex": 1, - "parameters": [ - { - "parameterName": "type", - "parameterTypeTokenRange": { - "startIndex": 3, - "endIndex": 4 - }, - "isOptional": false - }, - { - "parameterName": "body", - "parameterTypeTokenRange": { - "startIndex": 5, - "endIndex": 6 - }, - "isOptional": false - } - ], - "isOptional": false, - "isAbstract": false, - "name": "send" - }, - { - "kind": "Property", - "canonicalReference": "firefish-js!ChannelConnection#stream:member", - "docComment": "", - "excerptTokens": [ - { - "kind": "Content", - "text": "protected stream: " - }, - { - "kind": "Reference", - "text": "Stream", - "canonicalReference": "firefish-js!Stream:class" - }, - { - "kind": "Content", - "text": ";" - } - ], - "isReadonly": false, - "isOptional": false, - "releaseTag": "Public", - "name": "stream", - "propertyTypeTokenRange": { - "startIndex": 1, - "endIndex": 2 - }, - "isStatic": false, - "isProtected": true, - "isAbstract": false - } - ], - "extendsTokenRange": { - "startIndex": 8, - "endIndex": 10 - }, - "implementsTokenRanges": [] - }, - { - "kind": "TypeAlias", - "canonicalReference": "firefish-js!Channels:type", - "docComment": "", - "excerptTokens": [ - { - "kind": "Content", - "text": "export declare type Channels = " - }, - { - "kind": "Content", - "text": "{\n\tmain: {\n\t\tparams: null;\n\t\tevents: {\n\t\t\tnotification: (payload: " - }, - { - "kind": "Reference", - "text": "Notification", - "canonicalReference": "firefish-js!entities.Notification_2:type" - }, - { - "kind": "Content", - "text": ") => void;\n\t\t\tmention: (payload: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": ") => void;\n\t\t\treply: (payload: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": ") => void;\n\t\t\trenote: (payload: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": ") => void;\n\t\t\tfollow: (payload: " - }, - { - "kind": "Reference", - "text": "User", - "canonicalReference": "firefish-js!entities.User:type" - }, - { - "kind": "Content", - "text": ") => void;\n\t\t\tfollowed: (payload: " - }, - { - "kind": "Reference", - "text": "User", - "canonicalReference": "firefish-js!entities.User:type" - }, - { - "kind": "Content", - "text": ") => void;\n\t\t\tunfollow: (payload: " - }, - { - "kind": "Reference", - "text": "User", - "canonicalReference": "firefish-js!entities.User:type" - }, - { - "kind": "Content", - "text": ") => void;\n\t\t\tmeUpdated: (payload: " - }, - { - "kind": "Reference", - "text": "MeDetailed", - "canonicalReference": "firefish-js!entities.MeDetailed:type" - }, - { - "kind": "Content", - "text": ") => void;\n\t\t\tpageEvent: (payload: " - }, - { - "kind": "Reference", - "text": "PageEvent", - "canonicalReference": "firefish-js!entities.PageEvent:type" - }, - { - "kind": "Content", - "text": ") => void;\n\t\t\turlUploadFinished: (payload: {\n\t\t\t\tmarker: string;\n\t\t\t\tfile: " - }, - { - "kind": "Reference", - "text": "DriveFile", - "canonicalReference": "firefish-js!entities.DriveFile:type" - }, - { - "kind": "Content", - "text": ";\n\t\t\t}) => void;\n\t\t\treadAllNotifications: () => void;\n\t\t\tunreadNotification: (payload: " - }, - { - "kind": "Reference", - "text": "Notification", - "canonicalReference": "firefish-js!entities.Notification_2:type" - }, - { - "kind": "Content", - "text": ") => void;\n\t\t\tunreadMention: (payload: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": "[\"id\"]) => void;\n\t\t\treadAllUnreadMentions: () => void;\n\t\t\tunreadSpecifiedNote: (payload: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": "[\"id\"]) => void;\n\t\t\treadAllUnreadSpecifiedNotes: () => void;\n\t\t\treadAllMessagingMessages: () => void;\n\t\t\tmessagingMessage: (payload: " - }, - { - "kind": "Reference", - "text": "MessagingMessage", - "canonicalReference": "firefish-js!entities.MessagingMessage:type" - }, - { - "kind": "Content", - "text": ") => void;\n\t\t\tunreadMessagingMessage: (payload: " - }, - { - "kind": "Reference", - "text": "MessagingMessage", - "canonicalReference": "firefish-js!entities.MessagingMessage:type" - }, - { - "kind": "Content", - "text": ") => void;\n\t\t\treadAllAntennas: () => void;\n\t\t\tunreadAntenna: (payload: " - }, - { - "kind": "Reference", - "text": "Antenna", - "canonicalReference": "firefish-js!entities.Antenna:type" - }, - { - "kind": "Content", - "text": ") => void;\n\t\t\treadAllAnnouncements: () => void;\n\t\t\treadAllChannels: () => void;\n\t\t\tunreadChannel: (payload: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": "[\"id\"]) => void;\n\t\t\tmyTokenRegenerated: () => void;\n\t\t\treversiNoInvites: () => void;\n\t\t\treversiInvited: (payload: " - }, - { - "kind": "Reference", - "text": "FIXME", - "canonicalReference": "firefish-js!~FIXME:type" - }, - { - "kind": "Content", - "text": ") => void;\n\t\t\tsignin: (payload: " - }, - { - "kind": "Reference", - "text": "FIXME", - "canonicalReference": "firefish-js!~FIXME:type" - }, - { - "kind": "Content", - "text": ") => void;\n\t\t\tregistryUpdated: (payload: {\n\t\t\t\tscope?: string[];\n\t\t\t\tkey: string;\n\t\t\t\tvalue: any | null;\n\t\t\t}) => void;\n\t\t\tdriveFileCreated: (payload: " - }, - { - "kind": "Reference", - "text": "DriveFile", - "canonicalReference": "firefish-js!entities.DriveFile:type" - }, - { - "kind": "Content", - "text": ") => void;\n\t\t\treadAntenna: (payload: " - }, - { - "kind": "Reference", - "text": "Antenna", - "canonicalReference": "firefish-js!entities.Antenna:type" - }, - { - "kind": "Content", - "text": ") => void;\n\t\t};\n\t\treceives: null;\n\t};\n\thomeTimeline: {\n\t\tparams: null;\n\t\tevents: {\n\t\t\tnote: (payload: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": ") => void;\n\t\t};\n\t\treceives: null;\n\t};\n\tlocalTimeline: {\n\t\tparams: null;\n\t\tevents: {\n\t\t\tnote: (payload: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": ") => void;\n\t\t};\n\t\treceives: null;\n\t};\n\thybridTimeline: {\n\t\tparams: null;\n\t\tevents: {\n\t\t\tnote: (payload: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": ") => void;\n\t\t};\n\t\treceives: null;\n\t};\n\trecommendedTimeline: {\n\t\tparams: null;\n\t\tevents: {\n\t\t\tnote: (payload: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": ") => void;\n\t\t};\n\t\treceives: null;\n\t};\n\tglobalTimeline: {\n\t\tparams: null;\n\t\tevents: {\n\t\t\tnote: (payload: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": ") => void;\n\t\t};\n\t\treceives: null;\n\t};\n\tantenna: {\n\t\tparams: {\n\t\t\tantennaId: " - }, - { - "kind": "Reference", - "text": "Antenna", - "canonicalReference": "firefish-js!entities.Antenna:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t};\n\t\tevents: {\n\t\t\tnote: (payload: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": ") => void;\n\t\t};\n\t\treceives: null;\n\t};\n\tmessaging: {\n\t\tparams: {\n\t\t\totherparty?: " - }, - { - "kind": "Reference", - "text": "User", - "canonicalReference": "firefish-js!entities.User:type" - }, - { - "kind": "Content", - "text": "[\"id\"] | null;\n\t\t\tgroup?: " - }, - { - "kind": "Reference", - "text": "UserGroup", - "canonicalReference": "firefish-js!entities.UserGroup:type" - }, - { - "kind": "Content", - "text": "[\"id\"] | null;\n\t\t};\n\t\tevents: {\n\t\t\tmessage: (payload: " - }, - { - "kind": "Reference", - "text": "MessagingMessage", - "canonicalReference": "firefish-js!entities.MessagingMessage:type" - }, - { - "kind": "Content", - "text": ") => void;\n\t\t\tdeleted: (payload: " - }, - { - "kind": "Reference", - "text": "MessagingMessage", - "canonicalReference": "firefish-js!entities.MessagingMessage:type" - }, - { - "kind": "Content", - "text": "[\"id\"]) => void;\n\t\t\tread: (payload: " - }, - { - "kind": "Reference", - "text": "MessagingMessage", - "canonicalReference": "firefish-js!entities.MessagingMessage:type" - }, - { - "kind": "Content", - "text": "[\"id\"][]) => void;\n\t\t\ttypers: (payload: " - }, - { - "kind": "Reference", - "text": "User", - "canonicalReference": "firefish-js!entities.User:type" - }, - { - "kind": "Content", - "text": "[]) => void;\n\t\t};\n\t\treceives: {\n\t\t\tread: {\n\t\t\t\tid: " - }, - { - "kind": "Reference", - "text": "MessagingMessage", - "canonicalReference": "firefish-js!entities.MessagingMessage:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t\t};\n\t\t};\n\t};\n\tserverStats: {\n\t\tparams: null;\n\t\tevents: {\n\t\t\tstats: (payload: " - }, - { - "kind": "Reference", - "text": "FIXME", - "canonicalReference": "firefish-js!~FIXME:type" - }, - { - "kind": "Content", - "text": ") => void;\n\t\t};\n\t\treceives: {\n\t\t\trequestLog: {\n\t\t\t\tid: string | number;\n\t\t\t\tlength: number;\n\t\t\t};\n\t\t};\n\t};\n\tqueueStats: {\n\t\tparams: null;\n\t\tevents: {\n\t\t\tstats: (payload: " - }, - { - "kind": "Reference", - "text": "FIXME", - "canonicalReference": "firefish-js!~FIXME:type" - }, - { - "kind": "Content", - "text": ") => void;\n\t\t};\n\t\treceives: {\n\t\t\trequestLog: {\n\t\t\t\tid: string | number;\n\t\t\t\tlength: number;\n\t\t\t};\n\t\t};\n\t};\n}" - }, - { - "kind": "Content", - "text": ";" - } - ], - "fileUrlPath": "src/streaming.types.ts", - "releaseTag": "Public", - "name": "Channels", - "typeTokenRange": { - "startIndex": 1, - "endIndex": 76 - } - }, - { - "kind": "TypeAlias", - "canonicalReference": "firefish-js!Endpoints:type", - "docComment": "", - "excerptTokens": [ - { - "kind": "Content", - "text": "export declare type Endpoints = " - }, - { - "kind": "Content", - "text": "{\n\t\"admin/abuse-user-reports\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"admin/delete-all-files-of-a-user\": {\n\t\treq: {\n\t\t\tuserId: " - }, - { - "kind": "Reference", - "text": "User", - "canonicalReference": "firefish-js!entities.User:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t};\n\t\tres: null;\n\t};\n\t\"admin/delete-logs\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "NoParams", - "canonicalReference": "firefish-js!~NoParams:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: null;\n\t};\n\t\"admin/get-index-stats\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"admin/get-table-stats\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"admin/invite\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"admin/logs\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"admin/meta\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"admin/reset-password\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"admin/resolve-abuse-user-report\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"admin/resync-chart\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"admin/send-email\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"admin/server-info\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"admin/show-moderation-logs\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"admin/show-user\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"admin/show-users\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"admin/silence-user\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"admin/suspend-user\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"admin/unsilence-user\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"admin/unsuspend-user\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"admin/update-meta\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"admin/vacuum\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"admin/accounts/create\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"admin/ad/create\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"admin/ad/delete\": {\n\t\treq: {\n\t\t\tid: " - }, - { - "kind": "Reference", - "text": "Ad", - "canonicalReference": "firefish-js!entities.Ad:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t};\n\t\tres: null;\n\t};\n\t\"admin/ad/list\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"admin/ad/update\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"admin/announcements/create\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"admin/announcements/delete\": {\n\t\treq: {\n\t\t\tid: " - }, - { - "kind": "Reference", - "text": "Announcement", - "canonicalReference": "firefish-js!entities.Announcement:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t};\n\t\tres: null;\n\t};\n\t\"admin/announcements/list\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"admin/announcements/update\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"admin/drive/clean-remote-files\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"admin/drive/cleanup\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"admin/drive/files\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"admin/drive/show-file\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"admin/emoji/add\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"admin/emoji/copy\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"admin/emoji/list-remote\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"admin/emoji/list\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"admin/emoji/remove\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"admin/emoji/update\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"admin/federation/delete-all-files\": {\n\t\treq: {\n\t\t\thost: string;\n\t\t};\n\t\tres: null;\n\t};\n\t\"admin/federation/refresh-remote-instance-metadata\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"admin/federation/remove-all-following\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"admin/federation/update-instance\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"admin/moderators/add\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"admin/moderators/remove\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"admin/promo/create\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"admin/queue/clear\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"admin/queue/deliver-delayed\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"admin/queue/inbox-delayed\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"admin/queue/jobs\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"admin/queue/stats\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"admin/relays/add\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"admin/relays/list\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"admin/relays/remove\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\tannouncements: {\n\t\treq: {\n\t\t\tlimit?: number;\n\t\t\twithUnreads?: boolean;\n\t\t\tsinceId?: " - }, - { - "kind": "Reference", - "text": "Announcement", - "canonicalReference": "firefish-js!entities.Announcement:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t\tuntilId?: " - }, - { - "kind": "Reference", - "text": "Announcement", - "canonicalReference": "firefish-js!entities.Announcement:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t};\n\t\tres: " - }, - { - "kind": "Reference", - "text": "Announcement", - "canonicalReference": "firefish-js!entities.Announcement:type" - }, - { - "kind": "Content", - "text": "[];\n\t};\n\t\"antennas/create\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "Antenna", - "canonicalReference": "firefish-js!entities.Antenna:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"antennas/delete\": {\n\t\treq: {\n\t\t\tantennaId: " - }, - { - "kind": "Reference", - "text": "Antenna", - "canonicalReference": "firefish-js!entities.Antenna:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t};\n\t\tres: null;\n\t};\n\t\"antennas/list\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "NoParams", - "canonicalReference": "firefish-js!~NoParams:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "Antenna", - "canonicalReference": "firefish-js!entities.Antenna:type" - }, - { - "kind": "Content", - "text": "[];\n\t};\n\t\"antennas/notes\": {\n\t\treq: {\n\t\t\tantennaId: " - }, - { - "kind": "Reference", - "text": "Antenna", - "canonicalReference": "firefish-js!entities.Antenna:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t\tlimit?: number;\n\t\t\tsinceId?: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t\tuntilId?: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t};\n\t\tres: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": "[];\n\t};\n\t\"antennas/show\": {\n\t\treq: {\n\t\t\tantennaId: " - }, - { - "kind": "Reference", - "text": "Antenna", - "canonicalReference": "firefish-js!entities.Antenna:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t};\n\t\tres: " - }, - { - "kind": "Reference", - "text": "Antenna", - "canonicalReference": "firefish-js!entities.Antenna:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"antennas/update\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "Antenna", - "canonicalReference": "firefish-js!entities.Antenna:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"antennas/mark-read\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "Antenna", - "canonicalReference": "firefish-js!entities.Antenna:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"ap/get\": {\n\t\treq: {\n\t\t\turi: string;\n\t\t};\n\t\tres: " - }, - { - "kind": "Reference", - "text": "Record", - "canonicalReference": "!Record:type" - }, - { - "kind": "Content", - "text": "<string, any>;\n\t};\n\t\"ap/show\": {\n\t\treq: {\n\t\t\turi: string;\n\t\t};\n\t\tres:\n\t\t\t| {\n\t\t\t\t\ttype: \"Note\";\n\t\t\t\t\tobject: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": ";\n\t\t\t }\n\t\t\t| {\n\t\t\t\t\ttype: \"User\";\n\t\t\t\t\tobject: " - }, - { - "kind": "Reference", - "text": "UserDetailed", - "canonicalReference": "firefish-js!entities.UserDetailed:type" - }, - { - "kind": "Content", - "text": ";\n\t\t\t };\n\t};\n\t\"app/create\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "App", - "canonicalReference": "firefish-js!entities.App:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"app/show\": {\n\t\treq: {\n\t\t\tappId: " - }, - { - "kind": "Reference", - "text": "App", - "canonicalReference": "firefish-js!entities.App:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t};\n\t\tres: " - }, - { - "kind": "Reference", - "text": "App", - "canonicalReference": "firefish-js!entities.App:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"auth/accept\": {\n\t\treq: {\n\t\t\ttoken: string;\n\t\t};\n\t\tres: null;\n\t};\n\t\"auth/session/generate\": {\n\t\treq: {\n\t\t\tappSecret: string;\n\t\t};\n\t\tres: {\n\t\t\ttoken: string;\n\t\t\turl: string;\n\t\t};\n\t};\n\t\"auth/session/show\": {\n\t\treq: {\n\t\t\ttoken: string;\n\t\t};\n\t\tres: " - }, - { - "kind": "Reference", - "text": "AuthSession", - "canonicalReference": "firefish-js!entities.AuthSession:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"auth/session/userkey\": {\n\t\treq: {\n\t\t\tappSecret: string;\n\t\t\ttoken: string;\n\t\t};\n\t\tres: {\n\t\t\taccessToken: string;\n\t\t\tuser: " - }, - { - "kind": "Reference", - "text": "User", - "canonicalReference": "firefish-js!entities.User:type" - }, - { - "kind": "Content", - "text": ";\n\t\t};\n\t};\n\t\"blocking/create\": {\n\t\treq: {\n\t\t\tuserId: " - }, - { - "kind": "Reference", - "text": "User", - "canonicalReference": "firefish-js!entities.User:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t};\n\t\tres: " - }, - { - "kind": "Reference", - "text": "UserDetailed", - "canonicalReference": "firefish-js!entities.UserDetailed:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"blocking/delete\": {\n\t\treq: {\n\t\t\tuserId: " - }, - { - "kind": "Reference", - "text": "User", - "canonicalReference": "firefish-js!entities.User:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t};\n\t\tres: " - }, - { - "kind": "Reference", - "text": "UserDetailed", - "canonicalReference": "firefish-js!entities.UserDetailed:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"blocking/list\": {\n\t\treq: {\n\t\t\tlimit?: number;\n\t\t\tsinceId?: " - }, - { - "kind": "Reference", - "text": "Blocking", - "canonicalReference": "firefish-js!entities.Blocking:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t\tuntilId?: " - }, - { - "kind": "Reference", - "text": "Blocking", - "canonicalReference": "firefish-js!entities.Blocking:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t};\n\t\tres: " - }, - { - "kind": "Reference", - "text": "Blocking", - "canonicalReference": "firefish-js!entities.Blocking:type" - }, - { - "kind": "Content", - "text": "[];\n\t};\n\t\"channels/create\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"channels/featured\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"channels/follow\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"channels/followed\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"channels/owned\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"channels/pin-note\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"channels/show\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"channels/timeline\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"channels/unfollow\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"channels/update\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"charts/active-users\": {\n\t\treq: {\n\t\t\tspan: \"day\" | \"hour\";\n\t\t\tlimit?: number;\n\t\t\toffset?: number | null;\n\t\t};\n\t\tres: {\n\t\t\tlocal: {\n\t\t\t\tusers: number[];\n\t\t\t};\n\t\t\tremote: {\n\t\t\t\tusers: number[];\n\t\t\t};\n\t\t};\n\t};\n\t\"charts/drive\": {\n\t\treq: {\n\t\t\tspan: \"day\" | \"hour\";\n\t\t\tlimit?: number;\n\t\t\toffset?: number | null;\n\t\t};\n\t\tres: {\n\t\t\tlocal: {\n\t\t\t\tdecCount: number[];\n\t\t\t\tdecSize: number[];\n\t\t\t\tincCount: number[];\n\t\t\t\tincSize: number[];\n\t\t\t\ttotalCount: number[];\n\t\t\t\ttotalSize: number[];\n\t\t\t};\n\t\t\tremote: {\n\t\t\t\tdecCount: number[];\n\t\t\t\tdecSize: number[];\n\t\t\t\tincCount: number[];\n\t\t\t\tincSize: number[];\n\t\t\t\ttotalCount: number[];\n\t\t\t\ttotalSize: number[];\n\t\t\t};\n\t\t};\n\t};\n\t\"charts/federation\": {\n\t\treq: {\n\t\t\tspan: \"day\" | \"hour\";\n\t\t\tlimit?: number;\n\t\t\toffset?: number | null;\n\t\t};\n\t\tres: {\n\t\t\tinstance: {\n\t\t\t\tdec: number[];\n\t\t\t\tinc: number[];\n\t\t\t\ttotal: number[];\n\t\t\t};\n\t\t};\n\t};\n\t\"charts/hashtag\": {\n\t\treq: {\n\t\t\tspan: \"day\" | \"hour\";\n\t\t\tlimit?: number;\n\t\t\toffset?: number | null;\n\t\t};\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"charts/instance\": {\n\t\treq: {\n\t\t\tspan: \"day\" | \"hour\";\n\t\t\tlimit?: number;\n\t\t\toffset?: number | null;\n\t\t\thost: string;\n\t\t};\n\t\tres: {\n\t\t\tdrive: {\n\t\t\t\tdecFiles: number[];\n\t\t\t\tdecUsage: number[];\n\t\t\t\tincFiles: number[];\n\t\t\t\tincUsage: number[];\n\t\t\t\ttotalFiles: number[];\n\t\t\t\ttotalUsage: number[];\n\t\t\t};\n\t\t\tfollowers: {\n\t\t\t\tdec: number[];\n\t\t\t\tinc: number[];\n\t\t\t\ttotal: number[];\n\t\t\t};\n\t\t\tfollowing: {\n\t\t\t\tdec: number[];\n\t\t\t\tinc: number[];\n\t\t\t\ttotal: number[];\n\t\t\t};\n\t\t\tnotes: {\n\t\t\t\tdec: number[];\n\t\t\t\tinc: number[];\n\t\t\t\ttotal: number[];\n\t\t\t\tdiffs: {\n\t\t\t\t\tnormal: number[];\n\t\t\t\t\trenote: number[];\n\t\t\t\t\treply: number[];\n\t\t\t\t};\n\t\t\t};\n\t\t\trequests: {\n\t\t\t\tfailed: number[];\n\t\t\t\treceived: number[];\n\t\t\t\tsucceeded: number[];\n\t\t\t};\n\t\t\tusers: {\n\t\t\t\tdec: number[];\n\t\t\t\tinc: number[];\n\t\t\t\ttotal: number[];\n\t\t\t};\n\t\t};\n\t};\n\t\"charts/network\": {\n\t\treq: {\n\t\t\tspan: \"day\" | \"hour\";\n\t\t\tlimit?: number;\n\t\t\toffset?: number | null;\n\t\t};\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"charts/notes\": {\n\t\treq: {\n\t\t\tspan: \"day\" | \"hour\";\n\t\t\tlimit?: number;\n\t\t\toffset?: number | null;\n\t\t};\n\t\tres: {\n\t\t\tlocal: {\n\t\t\t\tdec: number[];\n\t\t\t\tinc: number[];\n\t\t\t\ttotal: number[];\n\t\t\t\tdiffs: {\n\t\t\t\t\tnormal: number[];\n\t\t\t\t\trenote: number[];\n\t\t\t\t\treply: number[];\n\t\t\t\t};\n\t\t\t};\n\t\t\tremote: {\n\t\t\t\tdec: number[];\n\t\t\t\tinc: number[];\n\t\t\t\ttotal: number[];\n\t\t\t\tdiffs: {\n\t\t\t\t\tnormal: number[];\n\t\t\t\t\trenote: number[];\n\t\t\t\t\treply: number[];\n\t\t\t\t};\n\t\t\t};\n\t\t};\n\t};\n\t\"charts/user/drive\": {\n\t\treq: {\n\t\t\tspan: \"day\" | \"hour\";\n\t\t\tlimit?: number;\n\t\t\toffset?: number | null;\n\t\t\tuserId: " - }, - { - "kind": "Reference", - "text": "User", - "canonicalReference": "firefish-js!entities.User:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t};\n\t\tres: {\n\t\t\tdecCount: number[];\n\t\t\tdecSize: number[];\n\t\t\tincCount: number[];\n\t\t\tincSize: number[];\n\t\t\ttotalCount: number[];\n\t\t\ttotalSize: number[];\n\t\t};\n\t};\n\t\"charts/user/following\": {\n\t\treq: {\n\t\t\tspan: \"day\" | \"hour\";\n\t\t\tlimit?: number;\n\t\t\toffset?: number | null;\n\t\t\tuserId: " - }, - { - "kind": "Reference", - "text": "User", - "canonicalReference": "firefish-js!entities.User:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t};\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"charts/user/notes\": {\n\t\treq: {\n\t\t\tspan: \"day\" | \"hour\";\n\t\t\tlimit?: number;\n\t\t\toffset?: number | null;\n\t\t\tuserId: " - }, - { - "kind": "Reference", - "text": "User", - "canonicalReference": "firefish-js!entities.User:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t};\n\t\tres: {\n\t\t\tdec: number[];\n\t\t\tinc: number[];\n\t\t\ttotal: number[];\n\t\t\tdiffs: {\n\t\t\t\tnormal: number[];\n\t\t\t\trenote: number[];\n\t\t\t\treply: number[];\n\t\t\t};\n\t\t};\n\t};\n\t\"charts/user/reactions\": {\n\t\treq: {\n\t\t\tspan: \"day\" | \"hour\";\n\t\t\tlimit?: number;\n\t\t\toffset?: number | null;\n\t\t\tuserId: " - }, - { - "kind": "Reference", - "text": "User", - "canonicalReference": "firefish-js!entities.User:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t};\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"charts/users\": {\n\t\treq: {\n\t\t\tspan: \"day\" | \"hour\";\n\t\t\tlimit?: number;\n\t\t\toffset?: number | null;\n\t\t};\n\t\tres: {\n\t\t\tlocal: {\n\t\t\t\tdec: number[];\n\t\t\t\tinc: number[];\n\t\t\t\ttotal: number[];\n\t\t\t};\n\t\t\tremote: {\n\t\t\t\tdec: number[];\n\t\t\t\tinc: number[];\n\t\t\t\ttotal: number[];\n\t\t\t};\n\t\t};\n\t};\n\t\"clips/add-note\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"clips/create\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"clips/delete\": {\n\t\treq: {\n\t\t\tclipId: " - }, - { - "kind": "Reference", - "text": "Clip", - "canonicalReference": "firefish-js!entities.Clip:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t};\n\t\tres: null;\n\t};\n\t\"clips/list\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"clips/notes\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"clips/show\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"clips/update\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\tdrive: {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "NoParams", - "canonicalReference": "firefish-js!~NoParams:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: {\n\t\t\tcapacity: number;\n\t\t\tusage: number;\n\t\t};\n\t};\n\t\"drive/files\": {\n\t\treq: {\n\t\t\tfolderId?: " - }, - { - "kind": "Reference", - "text": "DriveFolder", - "canonicalReference": "firefish-js!entities.DriveFolder:type" - }, - { - "kind": "Content", - "text": "[\"id\"] | null;\n\t\t\ttype?: " - }, - { - "kind": "Reference", - "text": "DriveFile", - "canonicalReference": "firefish-js!entities.DriveFile:type" - }, - { - "kind": "Content", - "text": "[\"type\"] | null;\n\t\t\tlimit?: number;\n\t\t\tsinceId?: " - }, - { - "kind": "Reference", - "text": "DriveFile", - "canonicalReference": "firefish-js!entities.DriveFile:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t\tuntilId?: " - }, - { - "kind": "Reference", - "text": "DriveFile", - "canonicalReference": "firefish-js!entities.DriveFile:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t};\n\t\tres: " - }, - { - "kind": "Reference", - "text": "DriveFile", - "canonicalReference": "firefish-js!entities.DriveFile:type" - }, - { - "kind": "Content", - "text": "[];\n\t};\n\t\"drive/files/attached-notes\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"drive/files/check-existence\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"drive/files/create\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"drive/files/delete\": {\n\t\treq: {\n\t\t\tfileId: " - }, - { - "kind": "Reference", - "text": "DriveFile", - "canonicalReference": "firefish-js!entities.DriveFile:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t};\n\t\tres: null;\n\t};\n\t\"drive/files/find-by-hash\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"drive/files/find\": {\n\t\treq: {\n\t\t\tname: string;\n\t\t\tfolderId?: " - }, - { - "kind": "Reference", - "text": "DriveFolder", - "canonicalReference": "firefish-js!entities.DriveFolder:type" - }, - { - "kind": "Content", - "text": "[\"id\"] | null;\n\t\t};\n\t\tres: " - }, - { - "kind": "Reference", - "text": "DriveFile", - "canonicalReference": "firefish-js!entities.DriveFile:type" - }, - { - "kind": "Content", - "text": "[];\n\t};\n\t\"drive/files/show\": {\n\t\treq: {\n\t\t\tfileId?: " - }, - { - "kind": "Reference", - "text": "DriveFile", - "canonicalReference": "firefish-js!entities.DriveFile:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t\turl?: string;\n\t\t};\n\t\tres: " - }, - { - "kind": "Reference", - "text": "DriveFile", - "canonicalReference": "firefish-js!entities.DriveFile:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"drive/files/update\": {\n\t\treq: {\n\t\t\tfileId: " - }, - { - "kind": "Reference", - "text": "DriveFile", - "canonicalReference": "firefish-js!entities.DriveFile:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t\tfolderId?: " - }, - { - "kind": "Reference", - "text": "DriveFolder", - "canonicalReference": "firefish-js!entities.DriveFolder:type" - }, - { - "kind": "Content", - "text": "[\"id\"] | null;\n\t\t\tname?: string;\n\t\t\tisSensitive?: boolean;\n\t\t\tcomment?: string | null;\n\t\t};\n\t\tres: " - }, - { - "kind": "Reference", - "text": "DriveFile", - "canonicalReference": "firefish-js!entities.DriveFile:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"drive/files/upload-from-url\": {\n\t\treq: {\n\t\t\turl: string;\n\t\t\tfolderId?: " - }, - { - "kind": "Reference", - "text": "DriveFolder", - "canonicalReference": "firefish-js!entities.DriveFolder:type" - }, - { - "kind": "Content", - "text": "[\"id\"] | null;\n\t\t\tisSensitive?: boolean;\n\t\t\tcomment?: string | null;\n\t\t\tmarker?: string | null;\n\t\t\tforce?: boolean;\n\t\t};\n\t\tres: null;\n\t};\n\t\"drive/folders\": {\n\t\treq: {\n\t\t\tfolderId?: " - }, - { - "kind": "Reference", - "text": "DriveFolder", - "canonicalReference": "firefish-js!entities.DriveFolder:type" - }, - { - "kind": "Content", - "text": "[\"id\"] | null;\n\t\t\tlimit?: number;\n\t\t\tsinceId?: " - }, - { - "kind": "Reference", - "text": "DriveFile", - "canonicalReference": "firefish-js!entities.DriveFile:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t\tuntilId?: " - }, - { - "kind": "Reference", - "text": "DriveFile", - "canonicalReference": "firefish-js!entities.DriveFile:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t};\n\t\tres: " - }, - { - "kind": "Reference", - "text": "DriveFolder", - "canonicalReference": "firefish-js!entities.DriveFolder:type" - }, - { - "kind": "Content", - "text": "[];\n\t};\n\t\"drive/folders/create\": {\n\t\treq: {\n\t\t\tname?: string;\n\t\t\tparentId?: " - }, - { - "kind": "Reference", - "text": "DriveFolder", - "canonicalReference": "firefish-js!entities.DriveFolder:type" - }, - { - "kind": "Content", - "text": "[\"id\"] | null;\n\t\t};\n\t\tres: " - }, - { - "kind": "Reference", - "text": "DriveFolder", - "canonicalReference": "firefish-js!entities.DriveFolder:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"drive/folders/delete\": {\n\t\treq: {\n\t\t\tfolderId: " - }, - { - "kind": "Reference", - "text": "DriveFolder", - "canonicalReference": "firefish-js!entities.DriveFolder:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t};\n\t\tres: null;\n\t};\n\t\"drive/folders/find\": {\n\t\treq: {\n\t\t\tname: string;\n\t\t\tparentId?: " - }, - { - "kind": "Reference", - "text": "DriveFolder", - "canonicalReference": "firefish-js!entities.DriveFolder:type" - }, - { - "kind": "Content", - "text": "[\"id\"] | null;\n\t\t};\n\t\tres: " - }, - { - "kind": "Reference", - "text": "DriveFolder", - "canonicalReference": "firefish-js!entities.DriveFolder:type" - }, - { - "kind": "Content", - "text": "[];\n\t};\n\t\"drive/folders/show\": {\n\t\treq: {\n\t\t\tfolderId: " - }, - { - "kind": "Reference", - "text": "DriveFolder", - "canonicalReference": "firefish-js!entities.DriveFolder:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t};\n\t\tres: " - }, - { - "kind": "Reference", - "text": "DriveFolder", - "canonicalReference": "firefish-js!entities.DriveFolder:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"drive/folders/update\": {\n\t\treq: {\n\t\t\tfolderId: " - }, - { - "kind": "Reference", - "text": "DriveFolder", - "canonicalReference": "firefish-js!entities.DriveFolder:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t\tname?: string;\n\t\t\tparentId?: " - }, - { - "kind": "Reference", - "text": "DriveFolder", - "canonicalReference": "firefish-js!entities.DriveFolder:type" - }, - { - "kind": "Content", - "text": "[\"id\"] | null;\n\t\t};\n\t\tres: " - }, - { - "kind": "Reference", - "text": "DriveFolder", - "canonicalReference": "firefish-js!entities.DriveFolder:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"drive/stream\": {\n\t\treq: {\n\t\t\ttype?: " - }, - { - "kind": "Reference", - "text": "DriveFile", - "canonicalReference": "firefish-js!entities.DriveFile:type" - }, - { - "kind": "Content", - "text": "[\"type\"] | null;\n\t\t\tlimit?: number;\n\t\t\tsinceId?: " - }, - { - "kind": "Reference", - "text": "DriveFile", - "canonicalReference": "firefish-js!entities.DriveFile:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t\tuntilId?: " - }, - { - "kind": "Reference", - "text": "DriveFile", - "canonicalReference": "firefish-js!entities.DriveFile:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t};\n\t\tres: " - }, - { - "kind": "Reference", - "text": "DriveFile", - "canonicalReference": "firefish-js!entities.DriveFile:type" - }, - { - "kind": "Content", - "text": "[];\n\t};\n\tendpoint: {\n\t\treq: {\n\t\t\tendpoint: string;\n\t\t};\n\t\tres: {\n\t\t\tparams: {\n\t\t\t\tname: string;\n\t\t\t\ttype: string;\n\t\t\t}[];\n\t\t};\n\t};\n\tendpoints: {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "NoParams", - "canonicalReference": "firefish-js!~NoParams:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: string[];\n\t};\n\t\"federation/dns\": {\n\t\treq: {\n\t\t\thost: string;\n\t\t};\n\t\tres: {\n\t\t\ta: string[];\n\t\t\taaaa: string[];\n\t\t\tcname: string[];\n\t\t\ttxt: string[];\n\t\t};\n\t};\n\t\"federation/followers\": {\n\t\treq: {\n\t\t\thost: string;\n\t\t\tlimit?: number;\n\t\t\tsinceId?: " - }, - { - "kind": "Reference", - "text": "Following", - "canonicalReference": "firefish-js!entities.Following:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t\tuntilId?: " - }, - { - "kind": "Reference", - "text": "Following", - "canonicalReference": "firefish-js!entities.Following:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t};\n\t\tres: " - }, - { - "kind": "Reference", - "text": "FollowingFolloweePopulated", - "canonicalReference": "firefish-js!entities.FollowingFolloweePopulated:type" - }, - { - "kind": "Content", - "text": "[];\n\t};\n\t\"federation/following\": {\n\t\treq: {\n\t\t\thost: string;\n\t\t\tlimit?: number;\n\t\t\tsinceId?: " - }, - { - "kind": "Reference", - "text": "Following", - "canonicalReference": "firefish-js!entities.Following:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t\tuntilId?: " - }, - { - "kind": "Reference", - "text": "Following", - "canonicalReference": "firefish-js!entities.Following:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t};\n\t\tres: " - }, - { - "kind": "Reference", - "text": "FollowingFolloweePopulated", - "canonicalReference": "firefish-js!entities.FollowingFolloweePopulated:type" - }, - { - "kind": "Content", - "text": "[];\n\t};\n\t\"federation/instances\": {\n\t\treq: {\n\t\t\thost?: string | null;\n\t\t\tblocked?: boolean | null;\n\t\t\tnotResponding?: boolean | null;\n\t\t\tsuspended?: boolean | null;\n\t\t\tfederating?: boolean | null;\n\t\t\tsubscribing?: boolean | null;\n\t\t\tpublishing?: boolean | null;\n\t\t\tlimit?: number;\n\t\t\toffset?: number;\n\t\t\tsort?:\n\t\t\t\t| \"+pubSub\"\n\t\t\t\t| \"-pubSub\"\n\t\t\t\t| \"+notes\"\n\t\t\t\t| \"-notes\"\n\t\t\t\t| \"+users\"\n\t\t\t\t| \"-users\"\n\t\t\t\t| \"+following\"\n\t\t\t\t| \"-following\"\n\t\t\t\t| \"+followers\"\n\t\t\t\t| \"-followers\"\n\t\t\t\t| \"+caughtAt\"\n\t\t\t\t| \"-caughtAt\"\n\t\t\t\t| \"+lastCommunicatedAt\"\n\t\t\t\t| \"-lastCommunicatedAt\"\n\t\t\t\t| \"+driveUsage\"\n\t\t\t\t| \"-driveUsage\"\n\t\t\t\t| \"+driveFiles\"\n\t\t\t\t| \"-driveFiles\";\n\t\t};\n\t\tres: " - }, - { - "kind": "Reference", - "text": "Instance", - "canonicalReference": "firefish-js!entities.Instance:type" - }, - { - "kind": "Content", - "text": "[];\n\t};\n\t\"federation/show-instance\": {\n\t\treq: {\n\t\t\thost: string;\n\t\t};\n\t\tres: " - }, - { - "kind": "Reference", - "text": "Instance", - "canonicalReference": "firefish-js!entities.Instance:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"federation/update-remote-user\": {\n\t\treq: {\n\t\t\tuserId: " - }, - { - "kind": "Reference", - "text": "User", - "canonicalReference": "firefish-js!entities.User:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t};\n\t\tres: null;\n\t};\n\t\"federation/users\": {\n\t\treq: {\n\t\t\thost: string;\n\t\t\tlimit?: number;\n\t\t\tsinceId?: " - }, - { - "kind": "Reference", - "text": "User", - "canonicalReference": "firefish-js!entities.User:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t\tuntilId?: " - }, - { - "kind": "Reference", - "text": "User", - "canonicalReference": "firefish-js!entities.User:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t};\n\t\tres: " - }, - { - "kind": "Reference", - "text": "UserDetailed", - "canonicalReference": "firefish-js!entities.UserDetailed:type" - }, - { - "kind": "Content", - "text": "[];\n\t};\n\t\"following/create\": {\n\t\treq: {\n\t\t\tuserId: " - }, - { - "kind": "Reference", - "text": "User", - "canonicalReference": "firefish-js!entities.User:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t};\n\t\tres: " - }, - { - "kind": "Reference", - "text": "User", - "canonicalReference": "firefish-js!entities.User:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"following/delete\": {\n\t\treq: {\n\t\t\tuserId: " - }, - { - "kind": "Reference", - "text": "User", - "canonicalReference": "firefish-js!entities.User:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t};\n\t\tres: " - }, - { - "kind": "Reference", - "text": "User", - "canonicalReference": "firefish-js!entities.User:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"following/requests/accept\": {\n\t\treq: {\n\t\t\tuserId: " - }, - { - "kind": "Reference", - "text": "User", - "canonicalReference": "firefish-js!entities.User:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t};\n\t\tres: null;\n\t};\n\t\"following/requests/cancel\": {\n\t\treq: {\n\t\t\tuserId: " - }, - { - "kind": "Reference", - "text": "User", - "canonicalReference": "firefish-js!entities.User:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t};\n\t\tres: " - }, - { - "kind": "Reference", - "text": "User", - "canonicalReference": "firefish-js!entities.User:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"following/requests/list\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "NoParams", - "canonicalReference": "firefish-js!~NoParams:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "FollowRequest", - "canonicalReference": "firefish-js!entities.FollowRequest:type" - }, - { - "kind": "Content", - "text": "[];\n\t};\n\t\"following/requests/reject\": {\n\t\treq: {\n\t\t\tuserId: " - }, - { - "kind": "Reference", - "text": "User", - "canonicalReference": "firefish-js!entities.User:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t};\n\t\tres: null;\n\t};\n\t\"gallery/featured\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"gallery/popular\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"gallery/posts\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"gallery/posts/create\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"gallery/posts/delete\": {\n\t\treq: {\n\t\t\tpostId: " - }, - { - "kind": "Reference", - "text": "GalleryPost", - "canonicalReference": "firefish-js!entities.GalleryPost:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t};\n\t\tres: null;\n\t};\n\t\"gallery/posts/like\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"gallery/posts/show\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"gallery/posts/unlike\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"gallery/posts/update\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"games/reversi/games\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"games/reversi/games/show\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"games/reversi/games/surrender\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"games/reversi/invitations\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"games/reversi/match\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"games/reversi/match/cancel\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"get-online-users-count\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "NoParams", - "canonicalReference": "firefish-js!~NoParams:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: {\n\t\t\tcount: number;\n\t\t};\n\t};\n\t\"hashtags/list\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"hashtags/search\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"hashtags/show\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"hashtags/trend\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"hashtags/users\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\ti: {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "NoParams", - "canonicalReference": "firefish-js!~NoParams:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "User", - "canonicalReference": "firefish-js!entities.User:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"i/apps\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"i/authorized-apps\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"i/change-password\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"i/delete-account\": {\n\t\treq: {\n\t\t\tpassword: string;\n\t\t};\n\t\tres: null;\n\t};\n\t\"i/export-blocking\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"i/export-following\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"i/export-mute\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"i/export-notes\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"i/export-user-lists\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"i/favorites\": {\n\t\treq: {\n\t\t\tlimit?: number;\n\t\t\tsinceId?: " - }, - { - "kind": "Reference", - "text": "NoteFavorite", - "canonicalReference": "firefish-js!entities.NoteFavorite:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t\tuntilId?: " - }, - { - "kind": "Reference", - "text": "NoteFavorite", - "canonicalReference": "firefish-js!entities.NoteFavorite:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t};\n\t\tres: " - }, - { - "kind": "Reference", - "text": "NoteFavorite", - "canonicalReference": "firefish-js!entities.NoteFavorite:type" - }, - { - "kind": "Content", - "text": "[];\n\t};\n\t\"i/gallery/likes\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"i/gallery/posts\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"i/get-word-muted-notes-count\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"i/import-following\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"i/import-user-lists\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"i/move\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"i/known-as\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"i/notifications\": {\n\t\treq: {\n\t\t\tlimit?: number;\n\t\t\tsinceId?: " - }, - { - "kind": "Reference", - "text": "Notification", - "canonicalReference": "firefish-js!entities.Notification_2:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t\tuntilId?: " - }, - { - "kind": "Reference", - "text": "Notification", - "canonicalReference": "firefish-js!entities.Notification_2:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t\tfollowing?: boolean;\n\t\t\tmarkAsRead?: boolean;\n\t\t\tincludeTypes?: " - }, - { - "kind": "Reference", - "text": "Notification", - "canonicalReference": "firefish-js!entities.Notification_2:type" - }, - { - "kind": "Content", - "text": "[\"type\"][];\n\t\t\texcludeTypes?: " - }, - { - "kind": "Reference", - "text": "Notification", - "canonicalReference": "firefish-js!entities.Notification_2:type" - }, - { - "kind": "Content", - "text": "[\"type\"][];\n\t\t};\n\t\tres: " - }, - { - "kind": "Reference", - "text": "Notification", - "canonicalReference": "firefish-js!entities.Notification_2:type" - }, - { - "kind": "Content", - "text": "[];\n\t};\n\t\"i/page-likes\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"i/pages\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"i/pin\": {\n\t\treq: {\n\t\t\tnoteId: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t};\n\t\tres: " - }, - { - "kind": "Reference", - "text": "MeDetailed", - "canonicalReference": "firefish-js!entities.MeDetailed:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"i/read-all-messaging-messages\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"i/read-all-unread-notes\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"i/read-announcement\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"i/regenerate-token\": {\n\t\treq: {\n\t\t\tpassword: string;\n\t\t};\n\t\tres: null;\n\t};\n\t\"i/registry/get-all\": {\n\t\treq: {\n\t\t\tscope?: string[];\n\t\t};\n\t\tres: " - }, - { - "kind": "Reference", - "text": "Record", - "canonicalReference": "!Record:type" - }, - { - "kind": "Content", - "text": "<string, any>;\n\t};\n\t\"i/registry/get-detail\": {\n\t\treq: {\n\t\t\tkey: string;\n\t\t\tscope?: string[];\n\t\t};\n\t\tres: {\n\t\t\tupdatedAt: " - }, - { - "kind": "Reference", - "text": "DateString", - "canonicalReference": "firefish-js!entities.DateString:type" - }, - { - "kind": "Content", - "text": ";\n\t\t\tvalue: any;\n\t\t};\n\t};\n\t\"i/registry/get\": {\n\t\treq: {\n\t\t\tkey: string;\n\t\t\tscope?: string[];\n\t\t};\n\t\tres: any;\n\t};\n\t\"i/registry/keys-with-type\": {\n\t\treq: {\n\t\t\tscope?: string[];\n\t\t};\n\t\tres: " - }, - { - "kind": "Reference", - "text": "Record", - "canonicalReference": "!Record:type" - }, - { - "kind": "Content", - "text": "<\n\t\t\tstring,\n\t\t\t\"null\" | \"array\" | \"number\" | \"string\" | \"boolean\" | \"object\"\n\t\t>;\n\t};\n\t\"i/registry/keys\": {\n\t\treq: {\n\t\t\tscope?: string[];\n\t\t};\n\t\tres: string[];\n\t};\n\t\"i/registry/remove\": {\n\t\treq: {\n\t\t\tkey: string;\n\t\t\tscope?: string[];\n\t\t};\n\t\tres: null;\n\t};\n\t\"i/registry/scopes\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "NoParams", - "canonicalReference": "firefish-js!~NoParams:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: string[][];\n\t};\n\t\"i/registry/set\": {\n\t\treq: {\n\t\t\tkey: string;\n\t\t\tvalue: any;\n\t\t\tscope?: string[];\n\t\t};\n\t\tres: null;\n\t};\n\t\"i/revoke-token\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"i/signin-history\": {\n\t\treq: {\n\t\t\tlimit?: number;\n\t\t\tsinceId?: " - }, - { - "kind": "Reference", - "text": "Signin", - "canonicalReference": "firefish-js!entities.Signin:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t\tuntilId?: " - }, - { - "kind": "Reference", - "text": "Signin", - "canonicalReference": "firefish-js!entities.Signin:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t};\n\t\tres: " - }, - { - "kind": "Reference", - "text": "Signin", - "canonicalReference": "firefish-js!entities.Signin:type" - }, - { - "kind": "Content", - "text": "[];\n\t};\n\t\"i/unpin\": {\n\t\treq: {\n\t\t\tnoteId: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t};\n\t\tres: " - }, - { - "kind": "Reference", - "text": "MeDetailed", - "canonicalReference": "firefish-js!entities.MeDetailed:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"i/update-email\": {\n\t\treq: {\n\t\t\tpassword: string;\n\t\t\temail?: string | null;\n\t\t};\n\t\tres: " - }, - { - "kind": "Reference", - "text": "MeDetailed", - "canonicalReference": "firefish-js!entities.MeDetailed:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"i/update\": {\n\t\treq: {\n\t\t\tname?: string | null;\n\t\t\tdescription?: string | null;\n\t\t\tlang?: string | null;\n\t\t\tlocation?: string | null;\n\t\t\tbirthday?: string | null;\n\t\t\tavatarId?: " - }, - { - "kind": "Reference", - "text": "DriveFile", - "canonicalReference": "firefish-js!entities.DriveFile:type" - }, - { - "kind": "Content", - "text": "[\"id\"] | null;\n\t\t\tbannerId?: " - }, - { - "kind": "Reference", - "text": "DriveFile", - "canonicalReference": "firefish-js!entities.DriveFile:type" - }, - { - "kind": "Content", - "text": "[\"id\"] | null;\n\t\t\tfields?: {\n\t\t\t\tname: string;\n\t\t\t\tvalue: string;\n\t\t\t}[];\n\t\t\tisLocked?: boolean;\n\t\t\tisExplorable?: boolean;\n\t\t\thideOnlineStatus?: boolean;\n\t\t\tcarefulBot?: boolean;\n\t\t\tautoAcceptFollowed?: boolean;\n\t\t\tnoCrawle?: boolean;\n\t\t\tpreventAiLearning?: boolean;\n\t\t\tisBot?: boolean;\n\t\t\tisCat?: boolean;\n\t\t\tinjectFeaturedNote?: boolean;\n\t\t\treceiveAnnouncementEmail?: boolean;\n\t\t\talwaysMarkNsfw?: boolean;\n\t\t\tmutedWords?: string[][];\n\t\t\tmutingNotificationTypes?: " - }, - { - "kind": "Reference", - "text": "Notification", - "canonicalReference": "firefish-js!entities.Notification_2:type" - }, - { - "kind": "Content", - "text": "[\"type\"][];\n\t\t\temailNotificationTypes?: string[];\n\t\t};\n\t\tres: " - }, - { - "kind": "Reference", - "text": "MeDetailed", - "canonicalReference": "firefish-js!entities.MeDetailed:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"i/user-group-invites\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"i/2fa/done\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"i/2fa/key-done\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"i/2fa/password-less\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"i/2fa/register-key\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"i/2fa/register\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"i/2fa/update-key\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"i/2fa/remove-key\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"i/2fa/unregister\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"messaging/history\": {\n\t\treq: {\n\t\t\tlimit?: number;\n\t\t\tgroup?: boolean;\n\t\t};\n\t\tres: " - }, - { - "kind": "Reference", - "text": "MessagingMessage", - "canonicalReference": "firefish-js!entities.MessagingMessage:type" - }, - { - "kind": "Content", - "text": "[];\n\t};\n\t\"messaging/messages\": {\n\t\treq: {\n\t\t\tuserId?: " - }, - { - "kind": "Reference", - "text": "User", - "canonicalReference": "firefish-js!entities.User:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t\tgroupId?: " - }, - { - "kind": "Reference", - "text": "UserGroup", - "canonicalReference": "firefish-js!entities.UserGroup:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t\tlimit?: number;\n\t\t\tsinceId?: " - }, - { - "kind": "Reference", - "text": "MessagingMessage", - "canonicalReference": "firefish-js!entities.MessagingMessage:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t\tuntilId?: " - }, - { - "kind": "Reference", - "text": "MessagingMessage", - "canonicalReference": "firefish-js!entities.MessagingMessage:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t\tmarkAsRead?: boolean;\n\t\t};\n\t\tres: " - }, - { - "kind": "Reference", - "text": "MessagingMessage", - "canonicalReference": "firefish-js!entities.MessagingMessage:type" - }, - { - "kind": "Content", - "text": "[];\n\t};\n\t\"messaging/messages/create\": {\n\t\treq: {\n\t\t\tuserId?: " - }, - { - "kind": "Reference", - "text": "User", - "canonicalReference": "firefish-js!entities.User:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t\tgroupId?: " - }, - { - "kind": "Reference", - "text": "UserGroup", - "canonicalReference": "firefish-js!entities.UserGroup:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t\ttext?: string;\n\t\t\tfileId?: " - }, - { - "kind": "Reference", - "text": "DriveFile", - "canonicalReference": "firefish-js!entities.DriveFile:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t};\n\t\tres: " - }, - { - "kind": "Reference", - "text": "MessagingMessage", - "canonicalReference": "firefish-js!entities.MessagingMessage:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"messaging/messages/delete\": {\n\t\treq: {\n\t\t\tmessageId: " - }, - { - "kind": "Reference", - "text": "MessagingMessage", - "canonicalReference": "firefish-js!entities.MessagingMessage:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t};\n\t\tres: null;\n\t};\n\t\"messaging/messages/read\": {\n\t\treq: {\n\t\t\tmessageId: " - }, - { - "kind": "Reference", - "text": "MessagingMessage", - "canonicalReference": "firefish-js!entities.MessagingMessage:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t};\n\t\tres: null;\n\t};\n\tmeta: {\n\t\treq: {\n\t\t\tdetail?: boolean;\n\t\t};\n\t\tres: {\n\t\t\t$switch: {\n\t\t\t\t$cases: [\n\t\t\t\t\t[\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tdetail: true;\n\t\t\t\t\t\t},\n\t\t\t\t\t\t" - }, - { - "kind": "Reference", - "text": "DetailedInstanceMetadata", - "canonicalReference": "firefish-js!entities.DetailedInstanceMetadata:type" - }, - { - "kind": "Content", - "text": ",\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tdetail: false;\n\t\t\t\t\t\t},\n\t\t\t\t\t\t" - }, - { - "kind": "Reference", - "text": "LiteInstanceMetadata", - "canonicalReference": "firefish-js!entities.LiteInstanceMetadata:type" - }, - { - "kind": "Content", - "text": ",\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tdetail: boolean;\n\t\t\t\t\t\t},\n\t\t\t\t\t\t" - }, - { - "kind": "Reference", - "text": "LiteInstanceMetadata", - "canonicalReference": "firefish-js!entities.LiteInstanceMetadata:type" - }, - { - "kind": "Content", - "text": " | " - }, - { - "kind": "Reference", - "text": "DetailedInstanceMetadata", - "canonicalReference": "firefish-js!entities.DetailedInstanceMetadata:type" - }, - { - "kind": "Content", - "text": ",\n\t\t\t\t\t],\n\t\t\t\t];\n\t\t\t\t$default: " - }, - { - "kind": "Reference", - "text": "LiteInstanceMetadata", - "canonicalReference": "firefish-js!entities.LiteInstanceMetadata:type" - }, - { - "kind": "Content", - "text": ";\n\t\t\t};\n\t\t};\n\t};\n\t\"miauth/gen-token\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"mute/create\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"mute/delete\": {\n\t\treq: {\n\t\t\tuserId: " - }, - { - "kind": "Reference", - "text": "User", - "canonicalReference": "firefish-js!entities.User:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t};\n\t\tres: null;\n\t};\n\t\"mute/list\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"renote-mute/create\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"renote-mute/delete\": {\n\t\treq: {\n\t\t\tuserId: " - }, - { - "kind": "Reference", - "text": "User", - "canonicalReference": "firefish-js!entities.User:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t};\n\t\tres: null;\n\t};\n\t\"renote-mute/list\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"my/apps\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\tnotes: {\n\t\treq: {\n\t\t\tlimit?: number;\n\t\t\tsinceId?: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t\tuntilId?: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t};\n\t\tres: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": "[];\n\t};\n\t\"notes/children\": {\n\t\treq: {\n\t\t\tnoteId: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t\tlimit?: number;\n\t\t\tsinceId?: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t\tuntilId?: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t};\n\t\tres: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": "[];\n\t};\n\t\"notes/clips\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"notes/conversation\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"notes/create\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "NoteSubmitReq", - "canonicalReference": "firefish-js!~NoteSubmitReq:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: {\n\t\t\tcreatedNote: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": ";\n\t\t};\n\t};\n\t\"notes/delete\": {\n\t\treq: {\n\t\t\tnoteId: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t};\n\t\tres: null;\n\t};\n\t\"notes/edit\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "NoteSubmitReq", - "canonicalReference": "firefish-js!~NoteSubmitReq:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: {\n\t\t\tcreatedNote: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": ";\n\t\t};\n\t};\n\t\"notes/favorites/create\": {\n\t\treq: {\n\t\t\tnoteId: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t};\n\t\tres: null;\n\t};\n\t\"notes/favorites/delete\": {\n\t\treq: {\n\t\t\tnoteId: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t};\n\t\tres: null;\n\t};\n\t\"notes/featured\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": "[];\n\t};\n\t\"notes/global-timeline\": {\n\t\treq: {\n\t\t\tlimit?: number;\n\t\t\tsinceId?: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t\tuntilId?: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t\tsinceDate?: number;\n\t\t\tuntilDate?: number;\n\t\t};\n\t\tres: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": "[];\n\t};\n\t\"notes/recommended-timeline\": {\n\t\treq: {\n\t\t\tlimit?: number;\n\t\t\tsinceId?: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t\tuntilId?: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t\tsinceDate?: number;\n\t\t\tuntilDate?: number;\n\t\t};\n\t\tres: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": "[];\n\t};\n\t\"notes/hybrid-timeline\": {\n\t\treq: {\n\t\t\tlimit?: number;\n\t\t\tsinceId?: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t\tuntilId?: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t\tsinceDate?: number;\n\t\t\tuntilDate?: number;\n\t\t};\n\t\tres: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": "[];\n\t};\n\t\"notes/local-timeline\": {\n\t\treq: {\n\t\t\tlimit?: number;\n\t\t\tsinceId?: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t\tuntilId?: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t\tsinceDate?: number;\n\t\t\tuntilDate?: number;\n\t\t};\n\t\tres: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": "[];\n\t};\n\t\"notes/mentions\": {\n\t\treq: {\n\t\t\tfollowing?: boolean;\n\t\t\tlimit?: number;\n\t\t\tsinceId?: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t\tuntilId?: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t};\n\t\tres: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": "[];\n\t};\n\t\"notes/polls/recommendation\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"notes/polls/vote\": {\n\t\treq: {\n\t\t\tnoteId: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t\tchoice: number;\n\t\t};\n\t\tres: null;\n\t};\n\t\"notes/reactions\": {\n\t\treq: {\n\t\t\tnoteId: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t\ttype?: string | null;\n\t\t\tlimit?: number;\n\t\t};\n\t\tres: " - }, - { - "kind": "Reference", - "text": "NoteReaction", - "canonicalReference": "firefish-js!entities.NoteReaction:type" - }, - { - "kind": "Content", - "text": "[];\n\t};\n\t\"notes/reactions/create\": {\n\t\treq: {\n\t\t\tnoteId: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t\treaction: string;\n\t\t};\n\t\tres: null;\n\t};\n\t\"notes/reactions/delete\": {\n\t\treq: {\n\t\t\tnoteId: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t};\n\t\tres: null;\n\t};\n\t\"notes/renotes\": {\n\t\treq: {\n\t\t\tlimit?: number;\n\t\t\tsinceId?: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t\tuntilId?: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t\tnoteId: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t};\n\t\tres: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": "[];\n\t};\n\t\"notes/replies\": {\n\t\treq: {\n\t\t\tlimit?: number;\n\t\t\tsinceId?: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t\tuntilId?: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t\tnoteId: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t};\n\t\tres: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": "[];\n\t};\n\t\"notes/search-by-tag\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"notes/search\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"notes/show\": {\n\t\treq: {\n\t\t\tnoteId: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t};\n\t\tres: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"notes/state\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"notes/timeline\": {\n\t\treq: {\n\t\t\tlimit?: number;\n\t\t\tsinceId?: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t\tuntilId?: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t\tsinceDate?: number;\n\t\t\tuntilDate?: number;\n\t\t};\n\t\tres: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": "[];\n\t};\n\t\"notes/unrenote\": {\n\t\treq: {\n\t\t\tnoteId: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t};\n\t\tres: null;\n\t};\n\t\"notes/user-list-timeline\": {\n\t\treq: {\n\t\t\tlistId: " - }, - { - "kind": "Reference", - "text": "UserList", - "canonicalReference": "firefish-js!entities.UserList:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t\tlimit?: number;\n\t\t\tsinceId?: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t\tuntilId?: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t\tsinceDate?: number;\n\t\t\tuntilDate?: number;\n\t\t};\n\t\tres: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": "[];\n\t};\n\t\"notes/watching/create\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"notes/watching/delete\": {\n\t\treq: {\n\t\t\tnoteId: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t};\n\t\tres: null;\n\t};\n\t\"notifications/create\": {\n\t\treq: {\n\t\t\tbody: string;\n\t\t\theader?: string | null;\n\t\t\ticon?: string | null;\n\t\t};\n\t\tres: null;\n\t};\n\t\"notifications/mark-all-as-read\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "NoParams", - "canonicalReference": "firefish-js!~NoParams:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: null;\n\t};\n\t\"notifications/read\": {\n\t\treq: {\n\t\t\tnotificationId: " - }, - { - "kind": "Reference", - "text": "Notification", - "canonicalReference": "firefish-js!entities.Notification_2:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t};\n\t\tres: null;\n\t};\n\t\"page-push\": {\n\t\treq: {\n\t\t\tpageId: " - }, - { - "kind": "Reference", - "text": "Page", - "canonicalReference": "firefish-js!entities.Page:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t\tevent: string;\n\t\t\tvar?: any;\n\t\t};\n\t\tres: null;\n\t};\n\t\"pages/create\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "Page", - "canonicalReference": "firefish-js!entities.Page:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"pages/delete\": {\n\t\treq: {\n\t\t\tpageId: " - }, - { - "kind": "Reference", - "text": "Page", - "canonicalReference": "firefish-js!entities.Page:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t};\n\t\tres: null;\n\t};\n\t\"pages/featured\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "NoParams", - "canonicalReference": "firefish-js!~NoParams:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "Page", - "canonicalReference": "firefish-js!entities.Page:type" - }, - { - "kind": "Content", - "text": "[];\n\t};\n\t\"pages/like\": {\n\t\treq: {\n\t\t\tpageId: " - }, - { - "kind": "Reference", - "text": "Page", - "canonicalReference": "firefish-js!entities.Page:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t};\n\t\tres: null;\n\t};\n\t\"pages/show\": {\n\t\treq: {\n\t\t\tpageId?: " - }, - { - "kind": "Reference", - "text": "Page", - "canonicalReference": "firefish-js!entities.Page:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t\tname?: string;\n\t\t\tusername?: string;\n\t\t};\n\t\tres: " - }, - { - "kind": "Reference", - "text": "Page", - "canonicalReference": "firefish-js!entities.Page:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"pages/unlike\": {\n\t\treq: {\n\t\t\tpageId: " - }, - { - "kind": "Reference", - "text": "Page", - "canonicalReference": "firefish-js!entities.Page:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t};\n\t\tres: null;\n\t};\n\t\"pages/update\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: null;\n\t};\n\tping: {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "NoParams", - "canonicalReference": "firefish-js!~NoParams:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: {\n\t\t\tpong: number;\n\t\t};\n\t};\n\t\"pinned-users\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"promo/read\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"request-reset-password\": {\n\t\treq: {\n\t\t\tusername: string;\n\t\t\temail: string;\n\t\t};\n\t\tres: null;\n\t};\n\t\"reset-password\": {\n\t\treq: {\n\t\t\ttoken: string;\n\t\t\tpassword: string;\n\t\t};\n\t\tres: null;\n\t};\n\t\"room/show\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"room/update\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\tstats: {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "NoParams", - "canonicalReference": "firefish-js!~NoParams:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "Stats", - "canonicalReference": "firefish-js!entities.Stats:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"server-info\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "NoParams", - "canonicalReference": "firefish-js!~NoParams:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "ServerInfo", - "canonicalReference": "firefish-js!entities.ServerInfo:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"latest-version\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "NoParams", - "canonicalReference": "firefish-js!~NoParams:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"sw/register\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"username/available\": {\n\t\treq: {\n\t\t\tusername: string;\n\t\t};\n\t\tres: {\n\t\t\tavailable: boolean;\n\t\t};\n\t};\n\tusers: {\n\t\treq: {\n\t\t\tlimit?: number;\n\t\t\toffset?: number;\n\t\t\tsort?: " - }, - { - "kind": "Reference", - "text": "UserSorting", - "canonicalReference": "firefish-js!entities.UserSorting:type" - }, - { - "kind": "Content", - "text": ";\n\t\t\torigin?: " - }, - { - "kind": "Reference", - "text": "OriginType", - "canonicalReference": "firefish-js!entities.OriginType:type" - }, - { - "kind": "Content", - "text": ";\n\t\t};\n\t\tres: " - }, - { - "kind": "Reference", - "text": "User", - "canonicalReference": "firefish-js!entities.User:type" - }, - { - "kind": "Content", - "text": "[];\n\t};\n\t\"users/clips\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"users/followers\": {\n\t\treq: {\n\t\t\tuserId?: " - }, - { - "kind": "Reference", - "text": "User", - "canonicalReference": "firefish-js!entities.User:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t\tusername?: " - }, - { - "kind": "Reference", - "text": "User", - "canonicalReference": "firefish-js!entities.User:type" - }, - { - "kind": "Content", - "text": "[\"username\"];\n\t\t\thost?: " - }, - { - "kind": "Reference", - "text": "User", - "canonicalReference": "firefish-js!entities.User:type" - }, - { - "kind": "Content", - "text": "[\"host\"] | null;\n\t\t\tlimit?: number;\n\t\t\tsinceId?: " - }, - { - "kind": "Reference", - "text": "Following", - "canonicalReference": "firefish-js!entities.Following:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t\tuntilId?: " - }, - { - "kind": "Reference", - "text": "Following", - "canonicalReference": "firefish-js!entities.Following:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t};\n\t\tres: " - }, - { - "kind": "Reference", - "text": "FollowingFollowerPopulated", - "canonicalReference": "firefish-js!entities.FollowingFollowerPopulated:type" - }, - { - "kind": "Content", - "text": "[];\n\t};\n\t\"users/following\": {\n\t\treq: {\n\t\t\tuserId?: " - }, - { - "kind": "Reference", - "text": "User", - "canonicalReference": "firefish-js!entities.User:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t\tusername?: " - }, - { - "kind": "Reference", - "text": "User", - "canonicalReference": "firefish-js!entities.User:type" - }, - { - "kind": "Content", - "text": "[\"username\"];\n\t\t\thost?: " - }, - { - "kind": "Reference", - "text": "User", - "canonicalReference": "firefish-js!entities.User:type" - }, - { - "kind": "Content", - "text": "[\"host\"] | null;\n\t\t\tlimit?: number;\n\t\t\tsinceId?: " - }, - { - "kind": "Reference", - "text": "Following", - "canonicalReference": "firefish-js!entities.Following:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t\tuntilId?: " - }, - { - "kind": "Reference", - "text": "Following", - "canonicalReference": "firefish-js!entities.Following:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t};\n\t\tres: " - }, - { - "kind": "Reference", - "text": "FollowingFolloweePopulated", - "canonicalReference": "firefish-js!entities.FollowingFolloweePopulated:type" - }, - { - "kind": "Content", - "text": "[];\n\t};\n\t\"users/gallery/posts\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"users/get-frequently-replied-users\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"users/groups/create\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"users/groups/delete\": {\n\t\treq: {\n\t\t\tgroupId: " - }, - { - "kind": "Reference", - "text": "UserGroup", - "canonicalReference": "firefish-js!entities.UserGroup:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t};\n\t\tres: null;\n\t};\n\t\"users/groups/invitations/accept\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"users/groups/invitations/reject\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"users/groups/invite\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"users/groups/joined\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"users/groups/owned\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"users/groups/pull\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"users/groups/show\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"users/groups/transfer\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"users/groups/update\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"users/lists/create\": {\n\t\treq: {\n\t\t\tname: string;\n\t\t};\n\t\tres: " - }, - { - "kind": "Reference", - "text": "UserList", - "canonicalReference": "firefish-js!entities.UserList:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"users/lists/delete\": {\n\t\treq: {\n\t\t\tlistId: " - }, - { - "kind": "Reference", - "text": "UserList", - "canonicalReference": "firefish-js!entities.UserList:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t};\n\t\tres: null;\n\t};\n\t\"users/lists/list\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "NoParams", - "canonicalReference": "firefish-js!~NoParams:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "UserList", - "canonicalReference": "firefish-js!entities.UserList:type" - }, - { - "kind": "Content", - "text": "[];\n\t};\n\t\"users/lists/pull\": {\n\t\treq: {\n\t\t\tlistId: " - }, - { - "kind": "Reference", - "text": "UserList", - "canonicalReference": "firefish-js!entities.UserList:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t\tuserId: " - }, - { - "kind": "Reference", - "text": "User", - "canonicalReference": "firefish-js!entities.User:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t};\n\t\tres: null;\n\t};\n\t\"users/lists/push\": {\n\t\treq: {\n\t\t\tlistId: " - }, - { - "kind": "Reference", - "text": "UserList", - "canonicalReference": "firefish-js!entities.UserList:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t\tuserId: " - }, - { - "kind": "Reference", - "text": "User", - "canonicalReference": "firefish-js!entities.User:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t};\n\t\tres: null;\n\t};\n\t\"users/lists/show\": {\n\t\treq: {\n\t\t\tlistId: " - }, - { - "kind": "Reference", - "text": "UserList", - "canonicalReference": "firefish-js!entities.UserList:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t};\n\t\tres: " - }, - { - "kind": "Reference", - "text": "UserList", - "canonicalReference": "firefish-js!entities.UserList:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"users/lists/update\": {\n\t\treq: {\n\t\t\tlistId: " - }, - { - "kind": "Reference", - "text": "UserList", - "canonicalReference": "firefish-js!entities.UserList:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t\tname: string;\n\t\t};\n\t\tres: " - }, - { - "kind": "Reference", - "text": "UserList", - "canonicalReference": "firefish-js!entities.UserList:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"users/notes\": {\n\t\treq: {\n\t\t\tuserId: " - }, - { - "kind": "Reference", - "text": "User", - "canonicalReference": "firefish-js!entities.User:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t\tlimit?: number;\n\t\t\tsinceId?: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t\tuntilId?: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t\tsinceDate?: number;\n\t\t\tuntilDate?: number;\n\t\t};\n\t\tres: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": "[];\n\t};\n\t\"users/pages\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"users/recommendation\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"users/relation\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"users/report-abuse\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"users/search-by-username-and-host\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"users/search\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n\t\"users/show\": {\n\t\treq:\n\t\t\t| " - }, - { - "kind": "Reference", - "text": "ShowUserReq", - "canonicalReference": "firefish-js!~ShowUserReq:type" - }, - { - "kind": "Content", - "text": "\n\t\t\t| {\n\t\t\t\t\tuserIds: " - }, - { - "kind": "Reference", - "text": "User", - "canonicalReference": "firefish-js!entities.User:type" - }, - { - "kind": "Content", - "text": "[\"id\"][];\n\t\t\t };\n\t\tres: {\n\t\t\t$switch: {\n\t\t\t\t$cases: [\n\t\t\t\t\t[\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tuserIds: " - }, - { - "kind": "Reference", - "text": "User", - "canonicalReference": "firefish-js!entities.User:type" - }, - { - "kind": "Content", - "text": "[\"id\"][];\n\t\t\t\t\t\t},\n\t\t\t\t\t\t" - }, - { - "kind": "Reference", - "text": "UserDetailed", - "canonicalReference": "firefish-js!entities.UserDetailed:type" - }, - { - "kind": "Content", - "text": "[],\n\t\t\t\t\t],\n\t\t\t\t];\n\t\t\t\t$default: " - }, - { - "kind": "Reference", - "text": "UserDetailed", - "canonicalReference": "firefish-js!entities.UserDetailed:type" - }, - { - "kind": "Content", - "text": ";\n\t\t\t};\n\t\t};\n\t};\n\t\"users/stats\": {\n\t\treq: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t\tres: " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO:type" - }, - { - "kind": "Content", - "text": ";\n\t};\n}" - }, - { - "kind": "Content", - "text": ";" - } - ], - "fileUrlPath": "src/api.types.ts", - "releaseTag": "Public", - "name": "Endpoints", - "typeTokenRange": { - "startIndex": 1, - "endIndex": 1158 - } - }, - { - "kind": "Namespace", - "canonicalReference": "firefish-js!entities:namespace", - "docComment": "", - "excerptTokens": [], - "fileUrlPath": "src/index.ts", - "releaseTag": "None", - "name": "entities", - "preserveMemberOrder": false, - "members": [ - { - "kind": "TypeAlias", - "canonicalReference": "firefish-js!entities.Ad:type", - "docComment": "", - "excerptTokens": [ - { - "kind": "Content", - "text": "export declare type Ad = " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO_2:type" - }, - { - "kind": "Content", - "text": ";" - } - ], - "fileUrlPath": "src/entities.ts", - "releaseTag": "Public", - "name": "Ad", - "typeTokenRange": { - "startIndex": 1, - "endIndex": 2 - } - }, - { - "kind": "TypeAlias", - "canonicalReference": "firefish-js!entities.Announcement:type", - "docComment": "", - "excerptTokens": [ - { - "kind": "Content", - "text": "export declare type Announcement = " - }, - { - "kind": "Content", - "text": "{\n\tid: " - }, - { - "kind": "Reference", - "text": "ID", - "canonicalReference": "firefish-js!entities.ID:type" - }, - { - "kind": "Content", - "text": ";\n\tcreatedAt: " - }, - { - "kind": "Reference", - "text": "DateString", - "canonicalReference": "firefish-js!entities.DateString:type" - }, - { - "kind": "Content", - "text": ";\n\tupdatedAt: " - }, - { - "kind": "Reference", - "text": "DateString", - "canonicalReference": "firefish-js!entities.DateString:type" - }, - { - "kind": "Content", - "text": " | null;\n\ttext: string;\n\ttitle: string;\n\timageUrl: string | null;\n\tisRead?: boolean;\n}" - }, - { - "kind": "Content", - "text": ";" - } - ], - "fileUrlPath": "src/entities.ts", - "releaseTag": "Public", - "name": "Announcement", - "typeTokenRange": { - "startIndex": 1, - "endIndex": 8 - } - }, - { - "kind": "TypeAlias", - "canonicalReference": "firefish-js!entities.Antenna:type", - "docComment": "", - "excerptTokens": [ - { - "kind": "Content", - "text": "export declare type Antenna = " - }, - { - "kind": "Content", - "text": "{\n\tid: " - }, - { - "kind": "Reference", - "text": "ID", - "canonicalReference": "firefish-js!entities.ID:type" - }, - { - "kind": "Content", - "text": ";\n\tcreatedAt: " - }, - { - "kind": "Reference", - "text": "DateString", - "canonicalReference": "firefish-js!entities.DateString:type" - }, - { - "kind": "Content", - "text": ";\n\tname: string;\n\tkeywords: string[][];\n\texcludeKeywords: string[][];\n\tsrc: \"home\" | \"all\" | \"users\" | \"list\" | \"group\" | \"instances\";\n\tuserListId: " - }, - { - "kind": "Reference", - "text": "ID", - "canonicalReference": "firefish-js!entities.ID:type" - }, - { - "kind": "Content", - "text": " | null;\n\tuserGroupId: " - }, - { - "kind": "Reference", - "text": "ID", - "canonicalReference": "firefish-js!entities.ID:type" - }, - { - "kind": "Content", - "text": " | null;\n\tusers: string[];\n\tinstances: string[];\n\tcaseSensitive: boolean;\n\tnotify: boolean;\n\twithReplies: boolean;\n\twithFile: boolean;\n\thasUnreadNote: boolean;\n}" - }, - { - "kind": "Content", - "text": ";" - } - ], - "fileUrlPath": "src/entities.ts", - "releaseTag": "Public", - "name": "Antenna", - "typeTokenRange": { - "startIndex": 1, - "endIndex": 10 - } - }, - { - "kind": "TypeAlias", - "canonicalReference": "firefish-js!entities.App:type", - "docComment": "", - "excerptTokens": [ - { - "kind": "Content", - "text": "export declare type App = " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO_2:type" - }, - { - "kind": "Content", - "text": ";" - } - ], - "fileUrlPath": "src/entities.ts", - "releaseTag": "Public", - "name": "App", - "typeTokenRange": { - "startIndex": 1, - "endIndex": 2 - } - }, - { - "kind": "TypeAlias", - "canonicalReference": "firefish-js!entities.AuthSession:type", - "docComment": "", - "excerptTokens": [ - { - "kind": "Content", - "text": "export declare type AuthSession = " - }, - { - "kind": "Content", - "text": "{\n\tid: " - }, - { - "kind": "Reference", - "text": "ID", - "canonicalReference": "firefish-js!entities.ID:type" - }, - { - "kind": "Content", - "text": ";\n\tapp: " - }, - { - "kind": "Reference", - "text": "App", - "canonicalReference": "firefish-js!entities.App:type" - }, - { - "kind": "Content", - "text": ";\n\ttoken: string;\n}" - }, - { - "kind": "Content", - "text": ";" - } - ], - "fileUrlPath": "src/entities.ts", - "releaseTag": "Public", - "name": "AuthSession", - "typeTokenRange": { - "startIndex": 1, - "endIndex": 6 - } - }, - { - "kind": "TypeAlias", - "canonicalReference": "firefish-js!entities.Blocking:type", - "docComment": "", - "excerptTokens": [ - { - "kind": "Content", - "text": "export declare type Blocking = " - }, - { - "kind": "Content", - "text": "{\n\tid: " - }, - { - "kind": "Reference", - "text": "ID", - "canonicalReference": "firefish-js!entities.ID:type" - }, - { - "kind": "Content", - "text": ";\n\tcreatedAt: " - }, - { - "kind": "Reference", - "text": "DateString", - "canonicalReference": "firefish-js!entities.DateString:type" - }, - { - "kind": "Content", - "text": ";\n\tblockeeId: " - }, - { - "kind": "Reference", - "text": "User", - "canonicalReference": "firefish-js!entities.User:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\tblockee: " - }, - { - "kind": "Reference", - "text": "UserDetailed", - "canonicalReference": "firefish-js!entities.UserDetailed:type" - }, - { - "kind": "Content", - "text": ";\n}" - }, - { - "kind": "Content", - "text": ";" - } - ], - "fileUrlPath": "src/entities.ts", - "releaseTag": "Public", - "name": "Blocking", - "typeTokenRange": { - "startIndex": 1, - "endIndex": 10 - } - }, - { - "kind": "TypeAlias", - "canonicalReference": "firefish-js!entities.Channel:type", - "docComment": "", - "excerptTokens": [ - { - "kind": "Content", - "text": "export declare type Channel = " - }, - { - "kind": "Content", - "text": "{\n\tid: " - }, - { - "kind": "Reference", - "text": "ID", - "canonicalReference": "firefish-js!entities.ID:type" - }, - { - "kind": "Content", - "text": ";\n}" - }, - { - "kind": "Content", - "text": ";" - } - ], - "fileUrlPath": "src/entities.ts", - "releaseTag": "Public", - "name": "Channel", - "typeTokenRange": { - "startIndex": 1, - "endIndex": 4 - } - }, - { - "kind": "TypeAlias", - "canonicalReference": "firefish-js!entities.Clip:type", - "docComment": "", - "excerptTokens": [ - { - "kind": "Content", - "text": "export declare type Clip = " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO_2:type" - }, - { - "kind": "Content", - "text": ";" - } - ], - "fileUrlPath": "src/entities.ts", - "releaseTag": "Public", - "name": "Clip", - "typeTokenRange": { - "startIndex": 1, - "endIndex": 2 - } - }, - { - "kind": "TypeAlias", - "canonicalReference": "firefish-js!entities.CustomEmoji:type", - "docComment": "", - "excerptTokens": [ - { - "kind": "Content", - "text": "export declare type CustomEmoji = " - }, - { - "kind": "Content", - "text": "{\n\tid: string;\n\tname: string;\n\turl: string;\n\tcategory: string;\n\taliases: string[];\n}" - }, - { - "kind": "Content", - "text": ";" - } - ], - "fileUrlPath": "src/entities.ts", - "releaseTag": "Public", - "name": "CustomEmoji", - "typeTokenRange": { - "startIndex": 1, - "endIndex": 2 - } - }, - { - "kind": "TypeAlias", - "canonicalReference": "firefish-js!entities.DateString:type", - "docComment": "", - "excerptTokens": [ - { - "kind": "Content", - "text": "export declare type DateString = " - }, - { - "kind": "Content", - "text": "string" - }, - { - "kind": "Content", - "text": ";" - } - ], - "fileUrlPath": "src/entities.ts", - "releaseTag": "Public", - "name": "DateString", - "typeTokenRange": { - "startIndex": 1, - "endIndex": 2 - } - }, - { - "kind": "TypeAlias", - "canonicalReference": "firefish-js!entities.DetailedInstanceMetadata:type", - "docComment": "", - "excerptTokens": [ - { - "kind": "Content", - "text": "export declare type DetailedInstanceMetadata = " - }, - { - "kind": "Reference", - "text": "LiteInstanceMetadata", - "canonicalReference": "firefish-js!entities.LiteInstanceMetadata:type" - }, - { - "kind": "Content", - "text": " & {\n\tfeatures: " - }, - { - "kind": "Reference", - "text": "Record", - "canonicalReference": "!Record:type" - }, - { - "kind": "Content", - "text": "<string, any>;\n}" - }, - { - "kind": "Content", - "text": ";" - } - ], - "fileUrlPath": "src/entities.ts", - "releaseTag": "Public", - "name": "DetailedInstanceMetadata", - "typeTokenRange": { - "startIndex": 1, - "endIndex": 5 - } - }, - { - "kind": "TypeAlias", - "canonicalReference": "firefish-js!entities.DriveFile:type", - "docComment": "", - "excerptTokens": [ - { - "kind": "Content", - "text": "export declare type DriveFile = " - }, - { - "kind": "Content", - "text": "{\n\tid: " - }, - { - "kind": "Reference", - "text": "ID", - "canonicalReference": "firefish-js!entities.ID:type" - }, - { - "kind": "Content", - "text": ";\n\tcreatedAt: " - }, - { - "kind": "Reference", - "text": "DateString", - "canonicalReference": "firefish-js!entities.DateString:type" - }, - { - "kind": "Content", - "text": ";\n\tisSensitive: boolean;\n\tname: string;\n\tthumbnailUrl: string;\n\turl: string;\n\ttype: string;\n\tsize: number;\n\tmd5: string;\n\tblurhash: string;\n\tcomment: string | null;\n\tproperties: " - }, - { - "kind": "Reference", - "text": "Record", - "canonicalReference": "!Record:type" - }, - { - "kind": "Content", - "text": "<string, any>;\n}" - }, - { - "kind": "Content", - "text": ";" - } - ], - "fileUrlPath": "src/entities.ts", - "releaseTag": "Public", - "name": "DriveFile", - "typeTokenRange": { - "startIndex": 1, - "endIndex": 8 - } - }, - { - "kind": "TypeAlias", - "canonicalReference": "firefish-js!entities.DriveFolder:type", - "docComment": "", - "excerptTokens": [ - { - "kind": "Content", - "text": "export declare type DriveFolder = " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO_2:type" - }, - { - "kind": "Content", - "text": ";" - } - ], - "fileUrlPath": "src/entities.ts", - "releaseTag": "Public", - "name": "DriveFolder", - "typeTokenRange": { - "startIndex": 1, - "endIndex": 2 - } - }, - { - "kind": "TypeAlias", - "canonicalReference": "firefish-js!entities.Following:type", - "docComment": "", - "excerptTokens": [ - { - "kind": "Content", - "text": "export declare type Following = " - }, - { - "kind": "Content", - "text": "{\n\tid: " - }, - { - "kind": "Reference", - "text": "ID", - "canonicalReference": "firefish-js!entities.ID:type" - }, - { - "kind": "Content", - "text": ";\n\tcreatedAt: " - }, - { - "kind": "Reference", - "text": "DateString", - "canonicalReference": "firefish-js!entities.DateString:type" - }, - { - "kind": "Content", - "text": ";\n\tfollowerId: " - }, - { - "kind": "Reference", - "text": "User", - "canonicalReference": "firefish-js!entities.User:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\tfolloweeId: " - }, - { - "kind": "Reference", - "text": "User", - "canonicalReference": "firefish-js!entities.User:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n}" - }, - { - "kind": "Content", - "text": ";" - } - ], - "fileUrlPath": "src/entities.ts", - "releaseTag": "Public", - "name": "Following", - "typeTokenRange": { - "startIndex": 1, - "endIndex": 10 - } - }, - { - "kind": "TypeAlias", - "canonicalReference": "firefish-js!entities.FollowingFolloweePopulated:type", - "docComment": "", - "excerptTokens": [ - { - "kind": "Content", - "text": "export declare type FollowingFolloweePopulated = " - }, - { - "kind": "Reference", - "text": "Following", - "canonicalReference": "firefish-js!entities.Following:type" - }, - { - "kind": "Content", - "text": " & {\n\tfollowee: " - }, - { - "kind": "Reference", - "text": "UserDetailed", - "canonicalReference": "firefish-js!entities.UserDetailed:type" - }, - { - "kind": "Content", - "text": ";\n}" - }, - { - "kind": "Content", - "text": ";" - } - ], - "fileUrlPath": "src/entities.ts", - "releaseTag": "Public", - "name": "FollowingFolloweePopulated", - "typeTokenRange": { - "startIndex": 1, - "endIndex": 5 - } - }, - { - "kind": "TypeAlias", - "canonicalReference": "firefish-js!entities.FollowingFollowerPopulated:type", - "docComment": "", - "excerptTokens": [ - { - "kind": "Content", - "text": "export declare type FollowingFollowerPopulated = " - }, - { - "kind": "Reference", - "text": "Following", - "canonicalReference": "firefish-js!entities.Following:type" - }, - { - "kind": "Content", - "text": " & {\n\tfollower: " - }, - { - "kind": "Reference", - "text": "UserDetailed", - "canonicalReference": "firefish-js!entities.UserDetailed:type" - }, - { - "kind": "Content", - "text": ";\n}" - }, - { - "kind": "Content", - "text": ";" - } - ], - "fileUrlPath": "src/entities.ts", - "releaseTag": "Public", - "name": "FollowingFollowerPopulated", - "typeTokenRange": { - "startIndex": 1, - "endIndex": 5 - } - }, - { - "kind": "TypeAlias", - "canonicalReference": "firefish-js!entities.FollowRequest:type", - "docComment": "", - "excerptTokens": [ - { - "kind": "Content", - "text": "export declare type FollowRequest = " - }, - { - "kind": "Content", - "text": "{\n\tid: " - }, - { - "kind": "Reference", - "text": "ID", - "canonicalReference": "firefish-js!entities.ID:type" - }, - { - "kind": "Content", - "text": ";\n\tfollower: " - }, - { - "kind": "Reference", - "text": "User", - "canonicalReference": "firefish-js!entities.User:type" - }, - { - "kind": "Content", - "text": ";\n\tfollowee: " - }, - { - "kind": "Reference", - "text": "User", - "canonicalReference": "firefish-js!entities.User:type" - }, - { - "kind": "Content", - "text": ";\n}" - }, - { - "kind": "Content", - "text": ";" - } - ], - "fileUrlPath": "src/entities.ts", - "releaseTag": "Public", - "name": "FollowRequest", - "typeTokenRange": { - "startIndex": 1, - "endIndex": 8 - } - }, - { - "kind": "TypeAlias", - "canonicalReference": "firefish-js!entities.GalleryPost:type", - "docComment": "", - "excerptTokens": [ - { - "kind": "Content", - "text": "export declare type GalleryPost = " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO_2:type" - }, - { - "kind": "Content", - "text": ";" - } - ], - "fileUrlPath": "src/entities.ts", - "releaseTag": "Public", - "name": "GalleryPost", - "typeTokenRange": { - "startIndex": 1, - "endIndex": 2 - } - }, - { - "kind": "TypeAlias", - "canonicalReference": "firefish-js!entities.ID:type", - "docComment": "", - "excerptTokens": [ - { - "kind": "Content", - "text": "export declare type ID = " - }, - { - "kind": "Content", - "text": "string" - }, - { - "kind": "Content", - "text": ";" - } - ], - "fileUrlPath": "src/entities.ts", - "releaseTag": "Public", - "name": "ID", - "typeTokenRange": { - "startIndex": 1, - "endIndex": 2 - } - }, - { - "kind": "TypeAlias", - "canonicalReference": "firefish-js!entities.Instance:type", - "docComment": "", - "excerptTokens": [ - { - "kind": "Content", - "text": "export declare type Instance = " - }, - { - "kind": "Content", - "text": "{\n\tid: " - }, - { - "kind": "Reference", - "text": "ID", - "canonicalReference": "firefish-js!entities.ID:type" - }, - { - "kind": "Content", - "text": ";\n\tcaughtAt: " - }, - { - "kind": "Reference", - "text": "DateString", - "canonicalReference": "firefish-js!entities.DateString:type" - }, - { - "kind": "Content", - "text": ";\n\thost: string;\n\tusersCount: number;\n\tnotesCount: number;\n\tfollowingCount: number;\n\tfollowersCount: number;\n\tdriveUsage: number;\n\tdriveFiles: number;\n\tlatestRequestSentAt: " - }, - { - "kind": "Reference", - "text": "DateString", - "canonicalReference": "firefish-js!entities.DateString:type" - }, - { - "kind": "Content", - "text": " | null;\n\tlatestStatus: number | null;\n\tlatestRequestReceivedAt: " - }, - { - "kind": "Reference", - "text": "DateString", - "canonicalReference": "firefish-js!entities.DateString:type" - }, - { - "kind": "Content", - "text": " | null;\n\tlastCommunicatedAt: " - }, - { - "kind": "Reference", - "text": "DateString", - "canonicalReference": "firefish-js!entities.DateString:type" - }, - { - "kind": "Content", - "text": ";\n\tisNotResponding: boolean;\n\tisSuspended: boolean;\n\tsoftwareName: string | null;\n\tsoftwareVersion: string | null;\n\topenRegistrations: boolean | null;\n\tname: string | null;\n\tdescription: string | null;\n\tmaintainerName: string | null;\n\tmaintainerEmail: string | null;\n\ticonUrl: string | null;\n\tfaviconUrl: string | null;\n\tthemeColor: string | null;\n\tinfoUpdatedAt: " - }, - { - "kind": "Reference", - "text": "DateString", - "canonicalReference": "firefish-js!entities.DateString:type" - }, - { - "kind": "Content", - "text": " | null;\n}" - }, - { - "kind": "Content", - "text": ";" - } - ], - "fileUrlPath": "src/entities.ts", - "releaseTag": "Public", - "name": "Instance", - "typeTokenRange": { - "startIndex": 1, - "endIndex": 14 - } - }, - { - "kind": "TypeAlias", - "canonicalReference": "firefish-js!entities.InstanceMetadata:type", - "docComment": "", - "excerptTokens": [ - { - "kind": "Content", - "text": "export declare type InstanceMetadata =\n\t" - }, - { - "kind": "Content", - "text": "| " - }, - { - "kind": "Reference", - "text": "LiteInstanceMetadata", - "canonicalReference": "firefish-js!entities.LiteInstanceMetadata:type" - }, - { - "kind": "Content", - "text": "\n\t| " - }, - { - "kind": "Reference", - "text": "DetailedInstanceMetadata", - "canonicalReference": "firefish-js!entities.DetailedInstanceMetadata:type" - }, - { - "kind": "Content", - "text": ";" - } - ], - "fileUrlPath": "src/entities.ts", - "releaseTag": "Public", - "name": "InstanceMetadata", - "typeTokenRange": { - "startIndex": 1, - "endIndex": 5 - } - }, - { - "kind": "TypeAlias", - "canonicalReference": "firefish-js!entities.LiteInstanceMetadata:type", - "docComment": "", - "excerptTokens": [ - { - "kind": "Content", - "text": "export declare type LiteInstanceMetadata = " - }, - { - "kind": "Content", - "text": "{\n\tmaintainerName: string | null;\n\tmaintainerEmail: string | null;\n\tversion: string;\n\tname: string | null;\n\turi: string;\n\tdescription: string | null;\n\ttosUrl: string | null;\n\tdisableRegistration: boolean;\n\tdisableLocalTimeline: boolean;\n\tdisableRecommendedTimeline: boolean;\n\tdisableGlobalTimeline: boolean;\n\tdriveCapacityPerLocalUserMb: number;\n\tdriveCapacityPerRemoteUserMb: number;\n\tenableHcaptcha: boolean;\n\thcaptchaSiteKey: string | null;\n\tenableRecaptcha: boolean;\n\trecaptchaSiteKey: string | null;\n\tswPublickey: string | null;\n\tmaxNoteTextLength: number;\n\tenableEmail: boolean;\n\tenableTwitterIntegration: boolean;\n\tenableGithubIntegration: boolean;\n\tenableDiscordIntegration: boolean;\n\tenableServiceWorker: boolean;\n\temojis: " - }, - { - "kind": "Reference", - "text": "CustomEmoji", - "canonicalReference": "firefish-js!entities.CustomEmoji:type" - }, - { - "kind": "Content", - "text": "[];\n\tads: {\n\t\tid: " - }, - { - "kind": "Reference", - "text": "ID", - "canonicalReference": "firefish-js!entities.ID:type" - }, - { - "kind": "Content", - "text": ";\n\t\tratio: number;\n\t\tplace: string;\n\t\turl: string;\n\t\timageUrl: string;\n\t}[];\n}" - }, - { - "kind": "Content", - "text": ";" - } - ], - "fileUrlPath": "src/entities.ts", - "releaseTag": "Public", - "name": "LiteInstanceMetadata", - "typeTokenRange": { - "startIndex": 1, - "endIndex": 6 - } - }, - { - "kind": "TypeAlias", - "canonicalReference": "firefish-js!entities.MeDetailed:type", - "docComment": "", - "excerptTokens": [ - { - "kind": "Content", - "text": "export declare type MeDetailed = " - }, - { - "kind": "Reference", - "text": "UserDetailed", - "canonicalReference": "firefish-js!entities.UserDetailed:type" - }, - { - "kind": "Content", - "text": " & {\n\tavatarId: " - }, - { - "kind": "Reference", - "text": "DriveFile", - "canonicalReference": "firefish-js!entities.DriveFile:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\tbannerId: " - }, - { - "kind": "Reference", - "text": "DriveFile", - "canonicalReference": "firefish-js!entities.DriveFile:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\tautoAcceptFollowed: boolean;\n\talwaysMarkNsfw: boolean;\n\tcarefulBot: boolean;\n\temailNotificationTypes: string[];\n\thasPendingReceivedFollowRequest: boolean;\n\thasUnreadAnnouncement: boolean;\n\thasUnreadAntenna: boolean;\n\thasUnreadChannel: boolean;\n\thasUnreadMentions: boolean;\n\thasUnreadMessagingMessage: boolean;\n\thasUnreadNotification: boolean;\n\thasUnreadSpecifiedNotes: boolean;\n\thideOnlineStatus: boolean;\n\tinjectFeaturedNote: boolean;\n\tintegrations: " - }, - { - "kind": "Reference", - "text": "Record", - "canonicalReference": "!Record:type" - }, - { - "kind": "Content", - "text": "<string, any>;\n\tisDeleted: boolean;\n\tisExplorable: boolean;\n\tmutedWords: string[][];\n\tmutingNotificationTypes: string[];\n\tnoCrawle: boolean;\n\tpreventAiLearning: boolean;\n\treceiveAnnouncementEmail: boolean;\n\tusePasswordLessLogin: boolean;\n\t[other: string]: any;\n}" - }, - { - "kind": "Content", - "text": ";" - } - ], - "fileUrlPath": "src/entities.ts", - "releaseTag": "Public", - "name": "MeDetailed", - "typeTokenRange": { - "startIndex": 1, - "endIndex": 9 - } - }, - { - "kind": "TypeAlias", - "canonicalReference": "firefish-js!entities.MessagingMessage:type", - "docComment": "", - "excerptTokens": [ - { - "kind": "Content", - "text": "export declare type MessagingMessage = " - }, - { - "kind": "Content", - "text": "{\n\tid: " - }, - { - "kind": "Reference", - "text": "ID", - "canonicalReference": "firefish-js!entities.ID:type" - }, - { - "kind": "Content", - "text": ";\n\tcreatedAt: " - }, - { - "kind": "Reference", - "text": "DateString", - "canonicalReference": "firefish-js!entities.DateString:type" - }, - { - "kind": "Content", - "text": ";\n\tfile: " - }, - { - "kind": "Reference", - "text": "DriveFile", - "canonicalReference": "firefish-js!entities.DriveFile:type" - }, - { - "kind": "Content", - "text": " | null;\n\tfileId: " - }, - { - "kind": "Reference", - "text": "DriveFile", - "canonicalReference": "firefish-js!entities.DriveFile:type" - }, - { - "kind": "Content", - "text": "[\"id\"] | null;\n\tisRead: boolean;\n\treads: " - }, - { - "kind": "Reference", - "text": "User", - "canonicalReference": "firefish-js!entities.User:type" - }, - { - "kind": "Content", - "text": "[\"id\"][];\n\ttext: string | null;\n\tuser: " - }, - { - "kind": "Reference", - "text": "User", - "canonicalReference": "firefish-js!entities.User:type" - }, - { - "kind": "Content", - "text": ";\n\tuserId: " - }, - { - "kind": "Reference", - "text": "User", - "canonicalReference": "firefish-js!entities.User:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\trecipient?: " - }, - { - "kind": "Reference", - "text": "User", - "canonicalReference": "firefish-js!entities.User:type" - }, - { - "kind": "Content", - "text": " | null;\n\trecipientId: " - }, - { - "kind": "Reference", - "text": "User", - "canonicalReference": "firefish-js!entities.User:type" - }, - { - "kind": "Content", - "text": "[\"id\"] | null;\n\tgroup?: " - }, - { - "kind": "Reference", - "text": "UserGroup", - "canonicalReference": "firefish-js!entities.UserGroup:type" - }, - { - "kind": "Content", - "text": " | null;\n\tgroupId: " - }, - { - "kind": "Reference", - "text": "UserGroup", - "canonicalReference": "firefish-js!entities.UserGroup:type" - }, - { - "kind": "Content", - "text": "[\"id\"] | null;\n}" - }, - { - "kind": "Content", - "text": ";" - } - ], - "fileUrlPath": "src/entities.ts", - "releaseTag": "Public", - "name": "MessagingMessage", - "typeTokenRange": { - "startIndex": 1, - "endIndex": 24 - } - }, - { - "kind": "TypeAlias", - "canonicalReference": "firefish-js!entities.Note:type", - "docComment": "", - "excerptTokens": [ - { - "kind": "Content", - "text": "export declare type Note = " - }, - { - "kind": "Content", - "text": "{\n\tid: " - }, - { - "kind": "Reference", - "text": "ID", - "canonicalReference": "firefish-js!entities.ID:type" - }, - { - "kind": "Content", - "text": ";\n\tcreatedAt: " - }, - { - "kind": "Reference", - "text": "DateString", - "canonicalReference": "firefish-js!entities.DateString:type" - }, - { - "kind": "Content", - "text": ";\n\ttext: string | null;\n\tcw: string | null;\n\tuser: " - }, - { - "kind": "Reference", - "text": "User", - "canonicalReference": "firefish-js!entities.User:type" - }, - { - "kind": "Content", - "text": ";\n\tuserId: " - }, - { - "kind": "Reference", - "text": "User", - "canonicalReference": "firefish-js!entities.User:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\treply?: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": ";\n\treplyId: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\trenote?: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": ";\n\trenoteId: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\tfiles: " - }, - { - "kind": "Reference", - "text": "DriveFile", - "canonicalReference": "firefish-js!entities.DriveFile:type" - }, - { - "kind": "Content", - "text": "[];\n\tfileIds: " - }, - { - "kind": "Reference", - "text": "DriveFile", - "canonicalReference": "firefish-js!entities.DriveFile:type" - }, - { - "kind": "Content", - "text": "[\"id\"][];\n\tvisibility: \"public\" | \"home\" | \"followers\" | \"specified\";\n\tvisibleUserIds?: " - }, - { - "kind": "Reference", - "text": "User", - "canonicalReference": "firefish-js!entities.User:type" - }, - { - "kind": "Content", - "text": "[\"id\"][];\n\tlocalOnly?: boolean;\n\tchannel?: " - }, - { - "kind": "Reference", - "text": "Channel", - "canonicalReference": "firefish-js!entities.Channel:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\tmyReaction?: string;\n\treactions: " - }, - { - "kind": "Reference", - "text": "Record", - "canonicalReference": "!Record:type" - }, - { - "kind": "Content", - "text": "<string, number>;\n\trenoteCount: number;\n\trepliesCount: number;\n\tpoll?: {\n\t\texpiresAt: " - }, - { - "kind": "Reference", - "text": "DateString", - "canonicalReference": "firefish-js!entities.DateString:type" - }, - { - "kind": "Content", - "text": " | null;\n\t\tmultiple: boolean;\n\t\tchoices: {\n\t\t\tisVoted: boolean;\n\t\t\ttext: string;\n\t\t\tvotes: number;\n\t\t}[];\n\t};\n\temojis: {\n\t\tname: string;\n\t\turl: string;\n\t}[];\n\turi?: string;\n\turl?: string;\n\tupdatedAt?: " - }, - { - "kind": "Reference", - "text": "DateString", - "canonicalReference": "firefish-js!entities.DateString:type" - }, - { - "kind": "Content", - "text": ";\n\tisHidden?: boolean;\n}" - }, - { - "kind": "Content", - "text": ";" - } - ], - "fileUrlPath": "src/entities.ts", - "releaseTag": "Public", - "name": "Note", - "typeTokenRange": { - "startIndex": 1, - "endIndex": 32 - } - }, - { - "kind": "TypeAlias", - "canonicalReference": "firefish-js!entities.NoteFavorite:type", - "docComment": "", - "excerptTokens": [ - { - "kind": "Content", - "text": "export declare type NoteFavorite = " - }, - { - "kind": "Content", - "text": "{\n\tid: " - }, - { - "kind": "Reference", - "text": "ID", - "canonicalReference": "firefish-js!entities.ID:type" - }, - { - "kind": "Content", - "text": ";\n\tcreatedAt: " - }, - { - "kind": "Reference", - "text": "DateString", - "canonicalReference": "firefish-js!entities.DateString:type" - }, - { - "kind": "Content", - "text": ";\n\tnoteId: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\tnote: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": ";\n}" - }, - { - "kind": "Content", - "text": ";" - } - ], - "fileUrlPath": "src/entities.ts", - "releaseTag": "Public", - "name": "NoteFavorite", - "typeTokenRange": { - "startIndex": 1, - "endIndex": 10 - } - }, - { - "kind": "TypeAlias", - "canonicalReference": "firefish-js!entities.NoteReaction:type", - "docComment": "", - "excerptTokens": [ - { - "kind": "Content", - "text": "export declare type NoteReaction = " - }, - { - "kind": "Content", - "text": "{\n\tid: " - }, - { - "kind": "Reference", - "text": "ID", - "canonicalReference": "firefish-js!entities.ID:type" - }, - { - "kind": "Content", - "text": ";\n\tcreatedAt: " - }, - { - "kind": "Reference", - "text": "DateString", - "canonicalReference": "firefish-js!entities.DateString:type" - }, - { - "kind": "Content", - "text": ";\n\tuser: " - }, - { - "kind": "Reference", - "text": "UserLite", - "canonicalReference": "firefish-js!entities.UserLite:type" - }, - { - "kind": "Content", - "text": ";\n\ttype: string;\n}" - }, - { - "kind": "Content", - "text": ";" - } - ], - "fileUrlPath": "src/entities.ts", - "releaseTag": "Public", - "name": "NoteReaction", - "typeTokenRange": { - "startIndex": 1, - "endIndex": 8 - } - }, - { - "kind": "TypeAlias", - "canonicalReference": "firefish-js!entities.Notification:type", - "docComment": "", - "excerptTokens": [ - { - "kind": "Content", - "text": "export declare type Notification = " - }, - { - "kind": "Content", - "text": "{\n\tid: " - }, - { - "kind": "Reference", - "text": "ID", - "canonicalReference": "firefish-js!entities.ID:type" - }, - { - "kind": "Content", - "text": ";\n\tcreatedAt: " - }, - { - "kind": "Reference", - "text": "DateString", - "canonicalReference": "firefish-js!entities.DateString:type" - }, - { - "kind": "Content", - "text": ";\n\tisRead: boolean;\n} & (\n\t| {\n\t\t\ttype: \"reaction\";\n\t\t\treaction: string;\n\t\t\tuser: " - }, - { - "kind": "Reference", - "text": "User", - "canonicalReference": "firefish-js!entities.User:type" - }, - { - "kind": "Content", - "text": ";\n\t\t\tuserId: " - }, - { - "kind": "Reference", - "text": "User", - "canonicalReference": "firefish-js!entities.User:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t\tnote: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": ";\n\t }\n\t| {\n\t\t\ttype: \"reply\";\n\t\t\tuser: " - }, - { - "kind": "Reference", - "text": "User", - "canonicalReference": "firefish-js!entities.User:type" - }, - { - "kind": "Content", - "text": ";\n\t\t\tuserId: " - }, - { - "kind": "Reference", - "text": "User", - "canonicalReference": "firefish-js!entities.User:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t\tnote: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": ";\n\t }\n\t| {\n\t\t\ttype: \"renote\";\n\t\t\tuser: " - }, - { - "kind": "Reference", - "text": "User", - "canonicalReference": "firefish-js!entities.User:type" - }, - { - "kind": "Content", - "text": ";\n\t\t\tuserId: " - }, - { - "kind": "Reference", - "text": "User", - "canonicalReference": "firefish-js!entities.User:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t\tnote: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": ";\n\t }\n\t| {\n\t\t\ttype: \"quote\";\n\t\t\tuser: " - }, - { - "kind": "Reference", - "text": "User", - "canonicalReference": "firefish-js!entities.User:type" - }, - { - "kind": "Content", - "text": ";\n\t\t\tuserId: " - }, - { - "kind": "Reference", - "text": "User", - "canonicalReference": "firefish-js!entities.User:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t\tnote: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": ";\n\t }\n\t| {\n\t\t\ttype: \"mention\";\n\t\t\tuser: " - }, - { - "kind": "Reference", - "text": "User", - "canonicalReference": "firefish-js!entities.User:type" - }, - { - "kind": "Content", - "text": ";\n\t\t\tuserId: " - }, - { - "kind": "Reference", - "text": "User", - "canonicalReference": "firefish-js!entities.User:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t\tnote: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": ";\n\t }\n\t| {\n\t\t\ttype: \"pollVote\";\n\t\t\tuser: " - }, - { - "kind": "Reference", - "text": "User", - "canonicalReference": "firefish-js!entities.User:type" - }, - { - "kind": "Content", - "text": ";\n\t\t\tuserId: " - }, - { - "kind": "Reference", - "text": "User", - "canonicalReference": "firefish-js!entities.User:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t\t\tnote: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": ";\n\t }\n\t| {\n\t\t\ttype: \"follow\";\n\t\t\tuser: " - }, - { - "kind": "Reference", - "text": "User", - "canonicalReference": "firefish-js!entities.User:type" - }, - { - "kind": "Content", - "text": ";\n\t\t\tuserId: " - }, - { - "kind": "Reference", - "text": "User", - "canonicalReference": "firefish-js!entities.User:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t }\n\t| {\n\t\t\ttype: \"followRequestAccepted\";\n\t\t\tuser: " - }, - { - "kind": "Reference", - "text": "User", - "canonicalReference": "firefish-js!entities.User:type" - }, - { - "kind": "Content", - "text": ";\n\t\t\tuserId: " - }, - { - "kind": "Reference", - "text": "User", - "canonicalReference": "firefish-js!entities.User:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t }\n\t| {\n\t\t\ttype: \"receiveFollowRequest\";\n\t\t\tuser: " - }, - { - "kind": "Reference", - "text": "User", - "canonicalReference": "firefish-js!entities.User:type" - }, - { - "kind": "Content", - "text": ";\n\t\t\tuserId: " - }, - { - "kind": "Reference", - "text": "User", - "canonicalReference": "firefish-js!entities.User:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t }\n\t| {\n\t\t\ttype: \"groupInvited\";\n\t\t\tinvitation: " - }, - { - "kind": "Reference", - "text": "UserGroup", - "canonicalReference": "firefish-js!entities.UserGroup:type" - }, - { - "kind": "Content", - "text": ";\n\t\t\tuser: " - }, - { - "kind": "Reference", - "text": "User", - "canonicalReference": "firefish-js!entities.User:type" - }, - { - "kind": "Content", - "text": ";\n\t\t\tuserId: " - }, - { - "kind": "Reference", - "text": "User", - "canonicalReference": "firefish-js!entities.User:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\t }\n\t| {\n\t\t\ttype: \"app\";\n\t\t\theader?: string | null;\n\t\t\tbody: string;\n\t\t\ticon?: string | null;\n\t }\n)" - }, - { - "kind": "Content", - "text": ";" - } - ], - "fileUrlPath": "src/entities.ts", - "releaseTag": "Public", - "name": "Notification", - "typeTokenRange": { - "startIndex": 1, - "endIndex": 60 - } - }, - { - "kind": "TypeAlias", - "canonicalReference": "firefish-js!entities.OriginType:type", - "docComment": "", - "excerptTokens": [ - { - "kind": "Content", - "text": "export declare type OriginType = " - }, - { - "kind": "Content", - "text": "\"combined\" | \"local\" | \"remote\"" - }, - { - "kind": "Content", - "text": ";" - } - ], - "fileUrlPath": "src/entities.ts", - "releaseTag": "Public", - "name": "OriginType", - "typeTokenRange": { - "startIndex": 1, - "endIndex": 2 - } - }, - { - "kind": "TypeAlias", - "canonicalReference": "firefish-js!entities.Page:type", - "docComment": "", - "excerptTokens": [ - { - "kind": "Content", - "text": "export declare type Page = " - }, - { - "kind": "Content", - "text": "{\n\tid: " - }, - { - "kind": "Reference", - "text": "ID", - "canonicalReference": "firefish-js!entities.ID:type" - }, - { - "kind": "Content", - "text": ";\n\tcreatedAt: " - }, - { - "kind": "Reference", - "text": "DateString", - "canonicalReference": "firefish-js!entities.DateString:type" - }, - { - "kind": "Content", - "text": ";\n\tupdatedAt: " - }, - { - "kind": "Reference", - "text": "DateString", - "canonicalReference": "firefish-js!entities.DateString:type" - }, - { - "kind": "Content", - "text": ";\n\tuserId: " - }, - { - "kind": "Reference", - "text": "User", - "canonicalReference": "firefish-js!entities.User:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\tuser: " - }, - { - "kind": "Reference", - "text": "User", - "canonicalReference": "firefish-js!entities.User:type" - }, - { - "kind": "Content", - "text": ";\n\tcontent: " - }, - { - "kind": "Reference", - "text": "Record", - "canonicalReference": "!Record:type" - }, - { - "kind": "Content", - "text": "<string, any>[];\n\tvariables: " - }, - { - "kind": "Reference", - "text": "Record", - "canonicalReference": "!Record:type" - }, - { - "kind": "Content", - "text": "<string, any>[];\n\ttitle: string;\n\tname: string;\n\tsummary: string | null;\n\thideTitleWhenPinned: boolean;\n\talignCenter: boolean;\n\tfont: string;\n\tscript: string;\n\teyeCatchingImageId: " - }, - { - "kind": "Reference", - "text": "DriveFile", - "canonicalReference": "firefish-js!entities.DriveFile:type" - }, - { - "kind": "Content", - "text": "[\"id\"] | null;\n\teyeCatchingImage: " - }, - { - "kind": "Reference", - "text": "DriveFile", - "canonicalReference": "firefish-js!entities.DriveFile:type" - }, - { - "kind": "Content", - "text": " | null;\n\tattachedFiles: any;\n\tlikedCount: number;\n\tisLiked?: boolean;\n}" - }, - { - "kind": "Content", - "text": ";" - } - ], - "fileUrlPath": "src/entities.ts", - "releaseTag": "Public", - "name": "Page", - "typeTokenRange": { - "startIndex": 1, - "endIndex": 20 - } - }, - { - "kind": "TypeAlias", - "canonicalReference": "firefish-js!entities.PageEvent:type", - "docComment": "", - "excerptTokens": [ - { - "kind": "Content", - "text": "export declare type PageEvent = " - }, - { - "kind": "Content", - "text": "{\n\tpageId: " - }, - { - "kind": "Reference", - "text": "Page", - "canonicalReference": "firefish-js!entities.Page:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\tevent: string;\n\tvar: any;\n\tuserId: " - }, - { - "kind": "Reference", - "text": "User", - "canonicalReference": "firefish-js!entities.User:type" - }, - { - "kind": "Content", - "text": "[\"id\"];\n\tuser: " - }, - { - "kind": "Reference", - "text": "User", - "canonicalReference": "firefish-js!entities.User:type" - }, - { - "kind": "Content", - "text": ";\n}" - }, - { - "kind": "Content", - "text": ";" - } - ], - "fileUrlPath": "src/entities.ts", - "releaseTag": "Public", - "name": "PageEvent", - "typeTokenRange": { - "startIndex": 1, - "endIndex": 8 - } - }, - { - "kind": "TypeAlias", - "canonicalReference": "firefish-js!entities.ServerInfo:type", - "docComment": "", - "excerptTokens": [ - { - "kind": "Content", - "text": "export declare type ServerInfo = " - }, - { - "kind": "Content", - "text": "{\n\tmachine: string;\n\tcpu: {\n\t\tmodel: string;\n\t\tcores: number;\n\t};\n\tmem: {\n\t\ttotal: number;\n\t};\n\tfs: {\n\t\ttotal: number;\n\t\tused: number;\n\t};\n}" - }, - { - "kind": "Content", - "text": ";" - } - ], - "fileUrlPath": "src/entities.ts", - "releaseTag": "Public", - "name": "ServerInfo", - "typeTokenRange": { - "startIndex": 1, - "endIndex": 2 - } - }, - { - "kind": "TypeAlias", - "canonicalReference": "firefish-js!entities.Signin:type", - "docComment": "", - "excerptTokens": [ - { - "kind": "Content", - "text": "export declare type Signin = " - }, - { - "kind": "Content", - "text": "{\n\tid: " - }, - { - "kind": "Reference", - "text": "ID", - "canonicalReference": "firefish-js!entities.ID:type" - }, - { - "kind": "Content", - "text": ";\n\tcreatedAt: " - }, - { - "kind": "Reference", - "text": "DateString", - "canonicalReference": "firefish-js!entities.DateString:type" - }, - { - "kind": "Content", - "text": ";\n\tip: string;\n\theaders: " - }, - { - "kind": "Reference", - "text": "Record", - "canonicalReference": "!Record:type" - }, - { - "kind": "Content", - "text": "<string, any>;\n\tsuccess: boolean;\n}" - }, - { - "kind": "Content", - "text": ";" - } - ], - "fileUrlPath": "src/entities.ts", - "releaseTag": "Public", - "name": "Signin", - "typeTokenRange": { - "startIndex": 1, - "endIndex": 8 - } - }, - { - "kind": "TypeAlias", - "canonicalReference": "firefish-js!entities.Stats:type", - "docComment": "", - "excerptTokens": [ - { - "kind": "Content", - "text": "export declare type Stats = " - }, - { - "kind": "Content", - "text": "{\n\tnotesCount: number;\n\toriginalNotesCount: number;\n\tusersCount: number;\n\toriginalUsersCount: number;\n\tinstances: number;\n\tdriveUsageLocal: number;\n\tdriveUsageRemote: number;\n}" - }, - { - "kind": "Content", - "text": ";" - } - ], - "fileUrlPath": "src/entities.ts", - "releaseTag": "Public", - "name": "Stats", - "typeTokenRange": { - "startIndex": 1, - "endIndex": 2 - } - }, - { - "kind": "TypeAlias", - "canonicalReference": "firefish-js!entities.User:type", - "docComment": "", - "excerptTokens": [ - { - "kind": "Content", - "text": "export declare type User = " - }, - { - "kind": "Reference", - "text": "UserLite", - "canonicalReference": "firefish-js!entities.UserLite:type" - }, - { - "kind": "Content", - "text": " | " - }, - { - "kind": "Reference", - "text": "UserDetailed", - "canonicalReference": "firefish-js!entities.UserDetailed:type" - }, - { - "kind": "Content", - "text": ";" - } - ], - "fileUrlPath": "src/entities.ts", - "releaseTag": "Public", - "name": "User", - "typeTokenRange": { - "startIndex": 1, - "endIndex": 4 - } - }, - { - "kind": "TypeAlias", - "canonicalReference": "firefish-js!entities.UserDetailed:type", - "docComment": "", - "excerptTokens": [ - { - "kind": "Content", - "text": "export declare type UserDetailed = " - }, - { - "kind": "Reference", - "text": "UserLite", - "canonicalReference": "firefish-js!entities.UserLite:type" - }, - { - "kind": "Content", - "text": " & {\n\tbannerBlurhash: string | null;\n\tbannerColor: string | null;\n\tbannerUrl: string | null;\n\tbirthday: string | null;\n\tcreatedAt: " - }, - { - "kind": "Reference", - "text": "DateString", - "canonicalReference": "firefish-js!entities.DateString:type" - }, - { - "kind": "Content", - "text": ";\n\tdescription: string | null;\n\tffVisibility: \"public\" | \"followers\" | \"private\";\n\tfields: {\n\t\tname: string;\n\t\tvalue: string;\n\t}[];\n\tfollowersCount: number;\n\tfollowingCount: number;\n\thasPendingFollowRequestFromYou: boolean;\n\thasPendingFollowRequestToYou: boolean;\n\tisAdmin: boolean;\n\tisBlocked: boolean;\n\tisBlocking: boolean;\n\tisBot: boolean;\n\tisCat: boolean;\n\tisFollowed: boolean;\n\tisFollowing: boolean;\n\tisLocked: boolean;\n\tisModerator: boolean;\n\tisMuted: boolean;\n\tisRenoteMuted: boolean;\n\tisSilenced: boolean;\n\tisSuspended: boolean;\n\tlang: string | null;\n\tlastFetchedAt?: " - }, - { - "kind": "Reference", - "text": "DateString", - "canonicalReference": "firefish-js!entities.DateString:type" - }, - { - "kind": "Content", - "text": ";\n\tlocation: string | null;\n\tnotesCount: number;\n\tpinnedNoteIds: " - }, - { - "kind": "Reference", - "text": "ID", - "canonicalReference": "firefish-js!entities.ID:type" - }, - { - "kind": "Content", - "text": "[];\n\tpinnedNotes: " - }, - { - "kind": "Reference", - "text": "Note", - "canonicalReference": "firefish-js!entities.Note:type" - }, - { - "kind": "Content", - "text": "[];\n\tpinnedPage: " - }, - { - "kind": "Reference", - "text": "Page", - "canonicalReference": "firefish-js!entities.Page:type" - }, - { - "kind": "Content", - "text": " | null;\n\tpinnedPageId: string | null;\n\tpublicReactions: boolean;\n\tsecurityKeys: boolean;\n\ttwoFactorEnabled: boolean;\n\tupdatedAt: " - }, - { - "kind": "Reference", - "text": "DateString", - "canonicalReference": "firefish-js!entities.DateString:type" - }, - { - "kind": "Content", - "text": " | null;\n\turi: string | null;\n\turl: string | null;\n}" - }, - { - "kind": "Content", - "text": ";" - } - ], - "fileUrlPath": "src/entities.ts", - "releaseTag": "Public", - "name": "UserDetailed", - "typeTokenRange": { - "startIndex": 1, - "endIndex": 15 - } - }, - { - "kind": "TypeAlias", - "canonicalReference": "firefish-js!entities.UserGroup:type", - "docComment": "", - "excerptTokens": [ - { - "kind": "Content", - "text": "export declare type UserGroup = " - }, - { - "kind": "Reference", - "text": "TODO", - "canonicalReference": "firefish-js!~TODO_2:type" - }, - { - "kind": "Content", - "text": ";" - } - ], - "fileUrlPath": "src/entities.ts", - "releaseTag": "Public", - "name": "UserGroup", - "typeTokenRange": { - "startIndex": 1, - "endIndex": 2 - } - }, - { - "kind": "TypeAlias", - "canonicalReference": "firefish-js!entities.UserList:type", - "docComment": "", - "excerptTokens": [ - { - "kind": "Content", - "text": "export declare type UserList = " - }, - { - "kind": "Content", - "text": "{\n\tid: " - }, - { - "kind": "Reference", - "text": "ID", - "canonicalReference": "firefish-js!entities.ID:type" - }, - { - "kind": "Content", - "text": ";\n\tcreatedAt: " - }, - { - "kind": "Reference", - "text": "DateString", - "canonicalReference": "firefish-js!entities.DateString:type" - }, - { - "kind": "Content", - "text": ";\n\tname: string;\n\tuserIds: " - }, - { - "kind": "Reference", - "text": "User", - "canonicalReference": "firefish-js!entities.User:type" - }, - { - "kind": "Content", - "text": "[\"id\"][];\n}" - }, - { - "kind": "Content", - "text": ";" - } - ], - "fileUrlPath": "src/entities.ts", - "releaseTag": "Public", - "name": "UserList", - "typeTokenRange": { - "startIndex": 1, - "endIndex": 8 - } - }, - { - "kind": "TypeAlias", - "canonicalReference": "firefish-js!entities.UserLite:type", - "docComment": "", - "excerptTokens": [ - { - "kind": "Content", - "text": "export declare type UserLite = " - }, - { - "kind": "Content", - "text": "{\n\tid: " - }, - { - "kind": "Reference", - "text": "ID", - "canonicalReference": "firefish-js!entities.ID:type" - }, - { - "kind": "Content", - "text": ";\n\tusername: string;\n\thost: string | null;\n\tname: string;\n\tonlineStatus: \"online\" | \"active\" | \"offline\" | \"unknown\";\n\tavatarUrl: string;\n\tavatarBlurhash: string;\n\talsoKnownAs: string[];\n\tmovedToUri: any;\n\temojis: {\n\t\tname: string;\n\t\turl: string;\n\t}[];\n\tinstance?: {\n\t\tname: " - }, - { - "kind": "Reference", - "text": "Instance", - "canonicalReference": "firefish-js!entities.Instance:type" - }, - { - "kind": "Content", - "text": "[\"name\"];\n\t\tsoftwareName: " - }, - { - "kind": "Reference", - "text": "Instance", - "canonicalReference": "firefish-js!entities.Instance:type" - }, - { - "kind": "Content", - "text": "[\"softwareName\"];\n\t\tsoftwareVersion: " - }, - { - "kind": "Reference", - "text": "Instance", - "canonicalReference": "firefish-js!entities.Instance:type" - }, - { - "kind": "Content", - "text": "[\"softwareVersion\"];\n\t\ticonUrl: " - }, - { - "kind": "Reference", - "text": "Instance", - "canonicalReference": "firefish-js!entities.Instance:type" - }, - { - "kind": "Content", - "text": "[\"iconUrl\"];\n\t\tfaviconUrl: " - }, - { - "kind": "Reference", - "text": "Instance", - "canonicalReference": "firefish-js!entities.Instance:type" - }, - { - "kind": "Content", - "text": "[\"faviconUrl\"];\n\t\tthemeColor: " - }, - { - "kind": "Reference", - "text": "Instance", - "canonicalReference": "firefish-js!entities.Instance:type" - }, - { - "kind": "Content", - "text": "[\"themeColor\"];\n\t};\n}" - }, - { - "kind": "Content", - "text": ";" - } - ], - "fileUrlPath": "src/entities.ts", - "releaseTag": "Public", - "name": "UserLite", - "typeTokenRange": { - "startIndex": 1, - "endIndex": 16 - } - }, - { - "kind": "TypeAlias", - "canonicalReference": "firefish-js!entities.UserSorting:type", - "docComment": "", - "excerptTokens": [ - { - "kind": "Content", - "text": "export declare type UserSorting =\n\t" - }, - { - "kind": "Content", - "text": "| \"+follower\"\n\t| \"-follower\"\n\t| \"+createdAt\"\n\t| \"-createdAt\"\n\t| \"+updatedAt\"\n\t| \"-updatedAt\"" - }, - { - "kind": "Content", - "text": ";" - } - ], - "fileUrlPath": "src/entities.ts", - "releaseTag": "Public", - "name": "UserSorting", - "typeTokenRange": { - "startIndex": 1, - "endIndex": 2 - } - } - ] - }, - { - "kind": "Variable", - "canonicalReference": "firefish-js!ffVisibility:var", - "docComment": "", - "excerptTokens": [ - { - "kind": "Content", - "text": "ffVisibility: " - }, - { - "kind": "Content", - "text": "readonly [\"public\", \"followers\", \"private\"]" - } - ], - "fileUrlPath": "src/index.ts", - "isReadonly": true, - "releaseTag": "Public", - "name": "ffVisibility", - "variableTypeTokenRange": { - "startIndex": 1, - "endIndex": 2 - } - }, - { - "kind": "Variable", - "canonicalReference": "firefish-js!mutedNoteReasons:var", - "docComment": "", - "excerptTokens": [ - { - "kind": "Content", - "text": "mutedNoteReasons: " - }, - { - "kind": "Content", - "text": "readonly [\n\t\"word\",\n\t\"manual\",\n\t\"spam\",\n\t\"other\",\n]" - } - ], - "fileUrlPath": "src/index.ts", - "isReadonly": true, - "releaseTag": "Public", - "name": "mutedNoteReasons", - "variableTypeTokenRange": { - "startIndex": 1, - "endIndex": 2 - } - }, - { - "kind": "Variable", - "canonicalReference": "firefish-js!noteVisibilities:var", - "docComment": "", - "excerptTokens": [ - { - "kind": "Content", - "text": "noteVisibilities: " - }, - { - "kind": "Content", - "text": "readonly [\n\t\"public\",\n\t\"home\",\n\t\"followers\",\n\t\"specified\",\n]" - } - ], - "fileUrlPath": "src/index.ts", - "isReadonly": true, - "releaseTag": "Public", - "name": "noteVisibilities", - "variableTypeTokenRange": { - "startIndex": 1, - "endIndex": 2 - } - }, - { - "kind": "Variable", - "canonicalReference": "firefish-js!notificationTypes:var", - "docComment": "", - "excerptTokens": [ - { - "kind": "Content", - "text": "notificationTypes: " - }, - { - "kind": "Content", - "text": "readonly [\n\t\"follow\",\n\t\"mention\",\n\t\"reply\",\n\t\"renote\",\n\t\"quote\",\n\t\"reaction\",\n\t\"pollVote\",\n\t\"pollEnded\",\n\t\"receiveFollowRequest\",\n\t\"followRequestAccepted\",\n\t\"groupInvited\",\n\t\"app\",\n]" - } - ], - "fileUrlPath": "src/index.ts", - "isReadonly": true, - "releaseTag": "Public", - "name": "notificationTypes", - "variableTypeTokenRange": { - "startIndex": 1, - "endIndex": 2 - } - }, - { - "kind": "Variable", - "canonicalReference": "firefish-js!permissions:var", - "docComment": "", - "excerptTokens": [ - { - "kind": "Content", - "text": "permissions: " - }, - { - "kind": "Content", - "text": "string[]" - } - ], - "fileUrlPath": "src/index.ts", - "isReadonly": true, - "releaseTag": "Public", - "name": "permissions", - "variableTypeTokenRange": { - "startIndex": 1, - "endIndex": 2 - } - }, - { - "kind": "Class", - "canonicalReference": "firefish-js!Stream:class", - "docComment": "", - "excerptTokens": [ - { - "kind": "Content", - "text": "export default class Stream extends " - }, - { - "kind": "Reference", - "text": "EventEmitter", - "canonicalReference": "eventemitter3!EventEmitter.EventEmitter" - }, - { - "kind": "Content", - "text": "<" - }, - { - "kind": "Reference", - "text": "StreamEvents", - "canonicalReference": "firefish-js!~StreamEvents:type" - }, - { - "kind": "Content", - "text": ">" - }, - { - "kind": "Content", - "text": " " - } - ], - "fileUrlPath": "src/streaming.ts", - "releaseTag": "Public", - "isAbstract": false, - "name": "Stream", - "preserveMemberOrder": false, - "members": [ - { - "kind": "Constructor", - "canonicalReference": "firefish-js!Stream:constructor(1)", - "docComment": "/**\n * Constructs a new instance of the `Stream` class\n */\n", - "excerptTokens": [ - { - "kind": "Content", - "text": "constructor(\n\t\torigin: " - }, - { - "kind": "Content", - "text": "string" - }, - { - "kind": "Content", - "text": ",\n\t\tuser: " - }, - { - "kind": "Content", - "text": "{\n\t\t\ttoken: string;\n\t\t} | null" - }, - { - "kind": "Content", - "text": ",\n\t\toptions?: " - }, - { - "kind": "Content", - "text": "{\n\t\t\tWebSocket?: any;\n\t\t}" - }, - { - "kind": "Content", - "text": ",\n\t);" - } - ], - "releaseTag": "Public", - "isProtected": false, - "overloadIndex": 1, - "parameters": [ - { - "parameterName": "origin", - "parameterTypeTokenRange": { - "startIndex": 1, - "endIndex": 2 - }, - "isOptional": false - }, - { - "parameterName": "user", - "parameterTypeTokenRange": { - "startIndex": 3, - "endIndex": 4 - }, - "isOptional": false - }, - { - "parameterName": "options", - "parameterTypeTokenRange": { - "startIndex": 5, - "endIndex": 6 - }, - "isOptional": true - } - ] - }, - { - "kind": "Method", - "canonicalReference": "firefish-js!Stream#close:member(1)", - "docComment": "", - "excerptTokens": [ - { - "kind": "Content", - "text": "close(): " - }, - { - "kind": "Content", - "text": "void" - }, - { - "kind": "Content", - "text": ";" - } - ], - "isStatic": false, - "returnTypeTokenRange": { - "startIndex": 1, - "endIndex": 2 - }, - "releaseTag": "Public", - "isProtected": false, - "overloadIndex": 1, - "parameters": [], - "isOptional": false, - "isAbstract": false, - "name": "close" - }, - { - "kind": "Method", - "canonicalReference": "firefish-js!Stream#disconnectToChannel:member(1)", - "docComment": "", - "excerptTokens": [ - { - "kind": "Content", - "text": "disconnectToChannel(connection: " - }, - { - "kind": "Reference", - "text": "NonSharedConnection", - "canonicalReference": "firefish-js!~NonSharedConnection:class" - }, - { - "kind": "Content", - "text": "): " - }, - { - "kind": "Content", - "text": "void" - }, - { - "kind": "Content", - "text": ";" - } - ], - "isStatic": false, - "returnTypeTokenRange": { - "startIndex": 3, - "endIndex": 4 - }, - "releaseTag": "Public", - "isProtected": false, - "overloadIndex": 1, - "parameters": [ - { - "parameterName": "connection", - "parameterTypeTokenRange": { - "startIndex": 1, - "endIndex": 2 - }, - "isOptional": false - } - ], - "isOptional": false, - "isAbstract": false, - "name": "disconnectToChannel" - }, - { - "kind": "Method", - "canonicalReference": "firefish-js!Stream#removeSharedConnection:member(1)", - "docComment": "", - "excerptTokens": [ - { - "kind": "Content", - "text": "removeSharedConnection(connection: " - }, - { - "kind": "Reference", - "text": "SharedConnection", - "canonicalReference": "firefish-js!~SharedConnection:class" - }, - { - "kind": "Content", - "text": "): " - }, - { - "kind": "Content", - "text": "void" - }, - { - "kind": "Content", - "text": ";" - } - ], - "isStatic": false, - "returnTypeTokenRange": { - "startIndex": 3, - "endIndex": 4 - }, - "releaseTag": "Public", - "isProtected": false, - "overloadIndex": 1, - "parameters": [ - { - "parameterName": "connection", - "parameterTypeTokenRange": { - "startIndex": 1, - "endIndex": 2 - }, - "isOptional": false - } - ], - "isOptional": false, - "isAbstract": false, - "name": "removeSharedConnection" - }, - { - "kind": "Method", - "canonicalReference": "firefish-js!Stream#removeSharedConnectionPool:member(1)", - "docComment": "", - "excerptTokens": [ - { - "kind": "Content", - "text": "removeSharedConnectionPool(pool: " - }, - { - "kind": "Reference", - "text": "Pool", - "canonicalReference": "firefish-js!~Pool:class" - }, - { - "kind": "Content", - "text": "): " - }, - { - "kind": "Content", - "text": "void" - }, - { - "kind": "Content", - "text": ";" - } - ], - "isStatic": false, - "returnTypeTokenRange": { - "startIndex": 3, - "endIndex": 4 - }, - "releaseTag": "Public", - "isProtected": false, - "overloadIndex": 1, - "parameters": [ - { - "parameterName": "pool", - "parameterTypeTokenRange": { - "startIndex": 1, - "endIndex": 2 - }, - "isOptional": false - } - ], - "isOptional": false, - "isAbstract": false, - "name": "removeSharedConnectionPool" - }, - { - "kind": "Method", - "canonicalReference": "firefish-js!Stream#send:member(1)", - "docComment": "", - "excerptTokens": [ - { - "kind": "Content", - "text": "send(typeOrPayload: " - }, - { - "kind": "Content", - "text": "any" - }, - { - "kind": "Content", - "text": ", payload?: " - }, - { - "kind": "Content", - "text": "any" - }, - { - "kind": "Content", - "text": "): " - }, - { - "kind": "Content", - "text": "void" - }, - { - "kind": "Content", - "text": ";" - } - ], - "isStatic": false, - "returnTypeTokenRange": { - "startIndex": 5, - "endIndex": 6 - }, - "releaseTag": "Public", - "isProtected": false, - "overloadIndex": 1, - "parameters": [ - { - "parameterName": "typeOrPayload", - "parameterTypeTokenRange": { - "startIndex": 1, - "endIndex": 2 - }, - "isOptional": false - }, - { - "parameterName": "payload", - "parameterTypeTokenRange": { - "startIndex": 3, - "endIndex": 4 - }, - "isOptional": true - } - ], - "isOptional": false, - "isAbstract": false, - "name": "send" - }, - { - "kind": "Property", - "canonicalReference": "firefish-js!Stream#state:member", - "docComment": "", - "excerptTokens": [ - { - "kind": "Content", - "text": "state: " - }, - { - "kind": "Content", - "text": "\"initializing\" | \"reconnecting\" | \"connected\"" - }, - { - "kind": "Content", - "text": ";" - } - ], - "isReadonly": false, - "isOptional": false, - "releaseTag": "Public", - "name": "state", - "propertyTypeTokenRange": { - "startIndex": 1, - "endIndex": 2 - }, - "isStatic": false, - "isProtected": false, - "isAbstract": false - }, - { - "kind": "Method", - "canonicalReference": "firefish-js!Stream#useChannel:member(1)", - "docComment": "", - "excerptTokens": [ - { - "kind": "Content", - "text": "useChannel<C extends " - }, - { - "kind": "Content", - "text": "keyof " - }, - { - "kind": "Reference", - "text": "Channels", - "canonicalReference": "firefish-js!Channels:type" - }, - { - "kind": "Content", - "text": ">(\n\t\tchannel: " - }, - { - "kind": "Content", - "text": "C" - }, - { - "kind": "Content", - "text": ",\n\t\tparams?: " - }, - { - "kind": "Reference", - "text": "Channels", - "canonicalReference": "firefish-js!Channels:type" - }, - { - "kind": "Content", - "text": "[C][\"params\"]" - }, - { - "kind": "Content", - "text": ",\n\t\tname?: " - }, - { - "kind": "Content", - "text": "string" - }, - { - "kind": "Content", - "text": ",\n\t): " - }, - { - "kind": "Reference", - "text": "Connection", - "canonicalReference": "firefish-js!ChannelConnection:class" - }, - { - "kind": "Content", - "text": "<" - }, - { - "kind": "Reference", - "text": "Channels", - "canonicalReference": "firefish-js!Channels:type" - }, - { - "kind": "Content", - "text": "[C]>" - }, - { - "kind": "Content", - "text": ";" - } - ], - "typeParameters": [ - { - "typeParameterName": "C", - "constraintTokenRange": { - "startIndex": 1, - "endIndex": 3 - }, - "defaultTypeTokenRange": { - "startIndex": 0, - "endIndex": 0 - } - } - ], - "isStatic": false, - "returnTypeTokenRange": { - "startIndex": 11, - "endIndex": 15 - }, - "releaseTag": "Public", - "isProtected": false, - "overloadIndex": 1, - "parameters": [ - { - "parameterName": "channel", - "parameterTypeTokenRange": { - "startIndex": 4, - "endIndex": 5 - }, - "isOptional": false - }, - { - "parameterName": "params", - "parameterTypeTokenRange": { - "startIndex": 6, - "endIndex": 8 - }, - "isOptional": true - }, - { - "parameterName": "name", - "parameterTypeTokenRange": { - "startIndex": 9, - "endIndex": 10 - }, - "isOptional": true - } - ], - "isOptional": false, - "isAbstract": false, - "name": "useChannel" - } - ], - "extendsTokenRange": { - "startIndex": 1, - "endIndex": 5 - }, - "implementsTokenRanges": [] - } - ] - } - ] -} diff --git a/packages/firefish-js/etc/firefish-js.api.md b/packages/firefish-js/etc/firefish-js.api.md deleted file mode 100644 index 08a001de27..0000000000 --- a/packages/firefish-js/etc/firefish-js.api.md +++ /dev/null @@ -1,2839 +0,0 @@ -## API Report File for "firefish-js" - -> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). - -```ts - -import { EventEmitter } from 'eventemitter3'; - -// @public (undocumented) -export type Acct = { - username: string; - host: string | null; -}; - -// Warning: (ae-forgotten-export) The symbol "TODO_2" needs to be exported by the entry point index.d.ts -// -// @public (undocumented) -type Ad = TODO_2; - -// @public (undocumented) -type Announcement = { - id: ID; - createdAt: DateString; - updatedAt: DateString | null; - text: string; - title: string; - imageUrl: string | null; - isRead?: boolean; -}; - -// @public (undocumented) -type Antenna = { - id: ID; - createdAt: DateString; - name: string; - keywords: string[][]; - excludeKeywords: string[][]; - src: "home" | "all" | "users" | "list" | "group" | "instances"; - userListId: ID | null; - userGroupId: ID | null; - users: string[]; - instances: string[]; - caseSensitive: boolean; - notify: boolean; - withReplies: boolean; - withFile: boolean; - hasUnreadNote: boolean; -}; - -declare namespace api { - export { - isAPIError, - APIError, - FetchLike, - APIClient - } -} -export { api } - -// @public (undocumented) -class APIClient { - constructor(opts: { - origin: APIClient["origin"]; - credential?: APIClient["credential"]; - fetch?: APIClient["fetch"] | null | undefined; - }); - // (undocumented) - credential: string | null | undefined; - // (undocumented) - fetch: FetchLike; - // (undocumented) - origin: string; - // Warning: (ae-forgotten-export) The symbol "IsCaseMatched" needs to be exported by the entry point index.d.ts - // Warning: (ae-forgotten-export) The symbol "GetCaseResult" needs to be exported by the entry point index.d.ts - // - // (undocumented) - request<E extends keyof Endpoints, P extends Endpoints[E]["req"]>( - endpoint: E, - params?: P, - credential?: string | null | undefined, - ): Promise< - Endpoints[E]["res"] extends { - $switch: { - $cases: [any, any][]; - $default: any; - }; - } - ? IsCaseMatched<E, P, 0> extends true - ? GetCaseResult<E, P, 0> - : IsCaseMatched<E, P, 1> extends true - ? GetCaseResult<E, P, 1> - : IsCaseMatched<E, P, 2> extends true - ? GetCaseResult<E, P, 2> - : IsCaseMatched<E, P, 3> extends true - ? GetCaseResult<E, P, 3> - : IsCaseMatched<E, P, 4> extends true - ? GetCaseResult<E, P, 4> - : IsCaseMatched<E, P, 5> extends true - ? GetCaseResult<E, P, 5> - : IsCaseMatched<E, P, 6> extends true - ? GetCaseResult<E, P, 6> - : IsCaseMatched<E, P, 7> extends true - ? GetCaseResult<E, P, 7> - : IsCaseMatched<E, P, 8> extends true - ? GetCaseResult<E, P, 8> - : IsCaseMatched<E, P, 9> extends true - ? GetCaseResult<E, P, 9> - : Endpoints[E]["res"]["$switch"]["$default"] - : Endpoints[E]["res"] - >; -} - -// @public (undocumented) -type APIError = { - id: string; - code: string; - message: string; - kind: "client" | "server"; - info: Record<string, any>; -}; - -// @public (undocumented) -type App = TODO_2; - -// @public (undocumented) -type AuthSession = { - id: ID; - app: App; - token: string; -}; - -// @public (undocumented) -type Blocking = { - id: ID; - createdAt: DateString; - blockeeId: User["id"]; - blockee: UserDetailed; -}; - -// @public (undocumented) -type Channel = { - id: ID; -}; - -// Warning: (ae-forgotten-export) The symbol "AnyOf" needs to be exported by the entry point index.d.ts -// -// @public (undocumented) -export abstract class ChannelConnection< - Channel extends AnyOf<Channels> = any, -> extends EventEmitter<Channel["events"]> { - constructor(stream: Stream, channel: string, name?: string); - // (undocumented) - channel: string; - // (undocumented) - abstract dispose(): void; - // (undocumented) - abstract id: string; - // (undocumented) - inCount: number; - // (undocumented) - name?: string; - // (undocumented) - outCount: number; - // (undocumented) - send<T extends keyof Channel["receives"]>( - type: T, - body: Channel["receives"][T], - ): void; - // (undocumented) - protected stream: Stream; -} - -// @public (undocumented) -export type Channels = { - main: { - params: null; - events: { - notification: (payload: Notification_2) => void; - mention: (payload: Note) => void; - reply: (payload: Note) => void; - renote: (payload: Note) => void; - follow: (payload: User) => void; - followed: (payload: User) => void; - unfollow: (payload: User) => void; - meUpdated: (payload: MeDetailed) => void; - pageEvent: (payload: PageEvent) => void; - urlUploadFinished: (payload: { - marker: string; - file: DriveFile; - }) => void; - readAllNotifications: () => void; - unreadNotification: (payload: Notification_2) => void; - unreadMention: (payload: Note["id"]) => void; - readAllUnreadMentions: () => void; - unreadSpecifiedNote: (payload: Note["id"]) => void; - readAllUnreadSpecifiedNotes: () => void; - readAllMessagingMessages: () => void; - messagingMessage: (payload: MessagingMessage) => void; - unreadMessagingMessage: (payload: MessagingMessage) => void; - readAllAntennas: () => void; - unreadAntenna: (payload: Antenna) => void; - readAllAnnouncements: () => void; - readAllChannels: () => void; - unreadChannel: (payload: Note["id"]) => void; - myTokenRegenerated: () => void; - reversiNoInvites: () => void; - reversiInvited: (payload: FIXME) => void; - signin: (payload: FIXME) => void; - registryUpdated: (payload: { - scope?: string[]; - key: string; - value: any | null; - }) => void; - driveFileCreated: (payload: DriveFile) => void; - readAntenna: (payload: Antenna) => void; - }; - receives: null; - }; - homeTimeline: { - params: null; - events: { - note: (payload: Note) => void; - }; - receives: null; - }; - localTimeline: { - params: null; - events: { - note: (payload: Note) => void; - }; - receives: null; - }; - hybridTimeline: { - params: null; - events: { - note: (payload: Note) => void; - }; - receives: null; - }; - recommendedTimeline: { - params: null; - events: { - note: (payload: Note) => void; - }; - receives: null; - }; - globalTimeline: { - params: null; - events: { - note: (payload: Note) => void; - }; - receives: null; - }; - antenna: { - params: { - antennaId: Antenna["id"]; - }; - events: { - note: (payload: Note) => void; - }; - receives: null; - }; - messaging: { - params: { - otherparty?: User["id"] | null; - group?: UserGroup["id"] | null; - }; - events: { - message: (payload: MessagingMessage) => void; - deleted: (payload: MessagingMessage["id"]) => void; - read: (payload: MessagingMessage["id"][]) => void; - typers: (payload: User[]) => void; - }; - receives: { - read: { - id: MessagingMessage["id"]; - }; - }; - }; - serverStats: { - params: null; - events: { - stats: (payload: FIXME) => void; - }; - receives: { - requestLog: { - id: string | number; - length: number; - }; - }; - }; - queueStats: { - params: null; - events: { - stats: (payload: FIXME) => void; - }; - receives: { - requestLog: { - id: string | number; - length: number; - }; - }; - }; -}; - -// @public (undocumented) -type Clip = TODO_2; - -// @public (undocumented) -type CustomEmoji = { - id: string; - name: string; - url: string; - category: string; - aliases: string[]; -}; - -// @public (undocumented) -type DateString = string; - -// @public (undocumented) -type DetailedInstanceMetadata = LiteInstanceMetadata & { - features: Record<string, any>; -}; - -// @public (undocumented) -type DriveFile = { - id: ID; - createdAt: DateString; - isSensitive: boolean; - name: string; - thumbnailUrl: string; - url: string; - type: string; - size: number; - md5: string; - blurhash: string; - comment: string | null; - properties: Record<string, any>; -}; - -// @public (undocumented) -type DriveFolder = TODO_2; - -// @public (undocumented) -export type Endpoints = { - "admin/abuse-user-reports": { - req: TODO; - res: TODO; - }; - "admin/delete-all-files-of-a-user": { - req: { - userId: User["id"]; - }; - res: null; - }; - "admin/delete-logs": { - req: NoParams; - res: null; - }; - "admin/get-index-stats": { - req: TODO; - res: TODO; - }; - "admin/get-table-stats": { - req: TODO; - res: TODO; - }; - "admin/invite": { - req: TODO; - res: TODO; - }; - "admin/logs": { - req: TODO; - res: TODO; - }; - "admin/meta": { - req: TODO; - res: TODO; - }; - "admin/reset-password": { - req: TODO; - res: TODO; - }; - "admin/resolve-abuse-user-report": { - req: TODO; - res: TODO; - }; - "admin/resync-chart": { - req: TODO; - res: TODO; - }; - "admin/send-email": { - req: TODO; - res: TODO; - }; - "admin/server-info": { - req: TODO; - res: TODO; - }; - "admin/show-moderation-logs": { - req: TODO; - res: TODO; - }; - "admin/show-user": { - req: TODO; - res: TODO; - }; - "admin/show-users": { - req: TODO; - res: TODO; - }; - "admin/silence-user": { - req: TODO; - res: TODO; - }; - "admin/suspend-user": { - req: TODO; - res: TODO; - }; - "admin/unsilence-user": { - req: TODO; - res: TODO; - }; - "admin/unsuspend-user": { - req: TODO; - res: TODO; - }; - "admin/update-meta": { - req: TODO; - res: TODO; - }; - "admin/vacuum": { - req: TODO; - res: TODO; - }; - "admin/accounts/create": { - req: TODO; - res: TODO; - }; - "admin/ad/create": { - req: TODO; - res: TODO; - }; - "admin/ad/delete": { - req: { - id: Ad["id"]; - }; - res: null; - }; - "admin/ad/list": { - req: TODO; - res: TODO; - }; - "admin/ad/update": { - req: TODO; - res: TODO; - }; - "admin/announcements/create": { - req: TODO; - res: TODO; - }; - "admin/announcements/delete": { - req: { - id: Announcement["id"]; - }; - res: null; - }; - "admin/announcements/list": { - req: TODO; - res: TODO; - }; - "admin/announcements/update": { - req: TODO; - res: TODO; - }; - "admin/drive/clean-remote-files": { - req: TODO; - res: TODO; - }; - "admin/drive/cleanup": { - req: TODO; - res: TODO; - }; - "admin/drive/files": { - req: TODO; - res: TODO; - }; - "admin/drive/show-file": { - req: TODO; - res: TODO; - }; - "admin/emoji/add": { - req: TODO; - res: TODO; - }; - "admin/emoji/copy": { - req: TODO; - res: TODO; - }; - "admin/emoji/list-remote": { - req: TODO; - res: TODO; - }; - "admin/emoji/list": { - req: TODO; - res: TODO; - }; - "admin/emoji/remove": { - req: TODO; - res: TODO; - }; - "admin/emoji/update": { - req: TODO; - res: TODO; - }; - "admin/federation/delete-all-files": { - req: { - host: string; - }; - res: null; - }; - "admin/federation/refresh-remote-instance-metadata": { - req: TODO; - res: TODO; - }; - "admin/federation/remove-all-following": { - req: TODO; - res: TODO; - }; - "admin/federation/update-instance": { - req: TODO; - res: TODO; - }; - "admin/moderators/add": { - req: TODO; - res: TODO; - }; - "admin/moderators/remove": { - req: TODO; - res: TODO; - }; - "admin/promo/create": { - req: TODO; - res: TODO; - }; - "admin/queue/clear": { - req: TODO; - res: TODO; - }; - "admin/queue/deliver-delayed": { - req: TODO; - res: TODO; - }; - "admin/queue/inbox-delayed": { - req: TODO; - res: TODO; - }; - "admin/queue/jobs": { - req: TODO; - res: TODO; - }; - "admin/queue/stats": { - req: TODO; - res: TODO; - }; - "admin/relays/add": { - req: TODO; - res: TODO; - }; - "admin/relays/list": { - req: TODO; - res: TODO; - }; - "admin/relays/remove": { - req: TODO; - res: TODO; - }; - announcements: { - req: { - limit?: number; - withUnreads?: boolean; - sinceId?: Announcement["id"]; - untilId?: Announcement["id"]; - }; - res: Announcement[]; - }; - "antennas/create": { - req: TODO; - res: Antenna; - }; - "antennas/delete": { - req: { - antennaId: Antenna["id"]; - }; - res: null; - }; - "antennas/list": { - req: NoParams; - res: Antenna[]; - }; - "antennas/notes": { - req: { - antennaId: Antenna["id"]; - limit?: number; - sinceId?: Note["id"]; - untilId?: Note["id"]; - }; - res: Note[]; - }; - "antennas/show": { - req: { - antennaId: Antenna["id"]; - }; - res: Antenna; - }; - "antennas/update": { - req: TODO; - res: Antenna; - }; - "antennas/mark-read": { - req: TODO; - res: Antenna; - }; - "ap/get": { - req: { - uri: string; - }; - res: Record<string, any>; - }; - "ap/show": { - req: { - uri: string; - }; - res: - | { - type: "Note"; - object: Note; - } - | { - type: "User"; - object: UserDetailed; - }; - }; - "app/create": { - req: TODO; - res: App; - }; - "app/show": { - req: { - appId: App["id"]; - }; - res: App; - }; - "auth/accept": { - req: { - token: string; - }; - res: null; - }; - "auth/session/generate": { - req: { - appSecret: string; - }; - res: { - token: string; - url: string; - }; - }; - "auth/session/show": { - req: { - token: string; - }; - res: AuthSession; - }; - "auth/session/userkey": { - req: { - appSecret: string; - token: string; - }; - res: { - accessToken: string; - user: User; - }; - }; - "blocking/create": { - req: { - userId: User["id"]; - }; - res: UserDetailed; - }; - "blocking/delete": { - req: { - userId: User["id"]; - }; - res: UserDetailed; - }; - "blocking/list": { - req: { - limit?: number; - sinceId?: Blocking["id"]; - untilId?: Blocking["id"]; - }; - res: Blocking[]; - }; - "channels/create": { - req: TODO; - res: TODO; - }; - "channels/featured": { - req: TODO; - res: TODO; - }; - "channels/follow": { - req: TODO; - res: TODO; - }; - "channels/followed": { - req: TODO; - res: TODO; - }; - "channels/owned": { - req: TODO; - res: TODO; - }; - "channels/pin-note": { - req: TODO; - res: TODO; - }; - "channels/show": { - req: TODO; - res: TODO; - }; - "channels/timeline": { - req: TODO; - res: TODO; - }; - "channels/unfollow": { - req: TODO; - res: TODO; - }; - "channels/update": { - req: TODO; - res: TODO; - }; - "charts/active-users": { - req: { - span: "day" | "hour"; - limit?: number; - offset?: number | null; - }; - res: { - local: { - users: number[]; - }; - remote: { - users: number[]; - }; - }; - }; - "charts/drive": { - req: { - span: "day" | "hour"; - limit?: number; - offset?: number | null; - }; - res: { - local: { - decCount: number[]; - decSize: number[]; - incCount: number[]; - incSize: number[]; - totalCount: number[]; - totalSize: number[]; - }; - remote: { - decCount: number[]; - decSize: number[]; - incCount: number[]; - incSize: number[]; - totalCount: number[]; - totalSize: number[]; - }; - }; - }; - "charts/federation": { - req: { - span: "day" | "hour"; - limit?: number; - offset?: number | null; - }; - res: { - instance: { - dec: number[]; - inc: number[]; - total: number[]; - }; - }; - }; - "charts/hashtag": { - req: { - span: "day" | "hour"; - limit?: number; - offset?: number | null; - }; - res: TODO; - }; - "charts/instance": { - req: { - span: "day" | "hour"; - limit?: number; - offset?: number | null; - host: string; - }; - res: { - drive: { - decFiles: number[]; - decUsage: number[]; - incFiles: number[]; - incUsage: number[]; - totalFiles: number[]; - totalUsage: number[]; - }; - followers: { - dec: number[]; - inc: number[]; - total: number[]; - }; - following: { - dec: number[]; - inc: number[]; - total: number[]; - }; - notes: { - dec: number[]; - inc: number[]; - total: number[]; - diffs: { - normal: number[]; - renote: number[]; - reply: number[]; - }; - }; - requests: { - failed: number[]; - received: number[]; - succeeded: number[]; - }; - users: { - dec: number[]; - inc: number[]; - total: number[]; - }; - }; - }; - "charts/network": { - req: { - span: "day" | "hour"; - limit?: number; - offset?: number | null; - }; - res: TODO; - }; - "charts/notes": { - req: { - span: "day" | "hour"; - limit?: number; - offset?: number | null; - }; - res: { - local: { - dec: number[]; - inc: number[]; - total: number[]; - diffs: { - normal: number[]; - renote: number[]; - reply: number[]; - }; - }; - remote: { - dec: number[]; - inc: number[]; - total: number[]; - diffs: { - normal: number[]; - renote: number[]; - reply: number[]; - }; - }; - }; - }; - "charts/user/drive": { - req: { - span: "day" | "hour"; - limit?: number; - offset?: number | null; - userId: User["id"]; - }; - res: { - decCount: number[]; - decSize: number[]; - incCount: number[]; - incSize: number[]; - totalCount: number[]; - totalSize: number[]; - }; - }; - "charts/user/following": { - req: { - span: "day" | "hour"; - limit?: number; - offset?: number | null; - userId: User["id"]; - }; - res: TODO; - }; - "charts/user/notes": { - req: { - span: "day" | "hour"; - limit?: number; - offset?: number | null; - userId: User["id"]; - }; - res: { - dec: number[]; - inc: number[]; - total: number[]; - diffs: { - normal: number[]; - renote: number[]; - reply: number[]; - }; - }; - }; - "charts/user/reactions": { - req: { - span: "day" | "hour"; - limit?: number; - offset?: number | null; - userId: User["id"]; - }; - res: TODO; - }; - "charts/users": { - req: { - span: "day" | "hour"; - limit?: number; - offset?: number | null; - }; - res: { - local: { - dec: number[]; - inc: number[]; - total: number[]; - }; - remote: { - dec: number[]; - inc: number[]; - total: number[]; - }; - }; - }; - "clips/add-note": { - req: TODO; - res: TODO; - }; - "clips/create": { - req: TODO; - res: TODO; - }; - "clips/delete": { - req: { - clipId: Clip["id"]; - }; - res: null; - }; - "clips/list": { - req: TODO; - res: TODO; - }; - "clips/notes": { - req: TODO; - res: TODO; - }; - "clips/show": { - req: TODO; - res: TODO; - }; - "clips/update": { - req: TODO; - res: TODO; - }; - drive: { - req: NoParams; - res: { - capacity: number; - usage: number; - }; - }; - "drive/files": { - req: { - folderId?: DriveFolder["id"] | null; - type?: DriveFile["type"] | null; - limit?: number; - sinceId?: DriveFile["id"]; - untilId?: DriveFile["id"]; - }; - res: DriveFile[]; - }; - "drive/files/attached-notes": { - req: TODO; - res: TODO; - }; - "drive/files/check-existence": { - req: TODO; - res: TODO; - }; - "drive/files/create": { - req: TODO; - res: TODO; - }; - "drive/files/delete": { - req: { - fileId: DriveFile["id"]; - }; - res: null; - }; - "drive/files/find-by-hash": { - req: TODO; - res: TODO; - }; - "drive/files/find": { - req: { - name: string; - folderId?: DriveFolder["id"] | null; - }; - res: DriveFile[]; - }; - "drive/files/show": { - req: { - fileId?: DriveFile["id"]; - url?: string; - }; - res: DriveFile; - }; - "drive/files/update": { - req: { - fileId: DriveFile["id"]; - folderId?: DriveFolder["id"] | null; - name?: string; - isSensitive?: boolean; - comment?: string | null; - }; - res: DriveFile; - }; - "drive/files/upload-from-url": { - req: { - url: string; - folderId?: DriveFolder["id"] | null; - isSensitive?: boolean; - comment?: string | null; - marker?: string | null; - force?: boolean; - }; - res: null; - }; - "drive/folders": { - req: { - folderId?: DriveFolder["id"] | null; - limit?: number; - sinceId?: DriveFile["id"]; - untilId?: DriveFile["id"]; - }; - res: DriveFolder[]; - }; - "drive/folders/create": { - req: { - name?: string; - parentId?: DriveFolder["id"] | null; - }; - res: DriveFolder; - }; - "drive/folders/delete": { - req: { - folderId: DriveFolder["id"]; - }; - res: null; - }; - "drive/folders/find": { - req: { - name: string; - parentId?: DriveFolder["id"] | null; - }; - res: DriveFolder[]; - }; - "drive/folders/show": { - req: { - folderId: DriveFolder["id"]; - }; - res: DriveFolder; - }; - "drive/folders/update": { - req: { - folderId: DriveFolder["id"]; - name?: string; - parentId?: DriveFolder["id"] | null; - }; - res: DriveFolder; - }; - "drive/stream": { - req: { - type?: DriveFile["type"] | null; - limit?: number; - sinceId?: DriveFile["id"]; - untilId?: DriveFile["id"]; - }; - res: DriveFile[]; - }; - endpoint: { - req: { - endpoint: string; - }; - res: { - params: { - name: string; - type: string; - }[]; - }; - }; - endpoints: { - req: NoParams; - res: string[]; - }; - "federation/dns": { - req: { - host: string; - }; - res: { - a: string[]; - aaaa: string[]; - cname: string[]; - txt: string[]; - }; - }; - "federation/followers": { - req: { - host: string; - limit?: number; - sinceId?: Following["id"]; - untilId?: Following["id"]; - }; - res: FollowingFolloweePopulated[]; - }; - "federation/following": { - req: { - host: string; - limit?: number; - sinceId?: Following["id"]; - untilId?: Following["id"]; - }; - res: FollowingFolloweePopulated[]; - }; - "federation/instances": { - req: { - host?: string | null; - blocked?: boolean | null; - notResponding?: boolean | null; - suspended?: boolean | null; - federating?: boolean | null; - subscribing?: boolean | null; - publishing?: boolean | null; - limit?: number; - offset?: number; - sort?: - | "+pubSub" - | "-pubSub" - | "+notes" - | "-notes" - | "+users" - | "-users" - | "+following" - | "-following" - | "+followers" - | "-followers" - | "+caughtAt" - | "-caughtAt" - | "+lastCommunicatedAt" - | "-lastCommunicatedAt" - | "+driveUsage" - | "-driveUsage" - | "+driveFiles" - | "-driveFiles"; - }; - res: Instance[]; - }; - "federation/show-instance": { - req: { - host: string; - }; - res: Instance; - }; - "federation/update-remote-user": { - req: { - userId: User["id"]; - }; - res: null; - }; - "federation/users": { - req: { - host: string; - limit?: number; - sinceId?: User["id"]; - untilId?: User["id"]; - }; - res: UserDetailed[]; - }; - "following/create": { - req: { - userId: User["id"]; - }; - res: User; - }; - "following/delete": { - req: { - userId: User["id"]; - }; - res: User; - }; - "following/requests/accept": { - req: { - userId: User["id"]; - }; - res: null; - }; - "following/requests/cancel": { - req: { - userId: User["id"]; - }; - res: User; - }; - "following/requests/list": { - req: NoParams; - res: FollowRequest[]; - }; - "following/requests/reject": { - req: { - userId: User["id"]; - }; - res: null; - }; - "gallery/featured": { - req: TODO; - res: TODO; - }; - "gallery/popular": { - req: TODO; - res: TODO; - }; - "gallery/posts": { - req: TODO; - res: TODO; - }; - "gallery/posts/create": { - req: TODO; - res: TODO; - }; - "gallery/posts/delete": { - req: { - postId: GalleryPost["id"]; - }; - res: null; - }; - "gallery/posts/like": { - req: TODO; - res: TODO; - }; - "gallery/posts/show": { - req: TODO; - res: TODO; - }; - "gallery/posts/unlike": { - req: TODO; - res: TODO; - }; - "gallery/posts/update": { - req: TODO; - res: TODO; - }; - "games/reversi/games": { - req: TODO; - res: TODO; - }; - "games/reversi/games/show": { - req: TODO; - res: TODO; - }; - "games/reversi/games/surrender": { - req: TODO; - res: TODO; - }; - "games/reversi/invitations": { - req: TODO; - res: TODO; - }; - "games/reversi/match": { - req: TODO; - res: TODO; - }; - "games/reversi/match/cancel": { - req: TODO; - res: TODO; - }; - "get-online-users-count": { - req: NoParams; - res: { - count: number; - }; - }; - "hashtags/list": { - req: TODO; - res: TODO; - }; - "hashtags/search": { - req: TODO; - res: TODO; - }; - "hashtags/show": { - req: TODO; - res: TODO; - }; - "hashtags/trend": { - req: TODO; - res: TODO; - }; - "hashtags/users": { - req: TODO; - res: TODO; - }; - i: { - req: NoParams; - res: User; - }; - "i/apps": { - req: TODO; - res: TODO; - }; - "i/authorized-apps": { - req: TODO; - res: TODO; - }; - "i/change-password": { - req: TODO; - res: TODO; - }; - "i/delete-account": { - req: { - password: string; - }; - res: null; - }; - "i/export-blocking": { - req: TODO; - res: TODO; - }; - "i/export-following": { - req: TODO; - res: TODO; - }; - "i/export-mute": { - req: TODO; - res: TODO; - }; - "i/export-notes": { - req: TODO; - res: TODO; - }; - "i/export-user-lists": { - req: TODO; - res: TODO; - }; - "i/favorites": { - req: { - limit?: number; - sinceId?: NoteFavorite["id"]; - untilId?: NoteFavorite["id"]; - }; - res: NoteFavorite[]; - }; - "i/gallery/likes": { - req: TODO; - res: TODO; - }; - "i/gallery/posts": { - req: TODO; - res: TODO; - }; - "i/get-word-muted-notes-count": { - req: TODO; - res: TODO; - }; - "i/import-following": { - req: TODO; - res: TODO; - }; - "i/import-user-lists": { - req: TODO; - res: TODO; - }; - "i/move": { - req: TODO; - res: TODO; - }; - "i/known-as": { - req: TODO; - res: TODO; - }; - "i/notifications": { - req: { - limit?: number; - sinceId?: Notification_2["id"]; - untilId?: Notification_2["id"]; - following?: boolean; - markAsRead?: boolean; - includeTypes?: Notification_2["type"][]; - excludeTypes?: Notification_2["type"][]; - }; - res: Notification_2[]; - }; - "i/page-likes": { - req: TODO; - res: TODO; - }; - "i/pages": { - req: TODO; - res: TODO; - }; - "i/pin": { - req: { - noteId: Note["id"]; - }; - res: MeDetailed; - }; - "i/read-all-messaging-messages": { - req: TODO; - res: TODO; - }; - "i/read-all-unread-notes": { - req: TODO; - res: TODO; - }; - "i/read-announcement": { - req: TODO; - res: TODO; - }; - "i/regenerate-token": { - req: { - password: string; - }; - res: null; - }; - "i/registry/get-all": { - req: { - scope?: string[]; - }; - res: Record<string, any>; - }; - "i/registry/get-detail": { - req: { - key: string; - scope?: string[]; - }; - res: { - updatedAt: DateString; - value: any; - }; - }; - "i/registry/get": { - req: { - key: string; - scope?: string[]; - }; - res: any; - }; - "i/registry/keys-with-type": { - req: { - scope?: string[]; - }; - res: Record< - string, - "null" | "array" | "number" | "string" | "boolean" | "object" - >; - }; - "i/registry/keys": { - req: { - scope?: string[]; - }; - res: string[]; - }; - "i/registry/remove": { - req: { - key: string; - scope?: string[]; - }; - res: null; - }; - "i/registry/scopes": { - req: NoParams; - res: string[][]; - }; - "i/registry/set": { - req: { - key: string; - value: any; - scope?: string[]; - }; - res: null; - }; - "i/revoke-token": { - req: TODO; - res: TODO; - }; - "i/signin-history": { - req: { - limit?: number; - sinceId?: Signin["id"]; - untilId?: Signin["id"]; - }; - res: Signin[]; - }; - "i/unpin": { - req: { - noteId: Note["id"]; - }; - res: MeDetailed; - }; - "i/update-email": { - req: { - password: string; - email?: string | null; - }; - res: MeDetailed; - }; - "i/update": { - req: { - name?: string | null; - description?: string | null; - lang?: string | null; - location?: string | null; - birthday?: string | null; - avatarId?: DriveFile["id"] | null; - bannerId?: DriveFile["id"] | null; - fields?: { - name: string; - value: string; - }[]; - isLocked?: boolean; - isExplorable?: boolean; - hideOnlineStatus?: boolean; - carefulBot?: boolean; - autoAcceptFollowed?: boolean; - noCrawle?: boolean; - preventAiLearning?: boolean; - isBot?: boolean; - isCat?: boolean; - injectFeaturedNote?: boolean; - receiveAnnouncementEmail?: boolean; - alwaysMarkNsfw?: boolean; - mutedWords?: string[][]; - mutingNotificationTypes?: Notification_2["type"][]; - emailNotificationTypes?: string[]; - }; - res: MeDetailed; - }; - "i/user-group-invites": { - req: TODO; - res: TODO; - }; - "i/2fa/done": { - req: TODO; - res: TODO; - }; - "i/2fa/key-done": { - req: TODO; - res: TODO; - }; - "i/2fa/password-less": { - req: TODO; - res: TODO; - }; - "i/2fa/register-key": { - req: TODO; - res: TODO; - }; - "i/2fa/register": { - req: TODO; - res: TODO; - }; - "i/2fa/update-key": { - req: TODO; - res: TODO; - }; - "i/2fa/remove-key": { - req: TODO; - res: TODO; - }; - "i/2fa/unregister": { - req: TODO; - res: TODO; - }; - "messaging/history": { - req: { - limit?: number; - group?: boolean; - }; - res: MessagingMessage[]; - }; - "messaging/messages": { - req: { - userId?: User["id"]; - groupId?: UserGroup["id"]; - limit?: number; - sinceId?: MessagingMessage["id"]; - untilId?: MessagingMessage["id"]; - markAsRead?: boolean; - }; - res: MessagingMessage[]; - }; - "messaging/messages/create": { - req: { - userId?: User["id"]; - groupId?: UserGroup["id"]; - text?: string; - fileId?: DriveFile["id"]; - }; - res: MessagingMessage; - }; - "messaging/messages/delete": { - req: { - messageId: MessagingMessage["id"]; - }; - res: null; - }; - "messaging/messages/read": { - req: { - messageId: MessagingMessage["id"]; - }; - res: null; - }; - meta: { - req: { - detail?: boolean; - }; - res: { - $switch: { - $cases: [ - [ - { - detail: true; - }, - DetailedInstanceMetadata, - ], - [ - { - detail: false; - }, - LiteInstanceMetadata, - ], - [ - { - detail: boolean; - }, - LiteInstanceMetadata | DetailedInstanceMetadata, - ], - ]; - $default: LiteInstanceMetadata; - }; - }; - }; - "miauth/gen-token": { - req: TODO; - res: TODO; - }; - "mute/create": { - req: TODO; - res: TODO; - }; - "mute/delete": { - req: { - userId: User["id"]; - }; - res: null; - }; - "mute/list": { - req: TODO; - res: TODO; - }; - "renote-mute/create": { - req: TODO; - res: TODO; - }; - "renote-mute/delete": { - req: { - userId: User["id"]; - }; - res: null; - }; - "renote-mute/list": { - req: TODO; - res: TODO; - }; - "my/apps": { - req: TODO; - res: TODO; - }; - notes: { - req: { - limit?: number; - sinceId?: Note["id"]; - untilId?: Note["id"]; - }; - res: Note[]; - }; - "notes/children": { - req: { - noteId: Note["id"]; - limit?: number; - sinceId?: Note["id"]; - untilId?: Note["id"]; - }; - res: Note[]; - }; - "notes/clips": { - req: TODO; - res: TODO; - }; - "notes/conversation": { - req: TODO; - res: TODO; - }; - "notes/create": { - req: NoteSubmitReq; - res: { - createdNote: Note; - }; - }; - "notes/delete": { - req: { - noteId: Note["id"]; - }; - res: null; - }; - "notes/edit": { - req: NoteSubmitReq; - res: { - createdNote: Note; - }; - }; - "notes/favorites/create": { - req: { - noteId: Note["id"]; - }; - res: null; - }; - "notes/favorites/delete": { - req: { - noteId: Note["id"]; - }; - res: null; - }; - "notes/featured": { - req: TODO; - res: Note[]; - }; - "notes/global-timeline": { - req: { - limit?: number; - sinceId?: Note["id"]; - untilId?: Note["id"]; - sinceDate?: number; - untilDate?: number; - }; - res: Note[]; - }; - "notes/recommended-timeline": { - req: { - limit?: number; - sinceId?: Note["id"]; - untilId?: Note["id"]; - sinceDate?: number; - untilDate?: number; - }; - res: Note[]; - }; - "notes/hybrid-timeline": { - req: { - limit?: number; - sinceId?: Note["id"]; - untilId?: Note["id"]; - sinceDate?: number; - untilDate?: number; - }; - res: Note[]; - }; - "notes/local-timeline": { - req: { - limit?: number; - sinceId?: Note["id"]; - untilId?: Note["id"]; - sinceDate?: number; - untilDate?: number; - }; - res: Note[]; - }; - "notes/mentions": { - req: { - following?: boolean; - limit?: number; - sinceId?: Note["id"]; - untilId?: Note["id"]; - }; - res: Note[]; - }; - "notes/polls/recommendation": { - req: TODO; - res: TODO; - }; - "notes/polls/vote": { - req: { - noteId: Note["id"]; - choice: number; - }; - res: null; - }; - "notes/reactions": { - req: { - noteId: Note["id"]; - type?: string | null; - limit?: number; - }; - res: NoteReaction[]; - }; - "notes/reactions/create": { - req: { - noteId: Note["id"]; - reaction: string; - }; - res: null; - }; - "notes/reactions/delete": { - req: { - noteId: Note["id"]; - }; - res: null; - }; - "notes/renotes": { - req: { - limit?: number; - sinceId?: Note["id"]; - untilId?: Note["id"]; - noteId: Note["id"]; - }; - res: Note[]; - }; - "notes/replies": { - req: { - limit?: number; - sinceId?: Note["id"]; - untilId?: Note["id"]; - noteId: Note["id"]; - }; - res: Note[]; - }; - "notes/search-by-tag": { - req: TODO; - res: TODO; - }; - "notes/search": { - req: TODO; - res: TODO; - }; - "notes/show": { - req: { - noteId: Note["id"]; - }; - res: Note; - }; - "notes/state": { - req: TODO; - res: TODO; - }; - "notes/timeline": { - req: { - limit?: number; - sinceId?: Note["id"]; - untilId?: Note["id"]; - sinceDate?: number; - untilDate?: number; - }; - res: Note[]; - }; - "notes/unrenote": { - req: { - noteId: Note["id"]; - }; - res: null; - }; - "notes/user-list-timeline": { - req: { - listId: UserList["id"]; - limit?: number; - sinceId?: Note["id"]; - untilId?: Note["id"]; - sinceDate?: number; - untilDate?: number; - }; - res: Note[]; - }; - "notes/watching/create": { - req: TODO; - res: TODO; - }; - "notes/watching/delete": { - req: { - noteId: Note["id"]; - }; - res: null; - }; - "notifications/create": { - req: { - body: string; - header?: string | null; - icon?: string | null; - }; - res: null; - }; - "notifications/mark-all-as-read": { - req: NoParams; - res: null; - }; - "notifications/read": { - req: { - notificationId: Notification_2["id"]; - }; - res: null; - }; - "page-push": { - req: { - pageId: Page["id"]; - event: string; - var?: any; - }; - res: null; - }; - "pages/create": { - req: TODO; - res: Page; - }; - "pages/delete": { - req: { - pageId: Page["id"]; - }; - res: null; - }; - "pages/featured": { - req: NoParams; - res: Page[]; - }; - "pages/like": { - req: { - pageId: Page["id"]; - }; - res: null; - }; - "pages/show": { - req: { - pageId?: Page["id"]; - name?: string; - username?: string; - }; - res: Page; - }; - "pages/unlike": { - req: { - pageId: Page["id"]; - }; - res: null; - }; - "pages/update": { - req: TODO; - res: null; - }; - ping: { - req: NoParams; - res: { - pong: number; - }; - }; - "pinned-users": { - req: TODO; - res: TODO; - }; - "promo/read": { - req: TODO; - res: TODO; - }; - "request-reset-password": { - req: { - username: string; - email: string; - }; - res: null; - }; - "reset-password": { - req: { - token: string; - password: string; - }; - res: null; - }; - "room/show": { - req: TODO; - res: TODO; - }; - "room/update": { - req: TODO; - res: TODO; - }; - stats: { - req: NoParams; - res: Stats; - }; - "server-info": { - req: NoParams; - res: ServerInfo; - }; - "latest-version": { - req: NoParams; - res: TODO; - }; - "sw/register": { - req: TODO; - res: TODO; - }; - "username/available": { - req: { - username: string; - }; - res: { - available: boolean; - }; - }; - users: { - req: { - limit?: number; - offset?: number; - sort?: UserSorting; - origin?: OriginType; - }; - res: User[]; - }; - "users/clips": { - req: TODO; - res: TODO; - }; - "users/followers": { - req: { - userId?: User["id"]; - username?: User["username"]; - host?: User["host"] | null; - limit?: number; - sinceId?: Following["id"]; - untilId?: Following["id"]; - }; - res: FollowingFollowerPopulated[]; - }; - "users/following": { - req: { - userId?: User["id"]; - username?: User["username"]; - host?: User["host"] | null; - limit?: number; - sinceId?: Following["id"]; - untilId?: Following["id"]; - }; - res: FollowingFolloweePopulated[]; - }; - "users/gallery/posts": { - req: TODO; - res: TODO; - }; - "users/get-frequently-replied-users": { - req: TODO; - res: TODO; - }; - "users/groups/create": { - req: TODO; - res: TODO; - }; - "users/groups/delete": { - req: { - groupId: UserGroup["id"]; - }; - res: null; - }; - "users/groups/invitations/accept": { - req: TODO; - res: TODO; - }; - "users/groups/invitations/reject": { - req: TODO; - res: TODO; - }; - "users/groups/invite": { - req: TODO; - res: TODO; - }; - "users/groups/joined": { - req: TODO; - res: TODO; - }; - "users/groups/owned": { - req: TODO; - res: TODO; - }; - "users/groups/pull": { - req: TODO; - res: TODO; - }; - "users/groups/show": { - req: TODO; - res: TODO; - }; - "users/groups/transfer": { - req: TODO; - res: TODO; - }; - "users/groups/update": { - req: TODO; - res: TODO; - }; - "users/lists/create": { - req: { - name: string; - }; - res: UserList; - }; - "users/lists/delete": { - req: { - listId: UserList["id"]; - }; - res: null; - }; - "users/lists/list": { - req: NoParams; - res: UserList[]; - }; - "users/lists/pull": { - req: { - listId: UserList["id"]; - userId: User["id"]; - }; - res: null; - }; - "users/lists/push": { - req: { - listId: UserList["id"]; - userId: User["id"]; - }; - res: null; - }; - "users/lists/show": { - req: { - listId: UserList["id"]; - }; - res: UserList; - }; - "users/lists/update": { - req: { - listId: UserList["id"]; - name: string; - }; - res: UserList; - }; - "users/notes": { - req: { - userId: User["id"]; - limit?: number; - sinceId?: Note["id"]; - untilId?: Note["id"]; - sinceDate?: number; - untilDate?: number; - }; - res: Note[]; - }; - "users/pages": { - req: TODO; - res: TODO; - }; - "users/recommendation": { - req: TODO; - res: TODO; - }; - "users/relation": { - req: TODO; - res: TODO; - }; - "users/report-abuse": { - req: TODO; - res: TODO; - }; - "users/search-by-username-and-host": { - req: TODO; - res: TODO; - }; - "users/search": { - req: TODO; - res: TODO; - }; - "users/show": { - req: - | ShowUserReq - | { - userIds: User["id"][]; - }; - res: { - $switch: { - $cases: [ - [ - { - userIds: User["id"][]; - }, - UserDetailed[], - ], - ]; - $default: UserDetailed; - }; - }; - }; - "users/stats": { - req: TODO; - res: TODO; - }; -}; - -declare namespace entities { - export { - ID, - DateString, - User, - UserLite, - UserDetailed, - UserGroup, - UserList, - MeDetailed, - DriveFile, - DriveFolder, - GalleryPost, - Note, - NoteReaction, - Notification_2 as Notification, - MessagingMessage, - CustomEmoji, - LiteInstanceMetadata, - DetailedInstanceMetadata, - InstanceMetadata, - ServerInfo, - Stats, - Page, - PageEvent, - Announcement, - Antenna, - App, - AuthSession, - Ad, - Clip, - NoteFavorite, - FollowRequest, - Channel, - Following, - FollowingFolloweePopulated, - FollowingFollowerPopulated, - Blocking, - Instance, - Signin, - UserSorting, - OriginType - } -} -export { entities } - -// @public (undocumented) -type FetchLike = ( - input: string, - init?: { - method?: string; - body?: string; - credentials?: RequestCredentials; - cache?: RequestCache; - }, -) => Promise<{ - status: number; - json(): Promise<any>; -}>; - -// @public (undocumented) -export const ffVisibility: readonly ["public", "followers", "private"]; - -// @public (undocumented) -type Following = { - id: ID; - createdAt: DateString; - followerId: User["id"]; - followeeId: User["id"]; -}; - -// @public (undocumented) -type FollowingFolloweePopulated = Following & { - followee: UserDetailed; -}; - -// @public (undocumented) -type FollowingFollowerPopulated = Following & { - follower: UserDetailed; -}; - -// @public (undocumented) -type FollowRequest = { - id: ID; - follower: User; - followee: User; -}; - -// @public (undocumented) -type GalleryPost = TODO_2; - -// @public (undocumented) -type ID = string; - -// @public (undocumented) -type Instance = { - id: ID; - caughtAt: DateString; - host: string; - usersCount: number; - notesCount: number; - followingCount: number; - followersCount: number; - driveUsage: number; - driveFiles: number; - latestRequestSentAt: DateString | null; - latestStatus: number | null; - latestRequestReceivedAt: DateString | null; - lastCommunicatedAt: DateString; - isNotResponding: boolean; - isSuspended: boolean; - softwareName: string | null; - softwareVersion: string | null; - openRegistrations: boolean | null; - name: string | null; - description: string | null; - maintainerName: string | null; - maintainerEmail: string | null; - iconUrl: string | null; - faviconUrl: string | null; - themeColor: string | null; - infoUpdatedAt: DateString | null; -}; - -// @public (undocumented) -type InstanceMetadata = - | LiteInstanceMetadata - | DetailedInstanceMetadata; - -// @public (undocumented) -function isAPIError(reason: any): reason is APIError; - -// @public (undocumented) -type LiteInstanceMetadata = { - maintainerName: string | null; - maintainerEmail: string | null; - version: string; - name: string | null; - uri: string; - description: string | null; - tosUrl: string | null; - disableRegistration: boolean; - disableLocalTimeline: boolean; - disableRecommendedTimeline: boolean; - disableGlobalTimeline: boolean; - driveCapacityPerLocalUserMb: number; - driveCapacityPerRemoteUserMb: number; - enableHcaptcha: boolean; - hcaptchaSiteKey: string | null; - enableRecaptcha: boolean; - recaptchaSiteKey: string | null; - swPublickey: string | null; - maxNoteTextLength: number; - enableEmail: boolean; - enableTwitterIntegration: boolean; - enableGithubIntegration: boolean; - enableDiscordIntegration: boolean; - enableServiceWorker: boolean; - emojis: CustomEmoji[]; - ads: { - id: ID; - ratio: number; - place: string; - url: string; - imageUrl: string; - }[]; -}; - -// @public (undocumented) -type MeDetailed = UserDetailed & { - avatarId: DriveFile["id"]; - bannerId: DriveFile["id"]; - autoAcceptFollowed: boolean; - alwaysMarkNsfw: boolean; - carefulBot: boolean; - emailNotificationTypes: string[]; - hasPendingReceivedFollowRequest: boolean; - hasUnreadAnnouncement: boolean; - hasUnreadAntenna: boolean; - hasUnreadChannel: boolean; - hasUnreadMentions: boolean; - hasUnreadMessagingMessage: boolean; - hasUnreadNotification: boolean; - hasUnreadSpecifiedNotes: boolean; - hideOnlineStatus: boolean; - injectFeaturedNote: boolean; - integrations: Record<string, any>; - isDeleted: boolean; - isExplorable: boolean; - mutedWords: string[][]; - mutingNotificationTypes: string[]; - noCrawle: boolean; - preventAiLearning: boolean; - receiveAnnouncementEmail: boolean; - usePasswordLessLogin: boolean; - [other: string]: any; -}; - -// @public (undocumented) -type MessagingMessage = { - id: ID; - createdAt: DateString; - file: DriveFile | null; - fileId: DriveFile["id"] | null; - isRead: boolean; - reads: User["id"][]; - text: string | null; - user: User; - userId: User["id"]; - recipient?: User | null; - recipientId: User["id"] | null; - group?: UserGroup | null; - groupId: UserGroup["id"] | null; -}; - -// @public (undocumented) -export const mutedNoteReasons: readonly [ - "word", - "manual", - "spam", - "other", -]; - -// @public (undocumented) -type Note = { - id: ID; - createdAt: DateString; - text: string | null; - cw: string | null; - user: User; - userId: User["id"]; - reply?: Note; - replyId: Note["id"]; - renote?: Note; - renoteId: Note["id"]; - files: DriveFile[]; - fileIds: DriveFile["id"][]; - visibility: "public" | "home" | "followers" | "specified"; - visibleUserIds?: User["id"][]; - localOnly?: boolean; - channel?: Channel["id"]; - myReaction?: string; - reactions: Record<string, number>; - renoteCount: number; - repliesCount: number; - poll?: { - expiresAt: DateString | null; - multiple: boolean; - choices: { - isVoted: boolean; - text: string; - votes: number; - }[]; - }; - emojis: { - name: string; - url: string; - }[]; - uri?: string; - url?: string; - updatedAt?: DateString; - isHidden?: boolean; -}; - -// @public (undocumented) -type NoteFavorite = { - id: ID; - createdAt: DateString; - noteId: Note["id"]; - note: Note; -}; - -// @public (undocumented) -type NoteReaction = { - id: ID; - createdAt: DateString; - user: UserLite; - type: string; -}; - -// @public (undocumented) -export const noteVisibilities: readonly [ - "public", - "home", - "followers", - "specified", -]; - -// @public (undocumented) -type Notification_2 = { - id: ID; - createdAt: DateString; - isRead: boolean; -} & ( - | { - type: "reaction"; - reaction: string; - user: User; - userId: User["id"]; - note: Note; - } - | { - type: "reply"; - user: User; - userId: User["id"]; - note: Note; - } - | { - type: "renote"; - user: User; - userId: User["id"]; - note: Note; - } - | { - type: "quote"; - user: User; - userId: User["id"]; - note: Note; - } - | { - type: "mention"; - user: User; - userId: User["id"]; - note: Note; - } - | { - type: "pollVote"; - user: User; - userId: User["id"]; - note: Note; - } - | { - type: "follow"; - user: User; - userId: User["id"]; - } - | { - type: "followRequestAccepted"; - user: User; - userId: User["id"]; - } - | { - type: "receiveFollowRequest"; - user: User; - userId: User["id"]; - } - | { - type: "groupInvited"; - invitation: UserGroup; - user: User; - userId: User["id"]; - } - | { - type: "app"; - header?: string | null; - body: string; - icon?: string | null; - } -); - -// @public (undocumented) -export const notificationTypes: readonly [ - "follow", - "mention", - "reply", - "renote", - "quote", - "reaction", - "pollVote", - "pollEnded", - "receiveFollowRequest", - "followRequestAccepted", - "groupInvited", - "app", -]; - -// @public (undocumented) -type OriginType = "combined" | "local" | "remote"; - -// @public (undocumented) -type Page = { - id: ID; - createdAt: DateString; - updatedAt: DateString; - userId: User["id"]; - user: User; - content: Record<string, any>[]; - variables: Record<string, any>[]; - title: string; - name: string; - summary: string | null; - hideTitleWhenPinned: boolean; - alignCenter: boolean; - font: string; - script: string; - eyeCatchingImageId: DriveFile["id"] | null; - eyeCatchingImage: DriveFile | null; - attachedFiles: any; - likedCount: number; - isLiked?: boolean; -}; - -// @public (undocumented) -type PageEvent = { - pageId: Page["id"]; - event: string; - var: any; - userId: User["id"]; - user: User; -}; - -// @public (undocumented) -export const permissions: string[]; - -// @public (undocumented) -type ServerInfo = { - machine: string; - cpu: { - model: string; - cores: number; - }; - mem: { - total: number; - }; - fs: { - total: number; - used: number; - }; -}; - -// @public (undocumented) -type Signin = { - id: ID; - createdAt: DateString; - ip: string; - headers: Record<string, any>; - success: boolean; -}; - -// @public (undocumented) -type Stats = { - notesCount: number; - originalNotesCount: number; - usersCount: number; - originalUsersCount: number; - instances: number; - driveUsageLocal: number; - driveUsageRemote: number; -}; - -// Warning: (ae-forgotten-export) The symbol "StreamEvents" needs to be exported by the entry point index.d.ts -// -// @public (undocumented) -export class Stream extends EventEmitter<StreamEvents> { - constructor( - origin: string, - user: { - token: string; - } | null, - options?: { - WebSocket?: any; - }, - ); - // (undocumented) - close(): void; - // Warning: (ae-forgotten-export) The symbol "NonSharedConnection" needs to be exported by the entry point index.d.ts - // - // (undocumented) - disconnectToChannel(connection: NonSharedConnection): void; - // Warning: (ae-forgotten-export) The symbol "SharedConnection" needs to be exported by the entry point index.d.ts - // - // (undocumented) - removeSharedConnection(connection: SharedConnection): void; - // Warning: (ae-forgotten-export) The symbol "Pool" needs to be exported by the entry point index.d.ts - // - // (undocumented) - removeSharedConnectionPool(pool: Pool): void; - // (undocumented) - send(typeOrPayload: any, payload?: any): void; - // (undocumented) - state: "initializing" | "reconnecting" | "connected"; - // (undocumented) - useChannel<C extends keyof Channels>( - channel: C, - params?: Channels[C]["params"], - name?: string, - ): ChannelConnection<Channels[C]>; - } - -// @public (undocumented) -type User = UserLite | UserDetailed; - -// @public (undocumented) -type UserDetailed = UserLite & { - bannerBlurhash: string | null; - bannerColor: string | null; - bannerUrl: string | null; - birthday: string | null; - createdAt: DateString; - description: string | null; - ffVisibility: "public" | "followers" | "private"; - fields: { - name: string; - value: string; - }[]; - followersCount: number; - followingCount: number; - hasPendingFollowRequestFromYou: boolean; - hasPendingFollowRequestToYou: boolean; - isAdmin: boolean; - isBlocked: boolean; - isBlocking: boolean; - isBot: boolean; - isCat: boolean; - isFollowed: boolean; - isFollowing: boolean; - isLocked: boolean; - isModerator: boolean; - isMuted: boolean; - isRenoteMuted: boolean; - isSilenced: boolean; - isSuspended: boolean; - lang: string | null; - lastFetchedAt?: DateString; - location: string | null; - notesCount: number; - pinnedNoteIds: ID[]; - pinnedNotes: Note[]; - pinnedPage: Page | null; - pinnedPageId: string | null; - publicReactions: boolean; - securityKeys: boolean; - twoFactorEnabled: boolean; - updatedAt: DateString | null; - uri: string | null; - url: string | null; -}; - -// @public (undocumented) -type UserGroup = TODO_2; - -// @public (undocumented) -type UserList = { - id: ID; - createdAt: DateString; - name: string; - userIds: User["id"][]; -}; - -// @public (undocumented) -type UserLite = { - id: ID; - username: string; - host: string | null; - name: string; - onlineStatus: "online" | "active" | "offline" | "unknown"; - avatarUrl: string; - avatarBlurhash: string; - alsoKnownAs: string[]; - movedToUri: any; - emojis: { - name: string; - url: string; - }[]; - instance?: { - name: Instance["name"]; - softwareName: Instance["softwareName"]; - softwareVersion: Instance["softwareVersion"]; - iconUrl: Instance["iconUrl"]; - faviconUrl: Instance["faviconUrl"]; - themeColor: Instance["themeColor"]; - }; -}; - -// @public (undocumented) -type UserSorting = - | "+follower" - | "-follower" - | "+createdAt" - | "-createdAt" - | "+updatedAt" - | "-updatedAt"; - -// Warnings were encountered during analysis: -// -// src/api.types.ts:80:37 - (ae-forgotten-export) The symbol "TODO" needs to be exported by the entry point index.d.ts -// src/api.types.ts:83:28 - (ae-forgotten-export) The symbol "NoParams" needs to be exported by the entry point index.d.ts -// src/api.types.ts:853:5 - (ae-forgotten-export) The symbol "NoteSubmitReq" needs to be exported by the entry point index.d.ts -// src/api.types.ts:1094:3 - (ae-forgotten-export) The symbol "ShowUserReq" needs to be exported by the entry point index.d.ts -// src/streaming.types.ts:56:18 - (ae-forgotten-export) The symbol "FIXME" needs to be exported by the entry point index.d.ts - -// (No @packageDocumentation comment for this package) - -``` diff --git a/packages/firefish-js/markdown/firefish-js.acct.md b/packages/firefish-js/markdown/firefish-js.acct.md deleted file mode 100644 index 6779aed150..0000000000 --- a/packages/firefish-js/markdown/firefish-js.acct.md +++ /dev/null @@ -1,14 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) > [firefish-js](./firefish-js.md) > [Acct](./firefish-js.acct.md) - -## Acct type - -**Signature:** - -```typescript -export declare type Acct = { - username: string; - host: string | null; -}; -``` diff --git a/packages/firefish-js/markdown/firefish-js.api.apiclient._constructor_.md b/packages/firefish-js/markdown/firefish-js.api.apiclient._constructor_.md deleted file mode 100644 index f9af10bc40..0000000000 --- a/packages/firefish-js/markdown/firefish-js.api.apiclient._constructor_.md +++ /dev/null @@ -1,24 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) > [firefish-js](./firefish-js.md) > [api](./firefish-js.api.md) > [APIClient](./firefish-js.api.apiclient.md) > [(constructor)](./firefish-js.api.apiclient._constructor_.md) - -## api.APIClient.(constructor) - -Constructs a new instance of the `APIClient` class - -**Signature:** - -```typescript -constructor(opts: { - origin: APIClient["origin"]; - credential?: APIClient["credential"]; - fetch?: APIClient["fetch"] | null | undefined; - }); -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| opts | { origin: [APIClient](./firefish-js.api.apiclient.md)<!-- -->\["origin"\]; credential?: [APIClient](./firefish-js.api.apiclient.md)<!-- -->\["credential"\]; fetch?: [APIClient](./firefish-js.api.apiclient.md)<!-- -->\["fetch"\] \| null \| undefined; } | | - diff --git a/packages/firefish-js/markdown/firefish-js.api.apiclient.credential.md b/packages/firefish-js/markdown/firefish-js.api.apiclient.credential.md deleted file mode 100644 index 323203aac1..0000000000 --- a/packages/firefish-js/markdown/firefish-js.api.apiclient.credential.md +++ /dev/null @@ -1,11 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) > [firefish-js](./firefish-js.md) > [api](./firefish-js.api.md) > [APIClient](./firefish-js.api.apiclient.md) > [credential](./firefish-js.api.apiclient.credential.md) - -## api.APIClient.credential property - -**Signature:** - -```typescript -credential: string | null | undefined; -``` diff --git a/packages/firefish-js/markdown/firefish-js.api.apiclient.fetch.md b/packages/firefish-js/markdown/firefish-js.api.apiclient.fetch.md deleted file mode 100644 index ee2ad9b8de..0000000000 --- a/packages/firefish-js/markdown/firefish-js.api.apiclient.fetch.md +++ /dev/null @@ -1,11 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) > [firefish-js](./firefish-js.md) > [api](./firefish-js.api.md) > [APIClient](./firefish-js.api.apiclient.md) > [fetch](./firefish-js.api.apiclient.fetch.md) - -## api.APIClient.fetch property - -**Signature:** - -```typescript -fetch: FetchLike; -``` diff --git a/packages/firefish-js/markdown/firefish-js.api.apiclient.md b/packages/firefish-js/markdown/firefish-js.api.apiclient.md deleted file mode 100644 index 077e8f2957..0000000000 --- a/packages/firefish-js/markdown/firefish-js.api.apiclient.md +++ /dev/null @@ -1,32 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) > [firefish-js](./firefish-js.md) > [api](./firefish-js.api.md) > [APIClient](./firefish-js.api.apiclient.md) - -## api.APIClient class - -**Signature:** - -```typescript -export declare class APIClient -``` - -## Constructors - -| Constructor | Modifiers | Description | -| --- | --- | --- | -| [(constructor)(opts)](./firefish-js.api.apiclient._constructor_.md) | | Constructs a new instance of the <code>APIClient</code> class | - -## Properties - -| Property | Modifiers | Type | Description | -| --- | --- | --- | --- | -| [credential](./firefish-js.api.apiclient.credential.md) | | string \| null \| undefined | | -| [fetch](./firefish-js.api.apiclient.fetch.md) | | [FetchLike](./firefish-js.api.fetchlike.md) | | -| [origin](./firefish-js.api.apiclient.origin.md) | | string | | - -## Methods - -| Method | Modifiers | Description | -| --- | --- | --- | -| [request(endpoint, params, credential)](./firefish-js.api.apiclient.request.md) | | | - diff --git a/packages/firefish-js/markdown/firefish-js.api.apiclient.origin.md b/packages/firefish-js/markdown/firefish-js.api.apiclient.origin.md deleted file mode 100644 index 74eff2e1fd..0000000000 --- a/packages/firefish-js/markdown/firefish-js.api.apiclient.origin.md +++ /dev/null @@ -1,11 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) > [firefish-js](./firefish-js.md) > [api](./firefish-js.api.md) > [APIClient](./firefish-js.api.apiclient.md) > [origin](./firefish-js.api.apiclient.origin.md) - -## api.APIClient.origin property - -**Signature:** - -```typescript -origin: string; -``` diff --git a/packages/firefish-js/markdown/firefish-js.api.apiclient.request.md b/packages/firefish-js/markdown/firefish-js.api.apiclient.request.md deleted file mode 100644 index 1d387fb33e..0000000000 --- a/packages/firefish-js/markdown/firefish-js.api.apiclient.request.md +++ /dev/null @@ -1,57 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) > [firefish-js](./firefish-js.md) > [api](./firefish-js.api.md) > [APIClient](./firefish-js.api.apiclient.md) > [request](./firefish-js.api.apiclient.request.md) - -## api.APIClient.request() method - -**Signature:** - -```typescript -request<E extends keyof Endpoints, P extends Endpoints[E]["req"]>( - endpoint: E, - params?: P, - credential?: string | null | undefined, - ): Promise< - Endpoints[E]["res"] extends { - $switch: { - $cases: [any, any][]; - $default: any; - }; - } - ? IsCaseMatched<E, P, 0> extends true - ? GetCaseResult<E, P, 0> - : IsCaseMatched<E, P, 1> extends true - ? GetCaseResult<E, P, 1> - : IsCaseMatched<E, P, 2> extends true - ? GetCaseResult<E, P, 2> - : IsCaseMatched<E, P, 3> extends true - ? GetCaseResult<E, P, 3> - : IsCaseMatched<E, P, 4> extends true - ? GetCaseResult<E, P, 4> - : IsCaseMatched<E, P, 5> extends true - ? GetCaseResult<E, P, 5> - : IsCaseMatched<E, P, 6> extends true - ? GetCaseResult<E, P, 6> - : IsCaseMatched<E, P, 7> extends true - ? GetCaseResult<E, P, 7> - : IsCaseMatched<E, P, 8> extends true - ? GetCaseResult<E, P, 8> - : IsCaseMatched<E, P, 9> extends true - ? GetCaseResult<E, P, 9> - : Endpoints[E]["res"]["$switch"]["$default"] - : Endpoints[E]["res"] - >; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| endpoint | E | | -| params | P | _(Optional)_ | -| credential | string \| null \| undefined | _(Optional)_ | - -**Returns:** - -Promise< [Endpoints](./firefish-js.endpoints.md)<!-- -->\[E\]\["res"\] extends { $switch: { $cases: \[any, any\]\[\]; $default: any; }; } ? IsCaseMatched<E, P, 0> extends true ? GetCaseResult<E, P, 0> : IsCaseMatched<E, P, 1> extends true ? GetCaseResult<E, P, 1> : IsCaseMatched<E, P, 2> extends true ? GetCaseResult<E, P, 2> : IsCaseMatched<E, P, 3> extends true ? GetCaseResult<E, P, 3> : IsCaseMatched<E, P, 4> extends true ? GetCaseResult<E, P, 4> : IsCaseMatched<E, P, 5> extends true ? GetCaseResult<E, P, 5> : IsCaseMatched<E, P, 6> extends true ? GetCaseResult<E, P, 6> : IsCaseMatched<E, P, 7> extends true ? GetCaseResult<E, P, 7> : IsCaseMatched<E, P, 8> extends true ? GetCaseResult<E, P, 8> : IsCaseMatched<E, P, 9> extends true ? GetCaseResult<E, P, 9> : [Endpoints](./firefish-js.endpoints.md)<!-- -->\[E\]\["res"\]\["$switch"\]\["$default"\] : [Endpoints](./firefish-js.endpoints.md)<!-- -->\[E\]\["res"\] > - diff --git a/packages/firefish-js/markdown/firefish-js.api.apierror.md b/packages/firefish-js/markdown/firefish-js.api.apierror.md deleted file mode 100644 index 7eb3bb2d80..0000000000 --- a/packages/firefish-js/markdown/firefish-js.api.apierror.md +++ /dev/null @@ -1,17 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) > [firefish-js](./firefish-js.md) > [api](./firefish-js.api.md) > [APIError](./firefish-js.api.apierror.md) - -## api.APIError type - -**Signature:** - -```typescript -export declare type APIError = { - id: string; - code: string; - message: string; - kind: "client" | "server"; - info: Record<string, any>; -}; -``` diff --git a/packages/firefish-js/markdown/firefish-js.api.fetchlike.md b/packages/firefish-js/markdown/firefish-js.api.fetchlike.md deleted file mode 100644 index 8edc80de29..0000000000 --- a/packages/firefish-js/markdown/firefish-js.api.fetchlike.md +++ /dev/null @@ -1,22 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) > [firefish-js](./firefish-js.md) > [api](./firefish-js.api.md) > [FetchLike](./firefish-js.api.fetchlike.md) - -## api.FetchLike type - -**Signature:** - -```typescript -export declare type FetchLike = ( - input: string, - init?: { - method?: string; - body?: string; - credentials?: RequestCredentials; - cache?: RequestCache; - }, -) => Promise<{ - status: number; - json(): Promise<any>; -}>; -``` diff --git a/packages/firefish-js/markdown/firefish-js.api.isapierror.md b/packages/firefish-js/markdown/firefish-js.api.isapierror.md deleted file mode 100644 index ea31e0c9fb..0000000000 --- a/packages/firefish-js/markdown/firefish-js.api.isapierror.md +++ /dev/null @@ -1,22 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) > [firefish-js](./firefish-js.md) > [api](./firefish-js.api.md) > [isAPIError](./firefish-js.api.isapierror.md) - -## api.isAPIError() function - -**Signature:** - -```typescript -export declare function isAPIError(reason: any): reason is APIError; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| reason | any | | - -**Returns:** - -reason is [APIError](./firefish-js.api.apierror.md) - diff --git a/packages/firefish-js/markdown/firefish-js.api.md b/packages/firefish-js/markdown/firefish-js.api.md deleted file mode 100644 index c0dbed5355..0000000000 --- a/packages/firefish-js/markdown/firefish-js.api.md +++ /dev/null @@ -1,25 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) > [firefish-js](./firefish-js.md) > [api](./firefish-js.api.md) - -## api namespace - -## Classes - -| Class | Description | -| --- | --- | -| [APIClient](./firefish-js.api.apiclient.md) | | - -## Functions - -| Function | Description | -| --- | --- | -| [isAPIError(reason)](./firefish-js.api.isapierror.md) | | - -## Type Aliases - -| Type Alias | Description | -| --- | --- | -| [APIError](./firefish-js.api.apierror.md) | | -| [FetchLike](./firefish-js.api.fetchlike.md) | | - diff --git a/packages/firefish-js/markdown/firefish-js.channelconnection._constructor_.md b/packages/firefish-js/markdown/firefish-js.channelconnection._constructor_.md deleted file mode 100644 index 4705c06275..0000000000 --- a/packages/firefish-js/markdown/firefish-js.channelconnection._constructor_.md +++ /dev/null @@ -1,22 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) > [firefish-js](./firefish-js.md) > [ChannelConnection](./firefish-js.channelconnection.md) > [(constructor)](./firefish-js.channelconnection._constructor_.md) - -## ChannelConnection.(constructor) - -Constructs a new instance of the `Connection` class - -**Signature:** - -```typescript -constructor(stream: Stream, channel: string, name?: string); -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| stream | [Stream](./firefish-js.stream.md) | | -| channel | string | | -| name | string | _(Optional)_ | - diff --git a/packages/firefish-js/markdown/firefish-js.channelconnection.channel.md b/packages/firefish-js/markdown/firefish-js.channelconnection.channel.md deleted file mode 100644 index 71569bac51..0000000000 --- a/packages/firefish-js/markdown/firefish-js.channelconnection.channel.md +++ /dev/null @@ -1,11 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) > [firefish-js](./firefish-js.md) > [ChannelConnection](./firefish-js.channelconnection.md) > [channel](./firefish-js.channelconnection.channel.md) - -## ChannelConnection.channel property - -**Signature:** - -```typescript -channel: string; -``` diff --git a/packages/firefish-js/markdown/firefish-js.channelconnection.dispose.md b/packages/firefish-js/markdown/firefish-js.channelconnection.dispose.md deleted file mode 100644 index d968d4ad98..0000000000 --- a/packages/firefish-js/markdown/firefish-js.channelconnection.dispose.md +++ /dev/null @@ -1,15 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) > [firefish-js](./firefish-js.md) > [ChannelConnection](./firefish-js.channelconnection.md) > [dispose](./firefish-js.channelconnection.dispose.md) - -## ChannelConnection.dispose() method - -**Signature:** - -```typescript -abstract dispose(): void; -``` -**Returns:** - -void - diff --git a/packages/firefish-js/markdown/firefish-js.channelconnection.id.md b/packages/firefish-js/markdown/firefish-js.channelconnection.id.md deleted file mode 100644 index 1f4f9896f4..0000000000 --- a/packages/firefish-js/markdown/firefish-js.channelconnection.id.md +++ /dev/null @@ -1,11 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) > [firefish-js](./firefish-js.md) > [ChannelConnection](./firefish-js.channelconnection.md) > [id](./firefish-js.channelconnection.id.md) - -## ChannelConnection.id property - -**Signature:** - -```typescript -abstract id: string; -``` diff --git a/packages/firefish-js/markdown/firefish-js.channelconnection.incount.md b/packages/firefish-js/markdown/firefish-js.channelconnection.incount.md deleted file mode 100644 index e53cecf6fd..0000000000 --- a/packages/firefish-js/markdown/firefish-js.channelconnection.incount.md +++ /dev/null @@ -1,11 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) > [firefish-js](./firefish-js.md) > [ChannelConnection](./firefish-js.channelconnection.md) > [inCount](./firefish-js.channelconnection.incount.md) - -## ChannelConnection.inCount property - -**Signature:** - -```typescript -inCount: number; -``` diff --git a/packages/firefish-js/markdown/firefish-js.channelconnection.md b/packages/firefish-js/markdown/firefish-js.channelconnection.md deleted file mode 100644 index 68e77916e6..0000000000 --- a/packages/firefish-js/markdown/firefish-js.channelconnection.md +++ /dev/null @@ -1,39 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) > [firefish-js](./firefish-js.md) > [ChannelConnection](./firefish-js.channelconnection.md) - -## ChannelConnection class - -**Signature:** - -```typescript -export declare abstract class Connection< - Channel extends AnyOf<Channels> = any, -> extends EventEmitter<Channel["events"]> -``` -**Extends:** EventEmitter<Channel\["events"\]> - -## Constructors - -| Constructor | Modifiers | Description | -| --- | --- | --- | -| [(constructor)(stream, channel, name)](./firefish-js.channelconnection._constructor_.md) | | Constructs a new instance of the <code>Connection</code> class | - -## Properties - -| Property | Modifiers | Type | Description | -| --- | --- | --- | --- | -| [channel](./firefish-js.channelconnection.channel.md) | | string | | -| [id](./firefish-js.channelconnection.id.md) | <code>abstract</code> | string | | -| [inCount](./firefish-js.channelconnection.incount.md) | | number | | -| [name?](./firefish-js.channelconnection.name.md) | | string | _(Optional)_ | -| [outCount](./firefish-js.channelconnection.outcount.md) | | number | | -| [stream](./firefish-js.channelconnection.stream.md) | <code>protected</code> | [Stream](./firefish-js.stream.md) | | - -## Methods - -| Method | Modifiers | Description | -| --- | --- | --- | -| [dispose()](./firefish-js.channelconnection.dispose.md) | <code>abstract</code> | | -| [send(type, body)](./firefish-js.channelconnection.send.md) | | | - diff --git a/packages/firefish-js/markdown/firefish-js.channelconnection.name.md b/packages/firefish-js/markdown/firefish-js.channelconnection.name.md deleted file mode 100644 index 77acd5ea58..0000000000 --- a/packages/firefish-js/markdown/firefish-js.channelconnection.name.md +++ /dev/null @@ -1,11 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) > [firefish-js](./firefish-js.md) > [ChannelConnection](./firefish-js.channelconnection.md) > [name](./firefish-js.channelconnection.name.md) - -## ChannelConnection.name property - -**Signature:** - -```typescript -name?: string; -``` diff --git a/packages/firefish-js/markdown/firefish-js.channelconnection.outcount.md b/packages/firefish-js/markdown/firefish-js.channelconnection.outcount.md deleted file mode 100644 index ec79be6339..0000000000 --- a/packages/firefish-js/markdown/firefish-js.channelconnection.outcount.md +++ /dev/null @@ -1,11 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) > [firefish-js](./firefish-js.md) > [ChannelConnection](./firefish-js.channelconnection.md) > [outCount](./firefish-js.channelconnection.outcount.md) - -## ChannelConnection.outCount property - -**Signature:** - -```typescript -outCount: number; -``` diff --git a/packages/firefish-js/markdown/firefish-js.channelconnection.send.md b/packages/firefish-js/markdown/firefish-js.channelconnection.send.md deleted file mode 100644 index 75b869e866..0000000000 --- a/packages/firefish-js/markdown/firefish-js.channelconnection.send.md +++ /dev/null @@ -1,26 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) > [firefish-js](./firefish-js.md) > [ChannelConnection](./firefish-js.channelconnection.md) > [send](./firefish-js.channelconnection.send.md) - -## ChannelConnection.send() method - -**Signature:** - -```typescript -send<T extends keyof Channel["receives"]>( - type: T, - body: Channel["receives"][T], - ): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| type | T | | -| body | Channel\["receives"\]\[T\] | | - -**Returns:** - -void - diff --git a/packages/firefish-js/markdown/firefish-js.channelconnection.stream.md b/packages/firefish-js/markdown/firefish-js.channelconnection.stream.md deleted file mode 100644 index a36829797d..0000000000 --- a/packages/firefish-js/markdown/firefish-js.channelconnection.stream.md +++ /dev/null @@ -1,11 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) > [firefish-js](./firefish-js.md) > [ChannelConnection](./firefish-js.channelconnection.md) > [stream](./firefish-js.channelconnection.stream.md) - -## ChannelConnection.stream property - -**Signature:** - -```typescript -protected stream: Stream; -``` diff --git a/packages/firefish-js/markdown/firefish-js.channels.md b/packages/firefish-js/markdown/firefish-js.channels.md deleted file mode 100644 index 555047e3e0..0000000000 --- a/packages/firefish-js/markdown/firefish-js.channels.md +++ /dev/null @@ -1,143 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) > [firefish-js](./firefish-js.md) > [Channels](./firefish-js.channels.md) - -## Channels type - -**Signature:** - -```typescript -export declare type Channels = { - main: { - params: null; - events: { - notification: (payload: Notification) => void; - mention: (payload: Note) => void; - reply: (payload: Note) => void; - renote: (payload: Note) => void; - follow: (payload: User) => void; - followed: (payload: User) => void; - unfollow: (payload: User) => void; - meUpdated: (payload: MeDetailed) => void; - pageEvent: (payload: PageEvent) => void; - urlUploadFinished: (payload: { - marker: string; - file: DriveFile; - }) => void; - readAllNotifications: () => void; - unreadNotification: (payload: Notification) => void; - unreadMention: (payload: Note["id"]) => void; - readAllUnreadMentions: () => void; - unreadSpecifiedNote: (payload: Note["id"]) => void; - readAllUnreadSpecifiedNotes: () => void; - readAllMessagingMessages: () => void; - messagingMessage: (payload: MessagingMessage) => void; - unreadMessagingMessage: (payload: MessagingMessage) => void; - readAllAntennas: () => void; - unreadAntenna: (payload: Antenna) => void; - readAllAnnouncements: () => void; - readAllChannels: () => void; - unreadChannel: (payload: Note["id"]) => void; - myTokenRegenerated: () => void; - reversiNoInvites: () => void; - reversiInvited: (payload: FIXME) => void; - signin: (payload: FIXME) => void; - registryUpdated: (payload: { - scope?: string[]; - key: string; - value: any | null; - }) => void; - driveFileCreated: (payload: DriveFile) => void; - readAntenna: (payload: Antenna) => void; - }; - receives: null; - }; - homeTimeline: { - params: null; - events: { - note: (payload: Note) => void; - }; - receives: null; - }; - localTimeline: { - params: null; - events: { - note: (payload: Note) => void; - }; - receives: null; - }; - hybridTimeline: { - params: null; - events: { - note: (payload: Note) => void; - }; - receives: null; - }; - recommendedTimeline: { - params: null; - events: { - note: (payload: Note) => void; - }; - receives: null; - }; - globalTimeline: { - params: null; - events: { - note: (payload: Note) => void; - }; - receives: null; - }; - antenna: { - params: { - antennaId: Antenna["id"]; - }; - events: { - note: (payload: Note) => void; - }; - receives: null; - }; - messaging: { - params: { - otherparty?: User["id"] | null; - group?: UserGroup["id"] | null; - }; - events: { - message: (payload: MessagingMessage) => void; - deleted: (payload: MessagingMessage["id"]) => void; - read: (payload: MessagingMessage["id"][]) => void; - typers: (payload: User[]) => void; - }; - receives: { - read: { - id: MessagingMessage["id"]; - }; - }; - }; - serverStats: { - params: null; - events: { - stats: (payload: FIXME) => void; - }; - receives: { - requestLog: { - id: string | number; - length: number; - }; - }; - }; - queueStats: { - params: null; - events: { - stats: (payload: FIXME) => void; - }; - receives: { - requestLog: { - id: string | number; - length: number; - }; - }; - }; -}; -``` -**References:** [Note](./firefish-js.entities.note.md)<!-- -->, [User](./firefish-js.entities.user.md)<!-- -->, [MeDetailed](./firefish-js.entities.medetailed.md)<!-- -->, [PageEvent](./firefish-js.entities.pageevent.md)<!-- -->, [DriveFile](./firefish-js.entities.drivefile.md)<!-- -->, [MessagingMessage](./firefish-js.entities.messagingmessage.md)<!-- -->, [Antenna](./firefish-js.entities.antenna.md)<!-- -->, [UserGroup](./firefish-js.entities.usergroup.md) - diff --git a/packages/firefish-js/markdown/firefish-js.endpoints.md b/packages/firefish-js/markdown/firefish-js.endpoints.md deleted file mode 100644 index 4d2162d571..0000000000 --- a/packages/firefish-js/markdown/firefish-js.endpoints.md +++ /dev/null @@ -1,1911 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) > [firefish-js](./firefish-js.md) > [Endpoints](./firefish-js.endpoints.md) - -## Endpoints type - -**Signature:** - -```typescript -export declare type Endpoints = { - "admin/abuse-user-reports": { - req: TODO; - res: TODO; - }; - "admin/delete-all-files-of-a-user": { - req: { - userId: User["id"]; - }; - res: null; - }; - "admin/delete-logs": { - req: NoParams; - res: null; - }; - "admin/get-index-stats": { - req: TODO; - res: TODO; - }; - "admin/get-table-stats": { - req: TODO; - res: TODO; - }; - "admin/invite": { - req: TODO; - res: TODO; - }; - "admin/logs": { - req: TODO; - res: TODO; - }; - "admin/meta": { - req: TODO; - res: TODO; - }; - "admin/reset-password": { - req: TODO; - res: TODO; - }; - "admin/resolve-abuse-user-report": { - req: TODO; - res: TODO; - }; - "admin/resync-chart": { - req: TODO; - res: TODO; - }; - "admin/send-email": { - req: TODO; - res: TODO; - }; - "admin/server-info": { - req: TODO; - res: TODO; - }; - "admin/show-moderation-logs": { - req: TODO; - res: TODO; - }; - "admin/show-user": { - req: TODO; - res: TODO; - }; - "admin/show-users": { - req: TODO; - res: TODO; - }; - "admin/silence-user": { - req: TODO; - res: TODO; - }; - "admin/suspend-user": { - req: TODO; - res: TODO; - }; - "admin/unsilence-user": { - req: TODO; - res: TODO; - }; - "admin/unsuspend-user": { - req: TODO; - res: TODO; - }; - "admin/update-meta": { - req: TODO; - res: TODO; - }; - "admin/vacuum": { - req: TODO; - res: TODO; - }; - "admin/accounts/create": { - req: TODO; - res: TODO; - }; - "admin/ad/create": { - req: TODO; - res: TODO; - }; - "admin/ad/delete": { - req: { - id: Ad["id"]; - }; - res: null; - }; - "admin/ad/list": { - req: TODO; - res: TODO; - }; - "admin/ad/update": { - req: TODO; - res: TODO; - }; - "admin/announcements/create": { - req: TODO; - res: TODO; - }; - "admin/announcements/delete": { - req: { - id: Announcement["id"]; - }; - res: null; - }; - "admin/announcements/list": { - req: TODO; - res: TODO; - }; - "admin/announcements/update": { - req: TODO; - res: TODO; - }; - "admin/drive/clean-remote-files": { - req: TODO; - res: TODO; - }; - "admin/drive/cleanup": { - req: TODO; - res: TODO; - }; - "admin/drive/files": { - req: TODO; - res: TODO; - }; - "admin/drive/show-file": { - req: TODO; - res: TODO; - }; - "admin/emoji/add": { - req: TODO; - res: TODO; - }; - "admin/emoji/copy": { - req: TODO; - res: TODO; - }; - "admin/emoji/list-remote": { - req: TODO; - res: TODO; - }; - "admin/emoji/list": { - req: TODO; - res: TODO; - }; - "admin/emoji/remove": { - req: TODO; - res: TODO; - }; - "admin/emoji/update": { - req: TODO; - res: TODO; - }; - "admin/federation/delete-all-files": { - req: { - host: string; - }; - res: null; - }; - "admin/federation/refresh-remote-instance-metadata": { - req: TODO; - res: TODO; - }; - "admin/federation/remove-all-following": { - req: TODO; - res: TODO; - }; - "admin/federation/update-instance": { - req: TODO; - res: TODO; - }; - "admin/moderators/add": { - req: TODO; - res: TODO; - }; - "admin/moderators/remove": { - req: TODO; - res: TODO; - }; - "admin/promo/create": { - req: TODO; - res: TODO; - }; - "admin/queue/clear": { - req: TODO; - res: TODO; - }; - "admin/queue/deliver-delayed": { - req: TODO; - res: TODO; - }; - "admin/queue/inbox-delayed": { - req: TODO; - res: TODO; - }; - "admin/queue/jobs": { - req: TODO; - res: TODO; - }; - "admin/queue/stats": { - req: TODO; - res: TODO; - }; - "admin/relays/add": { - req: TODO; - res: TODO; - }; - "admin/relays/list": { - req: TODO; - res: TODO; - }; - "admin/relays/remove": { - req: TODO; - res: TODO; - }; - announcements: { - req: { - limit?: number; - withUnreads?: boolean; - sinceId?: Announcement["id"]; - untilId?: Announcement["id"]; - }; - res: Announcement[]; - }; - "antennas/create": { - req: TODO; - res: Antenna; - }; - "antennas/delete": { - req: { - antennaId: Antenna["id"]; - }; - res: null; - }; - "antennas/list": { - req: NoParams; - res: Antenna[]; - }; - "antennas/notes": { - req: { - antennaId: Antenna["id"]; - limit?: number; - sinceId?: Note["id"]; - untilId?: Note["id"]; - }; - res: Note[]; - }; - "antennas/show": { - req: { - antennaId: Antenna["id"]; - }; - res: Antenna; - }; - "antennas/update": { - req: TODO; - res: Antenna; - }; - "antennas/mark-read": { - req: TODO; - res: Antenna; - }; - "ap/get": { - req: { - uri: string; - }; - res: Record<string, any>; - }; - "ap/show": { - req: { - uri: string; - }; - res: - | { - type: "Note"; - object: Note; - } - | { - type: "User"; - object: UserDetailed; - }; - }; - "app/create": { - req: TODO; - res: App; - }; - "app/show": { - req: { - appId: App["id"]; - }; - res: App; - }; - "auth/accept": { - req: { - token: string; - }; - res: null; - }; - "auth/session/generate": { - req: { - appSecret: string; - }; - res: { - token: string; - url: string; - }; - }; - "auth/session/show": { - req: { - token: string; - }; - res: AuthSession; - }; - "auth/session/userkey": { - req: { - appSecret: string; - token: string; - }; - res: { - accessToken: string; - user: User; - }; - }; - "blocking/create": { - req: { - userId: User["id"]; - }; - res: UserDetailed; - }; - "blocking/delete": { - req: { - userId: User["id"]; - }; - res: UserDetailed; - }; - "blocking/list": { - req: { - limit?: number; - sinceId?: Blocking["id"]; - untilId?: Blocking["id"]; - }; - res: Blocking[]; - }; - "channels/create": { - req: TODO; - res: TODO; - }; - "channels/featured": { - req: TODO; - res: TODO; - }; - "channels/follow": { - req: TODO; - res: TODO; - }; - "channels/followed": { - req: TODO; - res: TODO; - }; - "channels/owned": { - req: TODO; - res: TODO; - }; - "channels/pin-note": { - req: TODO; - res: TODO; - }; - "channels/show": { - req: TODO; - res: TODO; - }; - "channels/timeline": { - req: TODO; - res: TODO; - }; - "channels/unfollow": { - req: TODO; - res: TODO; - }; - "channels/update": { - req: TODO; - res: TODO; - }; - "charts/active-users": { - req: { - span: "day" | "hour"; - limit?: number; - offset?: number | null; - }; - res: { - local: { - users: number[]; - }; - remote: { - users: number[]; - }; - }; - }; - "charts/drive": { - req: { - span: "day" | "hour"; - limit?: number; - offset?: number | null; - }; - res: { - local: { - decCount: number[]; - decSize: number[]; - incCount: number[]; - incSize: number[]; - totalCount: number[]; - totalSize: number[]; - }; - remote: { - decCount: number[]; - decSize: number[]; - incCount: number[]; - incSize: number[]; - totalCount: number[]; - totalSize: number[]; - }; - }; - }; - "charts/federation": { - req: { - span: "day" | "hour"; - limit?: number; - offset?: number | null; - }; - res: { - instance: { - dec: number[]; - inc: number[]; - total: number[]; - }; - }; - }; - "charts/hashtag": { - req: { - span: "day" | "hour"; - limit?: number; - offset?: number | null; - }; - res: TODO; - }; - "charts/instance": { - req: { - span: "day" | "hour"; - limit?: number; - offset?: number | null; - host: string; - }; - res: { - drive: { - decFiles: number[]; - decUsage: number[]; - incFiles: number[]; - incUsage: number[]; - totalFiles: number[]; - totalUsage: number[]; - }; - followers: { - dec: number[]; - inc: number[]; - total: number[]; - }; - following: { - dec: number[]; - inc: number[]; - total: number[]; - }; - notes: { - dec: number[]; - inc: number[]; - total: number[]; - diffs: { - normal: number[]; - renote: number[]; - reply: number[]; - }; - }; - requests: { - failed: number[]; - received: number[]; - succeeded: number[]; - }; - users: { - dec: number[]; - inc: number[]; - total: number[]; - }; - }; - }; - "charts/network": { - req: { - span: "day" | "hour"; - limit?: number; - offset?: number | null; - }; - res: TODO; - }; - "charts/notes": { - req: { - span: "day" | "hour"; - limit?: number; - offset?: number | null; - }; - res: { - local: { - dec: number[]; - inc: number[]; - total: number[]; - diffs: { - normal: number[]; - renote: number[]; - reply: number[]; - }; - }; - remote: { - dec: number[]; - inc: number[]; - total: number[]; - diffs: { - normal: number[]; - renote: number[]; - reply: number[]; - }; - }; - }; - }; - "charts/user/drive": { - req: { - span: "day" | "hour"; - limit?: number; - offset?: number | null; - userId: User["id"]; - }; - res: { - decCount: number[]; - decSize: number[]; - incCount: number[]; - incSize: number[]; - totalCount: number[]; - totalSize: number[]; - }; - }; - "charts/user/following": { - req: { - span: "day" | "hour"; - limit?: number; - offset?: number | null; - userId: User["id"]; - }; - res: TODO; - }; - "charts/user/notes": { - req: { - span: "day" | "hour"; - limit?: number; - offset?: number | null; - userId: User["id"]; - }; - res: { - dec: number[]; - inc: number[]; - total: number[]; - diffs: { - normal: number[]; - renote: number[]; - reply: number[]; - }; - }; - }; - "charts/user/reactions": { - req: { - span: "day" | "hour"; - limit?: number; - offset?: number | null; - userId: User["id"]; - }; - res: TODO; - }; - "charts/users": { - req: { - span: "day" | "hour"; - limit?: number; - offset?: number | null; - }; - res: { - local: { - dec: number[]; - inc: number[]; - total: number[]; - }; - remote: { - dec: number[]; - inc: number[]; - total: number[]; - }; - }; - }; - "clips/add-note": { - req: TODO; - res: TODO; - }; - "clips/create": { - req: TODO; - res: TODO; - }; - "clips/delete": { - req: { - clipId: Clip["id"]; - }; - res: null; - }; - "clips/list": { - req: TODO; - res: TODO; - }; - "clips/notes": { - req: TODO; - res: TODO; - }; - "clips/show": { - req: TODO; - res: TODO; - }; - "clips/update": { - req: TODO; - res: TODO; - }; - drive: { - req: NoParams; - res: { - capacity: number; - usage: number; - }; - }; - "drive/files": { - req: { - folderId?: DriveFolder["id"] | null; - type?: DriveFile["type"] | null; - limit?: number; - sinceId?: DriveFile["id"]; - untilId?: DriveFile["id"]; - }; - res: DriveFile[]; - }; - "drive/files/attached-notes": { - req: TODO; - res: TODO; - }; - "drive/files/check-existence": { - req: TODO; - res: TODO; - }; - "drive/files/create": { - req: TODO; - res: TODO; - }; - "drive/files/delete": { - req: { - fileId: DriveFile["id"]; - }; - res: null; - }; - "drive/files/find-by-hash": { - req: TODO; - res: TODO; - }; - "drive/files/find": { - req: { - name: string; - folderId?: DriveFolder["id"] | null; - }; - res: DriveFile[]; - }; - "drive/files/show": { - req: { - fileId?: DriveFile["id"]; - url?: string; - }; - res: DriveFile; - }; - "drive/files/update": { - req: { - fileId: DriveFile["id"]; - folderId?: DriveFolder["id"] | null; - name?: string; - isSensitive?: boolean; - comment?: string | null; - }; - res: DriveFile; - }; - "drive/files/upload-from-url": { - req: { - url: string; - folderId?: DriveFolder["id"] | null; - isSensitive?: boolean; - comment?: string | null; - marker?: string | null; - force?: boolean; - }; - res: null; - }; - "drive/folders": { - req: { - folderId?: DriveFolder["id"] | null; - limit?: number; - sinceId?: DriveFile["id"]; - untilId?: DriveFile["id"]; - }; - res: DriveFolder[]; - }; - "drive/folders/create": { - req: { - name?: string; - parentId?: DriveFolder["id"] | null; - }; - res: DriveFolder; - }; - "drive/folders/delete": { - req: { - folderId: DriveFolder["id"]; - }; - res: null; - }; - "drive/folders/find": { - req: { - name: string; - parentId?: DriveFolder["id"] | null; - }; - res: DriveFolder[]; - }; - "drive/folders/show": { - req: { - folderId: DriveFolder["id"]; - }; - res: DriveFolder; - }; - "drive/folders/update": { - req: { - folderId: DriveFolder["id"]; - name?: string; - parentId?: DriveFolder["id"] | null; - }; - res: DriveFolder; - }; - "drive/stream": { - req: { - type?: DriveFile["type"] | null; - limit?: number; - sinceId?: DriveFile["id"]; - untilId?: DriveFile["id"]; - }; - res: DriveFile[]; - }; - endpoint: { - req: { - endpoint: string; - }; - res: { - params: { - name: string; - type: string; - }[]; - }; - }; - endpoints: { - req: NoParams; - res: string[]; - }; - "federation/dns": { - req: { - host: string; - }; - res: { - a: string[]; - aaaa: string[]; - cname: string[]; - txt: string[]; - }; - }; - "federation/followers": { - req: { - host: string; - limit?: number; - sinceId?: Following["id"]; - untilId?: Following["id"]; - }; - res: FollowingFolloweePopulated[]; - }; - "federation/following": { - req: { - host: string; - limit?: number; - sinceId?: Following["id"]; - untilId?: Following["id"]; - }; - res: FollowingFolloweePopulated[]; - }; - "federation/instances": { - req: { - host?: string | null; - blocked?: boolean | null; - notResponding?: boolean | null; - suspended?: boolean | null; - federating?: boolean | null; - subscribing?: boolean | null; - publishing?: boolean | null; - limit?: number; - offset?: number; - sort?: - | "+pubSub" - | "-pubSub" - | "+notes" - | "-notes" - | "+users" - | "-users" - | "+following" - | "-following" - | "+followers" - | "-followers" - | "+caughtAt" - | "-caughtAt" - | "+lastCommunicatedAt" - | "-lastCommunicatedAt" - | "+driveUsage" - | "-driveUsage" - | "+driveFiles" - | "-driveFiles"; - }; - res: Instance[]; - }; - "federation/show-instance": { - req: { - host: string; - }; - res: Instance; - }; - "federation/update-remote-user": { - req: { - userId: User["id"]; - }; - res: null; - }; - "federation/users": { - req: { - host: string; - limit?: number; - sinceId?: User["id"]; - untilId?: User["id"]; - }; - res: UserDetailed[]; - }; - "following/create": { - req: { - userId: User["id"]; - }; - res: User; - }; - "following/delete": { - req: { - userId: User["id"]; - }; - res: User; - }; - "following/requests/accept": { - req: { - userId: User["id"]; - }; - res: null; - }; - "following/requests/cancel": { - req: { - userId: User["id"]; - }; - res: User; - }; - "following/requests/list": { - req: NoParams; - res: FollowRequest[]; - }; - "following/requests/reject": { - req: { - userId: User["id"]; - }; - res: null; - }; - "gallery/featured": { - req: TODO; - res: TODO; - }; - "gallery/popular": { - req: TODO; - res: TODO; - }; - "gallery/posts": { - req: TODO; - res: TODO; - }; - "gallery/posts/create": { - req: TODO; - res: TODO; - }; - "gallery/posts/delete": { - req: { - postId: GalleryPost["id"]; - }; - res: null; - }; - "gallery/posts/like": { - req: TODO; - res: TODO; - }; - "gallery/posts/show": { - req: TODO; - res: TODO; - }; - "gallery/posts/unlike": { - req: TODO; - res: TODO; - }; - "gallery/posts/update": { - req: TODO; - res: TODO; - }; - "games/reversi/games": { - req: TODO; - res: TODO; - }; - "games/reversi/games/show": { - req: TODO; - res: TODO; - }; - "games/reversi/games/surrender": { - req: TODO; - res: TODO; - }; - "games/reversi/invitations": { - req: TODO; - res: TODO; - }; - "games/reversi/match": { - req: TODO; - res: TODO; - }; - "games/reversi/match/cancel": { - req: TODO; - res: TODO; - }; - "get-online-users-count": { - req: NoParams; - res: { - count: number; - }; - }; - "hashtags/list": { - req: TODO; - res: TODO; - }; - "hashtags/search": { - req: TODO; - res: TODO; - }; - "hashtags/show": { - req: TODO; - res: TODO; - }; - "hashtags/trend": { - req: TODO; - res: TODO; - }; - "hashtags/users": { - req: TODO; - res: TODO; - }; - i: { - req: NoParams; - res: User; - }; - "i/apps": { - req: TODO; - res: TODO; - }; - "i/authorized-apps": { - req: TODO; - res: TODO; - }; - "i/change-password": { - req: TODO; - res: TODO; - }; - "i/delete-account": { - req: { - password: string; - }; - res: null; - }; - "i/export-blocking": { - req: TODO; - res: TODO; - }; - "i/export-following": { - req: TODO; - res: TODO; - }; - "i/export-mute": { - req: TODO; - res: TODO; - }; - "i/export-notes": { - req: TODO; - res: TODO; - }; - "i/export-user-lists": { - req: TODO; - res: TODO; - }; - "i/favorites": { - req: { - limit?: number; - sinceId?: NoteFavorite["id"]; - untilId?: NoteFavorite["id"]; - }; - res: NoteFavorite[]; - }; - "i/gallery/likes": { - req: TODO; - res: TODO; - }; - "i/gallery/posts": { - req: TODO; - res: TODO; - }; - "i/get-word-muted-notes-count": { - req: TODO; - res: TODO; - }; - "i/import-following": { - req: TODO; - res: TODO; - }; - "i/import-user-lists": { - req: TODO; - res: TODO; - }; - "i/move": { - req: TODO; - res: TODO; - }; - "i/known-as": { - req: TODO; - res: TODO; - }; - "i/notifications": { - req: { - limit?: number; - sinceId?: Notification["id"]; - untilId?: Notification["id"]; - following?: boolean; - markAsRead?: boolean; - includeTypes?: Notification["type"][]; - excludeTypes?: Notification["type"][]; - }; - res: Notification[]; - }; - "i/page-likes": { - req: TODO; - res: TODO; - }; - "i/pages": { - req: TODO; - res: TODO; - }; - "i/pin": { - req: { - noteId: Note["id"]; - }; - res: MeDetailed; - }; - "i/read-all-messaging-messages": { - req: TODO; - res: TODO; - }; - "i/read-all-unread-notes": { - req: TODO; - res: TODO; - }; - "i/read-announcement": { - req: TODO; - res: TODO; - }; - "i/regenerate-token": { - req: { - password: string; - }; - res: null; - }; - "i/registry/get-all": { - req: { - scope?: string[]; - }; - res: Record<string, any>; - }; - "i/registry/get-detail": { - req: { - key: string; - scope?: string[]; - }; - res: { - updatedAt: DateString; - value: any; - }; - }; - "i/registry/get": { - req: { - key: string; - scope?: string[]; - }; - res: any; - }; - "i/registry/keys-with-type": { - req: { - scope?: string[]; - }; - res: Record< - string, - "null" | "array" | "number" | "string" | "boolean" | "object" - >; - }; - "i/registry/keys": { - req: { - scope?: string[]; - }; - res: string[]; - }; - "i/registry/remove": { - req: { - key: string; - scope?: string[]; - }; - res: null; - }; - "i/registry/scopes": { - req: NoParams; - res: string[][]; - }; - "i/registry/set": { - req: { - key: string; - value: any; - scope?: string[]; - }; - res: null; - }; - "i/revoke-token": { - req: TODO; - res: TODO; - }; - "i/signin-history": { - req: { - limit?: number; - sinceId?: Signin["id"]; - untilId?: Signin["id"]; - }; - res: Signin[]; - }; - "i/unpin": { - req: { - noteId: Note["id"]; - }; - res: MeDetailed; - }; - "i/update-email": { - req: { - password: string; - email?: string | null; - }; - res: MeDetailed; - }; - "i/update": { - req: { - name?: string | null; - description?: string | null; - lang?: string | null; - location?: string | null; - birthday?: string | null; - avatarId?: DriveFile["id"] | null; - bannerId?: DriveFile["id"] | null; - fields?: { - name: string; - value: string; - }[]; - isLocked?: boolean; - isExplorable?: boolean; - hideOnlineStatus?: boolean; - carefulBot?: boolean; - autoAcceptFollowed?: boolean; - noCrawle?: boolean; - preventAiLearning?: boolean; - isBot?: boolean; - isCat?: boolean; - injectFeaturedNote?: boolean; - receiveAnnouncementEmail?: boolean; - alwaysMarkNsfw?: boolean; - mutedWords?: string[][]; - mutingNotificationTypes?: Notification["type"][]; - emailNotificationTypes?: string[]; - }; - res: MeDetailed; - }; - "i/user-group-invites": { - req: TODO; - res: TODO; - }; - "i/2fa/done": { - req: TODO; - res: TODO; - }; - "i/2fa/key-done": { - req: TODO; - res: TODO; - }; - "i/2fa/password-less": { - req: TODO; - res: TODO; - }; - "i/2fa/register-key": { - req: TODO; - res: TODO; - }; - "i/2fa/register": { - req: TODO; - res: TODO; - }; - "i/2fa/update-key": { - req: TODO; - res: TODO; - }; - "i/2fa/remove-key": { - req: TODO; - res: TODO; - }; - "i/2fa/unregister": { - req: TODO; - res: TODO; - }; - "messaging/history": { - req: { - limit?: number; - group?: boolean; - }; - res: MessagingMessage[]; - }; - "messaging/messages": { - req: { - userId?: User["id"]; - groupId?: UserGroup["id"]; - limit?: number; - sinceId?: MessagingMessage["id"]; - untilId?: MessagingMessage["id"]; - markAsRead?: boolean; - }; - res: MessagingMessage[]; - }; - "messaging/messages/create": { - req: { - userId?: User["id"]; - groupId?: UserGroup["id"]; - text?: string; - fileId?: DriveFile["id"]; - }; - res: MessagingMessage; - }; - "messaging/messages/delete": { - req: { - messageId: MessagingMessage["id"]; - }; - res: null; - }; - "messaging/messages/read": { - req: { - messageId: MessagingMessage["id"]; - }; - res: null; - }; - meta: { - req: { - detail?: boolean; - }; - res: { - $switch: { - $cases: [ - [ - { - detail: true; - }, - DetailedInstanceMetadata, - ], - [ - { - detail: false; - }, - LiteInstanceMetadata, - ], - [ - { - detail: boolean; - }, - LiteInstanceMetadata | DetailedInstanceMetadata, - ], - ]; - $default: LiteInstanceMetadata; - }; - }; - }; - "miauth/gen-token": { - req: TODO; - res: TODO; - }; - "mute/create": { - req: TODO; - res: TODO; - }; - "mute/delete": { - req: { - userId: User["id"]; - }; - res: null; - }; - "mute/list": { - req: TODO; - res: TODO; - }; - "renote-mute/create": { - req: TODO; - res: TODO; - }; - "renote-mute/delete": { - req: { - userId: User["id"]; - }; - res: null; - }; - "renote-mute/list": { - req: TODO; - res: TODO; - }; - "my/apps": { - req: TODO; - res: TODO; - }; - notes: { - req: { - limit?: number; - sinceId?: Note["id"]; - untilId?: Note["id"]; - }; - res: Note[]; - }; - "notes/children": { - req: { - noteId: Note["id"]; - limit?: number; - sinceId?: Note["id"]; - untilId?: Note["id"]; - }; - res: Note[]; - }; - "notes/clips": { - req: TODO; - res: TODO; - }; - "notes/conversation": { - req: TODO; - res: TODO; - }; - "notes/create": { - req: NoteSubmitReq; - res: { - createdNote: Note; - }; - }; - "notes/delete": { - req: { - noteId: Note["id"]; - }; - res: null; - }; - "notes/edit": { - req: NoteSubmitReq; - res: { - createdNote: Note; - }; - }; - "notes/favorites/create": { - req: { - noteId: Note["id"]; - }; - res: null; - }; - "notes/favorites/delete": { - req: { - noteId: Note["id"]; - }; - res: null; - }; - "notes/featured": { - req: TODO; - res: Note[]; - }; - "notes/global-timeline": { - req: { - limit?: number; - sinceId?: Note["id"]; - untilId?: Note["id"]; - sinceDate?: number; - untilDate?: number; - }; - res: Note[]; - }; - "notes/recommended-timeline": { - req: { - limit?: number; - sinceId?: Note["id"]; - untilId?: Note["id"]; - sinceDate?: number; - untilDate?: number; - }; - res: Note[]; - }; - "notes/hybrid-timeline": { - req: { - limit?: number; - sinceId?: Note["id"]; - untilId?: Note["id"]; - sinceDate?: number; - untilDate?: number; - }; - res: Note[]; - }; - "notes/local-timeline": { - req: { - limit?: number; - sinceId?: Note["id"]; - untilId?: Note["id"]; - sinceDate?: number; - untilDate?: number; - }; - res: Note[]; - }; - "notes/mentions": { - req: { - following?: boolean; - limit?: number; - sinceId?: Note["id"]; - untilId?: Note["id"]; - }; - res: Note[]; - }; - "notes/polls/recommendation": { - req: TODO; - res: TODO; - }; - "notes/polls/vote": { - req: { - noteId: Note["id"]; - choice: number; - }; - res: null; - }; - "notes/reactions": { - req: { - noteId: Note["id"]; - type?: string | null; - limit?: number; - }; - res: NoteReaction[]; - }; - "notes/reactions/create": { - req: { - noteId: Note["id"]; - reaction: string; - }; - res: null; - }; - "notes/reactions/delete": { - req: { - noteId: Note["id"]; - }; - res: null; - }; - "notes/renotes": { - req: { - limit?: number; - sinceId?: Note["id"]; - untilId?: Note["id"]; - noteId: Note["id"]; - }; - res: Note[]; - }; - "notes/replies": { - req: { - limit?: number; - sinceId?: Note["id"]; - untilId?: Note["id"]; - noteId: Note["id"]; - }; - res: Note[]; - }; - "notes/search-by-tag": { - req: TODO; - res: TODO; - }; - "notes/search": { - req: TODO; - res: TODO; - }; - "notes/show": { - req: { - noteId: Note["id"]; - }; - res: Note; - }; - "notes/state": { - req: TODO; - res: TODO; - }; - "notes/timeline": { - req: { - limit?: number; - sinceId?: Note["id"]; - untilId?: Note["id"]; - sinceDate?: number; - untilDate?: number; - }; - res: Note[]; - }; - "notes/unrenote": { - req: { - noteId: Note["id"]; - }; - res: null; - }; - "notes/user-list-timeline": { - req: { - listId: UserList["id"]; - limit?: number; - sinceId?: Note["id"]; - untilId?: Note["id"]; - sinceDate?: number; - untilDate?: number; - }; - res: Note[]; - }; - "notes/watching/create": { - req: TODO; - res: TODO; - }; - "notes/watching/delete": { - req: { - noteId: Note["id"]; - }; - res: null; - }; - "notifications/create": { - req: { - body: string; - header?: string | null; - icon?: string | null; - }; - res: null; - }; - "notifications/mark-all-as-read": { - req: NoParams; - res: null; - }; - "notifications/read": { - req: { - notificationId: Notification["id"]; - }; - res: null; - }; - "page-push": { - req: { - pageId: Page["id"]; - event: string; - var?: any; - }; - res: null; - }; - "pages/create": { - req: TODO; - res: Page; - }; - "pages/delete": { - req: { - pageId: Page["id"]; - }; - res: null; - }; - "pages/featured": { - req: NoParams; - res: Page[]; - }; - "pages/like": { - req: { - pageId: Page["id"]; - }; - res: null; - }; - "pages/show": { - req: { - pageId?: Page["id"]; - name?: string; - username?: string; - }; - res: Page; - }; - "pages/unlike": { - req: { - pageId: Page["id"]; - }; - res: null; - }; - "pages/update": { - req: TODO; - res: null; - }; - ping: { - req: NoParams; - res: { - pong: number; - }; - }; - "pinned-users": { - req: TODO; - res: TODO; - }; - "promo/read": { - req: TODO; - res: TODO; - }; - "request-reset-password": { - req: { - username: string; - email: string; - }; - res: null; - }; - "reset-password": { - req: { - token: string; - password: string; - }; - res: null; - }; - "room/show": { - req: TODO; - res: TODO; - }; - "room/update": { - req: TODO; - res: TODO; - }; - stats: { - req: NoParams; - res: Stats; - }; - "server-info": { - req: NoParams; - res: ServerInfo; - }; - "latest-version": { - req: NoParams; - res: TODO; - }; - "sw/register": { - req: TODO; - res: TODO; - }; - "username/available": { - req: { - username: string; - }; - res: { - available: boolean; - }; - }; - users: { - req: { - limit?: number; - offset?: number; - sort?: UserSorting; - origin?: OriginType; - }; - res: User[]; - }; - "users/clips": { - req: TODO; - res: TODO; - }; - "users/followers": { - req: { - userId?: User["id"]; - username?: User["username"]; - host?: User["host"] | null; - limit?: number; - sinceId?: Following["id"]; - untilId?: Following["id"]; - }; - res: FollowingFollowerPopulated[]; - }; - "users/following": { - req: { - userId?: User["id"]; - username?: User["username"]; - host?: User["host"] | null; - limit?: number; - sinceId?: Following["id"]; - untilId?: Following["id"]; - }; - res: FollowingFolloweePopulated[]; - }; - "users/gallery/posts": { - req: TODO; - res: TODO; - }; - "users/get-frequently-replied-users": { - req: TODO; - res: TODO; - }; - "users/groups/create": { - req: TODO; - res: TODO; - }; - "users/groups/delete": { - req: { - groupId: UserGroup["id"]; - }; - res: null; - }; - "users/groups/invitations/accept": { - req: TODO; - res: TODO; - }; - "users/groups/invitations/reject": { - req: TODO; - res: TODO; - }; - "users/groups/invite": { - req: TODO; - res: TODO; - }; - "users/groups/joined": { - req: TODO; - res: TODO; - }; - "users/groups/owned": { - req: TODO; - res: TODO; - }; - "users/groups/pull": { - req: TODO; - res: TODO; - }; - "users/groups/show": { - req: TODO; - res: TODO; - }; - "users/groups/transfer": { - req: TODO; - res: TODO; - }; - "users/groups/update": { - req: TODO; - res: TODO; - }; - "users/lists/create": { - req: { - name: string; - }; - res: UserList; - }; - "users/lists/delete": { - req: { - listId: UserList["id"]; - }; - res: null; - }; - "users/lists/list": { - req: NoParams; - res: UserList[]; - }; - "users/lists/pull": { - req: { - listId: UserList["id"]; - userId: User["id"]; - }; - res: null; - }; - "users/lists/push": { - req: { - listId: UserList["id"]; - userId: User["id"]; - }; - res: null; - }; - "users/lists/show": { - req: { - listId: UserList["id"]; - }; - res: UserList; - }; - "users/lists/update": { - req: { - listId: UserList["id"]; - name: string; - }; - res: UserList; - }; - "users/notes": { - req: { - userId: User["id"]; - limit?: number; - sinceId?: Note["id"]; - untilId?: Note["id"]; - sinceDate?: number; - untilDate?: number; - }; - res: Note[]; - }; - "users/pages": { - req: TODO; - res: TODO; - }; - "users/recommendation": { - req: TODO; - res: TODO; - }; - "users/relation": { - req: TODO; - res: TODO; - }; - "users/report-abuse": { - req: TODO; - res: TODO; - }; - "users/search-by-username-and-host": { - req: TODO; - res: TODO; - }; - "users/search": { - req: TODO; - res: TODO; - }; - "users/show": { - req: - | ShowUserReq - | { - userIds: User["id"][]; - }; - res: { - $switch: { - $cases: [ - [ - { - userIds: User["id"][]; - }, - UserDetailed[], - ], - ]; - $default: UserDetailed; - }; - }; - }; - "users/stats": { - req: TODO; - res: TODO; - }; -}; -``` -**References:** [User](./firefish-js.entities.user.md)<!-- -->, [Ad](./firefish-js.entities.ad.md)<!-- -->, [Announcement](./firefish-js.entities.announcement.md)<!-- -->, [Antenna](./firefish-js.entities.antenna.md)<!-- -->, [Note](./firefish-js.entities.note.md)<!-- -->, [UserDetailed](./firefish-js.entities.userdetailed.md)<!-- -->, [App](./firefish-js.entities.app.md)<!-- -->, [AuthSession](./firefish-js.entities.authsession.md)<!-- -->, [Blocking](./firefish-js.entities.blocking.md)<!-- -->, [Clip](./firefish-js.entities.clip.md)<!-- -->, [DriveFolder](./firefish-js.entities.drivefolder.md)<!-- -->, [DriveFile](./firefish-js.entities.drivefile.md)<!-- -->, [Following](./firefish-js.entities.following.md)<!-- -->, [FollowingFolloweePopulated](./firefish-js.entities.followingfolloweepopulated.md)<!-- -->, [Instance](./firefish-js.entities.instance.md)<!-- -->, [FollowRequest](./firefish-js.entities.followrequest.md)<!-- -->, [GalleryPost](./firefish-js.entities.gallerypost.md)<!-- -->, [NoteFavorite](./firefish-js.entities.notefavorite.md)<!-- -->, [MeDetailed](./firefish-js.entities.medetailed.md)<!-- -->, [DateString](./firefish-js.entities.datestring.md)<!-- -->, [Signin](./firefish-js.entities.signin.md)<!-- -->, [MessagingMessage](./firefish-js.entities.messagingmessage.md)<!-- -->, [UserGroup](./firefish-js.entities.usergroup.md)<!-- -->, [DetailedInstanceMetadata](./firefish-js.entities.detailedinstancemetadata.md)<!-- -->, [LiteInstanceMetadata](./firefish-js.entities.liteinstancemetadata.md)<!-- -->, [NoteReaction](./firefish-js.entities.notereaction.md)<!-- -->, [UserList](./firefish-js.entities.userlist.md)<!-- -->, [Page](./firefish-js.entities.page.md)<!-- -->, [Stats](./firefish-js.entities.stats.md)<!-- -->, [ServerInfo](./firefish-js.entities.serverinfo.md)<!-- -->, [UserSorting](./firefish-js.entities.usersorting.md)<!-- -->, [OriginType](./firefish-js.entities.origintype.md)<!-- -->, [FollowingFollowerPopulated](./firefish-js.entities.followingfollowerpopulated.md) - diff --git a/packages/firefish-js/markdown/firefish-js.entities.ad.md b/packages/firefish-js/markdown/firefish-js.entities.ad.md deleted file mode 100644 index 9b3ef29e12..0000000000 --- a/packages/firefish-js/markdown/firefish-js.entities.ad.md +++ /dev/null @@ -1,11 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) > [firefish-js](./firefish-js.md) > [entities](./firefish-js.entities.md) > [Ad](./firefish-js.entities.ad.md) - -## entities.Ad type - -**Signature:** - -```typescript -export declare type Ad = TODO; -``` diff --git a/packages/firefish-js/markdown/firefish-js.entities.announcement.md b/packages/firefish-js/markdown/firefish-js.entities.announcement.md deleted file mode 100644 index fba76c2279..0000000000 --- a/packages/firefish-js/markdown/firefish-js.entities.announcement.md +++ /dev/null @@ -1,21 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) > [firefish-js](./firefish-js.md) > [entities](./firefish-js.entities.md) > [Announcement](./firefish-js.entities.announcement.md) - -## entities.Announcement type - -**Signature:** - -```typescript -export declare type Announcement = { - id: ID; - createdAt: DateString; - updatedAt: DateString | null; - text: string; - title: string; - imageUrl: string | null; - isRead?: boolean; -}; -``` -**References:** [ID](./firefish-js.entities.id.md)<!-- -->, [DateString](./firefish-js.entities.datestring.md) - diff --git a/packages/firefish-js/markdown/firefish-js.entities.antenna.md b/packages/firefish-js/markdown/firefish-js.entities.antenna.md deleted file mode 100644 index c92eca8496..0000000000 --- a/packages/firefish-js/markdown/firefish-js.entities.antenna.md +++ /dev/null @@ -1,29 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) > [firefish-js](./firefish-js.md) > [entities](./firefish-js.entities.md) > [Antenna](./firefish-js.entities.antenna.md) - -## entities.Antenna type - -**Signature:** - -```typescript -export declare type Antenna = { - id: ID; - createdAt: DateString; - name: string; - keywords: string[][]; - excludeKeywords: string[][]; - src: "home" | "all" | "users" | "list" | "group" | "instances"; - userListId: ID | null; - userGroupId: ID | null; - users: string[]; - instances: string[]; - caseSensitive: boolean; - notify: boolean; - withReplies: boolean; - withFile: boolean; - hasUnreadNote: boolean; -}; -``` -**References:** [ID](./firefish-js.entities.id.md)<!-- -->, [DateString](./firefish-js.entities.datestring.md) - diff --git a/packages/firefish-js/markdown/firefish-js.entities.app.md b/packages/firefish-js/markdown/firefish-js.entities.app.md deleted file mode 100644 index bef377f53b..0000000000 --- a/packages/firefish-js/markdown/firefish-js.entities.app.md +++ /dev/null @@ -1,11 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) > [firefish-js](./firefish-js.md) > [entities](./firefish-js.entities.md) > [App](./firefish-js.entities.app.md) - -## entities.App type - -**Signature:** - -```typescript -export declare type App = TODO; -``` diff --git a/packages/firefish-js/markdown/firefish-js.entities.authsession.md b/packages/firefish-js/markdown/firefish-js.entities.authsession.md deleted file mode 100644 index d43848ac31..0000000000 --- a/packages/firefish-js/markdown/firefish-js.entities.authsession.md +++ /dev/null @@ -1,17 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) > [firefish-js](./firefish-js.md) > [entities](./firefish-js.entities.md) > [AuthSession](./firefish-js.entities.authsession.md) - -## entities.AuthSession type - -**Signature:** - -```typescript -export declare type AuthSession = { - id: ID; - app: App; - token: string; -}; -``` -**References:** [ID](./firefish-js.entities.id.md)<!-- -->, [App](./firefish-js.entities.app.md) - diff --git a/packages/firefish-js/markdown/firefish-js.entities.blocking.md b/packages/firefish-js/markdown/firefish-js.entities.blocking.md deleted file mode 100644 index 189692fb92..0000000000 --- a/packages/firefish-js/markdown/firefish-js.entities.blocking.md +++ /dev/null @@ -1,18 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) > [firefish-js](./firefish-js.md) > [entities](./firefish-js.entities.md) > [Blocking](./firefish-js.entities.blocking.md) - -## entities.Blocking type - -**Signature:** - -```typescript -export declare type Blocking = { - id: ID; - createdAt: DateString; - blockeeId: User["id"]; - blockee: UserDetailed; -}; -``` -**References:** [ID](./firefish-js.entities.id.md)<!-- -->, [DateString](./firefish-js.entities.datestring.md)<!-- -->, [User](./firefish-js.entities.user.md)<!-- -->, [UserDetailed](./firefish-js.entities.userdetailed.md) - diff --git a/packages/firefish-js/markdown/firefish-js.entities.channel.md b/packages/firefish-js/markdown/firefish-js.entities.channel.md deleted file mode 100644 index 002716f8e3..0000000000 --- a/packages/firefish-js/markdown/firefish-js.entities.channel.md +++ /dev/null @@ -1,15 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) > [firefish-js](./firefish-js.md) > [entities](./firefish-js.entities.md) > [Channel](./firefish-js.entities.channel.md) - -## entities.Channel type - -**Signature:** - -```typescript -export declare type Channel = { - id: ID; -}; -``` -**References:** [ID](./firefish-js.entities.id.md) - diff --git a/packages/firefish-js/markdown/firefish-js.entities.clip.md b/packages/firefish-js/markdown/firefish-js.entities.clip.md deleted file mode 100644 index 41979bc70a..0000000000 --- a/packages/firefish-js/markdown/firefish-js.entities.clip.md +++ /dev/null @@ -1,11 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) > [firefish-js](./firefish-js.md) > [entities](./firefish-js.entities.md) > [Clip](./firefish-js.entities.clip.md) - -## entities.Clip type - -**Signature:** - -```typescript -export declare type Clip = TODO; -``` diff --git a/packages/firefish-js/markdown/firefish-js.entities.customemoji.md b/packages/firefish-js/markdown/firefish-js.entities.customemoji.md deleted file mode 100644 index 4a0b1925b0..0000000000 --- a/packages/firefish-js/markdown/firefish-js.entities.customemoji.md +++ /dev/null @@ -1,17 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) > [firefish-js](./firefish-js.md) > [entities](./firefish-js.entities.md) > [CustomEmoji](./firefish-js.entities.customemoji.md) - -## entities.CustomEmoji type - -**Signature:** - -```typescript -export declare type CustomEmoji = { - id: string; - name: string; - url: string; - category: string; - aliases: string[]; -}; -``` diff --git a/packages/firefish-js/markdown/firefish-js.entities.datestring.md b/packages/firefish-js/markdown/firefish-js.entities.datestring.md deleted file mode 100644 index 39a9873e56..0000000000 --- a/packages/firefish-js/markdown/firefish-js.entities.datestring.md +++ /dev/null @@ -1,11 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) > [firefish-js](./firefish-js.md) > [entities](./firefish-js.entities.md) > [DateString](./firefish-js.entities.datestring.md) - -## entities.DateString type - -**Signature:** - -```typescript -export declare type DateString = string; -``` diff --git a/packages/firefish-js/markdown/firefish-js.entities.detailedinstancemetadata.md b/packages/firefish-js/markdown/firefish-js.entities.detailedinstancemetadata.md deleted file mode 100644 index 7629502d39..0000000000 --- a/packages/firefish-js/markdown/firefish-js.entities.detailedinstancemetadata.md +++ /dev/null @@ -1,15 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) > [firefish-js](./firefish-js.md) > [entities](./firefish-js.entities.md) > [DetailedInstanceMetadata](./firefish-js.entities.detailedinstancemetadata.md) - -## entities.DetailedInstanceMetadata type - -**Signature:** - -```typescript -export declare type DetailedInstanceMetadata = LiteInstanceMetadata & { - features: Record<string, any>; -}; -``` -**References:** [LiteInstanceMetadata](./firefish-js.entities.liteinstancemetadata.md) - diff --git a/packages/firefish-js/markdown/firefish-js.entities.drivefile.md b/packages/firefish-js/markdown/firefish-js.entities.drivefile.md deleted file mode 100644 index 1393b5c63b..0000000000 --- a/packages/firefish-js/markdown/firefish-js.entities.drivefile.md +++ /dev/null @@ -1,26 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) > [firefish-js](./firefish-js.md) > [entities](./firefish-js.entities.md) > [DriveFile](./firefish-js.entities.drivefile.md) - -## entities.DriveFile type - -**Signature:** - -```typescript -export declare type DriveFile = { - id: ID; - createdAt: DateString; - isSensitive: boolean; - name: string; - thumbnailUrl: string; - url: string; - type: string; - size: number; - md5: string; - blurhash: string; - comment: string | null; - properties: Record<string, any>; -}; -``` -**References:** [ID](./firefish-js.entities.id.md)<!-- -->, [DateString](./firefish-js.entities.datestring.md) - diff --git a/packages/firefish-js/markdown/firefish-js.entities.drivefolder.md b/packages/firefish-js/markdown/firefish-js.entities.drivefolder.md deleted file mode 100644 index dbbefb1205..0000000000 --- a/packages/firefish-js/markdown/firefish-js.entities.drivefolder.md +++ /dev/null @@ -1,11 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) > [firefish-js](./firefish-js.md) > [entities](./firefish-js.entities.md) > [DriveFolder](./firefish-js.entities.drivefolder.md) - -## entities.DriveFolder type - -**Signature:** - -```typescript -export declare type DriveFolder = TODO; -``` diff --git a/packages/firefish-js/markdown/firefish-js.entities.following.md b/packages/firefish-js/markdown/firefish-js.entities.following.md deleted file mode 100644 index f5423fb876..0000000000 --- a/packages/firefish-js/markdown/firefish-js.entities.following.md +++ /dev/null @@ -1,18 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) > [firefish-js](./firefish-js.md) > [entities](./firefish-js.entities.md) > [Following](./firefish-js.entities.following.md) - -## entities.Following type - -**Signature:** - -```typescript -export declare type Following = { - id: ID; - createdAt: DateString; - followerId: User["id"]; - followeeId: User["id"]; -}; -``` -**References:** [ID](./firefish-js.entities.id.md)<!-- -->, [DateString](./firefish-js.entities.datestring.md)<!-- -->, [User](./firefish-js.entities.user.md) - diff --git a/packages/firefish-js/markdown/firefish-js.entities.followingfolloweepopulated.md b/packages/firefish-js/markdown/firefish-js.entities.followingfolloweepopulated.md deleted file mode 100644 index 85ed36bf4b..0000000000 --- a/packages/firefish-js/markdown/firefish-js.entities.followingfolloweepopulated.md +++ /dev/null @@ -1,15 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) > [firefish-js](./firefish-js.md) > [entities](./firefish-js.entities.md) > [FollowingFolloweePopulated](./firefish-js.entities.followingfolloweepopulated.md) - -## entities.FollowingFolloweePopulated type - -**Signature:** - -```typescript -export declare type FollowingFolloweePopulated = Following & { - followee: UserDetailed; -}; -``` -**References:** [Following](./firefish-js.entities.following.md)<!-- -->, [UserDetailed](./firefish-js.entities.userdetailed.md) - diff --git a/packages/firefish-js/markdown/firefish-js.entities.followingfollowerpopulated.md b/packages/firefish-js/markdown/firefish-js.entities.followingfollowerpopulated.md deleted file mode 100644 index 50d28b5984..0000000000 --- a/packages/firefish-js/markdown/firefish-js.entities.followingfollowerpopulated.md +++ /dev/null @@ -1,15 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) > [firefish-js](./firefish-js.md) > [entities](./firefish-js.entities.md) > [FollowingFollowerPopulated](./firefish-js.entities.followingfollowerpopulated.md) - -## entities.FollowingFollowerPopulated type - -**Signature:** - -```typescript -export declare type FollowingFollowerPopulated = Following & { - follower: UserDetailed; -}; -``` -**References:** [Following](./firefish-js.entities.following.md)<!-- -->, [UserDetailed](./firefish-js.entities.userdetailed.md) - diff --git a/packages/firefish-js/markdown/firefish-js.entities.followrequest.md b/packages/firefish-js/markdown/firefish-js.entities.followrequest.md deleted file mode 100644 index 8fbd54b1c0..0000000000 --- a/packages/firefish-js/markdown/firefish-js.entities.followrequest.md +++ /dev/null @@ -1,17 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) > [firefish-js](./firefish-js.md) > [entities](./firefish-js.entities.md) > [FollowRequest](./firefish-js.entities.followrequest.md) - -## entities.FollowRequest type - -**Signature:** - -```typescript -export declare type FollowRequest = { - id: ID; - follower: User; - followee: User; -}; -``` -**References:** [ID](./firefish-js.entities.id.md)<!-- -->, [User](./firefish-js.entities.user.md) - diff --git a/packages/firefish-js/markdown/firefish-js.entities.gallerypost.md b/packages/firefish-js/markdown/firefish-js.entities.gallerypost.md deleted file mode 100644 index 057366a8e4..0000000000 --- a/packages/firefish-js/markdown/firefish-js.entities.gallerypost.md +++ /dev/null @@ -1,11 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) > [firefish-js](./firefish-js.md) > [entities](./firefish-js.entities.md) > [GalleryPost](./firefish-js.entities.gallerypost.md) - -## entities.GalleryPost type - -**Signature:** - -```typescript -export declare type GalleryPost = TODO; -``` diff --git a/packages/firefish-js/markdown/firefish-js.entities.id.md b/packages/firefish-js/markdown/firefish-js.entities.id.md deleted file mode 100644 index 4cc166f980..0000000000 --- a/packages/firefish-js/markdown/firefish-js.entities.id.md +++ /dev/null @@ -1,11 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) > [firefish-js](./firefish-js.md) > [entities](./firefish-js.entities.md) > [ID](./firefish-js.entities.id.md) - -## entities.ID type - -**Signature:** - -```typescript -export declare type ID = string; -``` diff --git a/packages/firefish-js/markdown/firefish-js.entities.instance.md b/packages/firefish-js/markdown/firefish-js.entities.instance.md deleted file mode 100644 index 6b78533b0f..0000000000 --- a/packages/firefish-js/markdown/firefish-js.entities.instance.md +++ /dev/null @@ -1,40 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) > [firefish-js](./firefish-js.md) > [entities](./firefish-js.entities.md) > [Instance](./firefish-js.entities.instance.md) - -## entities.Instance type - -**Signature:** - -```typescript -export declare type Instance = { - id: ID; - caughtAt: DateString; - host: string; - usersCount: number; - notesCount: number; - followingCount: number; - followersCount: number; - driveUsage: number; - driveFiles: number; - latestRequestSentAt: DateString | null; - latestStatus: number | null; - latestRequestReceivedAt: DateString | null; - lastCommunicatedAt: DateString; - isNotResponding: boolean; - isSuspended: boolean; - softwareName: string | null; - softwareVersion: string | null; - openRegistrations: boolean | null; - name: string | null; - description: string | null; - maintainerName: string | null; - maintainerEmail: string | null; - iconUrl: string | null; - faviconUrl: string | null; - themeColor: string | null; - infoUpdatedAt: DateString | null; -}; -``` -**References:** [ID](./firefish-js.entities.id.md)<!-- -->, [DateString](./firefish-js.entities.datestring.md) - diff --git a/packages/firefish-js/markdown/firefish-js.entities.instancemetadata.md b/packages/firefish-js/markdown/firefish-js.entities.instancemetadata.md deleted file mode 100644 index c7e6f8a44d..0000000000 --- a/packages/firefish-js/markdown/firefish-js.entities.instancemetadata.md +++ /dev/null @@ -1,15 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) > [firefish-js](./firefish-js.md) > [entities](./firefish-js.entities.md) > [InstanceMetadata](./firefish-js.entities.instancemetadata.md) - -## entities.InstanceMetadata type - -**Signature:** - -```typescript -export declare type InstanceMetadata = - | LiteInstanceMetadata - | DetailedInstanceMetadata; -``` -**References:** [LiteInstanceMetadata](./firefish-js.entities.liteinstancemetadata.md)<!-- -->, [DetailedInstanceMetadata](./firefish-js.entities.detailedinstancemetadata.md) - diff --git a/packages/firefish-js/markdown/firefish-js.entities.liteinstancemetadata.md b/packages/firefish-js/markdown/firefish-js.entities.liteinstancemetadata.md deleted file mode 100644 index f1af7e7b35..0000000000 --- a/packages/firefish-js/markdown/firefish-js.entities.liteinstancemetadata.md +++ /dev/null @@ -1,46 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) > [firefish-js](./firefish-js.md) > [entities](./firefish-js.entities.md) > [LiteInstanceMetadata](./firefish-js.entities.liteinstancemetadata.md) - -## entities.LiteInstanceMetadata type - -**Signature:** - -```typescript -export declare type LiteInstanceMetadata = { - maintainerName: string | null; - maintainerEmail: string | null; - version: string; - name: string | null; - uri: string; - description: string | null; - tosUrl: string | null; - disableRegistration: boolean; - disableLocalTimeline: boolean; - disableRecommendedTimeline: boolean; - disableGlobalTimeline: boolean; - driveCapacityPerLocalUserMb: number; - driveCapacityPerRemoteUserMb: number; - enableHcaptcha: boolean; - hcaptchaSiteKey: string | null; - enableRecaptcha: boolean; - recaptchaSiteKey: string | null; - swPublickey: string | null; - maxNoteTextLength: number; - enableEmail: boolean; - enableTwitterIntegration: boolean; - enableGithubIntegration: boolean; - enableDiscordIntegration: boolean; - enableServiceWorker: boolean; - emojis: CustomEmoji[]; - ads: { - id: ID; - ratio: number; - place: string; - url: string; - imageUrl: string; - }[]; -}; -``` -**References:** [CustomEmoji](./firefish-js.entities.customemoji.md)<!-- -->, [ID](./firefish-js.entities.id.md) - diff --git a/packages/firefish-js/markdown/firefish-js.entities.md b/packages/firefish-js/markdown/firefish-js.entities.md deleted file mode 100644 index 260bb8a8a1..0000000000 --- a/packages/firefish-js/markdown/firefish-js.entities.md +++ /dev/null @@ -1,51 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) > [firefish-js](./firefish-js.md) > [entities](./firefish-js.entities.md) - -## entities namespace - -## Type Aliases - -| Type Alias | Description | -| --- | --- | -| [Ad](./firefish-js.entities.ad.md) | | -| [Announcement](./firefish-js.entities.announcement.md) | | -| [Antenna](./firefish-js.entities.antenna.md) | | -| [App](./firefish-js.entities.app.md) | | -| [AuthSession](./firefish-js.entities.authsession.md) | | -| [Blocking](./firefish-js.entities.blocking.md) | | -| [Channel](./firefish-js.entities.channel.md) | | -| [Clip](./firefish-js.entities.clip.md) | | -| [CustomEmoji](./firefish-js.entities.customemoji.md) | | -| [DateString](./firefish-js.entities.datestring.md) | | -| [DetailedInstanceMetadata](./firefish-js.entities.detailedinstancemetadata.md) | | -| [DriveFile](./firefish-js.entities.drivefile.md) | | -| [DriveFolder](./firefish-js.entities.drivefolder.md) | | -| [Following](./firefish-js.entities.following.md) | | -| [FollowingFolloweePopulated](./firefish-js.entities.followingfolloweepopulated.md) | | -| [FollowingFollowerPopulated](./firefish-js.entities.followingfollowerpopulated.md) | | -| [FollowRequest](./firefish-js.entities.followrequest.md) | | -| [GalleryPost](./firefish-js.entities.gallerypost.md) | | -| [ID](./firefish-js.entities.id.md) | | -| [Instance](./firefish-js.entities.instance.md) | | -| [InstanceMetadata](./firefish-js.entities.instancemetadata.md) | | -| [LiteInstanceMetadata](./firefish-js.entities.liteinstancemetadata.md) | | -| [MeDetailed](./firefish-js.entities.medetailed.md) | | -| [MessagingMessage](./firefish-js.entities.messagingmessage.md) | | -| [Note](./firefish-js.entities.note.md) | | -| [NoteFavorite](./firefish-js.entities.notefavorite.md) | | -| [NoteReaction](./firefish-js.entities.notereaction.md) | | -| [Notification](./firefish-js.entities.notification.md) | | -| [OriginType](./firefish-js.entities.origintype.md) | | -| [Page](./firefish-js.entities.page.md) | | -| [PageEvent](./firefish-js.entities.pageevent.md) | | -| [ServerInfo](./firefish-js.entities.serverinfo.md) | | -| [Signin](./firefish-js.entities.signin.md) | | -| [Stats](./firefish-js.entities.stats.md) | | -| [User](./firefish-js.entities.user.md) | | -| [UserDetailed](./firefish-js.entities.userdetailed.md) | | -| [UserGroup](./firefish-js.entities.usergroup.md) | | -| [UserList](./firefish-js.entities.userlist.md) | | -| [UserLite](./firefish-js.entities.userlite.md) | | -| [UserSorting](./firefish-js.entities.usersorting.md) | | - diff --git a/packages/firefish-js/markdown/firefish-js.entities.medetailed.md b/packages/firefish-js/markdown/firefish-js.entities.medetailed.md deleted file mode 100644 index 252f698e93..0000000000 --- a/packages/firefish-js/markdown/firefish-js.entities.medetailed.md +++ /dev/null @@ -1,40 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) > [firefish-js](./firefish-js.md) > [entities](./firefish-js.entities.md) > [MeDetailed](./firefish-js.entities.medetailed.md) - -## entities.MeDetailed type - -**Signature:** - -```typescript -export declare type MeDetailed = UserDetailed & { - avatarId: DriveFile["id"]; - bannerId: DriveFile["id"]; - autoAcceptFollowed: boolean; - alwaysMarkNsfw: boolean; - carefulBot: boolean; - emailNotificationTypes: string[]; - hasPendingReceivedFollowRequest: boolean; - hasUnreadAnnouncement: boolean; - hasUnreadAntenna: boolean; - hasUnreadChannel: boolean; - hasUnreadMentions: boolean; - hasUnreadMessagingMessage: boolean; - hasUnreadNotification: boolean; - hasUnreadSpecifiedNotes: boolean; - hideOnlineStatus: boolean; - injectFeaturedNote: boolean; - integrations: Record<string, any>; - isDeleted: boolean; - isExplorable: boolean; - mutedWords: string[][]; - mutingNotificationTypes: string[]; - noCrawle: boolean; - preventAiLearning: boolean; - receiveAnnouncementEmail: boolean; - usePasswordLessLogin: boolean; - [other: string]: any; -}; -``` -**References:** [UserDetailed](./firefish-js.entities.userdetailed.md)<!-- -->, [DriveFile](./firefish-js.entities.drivefile.md) - diff --git a/packages/firefish-js/markdown/firefish-js.entities.messagingmessage.md b/packages/firefish-js/markdown/firefish-js.entities.messagingmessage.md deleted file mode 100644 index 41869577ec..0000000000 --- a/packages/firefish-js/markdown/firefish-js.entities.messagingmessage.md +++ /dev/null @@ -1,27 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) > [firefish-js](./firefish-js.md) > [entities](./firefish-js.entities.md) > [MessagingMessage](./firefish-js.entities.messagingmessage.md) - -## entities.MessagingMessage type - -**Signature:** - -```typescript -export declare type MessagingMessage = { - id: ID; - createdAt: DateString; - file: DriveFile | null; - fileId: DriveFile["id"] | null; - isRead: boolean; - reads: User["id"][]; - text: string | null; - user: User; - userId: User["id"]; - recipient?: User | null; - recipientId: User["id"] | null; - group?: UserGroup | null; - groupId: UserGroup["id"] | null; -}; -``` -**References:** [ID](./firefish-js.entities.id.md)<!-- -->, [DateString](./firefish-js.entities.datestring.md)<!-- -->, [DriveFile](./firefish-js.entities.drivefile.md)<!-- -->, [User](./firefish-js.entities.user.md)<!-- -->, [UserGroup](./firefish-js.entities.usergroup.md) - diff --git a/packages/firefish-js/markdown/firefish-js.entities.note.md b/packages/firefish-js/markdown/firefish-js.entities.note.md deleted file mode 100644 index 0d17b96c7d..0000000000 --- a/packages/firefish-js/markdown/firefish-js.entities.note.md +++ /dev/null @@ -1,51 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) > [firefish-js](./firefish-js.md) > [entities](./firefish-js.entities.md) > [Note](./firefish-js.entities.note.md) - -## entities.Note type - -**Signature:** - -```typescript -export declare type Note = { - id: ID; - createdAt: DateString; - text: string | null; - cw: string | null; - user: User; - userId: User["id"]; - reply?: Note; - replyId: Note["id"]; - renote?: Note; - renoteId: Note["id"]; - files: DriveFile[]; - fileIds: DriveFile["id"][]; - visibility: "public" | "home" | "followers" | "specified"; - visibleUserIds?: User["id"][]; - localOnly?: boolean; - channel?: Channel["id"]; - myReaction?: string; - reactions: Record<string, number>; - renoteCount: number; - repliesCount: number; - poll?: { - expiresAt: DateString | null; - multiple: boolean; - choices: { - isVoted: boolean; - text: string; - votes: number; - }[]; - }; - emojis: { - name: string; - url: string; - }[]; - uri?: string; - url?: string; - updatedAt?: DateString; - isHidden?: boolean; -}; -``` -**References:** [ID](./firefish-js.entities.id.md)<!-- -->, [DateString](./firefish-js.entities.datestring.md)<!-- -->, [User](./firefish-js.entities.user.md)<!-- -->, [Note](./firefish-js.entities.note.md)<!-- -->, [DriveFile](./firefish-js.entities.drivefile.md)<!-- -->, [Channel](./firefish-js.entities.channel.md) - diff --git a/packages/firefish-js/markdown/firefish-js.entities.notefavorite.md b/packages/firefish-js/markdown/firefish-js.entities.notefavorite.md deleted file mode 100644 index c5331fbbe0..0000000000 --- a/packages/firefish-js/markdown/firefish-js.entities.notefavorite.md +++ /dev/null @@ -1,18 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) > [firefish-js](./firefish-js.md) > [entities](./firefish-js.entities.md) > [NoteFavorite](./firefish-js.entities.notefavorite.md) - -## entities.NoteFavorite type - -**Signature:** - -```typescript -export declare type NoteFavorite = { - id: ID; - createdAt: DateString; - noteId: Note["id"]; - note: Note; -}; -``` -**References:** [ID](./firefish-js.entities.id.md)<!-- -->, [DateString](./firefish-js.entities.datestring.md)<!-- -->, [Note](./firefish-js.entities.note.md) - diff --git a/packages/firefish-js/markdown/firefish-js.entities.notereaction.md b/packages/firefish-js/markdown/firefish-js.entities.notereaction.md deleted file mode 100644 index c17614e363..0000000000 --- a/packages/firefish-js/markdown/firefish-js.entities.notereaction.md +++ /dev/null @@ -1,18 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) > [firefish-js](./firefish-js.md) > [entities](./firefish-js.entities.md) > [NoteReaction](./firefish-js.entities.notereaction.md) - -## entities.NoteReaction type - -**Signature:** - -```typescript -export declare type NoteReaction = { - id: ID; - createdAt: DateString; - user: UserLite; - type: string; -}; -``` -**References:** [ID](./firefish-js.entities.id.md)<!-- -->, [DateString](./firefish-js.entities.datestring.md)<!-- -->, [UserLite](./firefish-js.entities.userlite.md) - diff --git a/packages/firefish-js/markdown/firefish-js.entities.notification.md b/packages/firefish-js/markdown/firefish-js.entities.notification.md deleted file mode 100644 index 700aed0f1c..0000000000 --- a/packages/firefish-js/markdown/firefish-js.entities.notification.md +++ /dev/null @@ -1,82 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) > [firefish-js](./firefish-js.md) > [entities](./firefish-js.entities.md) > [Notification](./firefish-js.entities.notification.md) - -## entities.Notification type - -**Signature:** - -```typescript -export declare type Notification = { - id: ID; - createdAt: DateString; - isRead: boolean; -} & ( - | { - type: "reaction"; - reaction: string; - user: User; - userId: User["id"]; - note: Note; - } - | { - type: "reply"; - user: User; - userId: User["id"]; - note: Note; - } - | { - type: "renote"; - user: User; - userId: User["id"]; - note: Note; - } - | { - type: "quote"; - user: User; - userId: User["id"]; - note: Note; - } - | { - type: "mention"; - user: User; - userId: User["id"]; - note: Note; - } - | { - type: "pollVote"; - user: User; - userId: User["id"]; - note: Note; - } - | { - type: "follow"; - user: User; - userId: User["id"]; - } - | { - type: "followRequestAccepted"; - user: User; - userId: User["id"]; - } - | { - type: "receiveFollowRequest"; - user: User; - userId: User["id"]; - } - | { - type: "groupInvited"; - invitation: UserGroup; - user: User; - userId: User["id"]; - } - | { - type: "app"; - header?: string | null; - body: string; - icon?: string | null; - } -); -``` -**References:** [ID](./firefish-js.entities.id.md)<!-- -->, [DateString](./firefish-js.entities.datestring.md)<!-- -->, [User](./firefish-js.entities.user.md)<!-- -->, [Note](./firefish-js.entities.note.md)<!-- -->, [UserGroup](./firefish-js.entities.usergroup.md) - diff --git a/packages/firefish-js/markdown/firefish-js.entities.origintype.md b/packages/firefish-js/markdown/firefish-js.entities.origintype.md deleted file mode 100644 index f0b6134189..0000000000 --- a/packages/firefish-js/markdown/firefish-js.entities.origintype.md +++ /dev/null @@ -1,11 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) > [firefish-js](./firefish-js.md) > [entities](./firefish-js.entities.md) > [OriginType](./firefish-js.entities.origintype.md) - -## entities.OriginType type - -**Signature:** - -```typescript -export declare type OriginType = "combined" | "local" | "remote"; -``` diff --git a/packages/firefish-js/markdown/firefish-js.entities.page.md b/packages/firefish-js/markdown/firefish-js.entities.page.md deleted file mode 100644 index 92fddd7946..0000000000 --- a/packages/firefish-js/markdown/firefish-js.entities.page.md +++ /dev/null @@ -1,33 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) > [firefish-js](./firefish-js.md) > [entities](./firefish-js.entities.md) > [Page](./firefish-js.entities.page.md) - -## entities.Page type - -**Signature:** - -```typescript -export declare type Page = { - id: ID; - createdAt: DateString; - updatedAt: DateString; - userId: User["id"]; - user: User; - content: Record<string, any>[]; - variables: Record<string, any>[]; - title: string; - name: string; - summary: string | null; - hideTitleWhenPinned: boolean; - alignCenter: boolean; - font: string; - script: string; - eyeCatchingImageId: DriveFile["id"] | null; - eyeCatchingImage: DriveFile | null; - attachedFiles: any; - likedCount: number; - isLiked?: boolean; -}; -``` -**References:** [ID](./firefish-js.entities.id.md)<!-- -->, [DateString](./firefish-js.entities.datestring.md)<!-- -->, [User](./firefish-js.entities.user.md)<!-- -->, [DriveFile](./firefish-js.entities.drivefile.md) - diff --git a/packages/firefish-js/markdown/firefish-js.entities.pageevent.md b/packages/firefish-js/markdown/firefish-js.entities.pageevent.md deleted file mode 100644 index 8ce209a3d2..0000000000 --- a/packages/firefish-js/markdown/firefish-js.entities.pageevent.md +++ /dev/null @@ -1,19 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) > [firefish-js](./firefish-js.md) > [entities](./firefish-js.entities.md) > [PageEvent](./firefish-js.entities.pageevent.md) - -## entities.PageEvent type - -**Signature:** - -```typescript -export declare type PageEvent = { - pageId: Page["id"]; - event: string; - var: any; - userId: User["id"]; - user: User; -}; -``` -**References:** [Page](./firefish-js.entities.page.md)<!-- -->, [User](./firefish-js.entities.user.md) - diff --git a/packages/firefish-js/markdown/firefish-js.entities.serverinfo.md b/packages/firefish-js/markdown/firefish-js.entities.serverinfo.md deleted file mode 100644 index 3c7e10980d..0000000000 --- a/packages/firefish-js/markdown/firefish-js.entities.serverinfo.md +++ /dev/null @@ -1,24 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) > [firefish-js](./firefish-js.md) > [entities](./firefish-js.entities.md) > [ServerInfo](./firefish-js.entities.serverinfo.md) - -## entities.ServerInfo type - -**Signature:** - -```typescript -export declare type ServerInfo = { - machine: string; - cpu: { - model: string; - cores: number; - }; - mem: { - total: number; - }; - fs: { - total: number; - used: number; - }; -}; -``` diff --git a/packages/firefish-js/markdown/firefish-js.entities.signin.md b/packages/firefish-js/markdown/firefish-js.entities.signin.md deleted file mode 100644 index 8c67d7c083..0000000000 --- a/packages/firefish-js/markdown/firefish-js.entities.signin.md +++ /dev/null @@ -1,19 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) > [firefish-js](./firefish-js.md) > [entities](./firefish-js.entities.md) > [Signin](./firefish-js.entities.signin.md) - -## entities.Signin type - -**Signature:** - -```typescript -export declare type Signin = { - id: ID; - createdAt: DateString; - ip: string; - headers: Record<string, any>; - success: boolean; -}; -``` -**References:** [ID](./firefish-js.entities.id.md)<!-- -->, [DateString](./firefish-js.entities.datestring.md) - diff --git a/packages/firefish-js/markdown/firefish-js.entities.stats.md b/packages/firefish-js/markdown/firefish-js.entities.stats.md deleted file mode 100644 index 36cce7da7c..0000000000 --- a/packages/firefish-js/markdown/firefish-js.entities.stats.md +++ /dev/null @@ -1,19 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) > [firefish-js](./firefish-js.md) > [entities](./firefish-js.entities.md) > [Stats](./firefish-js.entities.stats.md) - -## entities.Stats type - -**Signature:** - -```typescript -export declare type Stats = { - notesCount: number; - originalNotesCount: number; - usersCount: number; - originalUsersCount: number; - instances: number; - driveUsageLocal: number; - driveUsageRemote: number; -}; -``` diff --git a/packages/firefish-js/markdown/firefish-js.entities.user.md b/packages/firefish-js/markdown/firefish-js.entities.user.md deleted file mode 100644 index b3795a1355..0000000000 --- a/packages/firefish-js/markdown/firefish-js.entities.user.md +++ /dev/null @@ -1,13 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) > [firefish-js](./firefish-js.md) > [entities](./firefish-js.entities.md) > [User](./firefish-js.entities.user.md) - -## entities.User type - -**Signature:** - -```typescript -export declare type User = UserLite | UserDetailed; -``` -**References:** [UserLite](./firefish-js.entities.userlite.md)<!-- -->, [UserDetailed](./firefish-js.entities.userdetailed.md) - diff --git a/packages/firefish-js/markdown/firefish-js.entities.userdetailed.md b/packages/firefish-js/markdown/firefish-js.entities.userdetailed.md deleted file mode 100644 index 839f0105a5..0000000000 --- a/packages/firefish-js/markdown/firefish-js.entities.userdetailed.md +++ /dev/null @@ -1,56 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) > [firefish-js](./firefish-js.md) > [entities](./firefish-js.entities.md) > [UserDetailed](./firefish-js.entities.userdetailed.md) - -## entities.UserDetailed type - -**Signature:** - -```typescript -export declare type UserDetailed = UserLite & { - bannerBlurhash: string | null; - bannerColor: string | null; - bannerUrl: string | null; - birthday: string | null; - createdAt: DateString; - description: string | null; - ffVisibility: "public" | "followers" | "private"; - fields: { - name: string; - value: string; - }[]; - followersCount: number; - followingCount: number; - hasPendingFollowRequestFromYou: boolean; - hasPendingFollowRequestToYou: boolean; - isAdmin: boolean; - isBlocked: boolean; - isBlocking: boolean; - isBot: boolean; - isCat: boolean; - isFollowed: boolean; - isFollowing: boolean; - isLocked: boolean; - isModerator: boolean; - isMuted: boolean; - isRenoteMuted: boolean; - isSilenced: boolean; - isSuspended: boolean; - lang: string | null; - lastFetchedAt?: DateString; - location: string | null; - notesCount: number; - pinnedNoteIds: ID[]; - pinnedNotes: Note[]; - pinnedPage: Page | null; - pinnedPageId: string | null; - publicReactions: boolean; - securityKeys: boolean; - twoFactorEnabled: boolean; - updatedAt: DateString | null; - uri: string | null; - url: string | null; -}; -``` -**References:** [UserLite](./firefish-js.entities.userlite.md)<!-- -->, [DateString](./firefish-js.entities.datestring.md)<!-- -->, [ID](./firefish-js.entities.id.md)<!-- -->, [Note](./firefish-js.entities.note.md)<!-- -->, [Page](./firefish-js.entities.page.md) - diff --git a/packages/firefish-js/markdown/firefish-js.entities.usergroup.md b/packages/firefish-js/markdown/firefish-js.entities.usergroup.md deleted file mode 100644 index bffa8e9f01..0000000000 --- a/packages/firefish-js/markdown/firefish-js.entities.usergroup.md +++ /dev/null @@ -1,11 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) > [firefish-js](./firefish-js.md) > [entities](./firefish-js.entities.md) > [UserGroup](./firefish-js.entities.usergroup.md) - -## entities.UserGroup type - -**Signature:** - -```typescript -export declare type UserGroup = TODO; -``` diff --git a/packages/firefish-js/markdown/firefish-js.entities.userlist.md b/packages/firefish-js/markdown/firefish-js.entities.userlist.md deleted file mode 100644 index d049f0899e..0000000000 --- a/packages/firefish-js/markdown/firefish-js.entities.userlist.md +++ /dev/null @@ -1,18 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) > [firefish-js](./firefish-js.md) > [entities](./firefish-js.entities.md) > [UserList](./firefish-js.entities.userlist.md) - -## entities.UserList type - -**Signature:** - -```typescript -export declare type UserList = { - id: ID; - createdAt: DateString; - name: string; - userIds: User["id"][]; -}; -``` -**References:** [ID](./firefish-js.entities.id.md)<!-- -->, [DateString](./firefish-js.entities.datestring.md)<!-- -->, [User](./firefish-js.entities.user.md) - diff --git a/packages/firefish-js/markdown/firefish-js.entities.userlite.md b/packages/firefish-js/markdown/firefish-js.entities.userlite.md deleted file mode 100644 index 0111a39a6a..0000000000 --- a/packages/firefish-js/markdown/firefish-js.entities.userlite.md +++ /dev/null @@ -1,35 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) > [firefish-js](./firefish-js.md) > [entities](./firefish-js.entities.md) > [UserLite](./firefish-js.entities.userlite.md) - -## entities.UserLite type - -**Signature:** - -```typescript -export declare type UserLite = { - id: ID; - username: string; - host: string | null; - name: string; - onlineStatus: "online" | "active" | "offline" | "unknown"; - avatarUrl: string; - avatarBlurhash: string; - alsoKnownAs: string[]; - movedToUri: any; - emojis: { - name: string; - url: string; - }[]; - instance?: { - name: Instance["name"]; - softwareName: Instance["softwareName"]; - softwareVersion: Instance["softwareVersion"]; - iconUrl: Instance["iconUrl"]; - faviconUrl: Instance["faviconUrl"]; - themeColor: Instance["themeColor"]; - }; -}; -``` -**References:** [ID](./firefish-js.entities.id.md)<!-- -->, [Instance](./firefish-js.entities.instance.md) - diff --git a/packages/firefish-js/markdown/firefish-js.entities.usersorting.md b/packages/firefish-js/markdown/firefish-js.entities.usersorting.md deleted file mode 100644 index be9ebb81d1..0000000000 --- a/packages/firefish-js/markdown/firefish-js.entities.usersorting.md +++ /dev/null @@ -1,17 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) > [firefish-js](./firefish-js.md) > [entities](./firefish-js.entities.md) > [UserSorting](./firefish-js.entities.usersorting.md) - -## entities.UserSorting type - -**Signature:** - -```typescript -export declare type UserSorting = - | "+follower" - | "-follower" - | "+createdAt" - | "-createdAt" - | "+updatedAt" - | "-updatedAt"; -``` diff --git a/packages/firefish-js/markdown/firefish-js.ffvisibility.md b/packages/firefish-js/markdown/firefish-js.ffvisibility.md deleted file mode 100644 index 9cee2dc387..0000000000 --- a/packages/firefish-js/markdown/firefish-js.ffvisibility.md +++ /dev/null @@ -1,11 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) > [firefish-js](./firefish-js.md) > [ffVisibility](./firefish-js.ffvisibility.md) - -## ffVisibility variable - -**Signature:** - -```typescript -ffVisibility: readonly ["public", "followers", "private"] -``` diff --git a/packages/firefish-js/markdown/firefish-js.md b/packages/firefish-js/markdown/firefish-js.md deleted file mode 100644 index 03e0519189..0000000000 --- a/packages/firefish-js/markdown/firefish-js.md +++ /dev/null @@ -1,43 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) > [firefish-js](./firefish-js.md) - -## firefish-js package - -## Classes - -| Class | Description | -| --- | --- | -| [Stream](./firefish-js.stream.md) | | - -## Abstract Classes - -| Abstract Class | Description | -| --- | --- | -| [ChannelConnection](./firefish-js.channelconnection.md) | | - -## Namespaces - -| Namespace | Description | -| --- | --- | -| [api](./firefish-js.api.md) | | -| [entities](./firefish-js.entities.md) | | - -## Variables - -| Variable | Description | -| --- | --- | -| [ffVisibility](./firefish-js.ffvisibility.md) | | -| [mutedNoteReasons](./firefish-js.mutednotereasons.md) | | -| [noteVisibilities](./firefish-js.notevisibilities.md) | | -| [notificationTypes](./firefish-js.notificationtypes.md) | | -| [permissions](./firefish-js.permissions.md) | | - -## Type Aliases - -| Type Alias | Description | -| --- | --- | -| [Acct](./firefish-js.acct.md) | | -| [Channels](./firefish-js.channels.md) | | -| [Endpoints](./firefish-js.endpoints.md) | | - diff --git a/packages/firefish-js/markdown/firefish-js.mutednotereasons.md b/packages/firefish-js/markdown/firefish-js.mutednotereasons.md deleted file mode 100644 index 537d897ce6..0000000000 --- a/packages/firefish-js/markdown/firefish-js.mutednotereasons.md +++ /dev/null @@ -1,16 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) > [firefish-js](./firefish-js.md) > [mutedNoteReasons](./firefish-js.mutednotereasons.md) - -## mutedNoteReasons variable - -**Signature:** - -```typescript -mutedNoteReasons: readonly [ - "word", - "manual", - "spam", - "other", -] -``` diff --git a/packages/firefish-js/markdown/firefish-js.notevisibilities.md b/packages/firefish-js/markdown/firefish-js.notevisibilities.md deleted file mode 100644 index c39e4075cc..0000000000 --- a/packages/firefish-js/markdown/firefish-js.notevisibilities.md +++ /dev/null @@ -1,16 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) > [firefish-js](./firefish-js.md) > [noteVisibilities](./firefish-js.notevisibilities.md) - -## noteVisibilities variable - -**Signature:** - -```typescript -noteVisibilities: readonly [ - "public", - "home", - "followers", - "specified", -] -``` diff --git a/packages/firefish-js/markdown/firefish-js.notificationtypes.md b/packages/firefish-js/markdown/firefish-js.notificationtypes.md deleted file mode 100644 index 49ae568d52..0000000000 --- a/packages/firefish-js/markdown/firefish-js.notificationtypes.md +++ /dev/null @@ -1,24 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) > [firefish-js](./firefish-js.md) > [notificationTypes](./firefish-js.notificationtypes.md) - -## notificationTypes variable - -**Signature:** - -```typescript -notificationTypes: readonly [ - "follow", - "mention", - "reply", - "renote", - "quote", - "reaction", - "pollVote", - "pollEnded", - "receiveFollowRequest", - "followRequestAccepted", - "groupInvited", - "app", -] -``` diff --git a/packages/firefish-js/markdown/firefish-js.permissions.md b/packages/firefish-js/markdown/firefish-js.permissions.md deleted file mode 100644 index 937a41de1e..0000000000 --- a/packages/firefish-js/markdown/firefish-js.permissions.md +++ /dev/null @@ -1,11 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) > [firefish-js](./firefish-js.md) > [permissions](./firefish-js.permissions.md) - -## permissions variable - -**Signature:** - -```typescript -permissions: string[] -``` diff --git a/packages/firefish-js/markdown/firefish-js.stream._constructor_.md b/packages/firefish-js/markdown/firefish-js.stream._constructor_.md deleted file mode 100644 index 908972661d..0000000000 --- a/packages/firefish-js/markdown/firefish-js.stream._constructor_.md +++ /dev/null @@ -1,30 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) > [firefish-js](./firefish-js.md) > [Stream](./firefish-js.stream.md) > [(constructor)](./firefish-js.stream._constructor_.md) - -## Stream.(constructor) - -Constructs a new instance of the `Stream` class - -**Signature:** - -```typescript -constructor( - origin: string, - user: { - token: string; - } | null, - options?: { - WebSocket?: any; - }, - ); -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| origin | string | | -| user | { token: string; } \| null | | -| options | { WebSocket?: any; } | _(Optional)_ | - diff --git a/packages/firefish-js/markdown/firefish-js.stream.close.md b/packages/firefish-js/markdown/firefish-js.stream.close.md deleted file mode 100644 index c37d8c0459..0000000000 --- a/packages/firefish-js/markdown/firefish-js.stream.close.md +++ /dev/null @@ -1,15 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) > [firefish-js](./firefish-js.md) > [Stream](./firefish-js.stream.md) > [close](./firefish-js.stream.close.md) - -## Stream.close() method - -**Signature:** - -```typescript -close(): void; -``` -**Returns:** - -void - diff --git a/packages/firefish-js/markdown/firefish-js.stream.disconnecttochannel.md b/packages/firefish-js/markdown/firefish-js.stream.disconnecttochannel.md deleted file mode 100644 index c3944ecc87..0000000000 --- a/packages/firefish-js/markdown/firefish-js.stream.disconnecttochannel.md +++ /dev/null @@ -1,22 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) > [firefish-js](./firefish-js.md) > [Stream](./firefish-js.stream.md) > [disconnectToChannel](./firefish-js.stream.disconnecttochannel.md) - -## Stream.disconnectToChannel() method - -**Signature:** - -```typescript -disconnectToChannel(connection: NonSharedConnection): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| connection | NonSharedConnection | | - -**Returns:** - -void - diff --git a/packages/firefish-js/markdown/firefish-js.stream.md b/packages/firefish-js/markdown/firefish-js.stream.md deleted file mode 100644 index 91c8bb6508..0000000000 --- a/packages/firefish-js/markdown/firefish-js.stream.md +++ /dev/null @@ -1,36 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) > [firefish-js](./firefish-js.md) > [Stream](./firefish-js.stream.md) - -## Stream class - -**Signature:** - -```typescript -export default class Stream extends EventEmitter<StreamEvents> -``` -**Extends:** EventEmitter<StreamEvents> - -## Constructors - -| Constructor | Modifiers | Description | -| --- | --- | --- | -| [(constructor)(origin, user, options)](./firefish-js.stream._constructor_.md) | | Constructs a new instance of the <code>Stream</code> class | - -## Properties - -| Property | Modifiers | Type | Description | -| --- | --- | --- | --- | -| [state](./firefish-js.stream.state.md) | | "initializing" \| "reconnecting" \| "connected" | | - -## Methods - -| Method | Modifiers | Description | -| --- | --- | --- | -| [close()](./firefish-js.stream.close.md) | | | -| [disconnectToChannel(connection)](./firefish-js.stream.disconnecttochannel.md) | | | -| [removeSharedConnection(connection)](./firefish-js.stream.removesharedconnection.md) | | | -| [removeSharedConnectionPool(pool)](./firefish-js.stream.removesharedconnectionpool.md) | | | -| [send(typeOrPayload, payload)](./firefish-js.stream.send.md) | | | -| [useChannel(channel, params, name)](./firefish-js.stream.usechannel.md) | | | - diff --git a/packages/firefish-js/markdown/firefish-js.stream.removesharedconnection.md b/packages/firefish-js/markdown/firefish-js.stream.removesharedconnection.md deleted file mode 100644 index cddf982fab..0000000000 --- a/packages/firefish-js/markdown/firefish-js.stream.removesharedconnection.md +++ /dev/null @@ -1,22 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) > [firefish-js](./firefish-js.md) > [Stream](./firefish-js.stream.md) > [removeSharedConnection](./firefish-js.stream.removesharedconnection.md) - -## Stream.removeSharedConnection() method - -**Signature:** - -```typescript -removeSharedConnection(connection: SharedConnection): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| connection | SharedConnection | | - -**Returns:** - -void - diff --git a/packages/firefish-js/markdown/firefish-js.stream.removesharedconnectionpool.md b/packages/firefish-js/markdown/firefish-js.stream.removesharedconnectionpool.md deleted file mode 100644 index fd56dd287c..0000000000 --- a/packages/firefish-js/markdown/firefish-js.stream.removesharedconnectionpool.md +++ /dev/null @@ -1,22 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) > [firefish-js](./firefish-js.md) > [Stream](./firefish-js.stream.md) > [removeSharedConnectionPool](./firefish-js.stream.removesharedconnectionpool.md) - -## Stream.removeSharedConnectionPool() method - -**Signature:** - -```typescript -removeSharedConnectionPool(pool: Pool): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| pool | Pool | | - -**Returns:** - -void - diff --git a/packages/firefish-js/markdown/firefish-js.stream.send.md b/packages/firefish-js/markdown/firefish-js.stream.send.md deleted file mode 100644 index 4defb4d187..0000000000 --- a/packages/firefish-js/markdown/firefish-js.stream.send.md +++ /dev/null @@ -1,23 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) > [firefish-js](./firefish-js.md) > [Stream](./firefish-js.stream.md) > [send](./firefish-js.stream.send.md) - -## Stream.send() method - -**Signature:** - -```typescript -send(typeOrPayload: any, payload?: any): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| typeOrPayload | any | | -| payload | any | _(Optional)_ | - -**Returns:** - -void - diff --git a/packages/firefish-js/markdown/firefish-js.stream.state.md b/packages/firefish-js/markdown/firefish-js.stream.state.md deleted file mode 100644 index 4ad898f878..0000000000 --- a/packages/firefish-js/markdown/firefish-js.stream.state.md +++ /dev/null @@ -1,11 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) > [firefish-js](./firefish-js.md) > [Stream](./firefish-js.stream.md) > [state](./firefish-js.stream.state.md) - -## Stream.state property - -**Signature:** - -```typescript -state: "initializing" | "reconnecting" | "connected"; -``` diff --git a/packages/firefish-js/markdown/firefish-js.stream.usechannel.md b/packages/firefish-js/markdown/firefish-js.stream.usechannel.md deleted file mode 100644 index 791ac17a35..0000000000 --- a/packages/firefish-js/markdown/firefish-js.stream.usechannel.md +++ /dev/null @@ -1,28 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) > [firefish-js](./firefish-js.md) > [Stream](./firefish-js.stream.md) > [useChannel](./firefish-js.stream.usechannel.md) - -## Stream.useChannel() method - -**Signature:** - -```typescript -useChannel<C extends keyof Channels>( - channel: C, - params?: Channels[C]["params"], - name?: string, - ): Connection<Channels[C]>; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| channel | C | | -| params | [Channels](./firefish-js.channels.md)<!-- -->\[C\]\["params"\] | _(Optional)_ | -| name | string | _(Optional)_ | - -**Returns:** - -[Connection](./firefish-js.channelconnection.md)<!-- --><[Channels](./firefish-js.channels.md)<!-- -->\[C\]> - diff --git a/packages/firefish-js/markdown/index.md b/packages/firefish-js/markdown/index.md deleted file mode 100644 index 0eebad9831..0000000000 --- a/packages/firefish-js/markdown/index.md +++ /dev/null @@ -1,12 +0,0 @@ -<!-- Do not edit this file. It is automatically generated by API Documenter. --> - -[Home](./index.md) - -## API Reference - -## Packages - -| Package | Description | -| --- | --- | -| [firefish-js](./firefish-js.md) | | - diff --git a/packages/firefish-js/package.json b/packages/firefish-js/package.json index a9e4e2ee9e..dd597032c2 100644 --- a/packages/firefish-js/package.json +++ b/packages/firefish-js/package.json @@ -1,19 +1,14 @@ { "name": "firefish-js", - "version": "0.0.24", + "version": "0.0.25", "description": "Firefish SDK for JavaScript", "main": "./built/index.js", "types": "./built/index.d.ts", "scripts": { "build": "pnpm swc src -d built -D", "build:debug": "pnpm swc src -d built -s -D", - "render": "pnpm run build && pnpm run api && pnpm run api-prod && cp temp/firefish-js.api.json etc/ && pnpm run api-doc", - "tsd": "tsc && tsd", - "api": "pnpm api-extractor run --local --verbose", - "api-prod": "pnpm api-extractor run --verbose", - "api-doc": "pnpm api-documenter markdown -i ./etc/", - "lint": "pnpm biome check --apply *.ts", - "format": "pnpm biome format --write **/*.ts", + "lint": "pnpm biome check --apply src", + "format": "pnpm biome format --write src", "jest": "jest --coverage --detectOpenHandles", "test": "pnpm jest && pnpm tsd" }, @@ -22,8 +17,6 @@ "url": "https://git.joinfirefish.org/firefish/firefish.git" }, "devDependencies": { - "@microsoft/api-extractor": "^7.36.0", - "@microsoft/api-documenter": "^7.22.21", "@swc/cli": "^0.1.62", "@swc/core": "1.3.78", "@types/jest": "^27.4.0", @@ -37,12 +30,10 @@ "tsd": "^0.28.1", "typescript": "5.1.3" }, - "files": [ - "built" - ], + "files": ["built"], "dependencies": { "eventemitter3": "^4.0.7", - "reconnecting-websocket": "^4.4.0", + "reconnecting": "^4.4.1", "semver": "^7.3.8" }, "optionalDependencies": { diff --git a/packages/firefish-js/src/streaming.ts b/packages/firefish-js/src/streaming.ts index 924e33a45c..7d27c646ef 100644 --- a/packages/firefish-js/src/streaming.ts +++ b/packages/firefish-js/src/streaming.ts @@ -1,5 +1,5 @@ import { EventEmitter } from "eventemitter3"; -import ReconnectingWebsocket from "reconnecting-websocket"; +import ReconnectingWebsocket from "reconnecting"; import { BroadcastEvents, Channels } from "./streaming.types"; function autobind(instance: any): void { @@ -81,7 +81,6 @@ export default class Stream extends EventEmitter<StreamEvents> { `${wsOrigin}/streaming?${query}`, "", { - minReconnectionDelay: 1, // https://github.com/pladaria/reconnecting-websocket/issues/91 WebSocket: options.WebSocket, }, ); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 42feff5589..fe9aecb444 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -85,8 +85,8 @@ importers: specifier: ^1.0.4 version: 1.0.4 pnpm: - specifier: 8.8.0 - version: 8.8.0 + specifier: 8.9.2 + version: 8.9.2 start-server-and-test: specifier: 1.15.2 version: 1.15.2 @@ -896,9 +896,9 @@ importers: eventemitter3: specifier: ^4.0.7 version: 4.0.7 - reconnecting-websocket: - specifier: ^4.4.0 - version: 4.4.0 + reconnecting: + specifier: ^4.4.1 + version: 4.4.1 semver: specifier: ^7.3.8 version: 7.5.4 @@ -6982,6 +6982,7 @@ packages: /commander@9.5.0: resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} engines: {node: ^12.20.0 || >=14} + requiresBuild: true dev: true /comment-parser@1.4.0: @@ -15009,8 +15010,8 @@ packages: engines: {node: '>=14.19.0'} dev: false - /pnpm@8.8.0: - resolution: {integrity: sha512-eY5rMiZpzmPI2oVr1irR97bzb036oKwCWvK91wDQndXcqUPlytPtrF0bO668Syw/uA+7hTf5NnM8Mr4ux4BRRA==} + /pnpm@8.9.2: + resolution: {integrity: sha512-udNf6RsqWFTa3EMDSj57LmdfpLVuIOjgnvB4+lU8GPiu1EBR57Nui43UNfl+sMRMT/O0T8fG+n0h4frBe75mHg==} engines: {node: '>=16.14'} hasBin: true dev: true @@ -15869,8 +15870,8 @@ packages: resolve: 1.22.4 dev: true - /reconnecting-websocket@4.4.0: - resolution: {integrity: sha512-D2E33ceRPga0NvTDhJmphEgJ7FUYF0v4lr1ki0csq06OdlxKfugGzN0dSkxM/NfqCxYELK4KcaTOUOjTV6Dcng==} + /reconnecting@4.4.1: + resolution: {integrity: sha512-2GU8WqGpWVB0FcqJNbTDdRVSTw8W2205r+tWx8EVkFa8Oi5N2pbJeNPm9jHQNjDeQcqVILRNZfUX2RRHu6Zdog==} dev: false /redent@3.0.0: From 558fc3b2b95985c43fe0ac398250a23ba64c6b4d Mon Sep 17 00:00:00 2001 From: ThatOneCalculator <kainoa@t1c.dev> Date: Thu, 19 Oct 2023 16:43:30 -0700 Subject: [PATCH 14/74] fix: :label: firefish-js types --- packages/firefish-js/LICENSE | 2 +- packages/firefish-js/README.md | 9 +- packages/firefish-js/bun.lockb | Bin 0 -> 205415 bytes packages/firefish-js/package.json | 25 +- packages/firefish-js/src/streaming.ts | 4 +- .../firefish-js/test/{api.ts => api.test.ts} | 0 .../test/{streaming.ts => streaming.test.ts} | 0 pnpm-lock.yaml | 2658 +++++++---------- 8 files changed, 1035 insertions(+), 1663 deletions(-) create mode 100755 packages/firefish-js/bun.lockb rename packages/firefish-js/test/{api.ts => api.test.ts} (100%) rename packages/firefish-js/test/{streaming.ts => streaming.test.ts} (100%) diff --git a/packages/firefish-js/LICENSE b/packages/firefish-js/LICENSE index 11c1f9ce22..243af42d34 100644 --- a/packages/firefish-js/LICENSE +++ b/packages/firefish-js/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2021-2022 syuilo and other contributors +Copyright (c) 2021-2023 Kainoa Kanter, Firefish contributors, Syuilo, and misskey-js contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/packages/firefish-js/README.md b/packages/firefish-js/README.md index e75ba12681..d01395de20 100644 --- a/packages/firefish-js/README.md +++ b/packages/firefish-js/README.md @@ -1,8 +1,7 @@ -# Firefish.js +# Firefish-js -Fork of firefish.js for Firefish +## Firefish SDK for Node.js, Bun, and browsers -https://www.npmjs.com/package/firefish-js - -To fully build, run `pnpm i && pnpm run render`. +Fork of [misskey-js](https://www.npmjs.com/package/misskey-js) +<https://www.npmjs.com/package/firefish-js> diff --git a/packages/firefish-js/bun.lockb b/packages/firefish-js/bun.lockb new file mode 100755 index 0000000000000000000000000000000000000000..96788d2325e16f3b57147f261f42045089d2e48e GIT binary patch literal 205415 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 CdwLH5 literal 0 HcmV?d00001 diff --git a/packages/firefish-js/package.json b/packages/firefish-js/package.json index dd597032c2..7728c3d99d 100644 --- a/packages/firefish-js/package.json +++ b/packages/firefish-js/package.json @@ -1,11 +1,13 @@ { "name": "firefish-js", - "version": "0.0.25", + "version": "0.0.26", "description": "Firefish SDK for JavaScript", "main": "./built/index.js", "types": "./built/index.d.ts", + "license": "MIT", "scripts": { "build": "pnpm swc src -d built -D", + "build:types": "pnpm tsc --emitDeclarationOnly", "build:debug": "pnpm swc src -d built -s -D", "lint": "pnpm biome check --apply src", "format": "pnpm biome format --write src", @@ -19,20 +21,21 @@ "devDependencies": { "@swc/cli": "^0.1.62", "@swc/core": "1.3.78", - "@types/jest": "^27.4.0", - "@types/node": "20.3.1", - "jest": "^27.4.5", + "@swc/types": "^0.1.5", + "@types/jest": "^29.5.6", + "@types/node": "20.8.7", + "jest": "^29.7.0", "jest-fetch-mock": "^3.0.3", - "jest-websocket-mock": "^2.2.1", - "mock-socket": "^9.0.8", - "ts-jest": "^27.1.2", - "ts-node": "10.4.0", - "tsd": "^0.28.1", - "typescript": "5.1.3" + "jest-websocket-mock": "^2.5.0", + "mock-socket": "^9.3.1", + "ts-jest": "^29.1.1", + "ts-node": "10.9.1", + "tsd": "^0.29.0", + "typescript": "5.2.2" }, "files": ["built"], "dependencies": { - "eventemitter3": "^4.0.7", + "eventemitter3": "^5.0.1", "reconnecting": "^4.4.1", "semver": "^7.3.8" }, diff --git a/packages/firefish-js/src/streaming.ts b/packages/firefish-js/src/streaming.ts index 7d27c646ef..e6aa76dec7 100644 --- a/packages/firefish-js/src/streaming.ts +++ b/packages/firefish-js/src/streaming.ts @@ -26,8 +26,10 @@ export function urlQuery( ): string { const params = Object.entries(obj) .filter(([, v]) => (Array.isArray(v) ? v.length : v !== undefined)) - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion .reduce( + // rome-ignore lint/suspicious/noAssignInExpressions: <Used for key assigning> + // rome-ignore lint/style/noNonNullAssertion: <> + // rome-ignore lint/style/noCommaOperator: <> (a, [k, v]) => ((a[k] = v!), a), {} as Record<string, string | number | boolean>, ); diff --git a/packages/firefish-js/test/api.ts b/packages/firefish-js/test/api.test.ts similarity index 100% rename from packages/firefish-js/test/api.ts rename to packages/firefish-js/test/api.test.ts diff --git a/packages/firefish-js/test/streaming.ts b/packages/firefish-js/test/streaming.test.ts similarity index 100% rename from packages/firefish-js/test/streaming.ts rename to packages/firefish-js/test/streaming.test.ts diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fe9aecb444..491b46c42e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -631,10 +631,10 @@ importers: version: 14.1.2 '@eslint-sets/eslint-config-vue3': specifier: ^5.8.0 - version: 5.8.0(@babel/core@7.22.10)(eslint@8.46.0)(prettier@3.0.3)(typescript@5.2.2) + version: 5.8.0(@babel/core@7.23.2)(eslint@8.51.0)(prettier@3.0.3)(typescript@5.2.2) '@eslint-sets/eslint-config-vue3-ts': specifier: ^3.3.0 - version: 3.3.0(@babel/core@7.22.10)(eslint@8.46.0)(prettier@3.0.3)(typescript@5.2.2) + version: 3.3.0(@babel/core@7.23.2)(eslint@8.51.0)(prettier@3.0.3)(typescript@5.2.2) '@phosphor-icons/web': specifier: ^2.0.3 version: 2.0.3 @@ -748,10 +748,10 @@ importers: version: 0.0.1 eslint-config-prettier: specifier: 9.0.0 - version: 9.0.0(eslint@8.46.0) + version: 9.0.0(eslint@8.51.0) eslint-plugin-file-progress: specifier: ^1.3.0 - version: 1.3.0(eslint@8.46.0) + version: 1.3.0(eslint@8.51.0) eventemitter3: specifier: 5.0.1 version: 5.0.1 @@ -880,7 +880,7 @@ importers: version: 3.3.4 vue-draggable-plus: specifier: ^0.2.6 - version: 0.2.6(@types/sortablejs@1.15.1) + version: 0.2.6(@types/sortablejs@1.15.4) vue-isyourpasswordsafe: specifier: ^2.0.0 version: 2.0.0 @@ -894,8 +894,8 @@ importers: packages/firefish-js: dependencies: eventemitter3: - specifier: ^4.0.7 - version: 4.0.7 + specifier: ^5.0.1 + version: 5.0.1 reconnecting: specifier: ^4.4.1 version: 4.4.1 @@ -907,48 +907,45 @@ importers: specifier: 1.3.11 version: 1.3.11 devDependencies: - '@microsoft/api-documenter': - specifier: ^7.22.21 - version: 7.22.21(@types/node@20.3.1) - '@microsoft/api-extractor': - specifier: ^7.36.0 - version: 7.36.0(@types/node@20.3.1) '@swc/cli': specifier: ^0.1.62 version: 0.1.62(@swc/core@1.3.78)(chokidar@3.3.1) '@swc/core': specifier: 1.3.78 version: 1.3.78 + '@swc/types': + specifier: ^0.1.5 + version: 0.1.5 '@types/jest': - specifier: ^27.4.0 - version: 27.4.0 + specifier: ^29.5.6 + version: 29.5.6 '@types/node': - specifier: 20.3.1 - version: 20.3.1 + specifier: 20.8.7 + version: 20.8.7 jest: - specifier: ^27.4.5 - version: 27.4.5(ts-node@10.4.0) + specifier: ^29.7.0 + version: 29.7.0(@types/node@20.8.7)(ts-node@10.9.1) jest-fetch-mock: specifier: ^3.0.3 version: 3.0.3 jest-websocket-mock: - specifier: ^2.2.1 - version: 2.2.1(mock-socket@9.0.8) + specifier: ^2.5.0 + version: 2.5.0 mock-socket: - specifier: ^9.0.8 - version: 9.0.8 + specifier: ^9.3.1 + version: 9.3.1 ts-jest: - specifier: ^27.1.2 - version: 27.1.2(@babel/core@7.22.10)(@types/jest@27.4.0)(jest@27.4.5)(typescript@5.1.3) + specifier: ^29.1.1 + version: 29.1.1(@babel/core@7.23.2)(jest@29.7.0)(typescript@5.2.2) ts-node: - specifier: 10.4.0 - version: 10.4.0(@swc/core@1.3.78)(@types/node@20.3.1)(typescript@5.1.3) + specifier: 10.9.1 + version: 10.9.1(@swc/core@1.3.78)(@types/node@20.8.7)(typescript@5.2.2) tsd: - specifier: ^0.28.1 - version: 0.28.1 + specifier: ^0.29.0 + version: 0.29.0 typescript: - specifier: 5.1.3 - version: 5.1.3 + specifier: 5.2.2 + version: 5.2.2 packages/megalodon: dependencies: @@ -1063,7 +1060,7 @@ importers: version: 2.8.8 ts-jest: specifier: ^29.0.5 - version: 29.1.1(@babel/core@7.22.10)(jest@29.7.0)(typescript@4.9.4) + version: 29.1.1(@babel/core@7.23.2)(jest@29.7.0)(typescript@4.9.4) typedoc: specifier: ^0.23.24 version: 0.23.28(typescript@4.9.4) @@ -1105,7 +1102,7 @@ packages: engines: {node: '>=6.0.0'} dependencies: '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.19 + '@jridgewell/trace-mapping': 0.3.20 /@babel/code-frame@7.22.10: resolution: {integrity: sha512-/KKIMG4UEL35WmI9OlvMhurwtytjvXoFcGNrOvyG9zIzA8YmPjVtIZUf7b05+TPO7G7/GEmLHDaoCgACHl9hhA==} @@ -1114,10 +1111,23 @@ packages: '@babel/highlight': 7.22.10 chalk: 2.4.2 + /@babel/code-frame@7.22.13: + resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.22.20 + chalk: 2.4.2 + dev: true + /@babel/compat-data@7.22.9: resolution: {integrity: sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==} engines: {node: '>=6.9.0'} + /@babel/compat-data@7.23.2: + resolution: {integrity: sha512-0S9TQMmDHlqAZ2ITT95irXKfxN9bncq8ZCoJhun3nHL/lLUxd2NKBJYoNGWH7S0hz6fRQwWlAWn/ILM0C70KZQ==} + engines: {node: '>=6.9.0'} + dev: true + /@babel/core@7.22.10: resolution: {integrity: sha512-fTmqbbUBAwCcre6zPzNngvsI0aNrPZe77AeqvDxWM9Nm+04RrJ3CAmGHA9f7lJQY6ZMhRztNemy4uslDxTX4Qw==} engines: {node: '>=6.9.0'} @@ -1140,16 +1150,39 @@ packages: transitivePeerDependencies: - supports-color - /@babel/eslint-parser@7.22.10(@babel/core@7.22.10)(eslint@8.46.0): + /@babel/core@7.23.2: + resolution: {integrity: sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.2.1 + '@babel/code-frame': 7.22.13 + '@babel/generator': 7.23.0 + '@babel/helper-compilation-targets': 7.22.15 + '@babel/helper-module-transforms': 7.23.0(@babel/core@7.23.2) + '@babel/helpers': 7.23.2 + '@babel/parser': 7.23.0 + '@babel/template': 7.22.15 + '@babel/traverse': 7.23.2 + '@babel/types': 7.23.0 + convert-source-map: 2.0.0 + debug: 4.3.4(supports-color@8.1.1) + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/eslint-parser@7.22.10(@babel/core@7.23.2)(eslint@8.51.0): resolution: {integrity: sha512-0J8DNPRXQRLeR9rPaUMM3fA+RbixjnVLe/MRMYCkp3hzgsSuxCHQ8NN8xQG1wIHKJ4a1DTROTvFJdW+B5/eOsg==} engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} peerDependencies: '@babel/core': ^7.11.0 eslint: ^7.5.0 || ^8.0.0 dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.23.2 '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 - eslint: 8.46.0 + eslint: 8.51.0 eslint-visitor-keys: 2.1.0 semver: 6.3.1 dev: true @@ -1160,9 +1193,19 @@ packages: dependencies: '@babel/types': 7.22.10 '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.19 + '@jridgewell/trace-mapping': 0.3.20 jsesc: 2.5.2 + /@babel/generator@7.23.0: + resolution: {integrity: sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.0 + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.20 + jsesc: 2.5.2 + dev: true + /@babel/helper-compilation-targets@7.22.10: resolution: {integrity: sha512-JMSwHD4J7SLod0idLq5PKgI+6g/hLD/iuWBq08ZX49xE14VpVEojJ5rHWptpirV2j020MvypRLAXAO50igCJ5Q==} engines: {node: '>=6.9.0'} @@ -1173,6 +1216,22 @@ packages: lru-cache: 5.1.1 semver: 6.3.1 + /@babel/helper-compilation-targets@7.22.15: + resolution: {integrity: sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/compat-data': 7.23.2 + '@babel/helper-validator-option': 7.22.15 + browserslist: 4.22.1 + lru-cache: 5.1.1 + semver: 6.3.1 + dev: true + + /@babel/helper-environment-visitor@7.22.20: + resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} + engines: {node: '>=6.9.0'} + dev: true + /@babel/helper-environment-visitor@7.22.5: resolution: {integrity: sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==} engines: {node: '>=6.9.0'} @@ -1184,12 +1243,27 @@ packages: '@babel/template': 7.22.5 '@babel/types': 7.22.10 + /@babel/helper-function-name@7.23.0: + resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.22.15 + '@babel/types': 7.23.0 + dev: true + /@babel/helper-hoist-variables@7.22.5: resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.10 + /@babel/helper-module-imports@7.22.15: + resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.0 + dev: true + /@babel/helper-module-imports@7.22.5: resolution: {integrity: sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==} engines: {node: '>=6.9.0'} @@ -1209,6 +1283,20 @@ packages: '@babel/helper-split-export-declaration': 7.22.6 '@babel/helper-validator-identifier': 7.22.5 + /@babel/helper-module-transforms@7.23.0(@babel/core@7.23.2): + resolution: {integrity: sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-simple-access': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-validator-identifier': 7.22.20 + dev: true + /@babel/helper-plugin-utils@7.22.5: resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} engines: {node: '>=6.9.0'} @@ -1229,10 +1317,20 @@ packages: resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} engines: {node: '>=6.9.0'} + /@babel/helper-validator-identifier@7.22.20: + resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} + engines: {node: '>=6.9.0'} + dev: true + /@babel/helper-validator-identifier@7.22.5: resolution: {integrity: sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==} engines: {node: '>=6.9.0'} + /@babel/helper-validator-option@7.22.15: + resolution: {integrity: sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==} + engines: {node: '>=6.9.0'} + dev: true + /@babel/helper-validator-option@7.22.5: resolution: {integrity: sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==} engines: {node: '>=6.9.0'} @@ -1247,6 +1345,17 @@ packages: transitivePeerDependencies: - supports-color + /@babel/helpers@7.23.2: + resolution: {integrity: sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.22.15 + '@babel/traverse': 7.23.2 + '@babel/types': 7.23.0 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/highlight@7.22.10: resolution: {integrity: sha512-78aUtVcT7MUscr0K5mIEnkwxPE0MaxkR5RxRwuHaQ+JuU5AmTPhY+do2mdzVTnIJJpyBglql2pehuBIWHug+WQ==} engines: {node: '>=6.9.0'} @@ -1255,6 +1364,15 @@ packages: chalk: 2.4.2 js-tokens: 4.0.0 + /@babel/highlight@7.22.20: + resolution: {integrity: sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.22.20 + chalk: 2.4.2 + js-tokens: 4.0.0 + dev: true + /@babel/parser@7.22.10: resolution: {integrity: sha512-lNbdGsQb9ekfsnjFGhEiF4hfFqGgfOP3H3d27re3n+CGhNuTSUEQdfWk556sTLNTloczcdM5TYF2LhzmDQKyvQ==} engines: {node: '>=6.0.0'} @@ -1262,6 +1380,14 @@ packages: dependencies: '@babel/types': 7.22.10 + /@babel/parser@7.23.0: + resolution: {integrity: sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.23.0 + dev: true + /@babel/plugin-proposal-export-namespace-from@7.18.9(@babel/core@7.22.10): resolution: {integrity: sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==} engines: {node: '>=6.9.0'} @@ -1273,30 +1399,30 @@ packages: '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.22.10) dev: false - /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.22.10): + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.23.2): resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.22.10): + /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.23.2): resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.22.10): + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.23.2): resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 dev: true @@ -1309,105 +1435,105 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.22.10): + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.23.2): resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.22.10): + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.23.2): resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.22.10): + /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.23.2): resolution: {integrity: sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.22.10): + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.23.2): resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.22.10): + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.23.2): resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.22.10): + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.23.2): resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.22.10): + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.23.2): resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.22.10): + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.23.2): resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.22.10): + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.23.2): resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.22.10): + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.23.2): resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-typescript@7.22.5(@babel/core@7.22.10): + /@babel/plugin-syntax-typescript@7.22.5(@babel/core@7.23.2): resolution: {integrity: sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 dev: true @@ -1429,6 +1555,15 @@ packages: dependencies: regenerator-runtime: 0.14.0 + /@babel/template@7.22.15: + resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.22.13 + '@babel/parser': 7.23.0 + '@babel/types': 7.23.0 + dev: true + /@babel/template@7.22.5: resolution: {integrity: sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==} engines: {node: '>=6.9.0'} @@ -1454,6 +1589,24 @@ packages: transitivePeerDependencies: - supports-color + /@babel/traverse@7.23.2: + resolution: {integrity: sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.22.13 + '@babel/generator': 7.23.0 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/parser': 7.23.0 + '@babel/types': 7.23.0 + debug: 4.3.4(supports-color@8.1.1) + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/types@7.22.10: resolution: {integrity: sha512-obaoigiLrlDZ7TUQln/8m4mSqIW2QFeOrCQc9r+xsaHGNoplVNYlRVpsfE8Vj35GEm2ZH4ZhrNYogs/3fj85kg==} engines: {node: '>=6.9.0'} @@ -1462,6 +1615,15 @@ packages: '@babel/helper-validator-identifier': 7.22.5 to-fast-properties: 2.0.0 + /@babel/types@7.23.0: + resolution: {integrity: sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.22.5 + '@babel/helper-validator-identifier': 7.22.20 + to-fast-properties: 2.0.0 + dev: true + /@bcoe/v8-coverage@0.2.3: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: true @@ -1744,18 +1906,6 @@ packages: resolution: {integrity: sha512-mrUTA3LbEq1Y3nPTC5X6koTd2Dk8P+6xTuhp4P8X3mg5Z7d8AVK+0OU5kbB49OLAaEfvGEqbZJ84rLwgMy9RHw==} dev: true - /@cspotcode/source-map-consumer@0.8.0: - resolution: {integrity: sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==} - engines: {node: '>= 12'} - dev: true - - /@cspotcode/source-map-support@0.7.0: - resolution: {integrity: sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==} - engines: {node: '>=12'} - dependencies: - '@cspotcode/source-map-consumer': 0.8.0 - dev: true - /@cspotcode/source-map-support@0.8.1: resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} @@ -2043,34 +2193,49 @@ packages: eslint-visitor-keys: 3.4.2 dev: true + /@eslint-community/eslint-utils@4.4.0(eslint@8.51.0): + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + dependencies: + eslint: 8.51.0 + eslint-visitor-keys: 3.4.2 + dev: true + /@eslint-community/regexpp@4.6.2: resolution: {integrity: sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true - /@eslint-sets/eslint-config-basic@3.3.0(@babel/core@7.22.10)(@typescript-eslint/parser@5.62.0)(eslint@8.46.0)(prettier@3.0.3): + /@eslint-community/regexpp@4.9.1: + resolution: {integrity: sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + dev: true + + /@eslint-sets/eslint-config-basic@3.3.0(@babel/core@7.23.2)(@typescript-eslint/parser@5.62.0)(eslint@8.51.0)(prettier@3.0.3): resolution: {integrity: sha512-x5YH0CvZJxn19/5ehu188XaoLQpxOGlFiIuPHCN6FyONgrmriakT/cmIIBOJg2Vi/y1bn2xbhsgVNb00J3HyTg==} peerDependencies: eslint: '>=8.0.0' prettier: '>=2.0.0' dependencies: - '@babel/eslint-parser': 7.22.10(@babel/core@7.22.10)(eslint@8.46.0) - eslint: 8.46.0 - eslint-config-prettier: 8.9.0(eslint@8.46.0) - eslint-plugin-eslint-comments: 3.2.0(eslint@8.46.0) + '@babel/eslint-parser': 7.22.10(@babel/core@7.23.2)(eslint@8.51.0) + eslint: 8.51.0 + eslint-config-prettier: 8.9.0(eslint@8.51.0) + eslint-plugin-eslint-comments: 3.2.0(eslint@8.51.0) eslint-plugin-html: 7.1.0 - eslint-plugin-import: 2.28.0(@typescript-eslint/parser@5.62.0)(eslint@8.46.0) - eslint-plugin-jsonc: 2.9.0(eslint@8.46.0) - eslint-plugin-markdown: 3.0.1(eslint@8.46.0) - eslint-plugin-n: 15.7.0(eslint@8.46.0) - eslint-plugin-prettier: 4.2.1(eslint-config-prettier@8.9.0)(eslint@8.46.0)(prettier@3.0.3) - eslint-plugin-promise: 5.2.0(eslint@8.46.0) + eslint-plugin-import: 2.28.0(@typescript-eslint/parser@5.62.0)(eslint@8.51.0) + eslint-plugin-jsonc: 2.9.0(eslint@8.51.0) + eslint-plugin-markdown: 3.0.1(eslint@8.51.0) + eslint-plugin-n: 15.7.0(eslint@8.51.0) + eslint-plugin-prettier: 4.2.1(eslint-config-prettier@8.9.0)(eslint@8.51.0)(prettier@3.0.3) + eslint-plugin-promise: 5.2.0(eslint@8.51.0) eslint-plugin-tsdoc: 0.2.17 - eslint-plugin-unicorn: 45.0.2(eslint@8.46.0) - eslint-plugin-yml: 1.8.0(eslint@8.46.0) + eslint-plugin-unicorn: 45.0.2(eslint@8.51.0) + eslint-plugin-yml: 1.8.0(eslint@8.51.0) jsonc-eslint-parser: 2.3.0 prettier: 3.0.3 - vue-eslint-parser: 9.3.1(eslint@8.46.0) + vue-eslint-parser: 9.3.1(eslint@8.51.0) yaml-eslint-parser: 1.2.2 transitivePeerDependencies: - '@babel/core' @@ -2080,7 +2245,7 @@ packages: - supports-color dev: true - /@eslint-sets/eslint-config-basic@5.8.0(@babel/core@7.22.10)(@typescript-eslint/parser@6.3.0)(eslint@8.46.0)(prettier@3.0.3)(typescript@5.2.2): + /@eslint-sets/eslint-config-basic@5.8.0(@babel/core@7.23.2)(@typescript-eslint/parser@6.3.0)(eslint@8.51.0)(prettier@3.0.3)(typescript@5.2.2): resolution: {integrity: sha512-dWUDQY10cHPz9M6r2HvFvByOecH0dFjnihzrdRLVx8rWWMG4keeuEhURi5eSYsHCvHJz6Q3KzukiDrp7wHZoAw==} peerDependencies: eslint: '>=7.4.0' @@ -2090,24 +2255,24 @@ packages: typescript: optional: true dependencies: - '@babel/eslint-parser': 7.22.10(@babel/core@7.22.10)(eslint@8.46.0) - eslint: 8.46.0 - eslint-config-prettier: 9.0.0(eslint@8.46.0) - eslint-plugin-eslint-comments: 3.2.0(eslint@8.46.0) + '@babel/eslint-parser': 7.22.10(@babel/core@7.23.2)(eslint@8.51.0) + eslint: 8.51.0 + eslint-config-prettier: 9.0.0(eslint@8.51.0) + eslint-plugin-eslint-comments: 3.2.0(eslint@8.51.0) eslint-plugin-html: 7.1.0 - eslint-plugin-import: 2.28.0(@typescript-eslint/parser@6.3.0)(eslint@8.46.0) - eslint-plugin-jsonc: 2.9.0(eslint@8.46.0) - eslint-plugin-markdown: 3.0.1(eslint@8.46.0) - eslint-plugin-n: 16.0.1(eslint@8.46.0) - eslint-plugin-prettier: 5.0.0(eslint-config-prettier@9.0.0)(eslint@8.46.0)(prettier@3.0.3) - eslint-plugin-promise: 6.1.1(eslint@8.46.0) + eslint-plugin-import: 2.28.0(@typescript-eslint/parser@6.3.0)(eslint@8.51.0) + eslint-plugin-jsonc: 2.9.0(eslint@8.51.0) + eslint-plugin-markdown: 3.0.1(eslint@8.51.0) + eslint-plugin-n: 16.0.1(eslint@8.51.0) + eslint-plugin-prettier: 5.0.0(eslint-config-prettier@9.0.0)(eslint@8.51.0)(prettier@3.0.3) + eslint-plugin-promise: 6.1.1(eslint@8.51.0) eslint-plugin-tsdoc: 0.2.17 - eslint-plugin-unicorn: 40.1.0(eslint@8.46.0) - eslint-plugin-yml: 1.8.0(eslint@8.46.0) + eslint-plugin-unicorn: 40.1.0(eslint@8.51.0) + eslint-plugin-yml: 1.8.0(eslint@8.51.0) jsonc-eslint-parser: 2.3.0 prettier: 3.0.3 typescript: 5.2.2 - vue-eslint-parser: 9.3.1(eslint@8.46.0) + vue-eslint-parser: 9.3.1(eslint@8.51.0) yaml-eslint-parser: 1.2.2 transitivePeerDependencies: - '@babel/core' @@ -2118,19 +2283,19 @@ packages: - supports-color dev: true - /@eslint-sets/eslint-config-ts@3.3.0(@babel/core@7.22.10)(eslint@8.46.0)(prettier@3.0.3)(typescript@5.2.2): + /@eslint-sets/eslint-config-ts@3.3.0(@babel/core@7.23.2)(eslint@8.51.0)(prettier@3.0.3)(typescript@5.2.2): resolution: {integrity: sha512-4Vj3KxYx16hmW6AyEv1mil0gVN8H3rdJt8TRWufbAj0ZN+EjwOPf3TqE7ASCYto/NpA8xWQY3NGm/og9Or/dDQ==} peerDependencies: eslint: '>=8.0.0' prettier: '>=2.0.0' typescript: '>=4.0.0' dependencies: - '@eslint-sets/eslint-config-basic': 3.3.0(@babel/core@7.22.10)(@typescript-eslint/parser@5.62.0)(eslint@8.46.0)(prettier@3.0.3) - '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.46.0)(typescript@5.2.2) - '@typescript-eslint/parser': 5.62.0(eslint@8.46.0)(typescript@5.2.2) - eslint: 8.46.0 - eslint-config-prettier: 8.9.0(eslint@8.46.0) - eslint-plugin-prettier: 4.2.1(eslint-config-prettier@8.9.0)(eslint@8.46.0)(prettier@3.0.3) + '@eslint-sets/eslint-config-basic': 3.3.0(@babel/core@7.23.2)(@typescript-eslint/parser@5.62.0)(eslint@8.51.0)(prettier@3.0.3) + '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.51.0)(typescript@5.2.2) + '@typescript-eslint/parser': 5.62.0(eslint@8.51.0)(typescript@5.2.2) + eslint: 8.51.0 + eslint-config-prettier: 8.9.0(eslint@8.51.0) + eslint-plugin-prettier: 4.2.1(eslint-config-prettier@8.9.0)(eslint@8.51.0)(prettier@3.0.3) eslint-plugin-tsdoc: 0.2.17 prettier: 3.0.3 typescript: 5.2.2 @@ -2141,7 +2306,7 @@ packages: - supports-color dev: true - /@eslint-sets/eslint-config-ts@5.8.0(@babel/core@7.22.10)(eslint@8.46.0)(prettier@3.0.3)(typescript@5.2.2): + /@eslint-sets/eslint-config-ts@5.8.0(@babel/core@7.23.2)(eslint@8.51.0)(prettier@3.0.3)(typescript@5.2.2): resolution: {integrity: sha512-0tLzYHizhI0B1oh8IFmSOyDye2jIF34SnrO/YZRXVKTuv7d4QKDD9xkC+SOBB0pk+SHPJ6AU/N2xZar+CsHl3g==} peerDependencies: eslint: '>=7.4.0' @@ -2151,12 +2316,12 @@ packages: typescript: optional: true dependencies: - '@eslint-sets/eslint-config-basic': 5.8.0(@babel/core@7.22.10)(@typescript-eslint/parser@6.3.0)(eslint@8.46.0)(prettier@3.0.3)(typescript@5.2.2) - '@typescript-eslint/eslint-plugin': 6.3.0(@typescript-eslint/parser@6.3.0)(eslint@8.46.0)(typescript@5.2.2) - '@typescript-eslint/parser': 6.3.0(eslint@8.46.0)(typescript@5.2.2) - eslint: 8.46.0 - eslint-config-prettier: 9.0.0(eslint@8.46.0) - eslint-plugin-prettier: 5.0.0(eslint-config-prettier@9.0.0)(eslint@8.46.0)(prettier@3.0.3) + '@eslint-sets/eslint-config-basic': 5.8.0(@babel/core@7.23.2)(@typescript-eslint/parser@6.3.0)(eslint@8.51.0)(prettier@3.0.3)(typescript@5.2.2) + '@typescript-eslint/eslint-plugin': 6.3.0(@typescript-eslint/parser@6.3.0)(eslint@8.51.0)(typescript@5.2.2) + '@typescript-eslint/parser': 6.3.0(eslint@8.51.0)(typescript@5.2.2) + eslint: 8.51.0 + eslint-config-prettier: 9.0.0(eslint@8.51.0) + eslint-plugin-prettier: 5.0.0(eslint-config-prettier@9.0.0)(eslint@8.51.0)(prettier@3.0.3) eslint-plugin-tsdoc: 0.2.17 prettier: 3.0.3 typescript: 5.2.2 @@ -2168,26 +2333,26 @@ packages: - supports-color dev: true - /@eslint-sets/eslint-config-vue3-ts@3.3.0(@babel/core@7.22.10)(eslint@8.46.0)(prettier@3.0.3)(typescript@5.2.2): + /@eslint-sets/eslint-config-vue3-ts@3.3.0(@babel/core@7.23.2)(eslint@8.51.0)(prettier@3.0.3)(typescript@5.2.2): resolution: {integrity: sha512-KX3VFuS5U4FYKfZ6PABQjl54BMpNapNjYYe103Nm2Zy8y9zphDCBAARbhU97XNSvzkurve7HhJcsi9gXrWlGFA==} peerDependencies: eslint: '>=8.0.0' prettier: '>=2.0.0' typescript: '>=4.0.0' dependencies: - '@eslint-sets/eslint-config-ts': 3.3.0(@babel/core@7.22.10)(eslint@8.46.0)(prettier@3.0.3)(typescript@5.2.2) - '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.46.0)(typescript@5.2.2) - '@typescript-eslint/parser': 5.62.0(eslint@8.46.0)(typescript@5.2.2) - eslint: 8.46.0 - eslint-config-prettier: 8.9.0(eslint@8.46.0) - eslint-plugin-prettier: 4.2.1(eslint-config-prettier@8.9.0)(eslint@8.46.0)(prettier@3.0.3) + '@eslint-sets/eslint-config-ts': 3.3.0(@babel/core@7.23.2)(eslint@8.51.0)(prettier@3.0.3)(typescript@5.2.2) + '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.51.0)(typescript@5.2.2) + '@typescript-eslint/parser': 5.62.0(eslint@8.51.0)(typescript@5.2.2) + eslint: 8.51.0 + eslint-config-prettier: 8.9.0(eslint@8.51.0) + eslint-plugin-prettier: 4.2.1(eslint-config-prettier@8.9.0)(eslint@8.51.0)(prettier@3.0.3) eslint-plugin-tsdoc: 0.2.17 eslint-plugin-vitest-globals: 1.4.0 - eslint-plugin-vue: 9.16.1(eslint@8.46.0) - eslint-plugin-vue-scoped-css: 2.5.0(eslint@8.46.0)(vue-eslint-parser@9.3.1) + eslint-plugin-vue: 9.16.1(eslint@8.51.0) + eslint-plugin-vue-scoped-css: 2.5.0(eslint@8.51.0)(vue-eslint-parser@9.3.1) prettier: 3.0.3 typescript: 5.2.2 - vue-eslint-parser: 9.3.1(eslint@8.46.0) + vue-eslint-parser: 9.3.1(eslint@8.51.0) transitivePeerDependencies: - '@babel/core' - eslint-import-resolver-typescript @@ -2195,7 +2360,7 @@ packages: - supports-color dev: true - /@eslint-sets/eslint-config-vue3@5.8.0(@babel/core@7.22.10)(eslint@8.46.0)(prettier@3.0.3)(typescript@5.2.2): + /@eslint-sets/eslint-config-vue3@5.8.0(@babel/core@7.23.2)(eslint@8.51.0)(prettier@3.0.3)(typescript@5.2.2): resolution: {integrity: sha512-o9ijQjjAy3kfIMmfDIsjxmjob0oitdzga4JxpX+jvwmUqvjv2eKU300Up3IGhfcQFsPcYIJhBn9+Vfe+MPH9tw==} peerDependencies: eslint: '>=7.4.0' @@ -2205,22 +2370,22 @@ packages: typescript: optional: true dependencies: - '@eslint-sets/eslint-config-basic': 5.8.0(@babel/core@7.22.10)(@typescript-eslint/parser@6.3.0)(eslint@8.46.0)(prettier@3.0.3)(typescript@5.2.2) - '@eslint-sets/eslint-config-ts': 5.8.0(@babel/core@7.22.10)(eslint@8.46.0)(prettier@3.0.3)(typescript@5.2.2) - '@typescript-eslint/eslint-plugin': 6.3.0(@typescript-eslint/parser@6.3.0)(eslint@8.46.0)(typescript@5.2.2) - '@typescript-eslint/parser': 6.3.0(eslint@8.46.0)(typescript@5.2.2) - eslint: 8.46.0 - eslint-config-prettier: 9.0.0(eslint@8.46.0) - eslint-plugin-jsdoc: 46.4.6(eslint@8.46.0) - eslint-plugin-prettier: 5.0.0(eslint-config-prettier@9.0.0)(eslint@8.46.0)(prettier@3.0.3) + '@eslint-sets/eslint-config-basic': 5.8.0(@babel/core@7.23.2)(@typescript-eslint/parser@6.3.0)(eslint@8.51.0)(prettier@3.0.3)(typescript@5.2.2) + '@eslint-sets/eslint-config-ts': 5.8.0(@babel/core@7.23.2)(eslint@8.51.0)(prettier@3.0.3)(typescript@5.2.2) + '@typescript-eslint/eslint-plugin': 6.3.0(@typescript-eslint/parser@6.3.0)(eslint@8.51.0)(typescript@5.2.2) + '@typescript-eslint/parser': 6.3.0(eslint@8.51.0)(typescript@5.2.2) + eslint: 8.51.0 + eslint-config-prettier: 9.0.0(eslint@8.51.0) + eslint-plugin-jsdoc: 46.4.6(eslint@8.51.0) + eslint-plugin-prettier: 5.0.0(eslint-config-prettier@9.0.0)(eslint@8.51.0)(prettier@3.0.3) eslint-plugin-tsdoc: 0.2.17 eslint-plugin-vitest-globals: 1.4.0 - eslint-plugin-vue: 9.16.1(eslint@8.46.0) - eslint-plugin-vue-scoped-css: 2.5.0(eslint@8.46.0)(vue-eslint-parser@9.3.1) + eslint-plugin-vue: 9.16.1(eslint@8.51.0) + eslint-plugin-vue-scoped-css: 2.5.0(eslint@8.51.0)(vue-eslint-parser@9.3.1) local-pkg: 0.4.3 prettier: 3.0.3 typescript: 5.2.2 - vue-eslint-parser: 9.3.1(eslint@8.46.0) + vue-eslint-parser: 9.3.1(eslint@8.51.0) transitivePeerDependencies: - '@babel/core' - '@types/eslint' @@ -2246,11 +2411,33 @@ packages: - supports-color dev: true + /@eslint/eslintrc@2.1.2: + resolution: {integrity: sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + ajv: 6.12.6 + debug: 4.3.4(supports-color@8.1.1) + espree: 9.6.1 + globals: 13.23.0 + ignore: 5.2.4 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + /@eslint/js@8.46.0: resolution: {integrity: sha512-a8TLtmPi8xzPkCbp/OGFUo5yhRkHM2Ko9kOWP4znJr0WAhWyThaw3PnwX4vOTWOAMsV2uRt32PPDcEz63esSaA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true + /@eslint/js@8.51.0: + resolution: {integrity: sha512-HxjQ8Qn+4SI3/AFv6sOrDB+g6PpUTDwSJiQqOrnneEk8L71161srI9gjzzZvYVbzHiVg/BvcH95+cK/zfIt4pg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + /@hapi/hoek@9.3.0: resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} dev: true @@ -2272,6 +2459,17 @@ packages: - supports-color dev: true + /@humanwhocodes/config-array@0.11.12: + resolution: {integrity: sha512-NlGesA1usRNn6ctHCZ21M4/dKPgW9Nn1FypRdIKKgZOKzkVV4T1FlK5mBiLhHBCDmEbdQG0idrcXlbZfksJ+RA==} + engines: {node: '>=10.10.0'} + dependencies: + '@humanwhocodes/object-schema': 2.0.0 + debug: 4.3.4(supports-color@8.1.1) + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true + /@humanwhocodes/module-importer@1.0.1: resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} @@ -2281,6 +2479,10 @@ packages: resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} dev: true + /@humanwhocodes/object-schema@2.0.0: + resolution: {integrity: sha512-9S9QrXY2K0L4AGDcSgTi9vgiCcG8VcBv4Mp7/1hDPYoswIy6Z6KO5blYto82BT8M0MZNRWmCFLpCs3HlpYGGdw==} + dev: true + /@ioredis/commands@1.2.0: resolution: {integrity: sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==} dev: false @@ -2313,75 +2515,18 @@ packages: engines: {node: '>=8'} dev: true - /@jest/console@27.5.1: - resolution: {integrity: sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/types': 27.5.1 - '@types/node': 20.5.8 - chalk: 4.1.2 - jest-message-util: 27.5.1 - jest-util: 27.5.1 - slash: 3.0.0 - dev: true - /@jest/console@29.7.0: resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 20.5.8 + '@types/node': 20.8.7 chalk: 4.1.2 jest-message-util: 29.7.0 jest-util: 29.7.0 slash: 3.0.0 dev: true - /@jest/core@27.5.1(ts-node@10.4.0): - resolution: {integrity: sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - '@jest/console': 27.5.1 - '@jest/reporters': 27.5.1 - '@jest/test-result': 27.5.1 - '@jest/transform': 27.5.1 - '@jest/types': 27.5.1 - '@types/node': 20.5.8 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - emittery: 0.8.1 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-changed-files: 27.5.1 - jest-config: 27.5.1(ts-node@10.4.0) - jest-haste-map: 27.5.1 - jest-message-util: 27.5.1 - jest-regex-util: 27.5.1 - jest-resolve: 27.5.1 - jest-resolve-dependencies: 27.5.1 - jest-runner: 27.5.1 - jest-runtime: 27.5.1 - jest-snapshot: 27.5.1 - jest-util: 27.5.1 - jest-validate: 27.5.1 - jest-watcher: 27.5.1 - micromatch: 4.0.5 - rimraf: 3.0.2 - slash: 3.0.0 - strip-ansi: 6.0.1 - transitivePeerDependencies: - - bufferutil - - canvas - - supports-color - - ts-node - - utf-8-validate - dev: true - /@jest/core@29.7.0: resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -2396,14 +2541,14 @@ packages: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.5.8 + '@types/node': 18.11.18 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.8.0 exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@20.5.8) + jest-config: 29.7.0(@types/node@18.11.18) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -2425,14 +2570,47 @@ packages: - ts-node dev: true - /@jest/environment@27.5.1: - resolution: {integrity: sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /@jest/core@29.7.0(ts-node@10.9.1): + resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true dependencies: - '@jest/fake-timers': 27.5.1 - '@jest/types': 27.5.1 - '@types/node': 20.5.8 - jest-mock: 27.5.1 + '@jest/console': 29.7.0 + '@jest/reporters': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.8.7 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + ci-info: 3.9.0 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-changed-files: 29.7.0 + jest-config: 29.7.0(@types/node@20.8.7)(ts-node@10.9.1) + jest-haste-map: 29.7.0 + jest-message-util: 29.7.0 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-resolve-dependencies: 29.7.0 + jest-runner: 29.7.0 + jest-runtime: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + jest-watcher: 29.7.0 + micromatch: 4.0.5 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + - ts-node dev: true /@jest/environment@29.7.0: @@ -2441,7 +2619,7 @@ packages: dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.5.8 + '@types/node': 18.11.18 jest-mock: 29.7.0 dev: true @@ -2462,39 +2640,18 @@ packages: - supports-color dev: true - /@jest/fake-timers@27.5.1: - resolution: {integrity: sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/types': 27.5.1 - '@sinonjs/fake-timers': 8.1.0 - '@types/node': 20.5.8 - jest-message-util: 27.5.1 - jest-mock: 27.5.1 - jest-util: 27.5.1 - dev: true - /@jest/fake-timers@29.7.0: resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 - '@types/node': 20.5.8 + '@types/node': 20.8.7 jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 dev: true - /@jest/globals@27.5.1: - resolution: {integrity: sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/environment': 27.5.1 - '@jest/types': 27.5.1 - expect: 27.5.1 - dev: true - /@jest/globals@29.7.0: resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -2507,44 +2664,6 @@ packages: - supports-color dev: true - /@jest/reporters@27.5.1: - resolution: {integrity: sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - '@bcoe/v8-coverage': 0.2.3 - '@jest/console': 27.5.1 - '@jest/test-result': 27.5.1 - '@jest/transform': 27.5.1 - '@jest/types': 27.5.1 - '@types/node': 20.5.8 - chalk: 4.1.2 - collect-v8-coverage: 1.0.2 - exit: 0.1.2 - glob: 7.2.3 - graceful-fs: 4.2.11 - istanbul-lib-coverage: 3.2.0 - istanbul-lib-instrument: 5.2.1 - istanbul-lib-report: 3.0.1 - istanbul-lib-source-maps: 4.0.1 - istanbul-reports: 3.1.6 - jest-haste-map: 27.5.1 - jest-resolve: 27.5.1 - jest-util: 27.5.1 - jest-worker: 27.5.1 - slash: 3.0.0 - source-map: 0.6.1 - string-length: 4.0.2 - terminal-link: 2.1.1 - v8-to-istanbul: 8.1.1 - transitivePeerDependencies: - - supports-color - dev: true - /@jest/reporters@29.7.0: resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -2559,8 +2678,8 @@ packages: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@jridgewell/trace-mapping': 0.3.19 - '@types/node': 20.5.8 + '@jridgewell/trace-mapping': 0.3.20 + '@types/node': 20.8.7 chalk: 4.1.2 collect-v8-coverage: 1.0.2 exit: 0.1.2 @@ -2582,13 +2701,6 @@ packages: - supports-color dev: true - /@jest/schemas@29.6.0: - resolution: {integrity: sha512-rxLjXyJBTL4LQeJW3aKo0M/+GkCOXsO+8i9Iu7eDb6KwtP65ayoDsitrdPBtujxQ88k4wI2FNYfa6TOGwSn6cQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@sinclair/typebox': 0.27.8 - dev: true - /@jest/schemas@29.6.3: resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -2596,56 +2708,25 @@ packages: '@sinclair/typebox': 0.27.8 dev: true - /@jest/source-map@27.5.1: - resolution: {integrity: sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - callsites: 3.1.0 - graceful-fs: 4.2.11 - source-map: 0.6.1 - dev: true - /@jest/source-map@29.6.3: resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jridgewell/trace-mapping': 0.3.19 + '@jridgewell/trace-mapping': 0.3.20 callsites: 3.1.0 graceful-fs: 4.2.11 dev: true - /@jest/test-result@27.5.1: - resolution: {integrity: sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/console': 27.5.1 - '@jest/types': 27.5.1 - '@types/istanbul-lib-coverage': 2.0.4 - collect-v8-coverage: 1.0.2 - dev: true - /@jest/test-result@29.7.0: resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/console': 29.7.0 '@jest/types': 29.6.3 - '@types/istanbul-lib-coverage': 2.0.4 + '@types/istanbul-lib-coverage': 2.0.5 collect-v8-coverage: 1.0.2 dev: true - /@jest/test-sequencer@27.5.1: - resolution: {integrity: sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/test-result': 27.5.1 - graceful-fs: 4.2.11 - jest-haste-map: 27.5.1 - jest-runtime: 27.5.1 - transitivePeerDependencies: - - supports-color - dev: true - /@jest/test-sequencer@29.7.0: resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -2656,36 +2737,13 @@ packages: slash: 3.0.0 dev: true - /@jest/transform@27.5.1: - resolution: {integrity: sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@babel/core': 7.22.10 - '@jest/types': 27.5.1 - babel-plugin-istanbul: 6.1.1 - chalk: 4.1.2 - convert-source-map: 1.9.0 - fast-json-stable-stringify: 2.1.0 - graceful-fs: 4.2.11 - jest-haste-map: 27.5.1 - jest-regex-util: 27.5.1 - jest-util: 27.5.1 - micromatch: 4.0.5 - pirates: 4.0.6 - slash: 3.0.0 - source-map: 0.6.1 - write-file-atomic: 3.0.3 - transitivePeerDependencies: - - supports-color - dev: true - /@jest/transform@29.7.0: resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.23.2 '@jest/types': 29.6.3 - '@jridgewell/trace-mapping': 0.3.19 + '@jridgewell/trace-mapping': 0.3.20 babel-plugin-istanbul: 6.1.1 chalk: 4.1.2 convert-source-map: 2.0.0 @@ -2702,25 +2760,14 @@ packages: - supports-color dev: true - /@jest/types@27.5.1: - resolution: {integrity: sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@types/istanbul-lib-coverage': 2.0.4 - '@types/istanbul-reports': 3.0.1 - '@types/node': 20.5.8 - '@types/yargs': 16.0.5 - chalk: 4.1.2 - dev: true - /@jest/types@29.6.3: resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/schemas': 29.6.3 - '@types/istanbul-lib-coverage': 2.0.4 - '@types/istanbul-reports': 3.0.1 - '@types/node': 20.5.8 + '@types/istanbul-lib-coverage': 2.0.5 + '@types/istanbul-reports': 3.0.3 + '@types/node': 20.8.7 '@types/yargs': 17.0.29 chalk: 4.1.2 dev: true @@ -2731,7 +2778,7 @@ packages: dependencies: '@jridgewell/set-array': 1.1.2 '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.19 + '@jridgewell/trace-mapping': 0.3.20 /@jridgewell/resolve-uri@3.1.1: resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} @@ -2756,6 +2803,13 @@ packages: dependencies: '@jridgewell/resolve-uri': 3.1.1 '@jridgewell/sourcemap-codec': 1.4.15 + dev: true + + /@jridgewell/trace-mapping@0.3.20: + resolution: {integrity: sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==} + dependencies: + '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/sourcemap-codec': 1.4.15 /@jridgewell/trace-mapping@0.3.9: resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} @@ -2837,51 +2891,6 @@ packages: dev: false optional: true - /@microsoft/api-documenter@7.22.21(@types/node@20.3.1): - resolution: {integrity: sha512-o8VXpB83P87cLIYfkQS7ibShoYorTZ7Xs+gMwftT75pFaYWwhBuI8M0MPgzTGIAxzi338XfUjhctlVCjRn+Sqg==} - hasBin: true - dependencies: - '@microsoft/api-extractor-model': 7.27.3(@types/node@20.3.1) - '@microsoft/tsdoc': 0.14.2 - '@rushstack/node-core-library': 3.59.4(@types/node@20.3.1) - '@rushstack/ts-command-line': 4.15.1 - colors: 1.2.5 - js-yaml: 3.13.1 - resolve: 1.22.4 - transitivePeerDependencies: - - '@types/node' - dev: true - - /@microsoft/api-extractor-model@7.27.3(@types/node@20.3.1): - resolution: {integrity: sha512-fSFvw7otYHduOkyshjTbapKKgwF8bgquVHvgF8VgeKtMYvqXkoaj7W6VcM7PNY7E2bbblhUgC4XNdqZLD4SJGw==} - dependencies: - '@microsoft/tsdoc': 0.14.2 - '@microsoft/tsdoc-config': 0.16.2 - '@rushstack/node-core-library': 3.59.4(@types/node@20.3.1) - transitivePeerDependencies: - - '@types/node' - dev: true - - /@microsoft/api-extractor@7.36.0(@types/node@20.3.1): - resolution: {integrity: sha512-P+kYgJFDXIr+UNzhRMhlpM/dderi6ab4lxn35vdhfAIMPtGCSXIJxrrtpTOQmQW8CZtmoZX06LYoUsKCc1zjow==} - hasBin: true - dependencies: - '@microsoft/api-extractor-model': 7.27.3(@types/node@20.3.1) - '@microsoft/tsdoc': 0.14.2 - '@microsoft/tsdoc-config': 0.16.2 - '@rushstack/node-core-library': 3.59.4(@types/node@20.3.1) - '@rushstack/rig-package': 0.4.0 - '@rushstack/ts-command-line': 4.15.1 - colors: 1.2.5 - lodash: 4.17.21 - resolve: 1.22.4 - semver: 7.3.8 - source-map: 0.6.1 - typescript: 5.0.4 - transitivePeerDependencies: - - '@types/node' - dev: true - /@microsoft/tsdoc-config@0.16.2: resolution: {integrity: sha512-OGiIzzoBLgWWR0UdRJX98oYO+XKGf7tiK4Zk6tQ/E4IJqGCe7dvkTvgDZV5cFJUzLGDOjeAXrnZoA6QkVySuxw==} dependencies: @@ -3124,7 +3133,7 @@ packages: engines: {node: '>=12.0.0'} dependencies: '@redocly/ajv': 8.11.0 - '@types/node': 14.18.54 + '@types/node': 14.18.63 colorette: 1.4.0 js-levenshtein: 1.1.6 js-yaml: 4.1.0 @@ -3178,40 +3187,6 @@ packages: rollup: 3.28.1 dev: true - /@rushstack/node-core-library@3.59.4(@types/node@20.3.1): - resolution: {integrity: sha512-YAKJDC6Mz/KA1D7bvB88WaRX3knt/ZuLzkRu5G9QADGSjLtvTWzCNCytRF2PCSaaHOZaZsWul4F1KQdgFgUDqA==} - peerDependencies: - '@types/node': '*' - peerDependenciesMeta: - '@types/node': - optional: true - dependencies: - '@types/node': 20.3.1 - colors: 1.2.5 - fs-extra: 7.0.1 - import-lazy: 4.0.0 - jju: 1.4.0 - resolve: 1.22.4 - semver: 7.3.8 - z-schema: 5.0.5 - dev: true - - /@rushstack/rig-package@0.4.0: - resolution: {integrity: sha512-FnM1TQLJYwSiurP6aYSnansprK5l8WUK8VG38CmAaZs29ZeL1msjK0AP1VS4ejD33G0kE/2cpsPsS9jDenBMxw==} - dependencies: - resolve: 1.22.4 - strip-json-comments: 3.1.1 - dev: true - - /@rushstack/ts-command-line@4.15.1: - resolution: {integrity: sha512-EL4jxZe5fhb1uVL/P/wQO+Z8Rc8FMiWJ1G7VgnPDvdIt5GVjRfK7vwzder1CZQiX3x0PY6uxENYLNGTFd1InRQ==} - dependencies: - '@types/argparse': 1.0.38 - argparse: 1.0.10 - colors: 1.2.5 - string-argv: 0.3.2 - dev: true - /@sideway/address@4.1.4: resolution: {integrity: sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==} dependencies: @@ -3243,6 +3218,7 @@ packages: resolution: {integrity: sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==} dependencies: type-detect: 4.0.8 + dev: false /@sinonjs/commons@3.0.0: resolution: {integrity: sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==} @@ -3256,12 +3232,6 @@ packages: '@sinonjs/commons': 3.0.0 dev: true - /@sinonjs/fake-timers@8.1.0: - resolution: {integrity: sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==} - dependencies: - '@sinonjs/commons': 1.8.6 - dev: true - /@sinonjs/fake-timers@9.1.2: resolution: {integrity: sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==} dependencies: @@ -3405,6 +3375,10 @@ packages: '@swc/core-win32-ia32-msvc': 1.3.78 '@swc/core-win32-x64-msvc': 1.3.78 + /@swc/types@0.1.5: + resolution: {integrity: sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw==} + dev: true + /@swc/wasm@1.2.130: resolution: {integrity: sha512-rNcJsBxS70+pv8YUWwf5fRlWX6JoY/HJc25HD/F8m6Kv7XhJdqPPMhyX6TKkUBPAG7TWlZYoxa+rHAjPy4Cj3Q==} requiresBuild: true @@ -3745,11 +3719,6 @@ packages: /@tokenizer/token@0.3.0: resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==} - /@tootallnate/once@1.1.2: - resolution: {integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==} - engines: {node: '>= 6'} - dev: true - /@tootallnate/once@2.0.0: resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} engines: {node: '>= 10'} @@ -3767,14 +3736,15 @@ packages: /@tsconfig/node16@1.0.4: resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} - /@tsd/typescript@5.0.4: - resolution: {integrity: sha512-YQi2lvZSI+xidKeUjlbv6b6Zw7qB3aXHw5oGJLs5OOGAEqKIOvz5UIAkWyg0bJbkSUWPBEtaOHpVxU4EYBO1Jg==} + /@tsd/typescript@5.2.2: + resolution: {integrity: sha512-VtjHPAKJqLJoHHKBDNofzvQB2+ZVxjXU/Gw6INAS9aINLQYVsxfzrQ2s84huCeYWZRTtrr7R0J7XgpZHjNwBCw==} + engines: {node: '>=14.17'} dev: true /@types/accepts@1.3.5: resolution: {integrity: sha512-jOdnI/3qTpHABjM5cx1Hc0sKsPoYCp+DP/GJRGtDlPd7fiV9oXGGIcjW/ZOxLIvjGz8MA+uMZI9metHlgqbgwQ==} dependencies: - '@types/node': 20.5.8 + '@types/node': 18.11.18 /@types/adm-zip@0.5.0: resolution: {integrity: sha512-FCJBJq9ODsQZUNURo5ILAQueuA8WJhRvuihS3ke2iI25mJlfV2LK8jG2Qj2z2AWg8U0FtWWqBHVRetceLskSaw==} @@ -3782,10 +3752,6 @@ packages: '@types/node': 18.11.18 dev: true - /@types/argparse@1.0.38: - resolution: {integrity: sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==} - dev: true - /@types/async-lock@1.4.0: resolution: {integrity: sha512-2+rYSaWrpdbQG3SA0LmMT6YxWLrI81AqpMlSkw3QtFc2HGDufkweQSn30Eiev7x9LL0oyFrBqk1PXOnB9IEgKg==} dev: true @@ -3793,30 +3759,59 @@ packages: /@types/babel__core@7.20.1: resolution: {integrity: sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw==} dependencies: - '@babel/parser': 7.22.10 - '@babel/types': 7.22.10 + '@babel/parser': 7.23.0 + '@babel/types': 7.23.0 '@types/babel__generator': 7.6.4 '@types/babel__template': 7.4.1 '@types/babel__traverse': 7.20.1 dev: true + /@types/babel__core@7.20.3: + resolution: {integrity: sha512-54fjTSeSHwfan8AyHWrKbfBWiEUrNTZsUwPTDSNaaP1QDQIZbeNUg3a59E9D+375MzUw/x1vx2/0F5LBz+AeYA==} + dependencies: + '@babel/parser': 7.23.0 + '@babel/types': 7.23.0 + '@types/babel__generator': 7.6.6 + '@types/babel__template': 7.4.3 + '@types/babel__traverse': 7.20.3 + dev: true + /@types/babel__generator@7.6.4: resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} dependencies: - '@babel/types': 7.22.10 + '@babel/types': 7.23.0 + dev: true + + /@types/babel__generator@7.6.6: + resolution: {integrity: sha512-66BXMKb/sUWbMdBNdMvajU7i/44RkrA3z/Yt1c7R5xejt8qh84iU54yUWCtm0QwGJlDcf/gg4zd/x4mpLAlb/w==} + dependencies: + '@babel/types': 7.23.0 dev: true /@types/babel__template@7.4.1: resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} dependencies: - '@babel/parser': 7.22.10 - '@babel/types': 7.22.10 + '@babel/parser': 7.23.0 + '@babel/types': 7.23.0 + dev: true + + /@types/babel__template@7.4.3: + resolution: {integrity: sha512-ciwyCLeuRfxboZ4isgdNZi/tkt06m8Tw6uGbBSBgWrnnZGNXiEyM27xc/PjXGQLqlZ6ylbgHMnm7ccF9tCkOeQ==} + dependencies: + '@babel/parser': 7.23.0 + '@babel/types': 7.23.0 dev: true /@types/babel__traverse@7.20.1: resolution: {integrity: sha512-MitHFXnhtgwsGZWtT68URpOvLN4EREih1u3QtQiN4VdAxWKRVvGCSvw/Qth0M0Qq3pJpnGOu5JaM/ydK7OGbqg==} dependencies: - '@babel/types': 7.22.10 + '@babel/types': 7.23.0 + dev: true + + /@types/babel__traverse@7.20.3: + resolution: {integrity: sha512-Lsh766rGEFbaxMIDH7Qa+Yha8cMVI3qAK6CHt3OR0YfxOIn5Z54iHiyDRycHrBqeIiqGa20Kpsv1cavfBKkRSw==} + dependencies: + '@babel/types': 7.23.0 dev: true /@types/bcryptjs@2.4.2: @@ -3827,27 +3822,27 @@ packages: resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==} dependencies: '@types/connect': 3.4.35 - '@types/node': 20.5.8 + '@types/node': 18.11.18 /@types/cacheable-request@6.0.3: resolution: {integrity: sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==} dependencies: '@types/http-cache-semantics': 4.0.1 '@types/keyv': 3.1.4 - '@types/node': 20.5.8 + '@types/node': 18.11.18 '@types/responselike': 1.0.0 /@types/co-body@6.1.0: resolution: {integrity: sha512-3e0q2jyDAnx/DSZi0z2H0yoZ2wt5yRDZ+P7ymcMObvq0ufWRT4tsajyO+Q1VwVWiv9PRR4W3YEjEzBjeZlhF+w==} dependencies: - '@types/node': 20.5.8 + '@types/node': 18.11.18 '@types/qs': 6.9.7 dev: false /@types/connect@3.4.35: resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} dependencies: - '@types/node': 20.5.8 + '@types/node': 18.11.18 /@types/content-disposition@0.5.5: resolution: {integrity: sha512-v6LCdKfK6BwcqMo+wYW05rLS12S0ZO0Fl4w1h4aaZMD7bqT3gVUns6FvLJKGZHQmYn3SX55JWGpziwJRwVgutA==} @@ -3858,7 +3853,7 @@ packages: '@types/connect': 3.4.35 '@types/express': 4.17.17 '@types/keygrip': 1.0.2 - '@types/node': 20.5.8 + '@types/node': 18.11.18 /@types/core-js@2.5.7: resolution: {integrity: sha512-EhO4Lcd2Rs2bZvQwIDMZ1qsaZk8DpdOkQCbKpK0vt7fSjJGXrCA7EPauR/BZ7eJXks1een4FX7JtlhS136fklA==} @@ -3882,8 +3877,8 @@ packages: /@types/eslint@7.29.0: resolution: {integrity: sha512-VNcvioYDH8/FxaeTKkM4/TiTwt6pBV9E3OfGmvaw8tPl0rrHCJ4Ll15HRT+pMiFAf/MLQvAzC+6RzUMEL9Ceng==} dependencies: - '@types/estree': 1.0.1 - '@types/json-schema': 7.0.12 + '@types/estree': 1.0.3 + '@types/json-schema': 7.0.14 dev: true /@types/eslint@8.44.2: @@ -3897,6 +3892,10 @@ packages: resolution: {integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==} dev: true + /@types/estree@1.0.3: + resolution: {integrity: sha512-CS2rOaoQ/eAgAfcTfq6amKG7bsN+EMcgGY4FAFQdvSj2y1ixvOZTUA9mOtCai7E1SYu283XNw7urKK30nP3wkQ==} + dev: true + /@types/expect@1.20.4: resolution: {integrity: sha512-Q5Vn3yjTDyCMV50TB6VRIbQNxSE4OmZR86VSbGaNpfUolm0iePBB4KdEEHmxoY5sT2+2DIvXW0rvMDP2nHZ4Mg==} dev: true @@ -3904,7 +3903,7 @@ packages: /@types/express-serve-static-core@4.17.35: resolution: {integrity: sha512-wALWQwrgiB2AWTT91CB62b6Yt0sNHpznUXeZEcnPU3DRdlDIz74x8Qg1UUYKSVFi+va5vKOLYRBI1bRKiLLKIg==} dependencies: - '@types/node': 20.5.8 + '@types/node': 18.11.18 '@types/qs': 6.9.7 '@types/range-parser': 1.2.4 '@types/send': 0.17.1 @@ -3933,7 +3932,7 @@ packages: /@types/formidable@2.0.6: resolution: {integrity: sha512-L4HcrA05IgQyNYJj6kItuIkXrInJvsXTPC5B1i64FggWKKqSL+4hgt7asiSNva75AoLQjq29oPxFfU4GAQ6Z2w==} dependencies: - '@types/node': 20.5.8 + '@types/node': 18.11.18 dev: false /@types/glob-stream@8.0.0: @@ -3948,19 +3947,19 @@ packages: resolution: {integrity: sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==} dependencies: '@types/minimatch': 5.1.2 - '@types/node': 20.4.9 + '@types/node': 20.8.7 dev: true - /@types/graceful-fs@4.1.6: - resolution: {integrity: sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==} + /@types/graceful-fs@4.1.8: + resolution: {integrity: sha512-NhRH7YzWq8WiNKVavKPBmtLYZHxNY19Hh+az28O/phfp68CF45pMFud+ZzJ8ewnxnC5smIdF3dqFeiSUQ5I+pw==} dependencies: - '@types/node': 20.5.8 + '@types/node': 20.8.7 dev: true /@types/gulp-rename@2.0.2: resolution: {integrity: sha512-CQsXqTVtAXqrPd4IbrrlJEEzRkUR3RXsyZbrVoOVqjlchDDmnyRDatAUisjpQjjCg/wjJrSiNg8T1uAbJ/7Qqg==} dependencies: - '@types/node': 20.4.9 + '@types/node': 20.5.8 '@types/vinyl': 2.0.7 dev: true @@ -3981,34 +3980,27 @@ packages: /@types/http-errors@2.0.1: resolution: {integrity: sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ==} - /@types/istanbul-lib-coverage@2.0.4: - resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} + /@types/istanbul-lib-coverage@2.0.5: + resolution: {integrity: sha512-zONci81DZYCZjiLe0r6equvZut0b+dBRPBN5kBDjsONnutYNtJMoWQ9uR2RkL1gLG9NMTzvf+29e5RFfPbeKhQ==} dev: true - /@types/istanbul-lib-report@3.0.0: - resolution: {integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==} + /@types/istanbul-lib-report@3.0.2: + resolution: {integrity: sha512-8toY6FgdltSdONav1XtUHl4LN1yTmLza+EuDazb/fEmRNCwjyqNVIQWs2IfC74IqjHkREs/nQ2FWq5kZU9IC0w==} dependencies: - '@types/istanbul-lib-coverage': 2.0.4 + '@types/istanbul-lib-coverage': 2.0.5 dev: true - /@types/istanbul-reports@3.0.1: - resolution: {integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==} + /@types/istanbul-reports@3.0.3: + resolution: {integrity: sha512-1nESsePMBlf0RPRffLZi5ujYh7IH1BWL4y9pr+Bn3cJBdxz+RTP8bUFljLz9HvzhhOSWKdyBZ4DIivdL6rvgZg==} dependencies: - '@types/istanbul-lib-report': 3.0.0 - dev: true - - /@types/jest@27.4.0: - resolution: {integrity: sha512-gHl8XuC1RZ8H2j5sHv/JqsaxXkDDM9iDOgu0Wp8sjs4u/snb2PVehyWXJPr+ORA0RPpgw231mnutWI1+0hgjIQ==} - dependencies: - jest-diff: 27.5.1 - pretty-format: 27.5.1 + '@types/istanbul-lib-report': 3.0.2 dev: true /@types/jest@29.5.6: resolution: {integrity: sha512-/t9NnzkOpXb4Nfvg17ieHE6EeSjDS2SGSpNYfoLbUAeL/EOueU/RSdOWFpfQTXBEM7BguYW1XQ0EbM+6RlIh6w==} dependencies: expect: 29.7.0 - pretty-format: 29.6.2 + pretty-format: 29.7.0 dev: true /@types/js-yaml@4.0.5: @@ -4019,6 +4011,10 @@ packages: resolution: {integrity: sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==} dev: true + /@types/json-schema@7.0.14: + resolution: {integrity: sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw==} + dev: true + /@types/json5@0.0.29: resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} dev: true @@ -4041,7 +4037,7 @@ packages: /@types/keyv@3.1.4: resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} dependencies: - '@types/node': 20.5.8 + '@types/node': 18.11.18 /@types/koa-bodyparser@4.3.10: resolution: {integrity: sha512-6ae05pjhmrmGhUR8GYD5qr5p9LTEMEGfGXCsK8VaSL+totwigm8+H/7MHW7K4854CMeuwRAubT8qcc/EagaeIA==} @@ -4201,8 +4197,8 @@ packages: resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} dev: true - /@types/minimist@1.2.2: - resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} + /@types/minimist@1.2.4: + resolution: {integrity: sha512-Kfe/D3hxHTusnPNRbycJE1N77WHDsdS4AjUYIzlDzhDrS47NrwuL3YW4VITxwR7KCVpzwgy4Rbj829KSSQmwXQ==} dev: true /@types/mocha@9.1.1: @@ -4212,7 +4208,7 @@ packages: /@types/needle@3.2.0: resolution: {integrity: sha512-6XzvzEyJ2ozFNfPajFmqH9JOt0Hp+9TawaYpJT59iIP/zR0U37cfWCRwosyIeEBBZBi021Osq4jGAD3AOju5fg==} dependencies: - '@types/node': 20.5.8 + '@types/node': 18.11.18 dev: true /@types/node-fetch@2.6.4: @@ -4229,31 +4225,29 @@ packages: node-fetch: 3.3.2 dev: true - /@types/node@14.18.54: - resolution: {integrity: sha512-uq7O52wvo2Lggsx1x21tKZgqkJpvwCseBBPtX/nKQfpVlEsLOb11zZ1CRsWUKvJF0+lzuA9jwvA7Pr2Wt7i3xw==} + /@types/node@14.18.63: + resolution: {integrity: sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ==} /@types/node@18.11.18: resolution: {integrity: sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==} - /@types/node@20.3.1: - resolution: {integrity: sha512-EhcH/wvidPy1WeML3TtYFGR83UzjxeWRen9V402T8aUGYsCHOmfoisV3ZSg03gAFIbLq8TnWOJ0f4cALtnSEUg==} - dev: true - - /@types/node@20.4.9: - resolution: {integrity: sha512-8e2HYcg7ohnTUbHk8focoklEQYvemQmu9M/f43DZVx43kHn0tE3BY/6gSDxS7k0SprtS0NHvj+L80cGLnoOUcQ==} - dev: true - /@types/node@20.5.8: resolution: {integrity: sha512-eajsR9aeljqNhK028VG0Wuw+OaY5LLxYmxeoXynIoE6jannr9/Ucd1LL0hSSoafk5LTYG+FfqsyGt81Q6Zkybw==} + /@types/node@20.8.7: + resolution: {integrity: sha512-21TKHHh3eUHIi2MloeptJWALuCu5H7HQTdTrWIFReA8ad+aggoX+lRes3ex7/FtpC+sVUpFMQ+QTfYr74mruiQ==} + dependencies: + undici-types: 5.25.3 + dev: true + /@types/nodemailer@6.4.9: resolution: {integrity: sha512-XYG8Gv+sHjaOtUpiuytahMy2mM3rectgroNbs6R3djZEKmPNiIJwe9KqOJBGzKKnNZNKvnuvmugBgpq3w/S0ig==} dependencies: '@types/node': 18.11.18 dev: true - /@types/normalize-package-data@2.4.1: - resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} + /@types/normalize-package-data@2.4.3: + resolution: {integrity: sha512-ehPtgRgaULsFG8x0NeYJvmyH1hmlfsNLujHe9dQEia/7MAJYdzMSi19JtchUHjmBA6XC/75dK55mzZH+RyieSg==} dev: true /@types/oauth@0.9.1: @@ -4281,10 +4275,6 @@ packages: resolution: {integrity: sha512-O397rnSS9iQI4OirieAtsDqvCj4+3eY1J+EPdNTKuHuRWIfUoGyzX294o8C4KJYaLqgSrd2o60c5EqCU8Zv02g==} dev: true - /@types/prettier@2.7.3: - resolution: {integrity: sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==} - dev: true - /@types/probe-image-size@7.2.0: resolution: {integrity: sha512-R5H3vw62gHNHrn+JGZbKejb+Z2D/6E5UNVlhCzIaBBLroMQMOFqy5Pap2gM+ZZHdqBtVU0/cx/M6to+mOJcoew==} dependencies: @@ -4334,7 +4324,7 @@ packages: /@types/responselike@1.0.0: resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==} dependencies: - '@types/node': 20.5.8 + '@types/node': 18.11.18 /@types/sanitize-html@2.9.0: resolution: {integrity: sha512-4fP/kEcKNj2u39IzrxWYuf/FnCCwwQCpif6wwY6ROUS1EPRIfWJjGkY3HIowY1EX/VbX5e86yq8AAE7UPMgATg==} @@ -4358,14 +4348,14 @@ packages: resolution: {integrity: sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==} dependencies: '@types/mime': 1.3.2 - '@types/node': 20.5.8 + '@types/node': 18.11.18 /@types/serve-static@1.15.2: resolution: {integrity: sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw==} dependencies: '@types/http-errors': 2.0.1 '@types/mime': 3.0.1 - '@types/node': 20.5.8 + '@types/node': 18.11.18 /@types/sinonjs__fake-timers@8.1.1: resolution: {integrity: sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==} @@ -4379,12 +4369,12 @@ packages: resolution: {integrity: sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==} dev: true - /@types/sortablejs@1.15.1: - resolution: {integrity: sha512-g/JwBNToh6oCTAwNS8UGVmjO7NLDKsejVhvE4x1eWiPTC3uCuNsa/TD4ssvX3du+MLiM+SHPNDuijp8y76JzLQ==} + /@types/sortablejs@1.15.4: + resolution: {integrity: sha512-7oL7CcPSfoyoNx3Ba1+79ykJzpEKVhHUyfAiN5eT/FoeDXOR3eBDLXf9ndDNuxaExmjpI+zVi2dMMuaoXUOzNA==} dev: true - /@types/stack-utils@2.0.1: - resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} + /@types/stack-utils@2.0.2: + resolution: {integrity: sha512-g7CK9nHdwjK2n0ymT2CW698FuWJRIx+RP6embAzZ2Qi8/ilIrA1Imt2LVSeHUzKvpoi7BhmmQcXz95eS0f2JXw==} dev: true /@types/streamx@2.9.1: @@ -4471,24 +4461,18 @@ packages: dependencies: '@types/node': 18.11.18 - /@types/yargs-parser@21.0.0: - resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} - dev: true - - /@types/yargs@16.0.5: - resolution: {integrity: sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==} - dependencies: - '@types/yargs-parser': 21.0.0 + /@types/yargs-parser@21.0.2: + resolution: {integrity: sha512-5qcvofLPbfjmBfKaLfj/+f+Sbd6pN4zl7w7VSVI5uz7m9QZTuB2aZAa2uo1wHFBNN2x6g/SoTkXmd8mQnQF2Cw==} dev: true /@types/yargs@17.0.29: resolution: {integrity: sha512-nacjqA3ee9zRF/++a3FUY1suHTFKZeHba2n8WeDw9cCVdmzmHpIxyzOJBcpHvvEmS8E9KqWlSnWHUkOrkhWcvA==} dependencies: - '@types/yargs-parser': 21.0.0 + '@types/yargs-parser': 21.0.2 dev: true - /@types/yauzl@2.10.0: - resolution: {integrity: sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==} + /@types/yauzl@2.10.2: + resolution: {integrity: sha512-Km7XAtUIduROw7QPgvcft0lIupeG8a8rdKL8RiSyKvlE7dYY31fEn41HVuQsRFDuROA8tA4K2UVL+WdfFmErBA==} requiresBuild: true dependencies: '@types/node': 20.5.8 @@ -4523,7 +4507,7 @@ packages: - supports-color dev: true - /@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.46.0)(typescript@5.2.2): + /@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.51.0)(typescript@5.2.2): resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -4535,12 +4519,12 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.6.2 - '@typescript-eslint/parser': 5.62.0(eslint@8.46.0)(typescript@5.2.2) + '@typescript-eslint/parser': 5.62.0(eslint@8.51.0)(typescript@5.2.2) '@typescript-eslint/scope-manager': 5.62.0 - '@typescript-eslint/type-utils': 5.62.0(eslint@8.46.0)(typescript@5.2.2) - '@typescript-eslint/utils': 5.62.0(eslint@8.46.0)(typescript@5.2.2) + '@typescript-eslint/type-utils': 5.62.0(eslint@8.51.0)(typescript@5.2.2) + '@typescript-eslint/utils': 5.62.0(eslint@8.51.0)(typescript@5.2.2) debug: 4.3.4(supports-color@8.1.1) - eslint: 8.46.0 + eslint: 8.51.0 graphemer: 1.4.0 ignore: 5.2.4 natural-compare-lite: 1.4.0 @@ -4551,7 +4535,7 @@ packages: - supports-color dev: true - /@typescript-eslint/eslint-plugin@6.3.0(@typescript-eslint/parser@6.3.0)(eslint@8.46.0)(typescript@5.2.2): + /@typescript-eslint/eslint-plugin@6.3.0(@typescript-eslint/parser@6.3.0)(eslint@8.51.0)(typescript@5.2.2): resolution: {integrity: sha512-IZYjYZ0ifGSLZbwMqIip/nOamFiWJ9AH+T/GYNZBWkVcyNQOFGtSMoWV7RvY4poYCMZ/4lHzNl796WOSNxmk8A==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: @@ -4563,13 +4547,13 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.6.2 - '@typescript-eslint/parser': 6.3.0(eslint@8.46.0)(typescript@5.2.2) + '@typescript-eslint/parser': 6.3.0(eslint@8.51.0)(typescript@5.2.2) '@typescript-eslint/scope-manager': 6.3.0 - '@typescript-eslint/type-utils': 6.3.0(eslint@8.46.0)(typescript@5.2.2) - '@typescript-eslint/utils': 6.3.0(eslint@8.46.0)(typescript@5.2.2) + '@typescript-eslint/type-utils': 6.3.0(eslint@8.51.0)(typescript@5.2.2) + '@typescript-eslint/utils': 6.3.0(eslint@8.51.0)(typescript@5.2.2) '@typescript-eslint/visitor-keys': 6.3.0 debug: 4.3.4(supports-color@8.1.1) - eslint: 8.46.0 + eslint: 8.51.0 graphemer: 1.4.0 ignore: 5.2.4 natural-compare: 1.4.0 @@ -4601,7 +4585,7 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@5.62.0(eslint@8.46.0)(typescript@5.2.2): + /@typescript-eslint/parser@5.62.0(eslint@8.51.0)(typescript@5.2.2): resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -4615,13 +4599,13 @@ packages: '@typescript-eslint/types': 5.62.0 '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.2.2) debug: 4.3.4(supports-color@8.1.1) - eslint: 8.46.0 + eslint: 8.51.0 typescript: 5.2.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser@6.3.0(eslint@8.46.0)(typescript@5.2.2): + /@typescript-eslint/parser@6.3.0(eslint@8.51.0)(typescript@5.2.2): resolution: {integrity: sha512-ibP+y2Gr6p0qsUkhs7InMdXrwldjxZw66wpcQq9/PzAroM45wdwyu81T+7RibNCh8oc0AgrsyCwJByncY0Ongg==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: @@ -4636,7 +4620,7 @@ packages: '@typescript-eslint/typescript-estree': 6.3.0(typescript@5.2.2) '@typescript-eslint/visitor-keys': 6.3.0 debug: 4.3.4(supports-color@8.1.1) - eslint: 8.46.0 + eslint: 8.51.0 typescript: 5.2.2 transitivePeerDependencies: - supports-color @@ -4678,7 +4662,7 @@ packages: - supports-color dev: true - /@typescript-eslint/type-utils@5.62.0(eslint@8.46.0)(typescript@5.2.2): + /@typescript-eslint/type-utils@5.62.0(eslint@8.51.0)(typescript@5.2.2): resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -4689,16 +4673,16 @@ packages: optional: true dependencies: '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.2.2) - '@typescript-eslint/utils': 5.62.0(eslint@8.46.0)(typescript@5.2.2) + '@typescript-eslint/utils': 5.62.0(eslint@8.51.0)(typescript@5.2.2) debug: 4.3.4(supports-color@8.1.1) - eslint: 8.46.0 + eslint: 8.51.0 tsutils: 3.21.0(typescript@5.2.2) typescript: 5.2.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/type-utils@6.3.0(eslint@8.46.0)(typescript@5.2.2): + /@typescript-eslint/type-utils@6.3.0(eslint@8.51.0)(typescript@5.2.2): resolution: {integrity: sha512-7Oj+1ox1T2Yc8PKpBvOKWhoI/4rWFd1j7FA/rPE0lbBPXTKjdbtC+7Ev0SeBjEKkIhKWVeZSP+mR7y1Db1CdfQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: @@ -4709,9 +4693,9 @@ packages: optional: true dependencies: '@typescript-eslint/typescript-estree': 6.3.0(typescript@5.2.2) - '@typescript-eslint/utils': 6.3.0(eslint@8.46.0)(typescript@5.2.2) + '@typescript-eslint/utils': 6.3.0(eslint@8.51.0)(typescript@5.2.2) debug: 4.3.4(supports-color@8.1.1) - eslint: 8.46.0 + eslint: 8.51.0 ts-api-utils: 1.0.1(typescript@5.2.2) typescript: 5.2.2 transitivePeerDependencies: @@ -4811,19 +4795,19 @@ packages: - typescript dev: true - /@typescript-eslint/utils@5.62.0(eslint@8.46.0)(typescript@5.2.2): + /@typescript-eslint/utils@5.62.0(eslint@8.51.0)(typescript@5.2.2): resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.46.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.51.0) '@types/json-schema': 7.0.12 '@types/semver': 7.5.0 '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/types': 5.62.0 '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.2.2) - eslint: 8.46.0 + eslint: 8.51.0 eslint-scope: 5.1.1 semver: 7.5.4 transitivePeerDependencies: @@ -4831,19 +4815,19 @@ packages: - typescript dev: true - /@typescript-eslint/utils@6.3.0(eslint@8.46.0)(typescript@5.2.2): + /@typescript-eslint/utils@6.3.0(eslint@8.51.0)(typescript@5.2.2): resolution: {integrity: sha512-hLLg3BZE07XHnpzglNBG8P/IXq/ZVXraEbgY7FM0Cnc1ehM8RMdn9mat3LubJ3KBeYXXPxV1nugWbQPjGeJk6Q==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.46.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.51.0) '@types/json-schema': 7.0.12 '@types/semver': 7.5.0 '@typescript-eslint/scope-manager': 6.3.0 '@typescript-eslint/types': 6.3.0 '@typescript-eslint/typescript-estree': 6.3.0(typescript@5.2.2) - eslint: 8.46.0 + eslint: 8.51.0 semver: 7.5.4 transitivePeerDependencies: - supports-color @@ -4896,7 +4880,7 @@ packages: /@vue/compiler-sfc@2.7.14: resolution: {integrity: sha512-aNmNHyLPsw+sVvlQFQ2/8sjNuLtK54TC6cuKnVzAY93ks4ZBrvwQSnkkIh7bsbNhum5hJBS00wSDipQ937f5DA==} dependencies: - '@babel/parser': 7.22.10 + '@babel/parser': 7.23.0 postcss: 8.4.27 source-map: 0.6.1 dev: true @@ -5096,10 +5080,6 @@ packages: resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} dev: true - /abab@2.0.6: - resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} - dev: true - /abbrev@1.1.1: resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} @@ -5118,13 +5098,6 @@ packages: negotiator: 0.6.3 dev: false - /acorn-globals@6.0.0: - resolution: {integrity: sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==} - dependencies: - acorn: 7.4.1 - acorn-walk: 7.2.0 - dev: true - /acorn-import-assertions@1.9.0(acorn@8.10.0): resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==} peerDependencies: @@ -5141,11 +5114,6 @@ packages: acorn: 8.10.0 dev: true - /acorn-walk@7.2.0: - resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} - engines: {node: '>=0.4.0'} - dev: true - /acorn-walk@8.2.0: resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} engines: {node: '>=0.4.0'} @@ -5185,6 +5153,7 @@ packages: debug: 4.3.4(supports-color@8.1.1) transitivePeerDependencies: - supports-color + dev: false /agent-base@7.1.0: resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==} @@ -5849,36 +5818,17 @@ packages: resolution: {integrity: sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==} dev: false - /babel-jest@27.5.1(@babel/core@7.22.10): - resolution: {integrity: sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - peerDependencies: - '@babel/core': ^7.8.0 - dependencies: - '@babel/core': 7.22.10 - '@jest/transform': 27.5.1 - '@jest/types': 27.5.1 - '@types/babel__core': 7.20.1 - babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 27.5.1(@babel/core@7.22.10) - chalk: 4.1.2 - graceful-fs: 4.2.11 - slash: 3.0.0 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-jest@29.7.0(@babel/core@7.22.10): + /babel-jest@29.7.0(@babel/core@7.23.2): resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.8.0 dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.23.2 '@jest/transform': 29.7.0 - '@types/babel__core': 7.20.1 + '@types/babel__core': 7.20.3 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.6.3(@babel/core@7.22.10) + babel-preset-jest: 29.6.3(@babel/core@7.23.2) chalk: 4.1.2 graceful-fs: 4.2.11 slash: 3.0.0 @@ -5899,66 +5849,45 @@ packages: - supports-color dev: true - /babel-plugin-jest-hoist@27.5.1: - resolution: {integrity: sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@babel/template': 7.22.5 - '@babel/types': 7.22.10 - '@types/babel__core': 7.20.1 - '@types/babel__traverse': 7.20.1 - dev: true - /babel-plugin-jest-hoist@29.6.3: resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/template': 7.22.5 - '@babel/types': 7.22.10 + '@babel/template': 7.22.15 + '@babel/types': 7.23.0 '@types/babel__core': 7.20.1 '@types/babel__traverse': 7.20.1 dev: true - /babel-preset-current-node-syntax@1.0.1(@babel/core@7.22.10): + /babel-preset-current-node-syntax@1.0.1(@babel/core@7.23.2): resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.10 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.10) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.22.10) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.22.10) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.22.10) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.10) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.10) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.10) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.10) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.10) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.10) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.10) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.22.10) + '@babel/core': 7.23.2 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.2) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.2) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.2) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.2) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.2) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.2) dev: true - /babel-preset-jest@27.5.1(@babel/core@7.22.10): - resolution: {integrity: sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.22.10 - babel-plugin-jest-hoist: 27.5.1 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.10) - dev: true - - /babel-preset-jest@29.6.3(@babel/core@7.22.10): + /babel-preset-jest@29.6.3(@babel/core@7.23.2): resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.23.2 babel-plugin-jest-hoist: 29.6.3 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.10) + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.23.2) dev: true /babel-walk@3.0.0-canary-5: @@ -6147,10 +6076,6 @@ packages: unload: 2.4.1 dev: true - /browser-process-hrtime@1.0.0: - resolution: {integrity: sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==} - dev: true - /browser-stdout@1.3.1: resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} dev: true @@ -6180,6 +6105,17 @@ packages: node-releases: 2.0.13 update-browserslist-db: 1.0.11(browserslist@4.21.10) + /browserslist@4.22.1: + resolution: {integrity: sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001551 + electron-to-chromium: 1.4.561 + node-releases: 2.0.13 + update-browserslist-db: 1.0.13(browserslist@4.22.1) + dev: true + /bs-logger@0.2.6: resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} engines: {node: '>= 6'} @@ -6437,6 +6373,10 @@ packages: /caniuse-lite@1.0.30001519: resolution: {integrity: sha512-0QHgqR+Jv4bxHMp8kZ1Kn8CH55OikjKJ6JmKkZYP1F3D7w+lnFXF70nG5eNfsZS89jadi5Ywy5UCSKLAglIRkg==} + /caniuse-lite@1.0.30001551: + resolution: {integrity: sha512-vtBAez47BoGMMzlbYhfXrMV1kvRF2WP/lqiMuDu1Sb4EE4LKEgjopFDSRtZfdVnslNRpOqV/woE+Xgrwj6VQlg==} + dev: true + /canonicalize@1.0.8: resolution: {integrity: sha512-0CNTVCLZggSh7bc5VkX5WWPWO+cyZbNd07IHIsSXLia/eAq+r836hgk+8BKoEh7949Mda87VUOitx5OddVj64A==} dev: false @@ -6615,7 +6555,7 @@ packages: normalize-path: 3.0.0 readdirp: 3.6.0 optionalDependencies: - fsevents: 2.3.2 + fsevents: 2.3.3 dev: true /chownr@1.1.4: @@ -6642,6 +6582,11 @@ packages: engines: {node: '>=8'} dev: true + /ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} + dev: true + /ci-parallel-vars@1.0.1: resolution: {integrity: sha512-uvzpYrpmidaoxvIQHM+rKSrigjOe9feHYbw4uOI2gdfe1C3xIlxO+kVXq83WQWNniTf8bAxVpy+cQeFQsMERKg==} dev: true @@ -6946,11 +6891,6 @@ packages: engines: {node: '>=0.1.90'} dev: true - /colors@1.2.5: - resolution: {integrity: sha512-erNRLao/Y3Fv54qUa0LBB+//Uf3YwMUmdJinN20yMXm9zdKKqH9wt7R9IIVZ+K7ShzfpLV/Zg8+VyrBJYB4lpg==} - engines: {node: '>=0.1.90'} - dev: true - /combined-stream@1.0.8: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} @@ -7292,6 +7232,12 @@ packages: /core-js@3.32.0: resolution: {integrity: sha512-rd4rYZNlF3WuoYuRIDEmbR/ga9CeuWX9U05umAvgrrZoHY4Z++cp/xwPQMvUpBB4Ag6J8KfD80G0zwCyaSxDww==} requiresBuild: true + dev: false + + /core-js@3.33.0: + resolution: {integrity: sha512-HoZr92+ZjFEKar5HS6MC776gYslNOKHt75mEBKWKnPeFDpZ6nH5OeF3S6HFT1mUAUZKrzkez05VboaX8myjSuw==} + requiresBuild: true + dev: true /core-util-is@1.0.2: resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} @@ -7332,6 +7278,25 @@ packages: - ts-node dev: true + /create-jest@29.7.0(@types/node@20.8.7)(ts-node@10.9.1): + resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + dependencies: + '@jest/types': 29.6.3 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-config: 29.7.0(@types/node@20.8.7)(ts-node@10.9.1) + jest-util: 29.7.0 + prompts: 2.4.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + dev: true + /create-require@1.1.1: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} @@ -7465,21 +7430,6 @@ packages: source-map: 0.5.7 dev: true - /cssom@0.3.8: - resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} - dev: true - - /cssom@0.4.4: - resolution: {integrity: sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==} - dev: true - - /cssstyle@2.3.0: - resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} - engines: {node: '>=8'} - dependencies: - cssom: 0.3.8 - dev: true - /csstype@3.1.2: resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} dev: true @@ -7509,7 +7459,7 @@ packages: dependencies: '@cypress/request': 2.88.12 '@cypress/xvfb': 1.2.4(supports-color@8.1.1) - '@types/node': 14.18.54 + '@types/node': 14.18.63 '@types/sinonjs__fake-timers': 8.1.1 '@types/sizzle': 2.3.3 arch: 2.2.0 @@ -7571,15 +7521,6 @@ packages: resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} engines: {node: '>= 12'} - /data-urls@2.0.0: - resolution: {integrity: sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==} - engines: {node: '>=10'} - dependencies: - abab: 2.0.6 - whatwg-mimetype: 2.3.0 - whatwg-url: 8.7.0 - dev: true - /date-fns@2.30.0: resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} engines: {node: '>=0.11'} @@ -7663,10 +7604,6 @@ packages: engines: {node: '>=10'} dev: true - /decimal.js@10.4.3: - resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} - dev: true - /decode-uri-component@0.2.2: resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} engines: {node: '>=0.10'} @@ -7731,10 +7668,6 @@ packages: strip-dirs: 2.1.0 dev: false - /dedent@0.7.0: - resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} - dev: true - /dedent@1.5.1: resolution: {integrity: sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==} peerDependencies: @@ -7914,16 +7847,6 @@ packages: wrappy: 1.0.2 dev: false - /diff-sequences@27.5.1: - resolution: {integrity: sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dev: true - - /diff-sequences@29.4.3: - resolution: {integrity: sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dev: true - /diff-sequences@29.6.3: resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -7991,13 +7914,6 @@ packages: /domelementtype@2.3.0: resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} - /domexception@2.0.1: - resolution: {integrity: sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==} - engines: {node: '>=8'} - dependencies: - webidl-conversions: 5.0.0 - dev: true - /domhandler@2.4.2: resolution: {integrity: sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==} dependencies: @@ -8094,16 +8010,15 @@ packages: /electron-to-chromium@1.4.488: resolution: {integrity: sha512-Dv4sTjiW7t/UWGL+H8ZkgIjtUAVZDgb/PwGWvMsCT7jipzUV/u5skbLXPFKb6iV0tiddVi/bcS2/kUrczeWgIQ==} + /electron-to-chromium@1.4.561: + resolution: {integrity: sha512-eS5t4ulWOBfVHdq9SW2dxEaFarj1lPjvJ8PaYMOjY0DecBaj/t4ARziL2IPpDr4atyWwjLFGQ2vo/VCgQFezVQ==} + dev: true + /emittery@0.13.1: resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} engines: {node: '>=12'} dev: true - /emittery@0.8.1: - resolution: {integrity: sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==} - engines: {node: '>=10'} - dev: true - /emittery@1.0.1: resolution: {integrity: sha512-2ID6FdrMD9KDLldGesP6317G78K7km/kMcwItRtVFva7I/cSEOIaLpewaUb+YLXVwdAp3Ctfxh/V5zIl1sj7dQ==} engines: {node: '>=14.16'} @@ -8366,18 +8281,6 @@ packages: engines: {node: '>=12'} dev: true - /escodegen@2.1.0: - resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} - engines: {node: '>=6.0'} - hasBin: true - dependencies: - esprima: 4.0.1 - estraverse: 5.3.0 - esutils: 2.0.3 - optionalDependencies: - source-map: 0.6.1 - dev: true - /eslint-config-prettier@8.9.0(eslint@8.46.0): resolution: {integrity: sha512-+sbni7NfVXnOpnRadUA8S28AUlsZt9GjgFvABIRL9Hkn8KqNzOp+7Lw4QWtrwn20KzU3wqu1QoOj2m+7rKRqkA==} hasBin: true @@ -8387,13 +8290,22 @@ packages: eslint: 8.46.0 dev: true - /eslint-config-prettier@9.0.0(eslint@8.46.0): + /eslint-config-prettier@8.9.0(eslint@8.51.0): + resolution: {integrity: sha512-+sbni7NfVXnOpnRadUA8S28AUlsZt9GjgFvABIRL9Hkn8KqNzOp+7Lw4QWtrwn20KzU3wqu1QoOj2m+7rKRqkA==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + dependencies: + eslint: 8.51.0 + dev: true + + /eslint-config-prettier@9.0.0(eslint@8.51.0): resolution: {integrity: sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 8.46.0 + eslint: 8.51.0 dev: true /eslint-config-standard@16.0.3(eslint-plugin-import@2.28.0)(eslint-plugin-node@11.1.0)(eslint-plugin-promise@6.1.1)(eslint@8.46.0): @@ -8463,7 +8375,7 @@ packages: - supports-color dev: true - /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.3.0)(eslint-import-resolver-node@0.3.9)(eslint@8.46.0): + /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint@8.51.0): resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -8484,23 +8396,52 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 6.3.0(eslint@8.46.0)(typescript@5.2.2) + '@typescript-eslint/parser': 5.62.0(eslint@8.51.0)(typescript@5.2.2) debug: 3.2.7(supports-color@8.1.1) - eslint: 8.46.0 + eslint: 8.51.0 eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-es-x@7.2.0(eslint@8.46.0): + /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.3.0)(eslint-import-resolver-node@0.3.9)(eslint@8.51.0): + resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + dependencies: + '@typescript-eslint/parser': 6.3.0(eslint@8.51.0)(typescript@5.2.2) + debug: 3.2.7(supports-color@8.1.1) + eslint: 8.51.0 + eslint-import-resolver-node: 0.3.9 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-plugin-es-x@7.2.0(eslint@8.51.0): resolution: {integrity: sha512-9dvv5CcvNjSJPqnS5uZkqb3xmbeqRLnvXKK7iI5+oK/yTusyc46zbBZKENGsOfojm/mKfszyZb+wNqNPAPeGXA==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: eslint: '>=8' dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.46.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.51.0) '@eslint-community/regexpp': 4.6.2 - eslint: 8.46.0 + eslint: 8.51.0 dev: true /eslint-plugin-es@3.0.1(eslint@8.46.0): @@ -8514,35 +8455,35 @@ packages: regexpp: 3.2.0 dev: true - /eslint-plugin-es@4.1.0(eslint@8.46.0): + /eslint-plugin-es@4.1.0(eslint@8.51.0): resolution: {integrity: sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==} engines: {node: '>=8.10.0'} peerDependencies: eslint: '>=4.19.1' dependencies: - eslint: 8.46.0 + eslint: 8.51.0 eslint-utils: 2.1.0 regexpp: 3.2.0 dev: true - /eslint-plugin-eslint-comments@3.2.0(eslint@8.46.0): + /eslint-plugin-eslint-comments@3.2.0(eslint@8.51.0): resolution: {integrity: sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==} engines: {node: '>=6.5.0'} peerDependencies: eslint: '>=4.19.1' dependencies: escape-string-regexp: 1.0.5 - eslint: 8.46.0 + eslint: 8.51.0 ignore: 5.2.4 dev: true - /eslint-plugin-file-progress@1.3.0(eslint@8.46.0): + /eslint-plugin-file-progress@1.3.0(eslint@8.51.0): resolution: {integrity: sha512-LncpnGHU26KPvCrvDC2Sl9PfjdrsG8qltgiK6BR7KybWtfqrdlsu1ax3+hyPMn5OkKBTF3Wki3oqK1MSMeOtQw==} peerDependencies: eslint: ^7.0.0 || ^8.0.0 dependencies: chalk: 4.1.2 - eslint: 8.46.0 + eslint: 8.51.0 ora: 5.4.1 dev: true @@ -8588,7 +8529,7 @@ packages: - supports-color dev: true - /eslint-plugin-import@2.28.0(@typescript-eslint/parser@6.3.0)(eslint@8.46.0): + /eslint-plugin-import@2.28.0(@typescript-eslint/parser@5.62.0)(eslint@8.51.0): resolution: {integrity: sha512-B8s/n+ZluN7sxj9eUf7/pRFERX0r5bnFA2dCaLHy2ZeaQEAz0k+ZZkFWRFHJAqxfxQDx6KLv9LeIki7cFdwW+Q==} engines: {node: '>=4'} peerDependencies: @@ -8598,16 +8539,16 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 6.3.0(eslint@8.46.0)(typescript@5.2.2) + '@typescript-eslint/parser': 5.62.0(eslint@8.51.0)(typescript@5.2.2) array-includes: 3.1.6 array.prototype.findlastindex: 1.2.2 array.prototype.flat: 1.3.1 array.prototype.flatmap: 1.3.1 debug: 3.2.7(supports-color@8.1.1) doctrine: 2.1.0 - eslint: 8.46.0 + eslint: 8.51.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.3.0)(eslint-import-resolver-node@0.3.9)(eslint@8.46.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint@8.51.0) has: 1.0.3 is-core-module: 2.13.0 is-glob: 4.0.3 @@ -8624,7 +8565,43 @@ packages: - supports-color dev: true - /eslint-plugin-jsdoc@46.4.6(eslint@8.46.0): + /eslint-plugin-import@2.28.0(@typescript-eslint/parser@6.3.0)(eslint@8.51.0): + resolution: {integrity: sha512-B8s/n+ZluN7sxj9eUf7/pRFERX0r5bnFA2dCaLHy2ZeaQEAz0k+ZZkFWRFHJAqxfxQDx6KLv9LeIki7cFdwW+Q==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + dependencies: + '@typescript-eslint/parser': 6.3.0(eslint@8.51.0)(typescript@5.2.2) + array-includes: 3.1.6 + array.prototype.findlastindex: 1.2.2 + array.prototype.flat: 1.3.1 + array.prototype.flatmap: 1.3.1 + debug: 3.2.7(supports-color@8.1.1) + doctrine: 2.1.0 + eslint: 8.51.0 + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.3.0)(eslint-import-resolver-node@0.3.9)(eslint@8.51.0) + has: 1.0.3 + is-core-module: 2.13.0 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.fromentries: 2.0.6 + object.groupby: 1.0.0 + object.values: 1.1.6 + resolve: 1.22.4 + semver: 6.3.1 + tsconfig-paths: 3.14.2 + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + dev: true + + /eslint-plugin-jsdoc@46.4.6(eslint@8.51.0): resolution: {integrity: sha512-z4SWYnJfOqftZI+b3RM9AtWL1vF/sLWE/LlO9yOKDof9yN2+n3zOdOJTGX/pRE/xnPsooOLG2Rq6e4d+XW3lNw==} engines: {node: '>=16'} peerDependencies: @@ -8635,7 +8612,7 @@ packages: comment-parser: 1.4.0 debug: 4.3.4(supports-color@8.1.1) escape-string-regexp: 4.0.0 - eslint: 8.46.0 + eslint: 8.51.0 esquery: 1.5.0 is-builtin-module: 3.2.1 semver: 7.5.4 @@ -8644,40 +8621,40 @@ packages: - supports-color dev: true - /eslint-plugin-jsonc@2.9.0(eslint@8.46.0): + /eslint-plugin-jsonc@2.9.0(eslint@8.51.0): resolution: {integrity: sha512-RK+LeONVukbLwT2+t7/OY54NJRccTXh/QbnXzPuTLpFMVZhPuq1C9E07+qWenGx7rrQl0kAalAWl7EmB+RjpGA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '>=6.0.0' dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.46.0) - eslint: 8.46.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.51.0) + eslint: 8.51.0 jsonc-eslint-parser: 2.3.0 natural-compare: 1.4.0 dev: true - /eslint-plugin-markdown@3.0.1(eslint@8.46.0): + /eslint-plugin-markdown@3.0.1(eslint@8.51.0): resolution: {integrity: sha512-8rqoc148DWdGdmYF6WSQFT3uQ6PO7zXYgeBpHAOAakX/zpq+NvFYbDA/H7PYzHajwtmaOzAwfxyl++x0g1/N9A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - eslint: 8.46.0 + eslint: 8.51.0 mdast-util-from-markdown: 0.8.5 transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-n@15.7.0(eslint@8.46.0): + /eslint-plugin-n@15.7.0(eslint@8.51.0): resolution: {integrity: sha512-jDex9s7D/Qial8AGVIHq4W7NswpUD5DPDL2RH8Lzd9EloWUuvUkHfv4FRLMipH5q2UtyurorBkPeNi1wVWNh3Q==} engines: {node: '>=12.22.0'} peerDependencies: eslint: '>=7.0.0' dependencies: builtins: 5.0.1 - eslint: 8.46.0 - eslint-plugin-es: 4.1.0(eslint@8.46.0) - eslint-utils: 3.0.0(eslint@8.46.0) + eslint: 8.51.0 + eslint-plugin-es: 4.1.0(eslint@8.51.0) + eslint-utils: 3.0.0(eslint@8.51.0) ignore: 5.2.4 is-core-module: 2.13.0 minimatch: 3.1.2 @@ -8685,16 +8662,16 @@ packages: semver: 7.5.4 dev: true - /eslint-plugin-n@16.0.1(eslint@8.46.0): + /eslint-plugin-n@16.0.1(eslint@8.51.0): resolution: {integrity: sha512-CDmHegJN0OF3L5cz5tATH84RPQm9kG+Yx39wIqIwPR2C0uhBGMWfbbOtetR83PQjjidA5aXMu+LEFw1jaSwvTA==} engines: {node: '>=16.0.0'} peerDependencies: eslint: '>=7.0.0' dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.46.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.51.0) builtins: 5.0.1 - eslint: 8.46.0 - eslint-plugin-es-x: 7.2.0(eslint@8.46.0) + eslint: 8.51.0 + eslint-plugin-es-x: 7.2.0(eslint@8.51.0) ignore: 5.2.4 is-core-module: 2.13.0 minimatch: 3.1.2 @@ -8734,7 +8711,7 @@ packages: prettier-linter-helpers: 1.0.0 dev: true - /eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.9.0)(eslint@8.46.0)(prettier@3.0.3): + /eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.9.0)(eslint@8.51.0)(prettier@3.0.3): resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} engines: {node: '>=12.0.0'} peerDependencies: @@ -8745,13 +8722,13 @@ packages: eslint-config-prettier: optional: true dependencies: - eslint: 8.46.0 - eslint-config-prettier: 8.9.0(eslint@8.46.0) + eslint: 8.51.0 + eslint-config-prettier: 8.9.0(eslint@8.51.0) prettier: 3.0.3 prettier-linter-helpers: 1.0.0 dev: true - /eslint-plugin-prettier@5.0.0(eslint-config-prettier@9.0.0)(eslint@8.46.0)(prettier@3.0.3): + /eslint-plugin-prettier@5.0.0(eslint-config-prettier@9.0.0)(eslint@8.51.0)(prettier@3.0.3): resolution: {integrity: sha512-AgaZCVuYDXHUGxj/ZGu1u8H8CYgDY3iG6w5kUFw4AzMVXzB7VvbKgYR4nATIN+OvUrghMbiDLeimVjVY5ilq3w==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -8765,20 +8742,20 @@ packages: eslint-config-prettier: optional: true dependencies: - eslint: 8.46.0 - eslint-config-prettier: 9.0.0(eslint@8.46.0) + eslint: 8.51.0 + eslint-config-prettier: 9.0.0(eslint@8.51.0) prettier: 3.0.3 prettier-linter-helpers: 1.0.0 synckit: 0.8.5 dev: true - /eslint-plugin-promise@5.2.0(eslint@8.46.0): + /eslint-plugin-promise@5.2.0(eslint@8.51.0): resolution: {integrity: sha512-SftLb1pUG01QYq2A/hGAWfDRXqYD82zE7j7TopDOyNdU+7SvvoXREls/+PRTY17vUXzXnZA/zfnyKgRH6x4JJw==} engines: {node: ^10.12.0 || >=12.0.0} peerDependencies: eslint: ^7.0.0 dependencies: - eslint: 8.46.0 + eslint: 8.51.0 dev: true /eslint-plugin-promise@6.1.1(eslint@8.46.0): @@ -8790,6 +8767,15 @@ packages: eslint: 8.46.0 dev: true + /eslint-plugin-promise@6.1.1(eslint@8.51.0): + resolution: {integrity: sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + dependencies: + eslint: 8.51.0 + dev: true + /eslint-plugin-standard@5.0.0(eslint@8.46.0): resolution: {integrity: sha512-eSIXPc9wBM4BrniMzJRBm2uoVuXz2EPa+NXPk2+itrVt+r5SbKFERx/IgrK/HmfjddyKVz2f+j+7gBRvu19xLg==} deprecated: 'standard 16.0.0 and eslint-config-standard 16.0.0 no longer require the eslint-plugin-standard package. You can remove it from your dependencies with ''npm rm eslint-plugin-standard''. More info here: https://github.com/standard/standard/issues/1316' @@ -8806,7 +8792,7 @@ packages: '@microsoft/tsdoc-config': 0.16.2 dev: true - /eslint-plugin-unicorn@40.1.0(eslint@8.46.0): + /eslint-plugin-unicorn@40.1.0(eslint@8.51.0): resolution: {integrity: sha512-y5doK2DF9Sr5AqKEHbHxjFllJ167nKDRU01HDcWyv4Tnmaoe9iNxMrBnaybZvWZUaE3OC5Unu0lNIevYamloig==} engines: {node: '>=12'} peerDependencies: @@ -8815,8 +8801,8 @@ packages: '@babel/helper-validator-identifier': 7.22.5 ci-info: 3.8.0 clean-regexp: 1.0.0 - eslint: 8.46.0 - eslint-utils: 3.0.0(eslint@8.46.0) + eslint: 8.51.0 + eslint-utils: 3.0.0(eslint@8.51.0) esquery: 1.5.0 indent-string: 4.0.0 is-builtin-module: 3.2.1 @@ -8829,17 +8815,17 @@ packages: strip-indent: 3.0.0 dev: true - /eslint-plugin-unicorn@45.0.2(eslint@8.46.0): + /eslint-plugin-unicorn@45.0.2(eslint@8.51.0): resolution: {integrity: sha512-Y0WUDXRyGDMcKLiwgL3zSMpHrXI00xmdyixEGIg90gHnj0PcHY4moNv3Ppje/kDivdAy5vUeUr7z211ImPv2gw==} engines: {node: '>=14.18'} peerDependencies: eslint: '>=8.28.0' dependencies: '@babel/helper-validator-identifier': 7.22.5 - '@eslint-community/eslint-utils': 4.4.0(eslint@8.46.0) - ci-info: 3.8.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.51.0) + ci-info: 3.9.0 clean-regexp: 1.0.0 - eslint: 8.46.0 + eslint: 8.51.0 esquery: 1.5.0 indent-string: 4.0.0 is-builtin-module: 3.2.1 @@ -8858,52 +8844,52 @@ packages: resolution: {integrity: sha512-WE+YlK9X9s4vf5EaYRU0Scw7WItDZStm+PapFSYlg2ABNtaQ4zIG7wEqpoUB3SlfM+SgkhgmzR0TeJOO5k3/Nw==} dev: true - /eslint-plugin-vue-scoped-css@2.5.0(eslint@8.46.0)(vue-eslint-parser@9.3.1): + /eslint-plugin-vue-scoped-css@2.5.0(eslint@8.51.0)(vue-eslint-parser@9.3.1): resolution: {integrity: sha512-vR+raYNE1aQ69lS1lZGiKoz8rXFI3MWf2fxrfns/XCQ0XT5sIguhDtQS+9JmUQJClenLDEe2CQx7P+eeSdF4cA==} engines: {node: ^12.22 || ^14.17 || >=16} peerDependencies: eslint: '>=5.0.0' vue-eslint-parser: '>=7.1.0' dependencies: - eslint: 8.46.0 - eslint-utils: 3.0.0(eslint@8.46.0) + eslint: 8.51.0 + eslint-utils: 3.0.0(eslint@8.51.0) lodash: 4.17.21 postcss: 8.4.27 postcss-safe-parser: 6.0.0(postcss@8.4.27) postcss-scss: 4.0.6(postcss@8.4.27) postcss-selector-parser: 6.0.13 postcss-styl: 0.12.3 - vue-eslint-parser: 9.3.1(eslint@8.46.0) + vue-eslint-parser: 9.3.1(eslint@8.51.0) transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-vue@9.16.1(eslint@8.46.0): + /eslint-plugin-vue@9.16.1(eslint@8.51.0): resolution: {integrity: sha512-2FtnTqazA6aYONfDuOZTk0QzwhAwi7Z4+uJ7+GHeGxcKapjqWlDsRWDenvyG/utyOfAS5bVRmAG3cEWiYEz2bA==} engines: {node: ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.46.0) - eslint: 8.46.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.51.0) + eslint: 8.51.0 natural-compare: 1.4.0 nth-check: 2.1.1 postcss-selector-parser: 6.0.13 semver: 7.5.4 - vue-eslint-parser: 9.3.1(eslint@8.46.0) + vue-eslint-parser: 9.3.1(eslint@8.51.0) xml-name-validator: 4.0.0 transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-yml@1.8.0(eslint@8.46.0): + /eslint-plugin-yml@1.8.0(eslint@8.51.0): resolution: {integrity: sha512-fgBiJvXD0P2IN7SARDJ2J7mx8t0bLdG6Zcig4ufOqW5hOvSiFxeUyc2g5I1uIm8AExbo26NNYCcTGZT0MXTsyg==} engines: {node: ^14.17.0 || >=16.0.0} peerDependencies: eslint: '>=6.0.0' dependencies: debug: 4.3.4(supports-color@8.1.1) - eslint: 8.46.0 + eslint: 8.51.0 lodash: 4.17.21 natural-compare: 1.4.0 yaml-eslint-parser: 1.2.2 @@ -8938,13 +8924,13 @@ packages: eslint-visitor-keys: 1.3.0 dev: true - /eslint-utils@3.0.0(eslint@8.46.0): + /eslint-utils@3.0.0(eslint@8.51.0): resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} peerDependencies: eslint: '>=5' dependencies: - eslint: 8.46.0 + eslint: 8.51.0 eslint-visitor-keys: 2.1.0 dev: true @@ -8963,6 +8949,11 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true + /eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + /eslint@8.46.0: resolution: {integrity: sha512-cIO74PvbW0qU8e0mIvk5IV3ToWdCq5FYG6gWPHHkx6gNdjlbAYvtfHmlCMXxjcoVaIdwy/IAt3+mDkZkfvb2Dg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -9009,6 +9000,52 @@ packages: - supports-color dev: true + /eslint@8.51.0: + resolution: {integrity: sha512-2WuxRZBrlwnXi+/vFSJyjMqrNjtJqiasMzehF0shoLaW7DzS3/9Yvrmq5JiT66+pNjiX4UBnLDiKHcWAr/OInA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.51.0) + '@eslint-community/regexpp': 4.9.1 + '@eslint/eslintrc': 2.1.2 + '@eslint/js': 8.51.0 + '@humanwhocodes/config-array': 0.11.12 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4(supports-color@8.1.1) + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.5.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.23.0 + graphemer: 1.4.0 + ignore: 5.2.4 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.3 + strip-ansi: 6.0.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + dev: true + /espree@9.6.1: resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -9086,10 +9123,10 @@ packages: /eventemitter3@4.0.7: resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + dev: true /eventemitter3@5.0.1: resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} - dev: true /events@1.1.1: resolution: {integrity: sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw==} @@ -9219,16 +9256,6 @@ packages: homedir-polyfill: 1.0.3 dev: true - /expect@27.5.1: - resolution: {integrity: sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/types': 27.5.1 - jest-get-type: 27.5.1 - jest-matcher-utils: 27.5.1 - jest-message-util: 27.5.1 - dev: true - /expect@29.7.0: resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -9306,7 +9333,7 @@ packages: get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: - '@types/yauzl': 2.10.0 + '@types/yauzl': 2.10.2 transitivePeerDependencies: - supports-color dev: true @@ -9690,6 +9717,7 @@ packages: asynckit: 0.4.0 combined-stream: 1.0.8 mime-types: 2.1.35 + dev: false /form-data@4.0.0: resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} @@ -9743,15 +9771,6 @@ packages: universalify: 2.0.0 dev: true - /fs-extra@7.0.1: - resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} - engines: {node: '>=6 <7 || >=8'} - dependencies: - graceful-fs: 4.2.11 - jsonfile: 4.0.0 - universalify: 0.1.2 - dev: true - /fs-extra@8.1.0: resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} engines: {node: '>=6 <7 || >=8'} @@ -9812,8 +9831,8 @@ packages: requiresBuild: true optional: true - /fsevents@2.3.2: - resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] requiresBuild: true @@ -10123,6 +10142,13 @@ packages: type-fest: 0.20.2 dev: true + /globals@13.23.0: + resolution: {integrity: sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.20.2 + dev: true + /globalthis@1.0.3: resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} engines: {node: '>= 0.4'} @@ -10493,13 +10519,6 @@ packages: resolution: {integrity: sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==} dev: true - /html-encoding-sniffer@2.0.1: - resolution: {integrity: sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==} - engines: {node: '>=10'} - dependencies: - whatwg-encoding: 1.0.5 - dev: true - /html-entities@2.3.2: resolution: {integrity: sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ==} dev: false @@ -10568,17 +10587,6 @@ packages: toidentifier: 1.0.1 dev: false - /http-proxy-agent@4.0.1: - resolution: {integrity: sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==} - engines: {node: '>= 6'} - dependencies: - '@tootallnate/once': 1.1.2 - agent-base: 6.0.2 - debug: 4.3.4(supports-color@8.1.1) - transitivePeerDependencies: - - supports-color - dev: true - /http-proxy-agent@5.0.0: resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} engines: {node: '>= 6'} @@ -10650,6 +10658,7 @@ packages: debug: 4.3.4(supports-color@8.1.1) transitivePeerDependencies: - supports-color + dev: false /https-proxy-agent@7.0.1: resolution: {integrity: sha512-Eun8zV0kcYS1g19r78osiQLEFIRspRUDd9tIfBCTBPBeMieF/EsJNL8VI3xOIdYRDEkjQnqOYPsZ2DsWsVsFwQ==} @@ -10696,6 +10705,7 @@ packages: engines: {node: '>=0.10.0'} dependencies: safer-buffer: 2.1.2 + dev: false /iconv-lite@0.6.3: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} @@ -10736,11 +10746,6 @@ packages: resolve-from: 4.0.0 dev: true - /import-lazy@4.0.0: - resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} - engines: {node: '>=8'} - dev: true - /import-local@3.1.0: resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} engines: {node: '>=8'} @@ -11239,10 +11244,6 @@ packages: resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} engines: {node: '>=0.10.0'} - /is-potential-custom-element-name@1.0.1: - resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} - dev: true - /is-promise@2.2.2: resolution: {integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==} @@ -11412,7 +11413,7 @@ packages: engines: {node: '>=8'} dependencies: '@babel/core': 7.22.10 - '@babel/parser': 7.22.10 + '@babel/parser': 7.23.0 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.0 semver: 6.3.1 @@ -11424,7 +11425,7 @@ packages: resolution: {integrity: sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA==} engines: {node: '>=10'} dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.23.2 '@babel/parser': 7.22.10 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.0 @@ -11488,15 +11489,6 @@ packages: filelist: 1.0.4 minimatch: 3.1.2 - /jest-changed-files@27.5.1: - resolution: {integrity: sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/types': 27.5.1 - execa: 5.1.1 - throat: 6.0.2 - dev: true - /jest-changed-files@29.7.0: resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -11506,33 +11498,6 @@ packages: p-limit: 3.1.0 dev: true - /jest-circus@27.5.1: - resolution: {integrity: sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/environment': 27.5.1 - '@jest/test-result': 27.5.1 - '@jest/types': 27.5.1 - '@types/node': 20.5.8 - chalk: 4.1.2 - co: 4.6.0 - dedent: 0.7.0 - expect: 27.5.1 - is-generator-fn: 2.1.0 - jest-each: 27.5.1 - jest-matcher-utils: 27.5.1 - jest-message-util: 27.5.1 - jest-runtime: 27.5.1 - jest-snapshot: 27.5.1 - jest-util: 27.5.1 - pretty-format: 27.5.1 - slash: 3.0.0 - stack-utils: 2.0.6 - throat: 6.0.2 - transitivePeerDependencies: - - supports-color - dev: true - /jest-circus@29.7.0: resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -11541,7 +11506,7 @@ packages: '@jest/expect': 29.7.0 '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.5.8 + '@types/node': 20.8.7 chalk: 4.1.2 co: 4.6.0 dedent: 1.5.1 @@ -11562,36 +11527,6 @@ packages: - supports-color dev: true - /jest-cli@27.5.1(ts-node@10.4.0): - resolution: {integrity: sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - '@jest/core': 27.5.1(ts-node@10.4.0) - '@jest/test-result': 27.5.1 - '@jest/types': 27.5.1 - chalk: 4.1.2 - exit: 0.1.2 - graceful-fs: 4.2.11 - import-local: 3.1.0 - jest-config: 27.5.1(ts-node@10.4.0) - jest-util: 27.5.1 - jest-validate: 27.5.1 - prompts: 2.4.2 - yargs: 16.2.0 - transitivePeerDependencies: - - bufferutil - - canvas - - supports-color - - ts-node - - utf-8-validate - dev: true - /jest-cli@29.7.0(@types/node@18.11.18): resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -11620,45 +11555,32 @@ packages: - ts-node dev: true - /jest-config@27.5.1(ts-node@10.4.0): - resolution: {integrity: sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /jest-cli@29.7.0(@types/node@20.8.7)(ts-node@10.9.1): + resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true peerDependencies: - ts-node: '>=9.0.0' + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 peerDependenciesMeta: - ts-node: + node-notifier: optional: true dependencies: - '@babel/core': 7.22.10 - '@jest/test-sequencer': 27.5.1 - '@jest/types': 27.5.1 - babel-jest: 27.5.1(@babel/core@7.22.10) + '@jest/core': 29.7.0(ts-node@10.9.1) + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 chalk: 4.1.2 - ci-info: 3.8.0 - deepmerge: 4.3.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-circus: 27.5.1 - jest-environment-jsdom: 27.5.1 - jest-environment-node: 27.5.1 - jest-get-type: 27.5.1 - jest-jasmine2: 27.5.1 - jest-regex-util: 27.5.1 - jest-resolve: 27.5.1 - jest-runner: 27.5.1 - jest-util: 27.5.1 - jest-validate: 27.5.1 - micromatch: 4.0.5 - parse-json: 5.2.0 - pretty-format: 27.5.1 - slash: 3.0.0 - strip-json-comments: 3.1.1 - ts-node: 10.4.0(@swc/core@1.3.78)(@types/node@20.3.1)(typescript@5.1.3) + create-jest: 29.7.0(@types/node@20.8.7)(ts-node@10.9.1) + exit: 0.1.2 + import-local: 3.1.0 + jest-config: 29.7.0(@types/node@20.8.7)(ts-node@10.9.1) + jest-util: 29.7.0 + jest-validate: 29.7.0 + yargs: 17.7.2 transitivePeerDependencies: - - bufferutil - - canvas + - '@types/node' + - babel-plugin-macros - supports-color - - utf-8-validate + - ts-node dev: true /jest-config@29.7.0(@types/node@18.11.18): @@ -11673,13 +11595,13 @@ packages: ts-node: optional: true dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.23.2 '@jest/test-sequencer': 29.7.0 '@jest/types': 29.6.3 '@types/node': 18.11.18 - babel-jest: 29.7.0(@babel/core@7.22.10) + babel-jest: 29.7.0(@babel/core@7.23.2) chalk: 4.1.2 - ci-info: 3.8.0 + ci-info: 3.9.0 deepmerge: 4.3.1 glob: 7.2.3 graceful-fs: 4.2.11 @@ -11701,7 +11623,7 @@ packages: - supports-color dev: true - /jest-config@29.7.0(@types/node@20.5.8): + /jest-config@29.7.0(@types/node@20.8.7)(ts-node@10.9.1): resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -11713,13 +11635,13 @@ packages: ts-node: optional: true dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.23.2 '@jest/test-sequencer': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.5.8 - babel-jest: 29.7.0(@babel/core@7.22.10) + '@types/node': 20.8.7 + babel-jest: 29.7.0(@babel/core@7.23.2) chalk: 4.1.2 - ci-info: 3.8.0 + ci-info: 3.9.0 deepmerge: 4.3.1 glob: 7.2.3 graceful-fs: 4.2.11 @@ -11736,31 +11658,12 @@ packages: pretty-format: 29.7.0 slash: 3.0.0 strip-json-comments: 3.1.1 + ts-node: 10.9.1(@swc/core@1.3.78)(@types/node@20.8.7)(typescript@5.2.2) transitivePeerDependencies: - babel-plugin-macros - supports-color dev: true - /jest-diff@27.5.1: - resolution: {integrity: sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - chalk: 4.1.2 - diff-sequences: 27.5.1 - jest-get-type: 27.5.1 - pretty-format: 27.5.1 - dev: true - - /jest-diff@29.6.2: - resolution: {integrity: sha512-t+ST7CB9GX5F2xKwhwCf0TAR17uNDiaPTZnVymP9lw0lssa9vG+AFyDZoeIHStU3WowFFwT+ky+er0WVl2yGhA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - chalk: 4.1.2 - diff-sequences: 29.4.3 - jest-get-type: 29.4.3 - pretty-format: 29.6.2 - dev: true - /jest-diff@29.7.0: resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -11771,13 +11674,6 @@ packages: pretty-format: 29.7.0 dev: true - /jest-docblock@27.5.1: - resolution: {integrity: sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - detect-newline: 3.1.0 - dev: true - /jest-docblock@29.7.0: resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -11785,17 +11681,6 @@ packages: detect-newline: 3.1.0 dev: true - /jest-each@27.5.1: - resolution: {integrity: sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/types': 27.5.1 - chalk: 4.1.2 - jest-get-type: 27.5.1 - jest-util: 27.5.1 - pretty-format: 27.5.1 - dev: true - /jest-each@29.7.0: resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -11807,36 +11692,6 @@ packages: pretty-format: 29.7.0 dev: true - /jest-environment-jsdom@27.5.1: - resolution: {integrity: sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/environment': 27.5.1 - '@jest/fake-timers': 27.5.1 - '@jest/types': 27.5.1 - '@types/node': 20.5.8 - jest-mock: 27.5.1 - jest-util: 27.5.1 - jsdom: 16.7.0 - transitivePeerDependencies: - - bufferutil - - canvas - - supports-color - - utf-8-validate - dev: true - - /jest-environment-node@27.5.1: - resolution: {integrity: sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/environment': 27.5.1 - '@jest/fake-timers': 27.5.1 - '@jest/types': 27.5.1 - '@types/node': 20.5.8 - jest-mock: 27.5.1 - jest-util: 27.5.1 - dev: true - /jest-environment-node@29.7.0: resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -11844,7 +11699,7 @@ packages: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.5.8 + '@types/node': 18.11.18 jest-mock: 29.7.0 jest-util: 29.7.0 dev: true @@ -11858,48 +11713,18 @@ packages: - encoding dev: true - /jest-get-type@27.5.1: - resolution: {integrity: sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dev: true - - /jest-get-type@29.4.3: - resolution: {integrity: sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dev: true - /jest-get-type@29.6.3: resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true - /jest-haste-map@27.5.1: - resolution: {integrity: sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/types': 27.5.1 - '@types/graceful-fs': 4.1.6 - '@types/node': 20.5.8 - anymatch: 3.1.3 - fb-watchman: 2.0.2 - graceful-fs: 4.2.11 - jest-regex-util: 27.5.1 - jest-serializer: 27.5.1 - jest-util: 27.5.1 - jest-worker: 27.5.1 - micromatch: 4.0.5 - walker: 1.0.8 - optionalDependencies: - fsevents: 2.3.2 - dev: true - /jest-haste-map@29.7.0: resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/graceful-fs': 4.1.6 - '@types/node': 20.5.8 + '@types/graceful-fs': 4.1.8 + '@types/node': 20.8.7 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -11909,40 +11734,7 @@ packages: micromatch: 4.0.5 walker: 1.0.8 optionalDependencies: - fsevents: 2.3.2 - dev: true - - /jest-jasmine2@27.5.1: - resolution: {integrity: sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/environment': 27.5.1 - '@jest/source-map': 27.5.1 - '@jest/test-result': 27.5.1 - '@jest/types': 27.5.1 - '@types/node': 20.5.8 - chalk: 4.1.2 - co: 4.6.0 - expect: 27.5.1 - is-generator-fn: 2.1.0 - jest-each: 27.5.1 - jest-matcher-utils: 27.5.1 - jest-message-util: 27.5.1 - jest-runtime: 27.5.1 - jest-snapshot: 27.5.1 - jest-util: 27.5.1 - pretty-format: 27.5.1 - throat: 6.0.2 - transitivePeerDependencies: - - supports-color - dev: true - - /jest-leak-detector@27.5.1: - resolution: {integrity: sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - jest-get-type: 27.5.1 - pretty-format: 27.5.1 + fsevents: 2.3.3 dev: true /jest-leak-detector@29.7.0: @@ -11953,16 +11745,6 @@ packages: pretty-format: 29.7.0 dev: true - /jest-matcher-utils@27.5.1: - resolution: {integrity: sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - chalk: 4.1.2 - jest-diff: 27.5.1 - jest-get-type: 27.5.1 - pretty-format: 27.5.1 - dev: true - /jest-matcher-utils@29.7.0: resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -11973,28 +11755,13 @@ packages: pretty-format: 29.7.0 dev: true - /jest-message-util@27.5.1: - resolution: {integrity: sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@babel/code-frame': 7.22.10 - '@jest/types': 27.5.1 - '@types/stack-utils': 2.0.1 - chalk: 4.1.2 - graceful-fs: 4.2.11 - micromatch: 4.0.5 - pretty-format: 27.5.1 - slash: 3.0.0 - stack-utils: 2.0.6 - dev: true - /jest-message-util@29.7.0: resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/code-frame': 7.22.10 + '@babel/code-frame': 7.22.13 '@jest/types': 29.6.3 - '@types/stack-utils': 2.0.1 + '@types/stack-utils': 2.0.2 chalk: 4.1.2 graceful-fs: 4.2.11 micromatch: 4.0.5 @@ -12003,35 +11770,15 @@ packages: stack-utils: 2.0.6 dev: true - /jest-mock@27.5.1: - resolution: {integrity: sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/types': 27.5.1 - '@types/node': 20.5.8 - dev: true - /jest-mock@29.7.0: resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 20.5.8 + '@types/node': 18.11.18 jest-util: 29.7.0 dev: true - /jest-pnp-resolver@1.2.3(jest-resolve@27.5.1): - resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} - engines: {node: '>=6'} - peerDependencies: - jest-resolve: '*' - peerDependenciesMeta: - jest-resolve: - optional: true - dependencies: - jest-resolve: 27.5.1 - dev: true - /jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} engines: {node: '>=6'} @@ -12044,27 +11791,11 @@ packages: jest-resolve: 29.7.0 dev: true - /jest-regex-util@27.5.1: - resolution: {integrity: sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dev: true - /jest-regex-util@29.6.3: resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true - /jest-resolve-dependencies@27.5.1: - resolution: {integrity: sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/types': 27.5.1 - jest-regex-util: 27.5.1 - jest-snapshot: 27.5.1 - transitivePeerDependencies: - - supports-color - dev: true - /jest-resolve-dependencies@29.7.0: resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -12075,22 +11806,6 @@ packages: - supports-color dev: true - /jest-resolve@27.5.1: - resolution: {integrity: sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/types': 27.5.1 - chalk: 4.1.2 - graceful-fs: 4.2.11 - jest-haste-map: 27.5.1 - jest-pnp-resolver: 1.2.3(jest-resolve@27.5.1) - jest-util: 27.5.1 - jest-validate: 27.5.1 - resolve: 1.22.4 - resolve.exports: 1.1.1 - slash: 3.0.0 - dev: true - /jest-resolve@29.7.0: resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -12101,43 +11816,11 @@ packages: jest-pnp-resolver: 1.2.3(jest-resolve@29.7.0) jest-util: 29.7.0 jest-validate: 29.7.0 - resolve: 1.22.4 + resolve: 1.22.8 resolve.exports: 2.0.2 slash: 3.0.0 dev: true - /jest-runner@27.5.1: - resolution: {integrity: sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/console': 27.5.1 - '@jest/environment': 27.5.1 - '@jest/test-result': 27.5.1 - '@jest/transform': 27.5.1 - '@jest/types': 27.5.1 - '@types/node': 20.5.8 - chalk: 4.1.2 - emittery: 0.8.1 - graceful-fs: 4.2.11 - jest-docblock: 27.5.1 - jest-environment-jsdom: 27.5.1 - jest-environment-node: 27.5.1 - jest-haste-map: 27.5.1 - jest-leak-detector: 27.5.1 - jest-message-util: 27.5.1 - jest-resolve: 27.5.1 - jest-runtime: 27.5.1 - jest-util: 27.5.1 - jest-worker: 27.5.1 - source-map-support: 0.5.21 - throat: 6.0.2 - transitivePeerDependencies: - - bufferutil - - canvas - - supports-color - - utf-8-validate - dev: true - /jest-runner@29.7.0: resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -12147,7 +11830,7 @@ packages: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.5.8 + '@types/node': 20.8.7 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.11 @@ -12167,36 +11850,6 @@ packages: - supports-color dev: true - /jest-runtime@27.5.1: - resolution: {integrity: sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/environment': 27.5.1 - '@jest/fake-timers': 27.5.1 - '@jest/globals': 27.5.1 - '@jest/source-map': 27.5.1 - '@jest/test-result': 27.5.1 - '@jest/transform': 27.5.1 - '@jest/types': 27.5.1 - chalk: 4.1.2 - cjs-module-lexer: 1.2.3 - collect-v8-coverage: 1.0.2 - execa: 5.1.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-haste-map: 27.5.1 - jest-message-util: 27.5.1 - jest-mock: 27.5.1 - jest-regex-util: 27.5.1 - jest-resolve: 27.5.1 - jest-snapshot: 27.5.1 - jest-util: 27.5.1 - slash: 3.0.0 - strip-bom: 4.0.0 - transitivePeerDependencies: - - supports-color - dev: true - /jest-runtime@29.7.0: resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -12208,7 +11861,7 @@ packages: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.5.8 + '@types/node': 20.8.7 chalk: 4.1.2 cjs-module-lexer: 1.2.3 collect-v8-coverage: 1.0.2 @@ -12227,57 +11880,19 @@ packages: - supports-color dev: true - /jest-serializer@27.5.1: - resolution: {integrity: sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@types/node': 20.5.8 - graceful-fs: 4.2.11 - dev: true - - /jest-snapshot@27.5.1: - resolution: {integrity: sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@babel/core': 7.22.10 - '@babel/generator': 7.22.10 - '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.22.10) - '@babel/traverse': 7.22.10 - '@babel/types': 7.22.10 - '@jest/transform': 27.5.1 - '@jest/types': 27.5.1 - '@types/babel__traverse': 7.20.1 - '@types/prettier': 2.7.3 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.10) - chalk: 4.1.2 - expect: 27.5.1 - graceful-fs: 4.2.11 - jest-diff: 27.5.1 - jest-get-type: 27.5.1 - jest-haste-map: 27.5.1 - jest-matcher-utils: 27.5.1 - jest-message-util: 27.5.1 - jest-util: 27.5.1 - natural-compare: 1.4.0 - pretty-format: 27.5.1 - semver: 7.5.4 - transitivePeerDependencies: - - supports-color - dev: true - /jest-snapshot@29.7.0: resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/core': 7.22.10 - '@babel/generator': 7.22.10 - '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.10) - '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.22.10) - '@babel/types': 7.22.10 + '@babel/core': 7.23.2 + '@babel/generator': 7.23.0 + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.23.2) + '@babel/types': 7.23.0 '@jest/expect-utils': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.10) + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.23.2) chalk: 4.1.2 expect: 29.7.0 graceful-fs: 4.2.11 @@ -12293,42 +11908,18 @@ packages: - supports-color dev: true - /jest-util@27.5.1: - resolution: {integrity: sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/types': 27.5.1 - '@types/node': 20.5.8 - chalk: 4.1.2 - ci-info: 3.8.0 - graceful-fs: 4.2.11 - picomatch: 2.3.1 - dev: true - /jest-util@29.7.0: resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 20.5.8 + '@types/node': 20.8.7 chalk: 4.1.2 - ci-info: 3.8.0 + ci-info: 3.9.0 graceful-fs: 4.2.11 picomatch: 2.3.1 dev: true - /jest-validate@27.5.1: - resolution: {integrity: sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/types': 27.5.1 - camelcase: 6.3.0 - chalk: 4.1.2 - jest-get-type: 27.5.1 - leven: 3.1.0 - pretty-format: 27.5.1 - dev: true - /jest-validate@29.7.0: resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -12341,26 +11932,13 @@ packages: pretty-format: 29.7.0 dev: true - /jest-watcher@27.5.1: - resolution: {integrity: sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/test-result': 27.5.1 - '@jest/types': 27.5.1 - '@types/node': 20.5.8 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - jest-util: 27.5.1 - string-length: 4.0.2 - dev: true - /jest-watcher@29.7.0: resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.5.8 + '@types/node': 20.8.7 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -12368,20 +11946,18 @@ packages: string-length: 4.0.2 dev: true - /jest-websocket-mock@2.2.1(mock-socket@9.0.8): - resolution: {integrity: sha512-fhsGLXrPfs06PhHoxqOSA9yZ6Rb4qYrf4Wcm7/nfRzjlrf1gIeuhYUkzMRjjE0TMQ37SwkmeLanwrZY4ZaNp8g==} - peerDependencies: - mock-socket: ^8||^9 + /jest-websocket-mock@2.5.0: + resolution: {integrity: sha512-a+UJGfowNIWvtIKIQBHoEWIUqRxxQHFx4CXT+R5KxxKBtEQ5rS3pPOV/5299sHzqbmeCzxxY5qE4+yfXePePig==} dependencies: - jest-diff: 27.5.1 - mock-socket: 9.0.8 + jest-diff: 29.7.0 + mock-socket: 9.3.1 dev: true /jest-worker@27.5.1: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 20.5.8 + '@types/node': 18.11.18 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true @@ -12390,33 +11966,12 @@ packages: resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 20.5.8 + '@types/node': 18.11.18 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true - /jest@27.4.5(ts-node@10.4.0): - resolution: {integrity: sha512-uT5MiVN3Jppt314kidCk47MYIRilJjA/l2mxwiuzzxGUeJIvA8/pDaJOAX5KWvjAo7SCydcW0/4WEtgbLMiJkg==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - '@jest/core': 27.5.1(ts-node@10.4.0) - import-local: 3.1.0 - jest-cli: 27.5.1(ts-node@10.4.0) - transitivePeerDependencies: - - bufferutil - - canvas - - supports-color - - ts-node - - utf-8-validate - dev: true - /jest@29.7.0(@types/node@18.11.18): resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -12438,6 +11993,27 @@ packages: - ts-node dev: true + /jest@29.7.0(@types/node@20.8.7)(ts-node@10.9.1): + resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/core': 29.7.0(ts-node@10.9.1) + '@jest/types': 29.6.3 + import-local: 3.1.0 + jest-cli: 29.7.0(@types/node@20.8.7)(ts-node@10.9.1) + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + dev: true + /jju@1.4.0: resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} dev: true @@ -12495,14 +12071,6 @@ packages: /js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - /js-yaml@3.13.1: - resolution: {integrity: sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==} - hasBin: true - dependencies: - argparse: 1.0.10 - esprima: 4.0.1 - dev: true - /js-yaml@3.14.1: resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} hasBin: true @@ -12542,48 +12110,6 @@ packages: engines: {node: '>=12.0.0'} dev: true - /jsdom@16.7.0: - resolution: {integrity: sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==} - engines: {node: '>=10'} - peerDependencies: - canvas: ^2.5.0 - peerDependenciesMeta: - canvas: - optional: true - dependencies: - abab: 2.0.6 - acorn: 8.10.0 - acorn-globals: 6.0.0 - cssom: 0.4.4 - cssstyle: 2.3.0 - data-urls: 2.0.0 - decimal.js: 10.4.3 - domexception: 2.0.1 - escodegen: 2.1.0 - form-data: 3.0.1 - html-encoding-sniffer: 2.0.1 - http-proxy-agent: 4.0.1 - https-proxy-agent: 5.0.1 - is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.7 - parse5: 6.0.1 - saxes: 5.0.1 - symbol-tree: 3.2.4 - tough-cookie: 4.1.3 - w3c-hr-time: 1.0.2 - w3c-xmlserializer: 2.0.0 - webidl-conversions: 6.1.0 - whatwg-encoding: 1.0.5 - whatwg-mimetype: 2.3.0 - whatwg-url: 8.7.0 - ws: 7.5.9 - xml-name-validator: 3.0.0 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - dev: true - /jsesc@0.5.0: resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} hasBin: true @@ -13232,16 +12758,13 @@ packages: resolution: {integrity: sha512-aEXTF4d+m05rVOAUG3z4vZZ4xVexLKZGF0lIxuHZ1Hplpk/3B6Z1+/ICICYRLm7c41Z2xiejbkCkJoTlypoXhQ==} dev: false - /lodash.get@4.4.2: - resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} - dev: true - /lodash.isarguments@3.1.0: resolution: {integrity: sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==} dev: false /lodash.isequal@4.5.0: resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} + dev: false /lodash.isplainobject@4.0.6: resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} @@ -13550,7 +13073,7 @@ packages: resolution: {integrity: sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==} engines: {node: '>=10'} dependencies: - '@types/minimist': 1.2.2 + '@types/minimist': 1.2.4 camelcase-keys: 6.2.2 decamelize: 1.2.0 decamelize-keys: 1.1.1 @@ -13855,8 +13378,8 @@ packages: yargs-unparser: 2.0.0 dev: true - /mock-socket@9.0.8: - resolution: {integrity: sha512-8Syqkaaa2SzRqW68DEsnZkKQicHP7hVzfj3uCvigB5TL79H1ljKbwmOcRIENkx0ZTyu/5W6u+Pk9Qy6JCp38Ww==} + /mock-socket@9.3.1: + resolution: {integrity: sha512-qxBgB7Qa2sEQgHFjj0dSigq7fX4k6Saisd5Nelwp2q8mlbAFh5dHV9JTTlF8viYJLSSWgMCZFUom8PJcMNBoJw==} engines: {node: '>= 8'} dev: true @@ -14146,7 +13669,7 @@ packages: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: hosted-git-info: 2.8.9 - resolve: 1.22.4 + resolve: 1.22.8 semver: 5.7.2 validate-npm-package-license: 3.0.4 dev: true @@ -14273,10 +13796,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /nwsapi@2.2.7: - resolution: {integrity: sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==} - dev: true - /oauth-sign@0.9.0: resolution: {integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==} dev: false @@ -14670,7 +14189,7 @@ packages: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} dependencies: - '@babel/code-frame': 7.22.10 + '@babel/code-frame': 7.22.13 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -14713,6 +14232,7 @@ packages: /parse5@6.0.1: resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} + dev: false /parse5@7.1.2: resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} @@ -15360,24 +14880,6 @@ packages: engines: {node: '>=6'} dev: true - /pretty-format@27.5.1: - resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - ansi-regex: 5.0.1 - ansi-styles: 5.2.0 - react-is: 17.0.2 - dev: true - - /pretty-format@29.6.2: - resolution: {integrity: sha512-1q0oC8eRveTg5nnBEWMXAU2qpv65Gnuf2eCQzSjxpWFkPaPARwqZZDGuNE0zPAZfTCHzIk3A8dIjwlQKKLphyg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/schemas': 29.6.0 - ansi-styles: 5.2.0 - react-is: 18.2.0 - dev: true - /pretty-format@29.7.0: resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -15766,10 +15268,6 @@ packages: - supports-color dev: false - /react-is@17.0.2: - resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} - dev: true - /react-is@18.2.0: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} dev: true @@ -15804,7 +15302,7 @@ packages: resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} engines: {node: '>=8'} dependencies: - '@types/normalize-package-data': 2.4.1 + '@types/normalize-package-data': 2.4.3 normalize-package-data: 2.5.0 parse-json: 5.2.0 type-fest: 0.6.0 @@ -16149,11 +15647,6 @@ packages: deprecated: https://github.com/lydell/resolve-url#deprecated dev: true - /resolve.exports@1.1.1: - resolution: {integrity: sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==} - engines: {node: '>=10'} - dev: true - /resolve.exports@2.0.2: resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} engines: {node: '>=10'} @@ -16174,6 +15667,15 @@ packages: path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 + /resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true + dependencies: + is-core-module: 2.13.0 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: true + /responselike@2.0.1: resolution: {integrity: sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==} dependencies: @@ -16239,7 +15741,7 @@ packages: engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: - fsevents: 2.3.2 + fsevents: 2.3.3 dev: true /rss-parser@3.13.0: @@ -16339,13 +15841,6 @@ packages: /sax@1.2.4: resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==} - /saxes@5.0.1: - resolution: {integrity: sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==} - engines: {node: '>=10'} - dependencies: - xmlchars: 2.2.0 - dev: true - /schema-utils@3.3.0: resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} engines: {node: '>= 10.13.0'} @@ -16400,14 +15895,6 @@ packages: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - /semver@7.3.8: - resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==} - engines: {node: '>=10'} - hasBin: true - dependencies: - lru-cache: 6.0.0 - dev: true - /semver@7.5.4: resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} engines: {node: '>=10'} @@ -16731,7 +16218,7 @@ packages: resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} dependencies: spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.13 + spdx-license-ids: 3.0.16 dev: true /spdx-exceptions@2.3.0: @@ -16749,6 +16236,10 @@ packages: resolution: {integrity: sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==} dev: true + /spdx-license-ids@3.0.16: + resolution: {integrity: sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==} + dev: true + /split-string@3.1.0: resolution: {integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==} engines: {node: '>=0.10.0'} @@ -16887,11 +16378,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /string-argv@0.3.2: - resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} - engines: {node: '>=0.6.19'} - dev: true - /string-length@4.0.2: resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} engines: {node: '>=10'} @@ -17180,10 +16666,6 @@ packages: engines: {node: '>= 4.7.0'} dev: true - /symbol-tree@3.2.4: - resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} - dev: true - /synckit@0.8.5: resolution: {integrity: sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==} engines: {node: ^14.18.0 || >=16.0.0} @@ -17300,14 +16782,6 @@ packages: engines: {node: '>=14.16'} dev: true - /terminal-link@2.1.1: - resolution: {integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==} - engines: {node: '>=8'} - dependencies: - ansi-escapes: 4.3.2 - supports-hyperlinks: 2.3.0 - dev: true - /terser-webpack-plugin@5.3.9(@swc/core@1.3.78)(webpack@5.88.2): resolution: {integrity: sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==} engines: {node: '>= 10.13.0'} @@ -17403,10 +16877,6 @@ packages: resolution: {integrity: sha512-r6meetGWDk3aYjDRh6NpKuUkzoPlI3yldDQe2SkwCcqTTB5NZn7vKQBUXyMExvlwZShaLmvAbsVWaFzp1rkk3A==} dev: true - /throat@6.0.2: - resolution: {integrity: sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==} - dev: true - /throttle-debounce@5.0.0: resolution: {integrity: sha512-2iQTSgkkc1Zyk0MeVrt/3BvuOXYPl/R8Z0U2xxo9rjwNciaHDG3R+Lm6dh4EeUci49DanvBnuqI6jshoQQRGEg==} engines: {node: '>=12.22'} @@ -17564,13 +17034,6 @@ packages: /tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - /tr46@2.1.0: - resolution: {integrity: sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==} - engines: {node: '>=8'} - dependencies: - punycode: 2.3.0 - dev: true - /trace-redirect@1.0.6: resolution: {integrity: sha512-UUfa1DjjU5flcjMdaFIiIEGDTyu2y/IiMjOX4uGXa7meKBS4vD4f2Uy/tken9Qkd4Jsm4sRsfZcIIPqrRVF3Mg==} dev: false @@ -17596,42 +17059,7 @@ packages: typescript: 5.2.2 dev: true - /ts-jest@27.1.2(@babel/core@7.22.10)(@types/jest@27.4.0)(jest@27.4.5)(typescript@5.1.3): - resolution: {integrity: sha512-eSOiJOWq6Hhs6Khzk5wKC5sgWIXgXqOCiIl1+3lfnearu58Hj4QpE5tUhQcA3xtZrELbcvAGCsd6HB8OsaVaTA==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - hasBin: true - peerDependencies: - '@babel/core': '>=7.0.0-beta.0 <8' - '@types/jest': ^27.0.0 - babel-jest: '>=27.0.0 <28' - esbuild: ~0.14.0 - jest: ^27.0.0 - typescript: '>=3.8 <5.0' - peerDependenciesMeta: - '@babel/core': - optional: true - '@types/jest': - optional: true - babel-jest: - optional: true - esbuild: - optional: true - dependencies: - '@babel/core': 7.22.10 - '@types/jest': 27.4.0 - bs-logger: 0.2.6 - fast-json-stable-stringify: 2.1.0 - jest: 27.4.5(ts-node@10.4.0) - jest-util: 27.5.1 - json5: 2.2.3 - lodash.memoize: 4.1.2 - make-error: 1.3.6 - semver: 7.5.4 - typescript: 5.1.3 - yargs-parser: 20.2.9 - dev: true - - /ts-jest@29.1.1(@babel/core@7.22.10)(jest@29.7.0)(typescript@4.9.4): + /ts-jest@29.1.1(@babel/core@7.23.2)(jest@29.7.0)(typescript@4.9.4): resolution: {integrity: sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -17652,7 +17080,7 @@ packages: esbuild: optional: true dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.23.2 bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 jest: 29.7.0(@types/node@18.11.18) @@ -17665,6 +17093,40 @@ packages: yargs-parser: 21.1.1 dev: true + /ts-jest@29.1.1(@babel/core@7.23.2)(jest@29.7.0)(typescript@5.2.2): + resolution: {integrity: sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + '@babel/core': '>=7.0.0-beta.0 <8' + '@jest/types': ^29.0.0 + babel-jest: ^29.0.0 + esbuild: '*' + jest: ^29.0.0 + typescript: '>=4.3 <6' + peerDependenciesMeta: + '@babel/core': + optional: true + '@jest/types': + optional: true + babel-jest: + optional: true + esbuild: + optional: true + dependencies: + '@babel/core': 7.23.2 + bs-logger: 0.2.6 + fast-json-stable-stringify: 2.1.0 + jest: 29.7.0(@types/node@20.8.7)(ts-node@10.9.1) + jest-util: 29.7.0 + json5: 2.2.3 + lodash.memoize: 4.1.2 + make-error: 1.3.6 + semver: 7.5.4 + typescript: 5.2.2 + yargs-parser: 21.1.1 + dev: true + /ts-loader@9.4.4(typescript@5.1.6)(webpack@5.88.2): resolution: {integrity: sha512-MLukxDHBl8OJ5Dk3y69IsKVFRA/6MwzEqBgh+OXMPB/OD01KQuWPFd1WAQP8a5PeSCAxfnkhiuWqfmFJzJQt9w==} engines: {node: '>=12.0.0'} @@ -17680,37 +17142,6 @@ packages: webpack: 5.88.2(@swc/core@1.3.78) dev: true - /ts-node@10.4.0(@swc/core@1.3.78)(@types/node@20.3.1)(typescript@5.1.3): - resolution: {integrity: sha512-g0FlPvvCXSIO1JDF6S232P5jPYqBkRL9qly81ZgAOSU7rwI0stphCgd2kLiCrU9DjQCrJMWEqcNSjQL02s6d8A==} - hasBin: true - peerDependencies: - '@swc/core': '>=1.2.50' - '@swc/wasm': '>=1.2.50' - '@types/node': '*' - typescript: '>=2.7' - peerDependenciesMeta: - '@swc/core': - optional: true - '@swc/wasm': - optional: true - dependencies: - '@cspotcode/source-map-support': 0.7.0 - '@swc/core': 1.3.78 - '@tsconfig/node10': 1.0.9 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.4 - '@types/node': 20.3.1 - acorn: 8.10.0 - acorn-walk: 8.2.0 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 - typescript: 5.1.3 - yn: 3.1.1 - dev: true - /ts-node@10.9.1(@swc/core@1.3.78)(@types/node@18.11.18)(typescript@5.1.6): resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true @@ -17742,6 +17173,38 @@ packages: v8-compile-cache-lib: 3.0.1 yn: 3.1.1 + /ts-node@10.9.1(@swc/core@1.3.78)(@types/node@20.8.7)(typescript@5.2.2): + resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@swc/core': 1.3.78 + '@tsconfig/node10': 1.0.9 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 20.8.7 + acorn: 8.10.0 + acorn-walk: 8.2.0 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.2.2 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + dev: true + /tsc-alias@1.8.7: resolution: {integrity: sha512-59Q/zUQa3miTf99mLbSqaW0hi1jt4WoG8Uhe5hSZJHQpSoFW9eEwvW7jlKMHXWvT+zrzy3SN9PE/YBhQ+WVydA==} hasBin: true @@ -17772,15 +17235,15 @@ packages: strip-bom: 3.0.0 dev: true - /tsd@0.28.1: - resolution: {integrity: sha512-FeYrfJ05QgEMW/qOukNCr4fAJHww4SaKnivAXRv4g5kj4FeLpNV7zH4dorzB9zAfVX4wmA7zWu/wQf7kkcvfbw==} + /tsd@0.29.0: + resolution: {integrity: sha512-5B7jbTj+XLMg6rb9sXRBGwzv7h8KJlGOkTHxY63eWpZJiQ5vJbXEjL0u7JkIxwi5EsrRE1kRVUWmy6buK/ii8A==} engines: {node: '>=14.16'} hasBin: true dependencies: - '@tsd/typescript': 5.0.4 + '@tsd/typescript': 5.2.2 eslint-formatter-pretty: 4.1.0 globby: 11.1.0 - jest-diff: 29.6.2 + jest-diff: 29.7.0 meow: 9.0.0 path-exists: 4.0.0 read-pkg-up: 7.0.1 @@ -17926,6 +17389,7 @@ packages: resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} dependencies: is-typedarray: 1.0.0 + dev: false /typedarray@0.0.6: resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} @@ -18029,18 +17493,6 @@ packages: engines: {node: '>=4.2.0'} hasBin: true - /typescript@5.0.4: - resolution: {integrity: sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==} - engines: {node: '>=12.20'} - hasBin: true - dev: true - - /typescript@5.1.3: - resolution: {integrity: sha512-XH627E9vkeqhlZFQuL+UsyAXEnibT0kWR2FWONlr4sTjvxyJYnyefgrkyECLzM5NenmKzRAy2rR/OlYLA1HkZw==} - engines: {node: '>=14.17'} - hasBin: true - dev: true - /typescript@5.1.6: resolution: {integrity: sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==} engines: {node: '>=14.17'} @@ -18099,6 +17551,10 @@ packages: undertaker-registry: 1.0.1 dev: true + /undici-types@5.25.3: + resolution: {integrity: sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==} + dev: true + /undici@5.23.0: resolution: {integrity: sha512-1D7w+fvRsqlQ9GscLBwcAJinqcZGHUKjbOmXdlE/v8BvEGXjeWAax+341q44EuTcHXXnfyKNbKRq4Lg7OzhMmg==} engines: {node: '>=14.0'} @@ -18200,6 +17656,17 @@ packages: escalade: 3.1.1 picocolors: 1.0.0 + /update-browserslist-db@1.0.13(browserslist@4.22.1): + resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.22.1 + escalade: 3.1.1 + picocolors: 1.0.0 + dev: true + /uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: @@ -18284,21 +17751,12 @@ packages: /v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - /v8-to-istanbul@8.1.1: - resolution: {integrity: sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==} - engines: {node: '>=10.12.0'} - dependencies: - '@types/istanbul-lib-coverage': 2.0.4 - convert-source-map: 1.9.0 - source-map: 0.7.4 - dev: true - /v8-to-istanbul@9.1.3: resolution: {integrity: sha512-9lDD+EVI2fjFsMWXc6dy5JJzBsVTcQ2fVkfBvncZ6xJWG9wtBhOldG+mHkSL0+V1K/xgZz0JDO5UT5hFwHUghg==} engines: {node: '>=10.12.0'} dependencies: - '@jridgewell/trace-mapping': 0.3.19 - '@types/istanbul-lib-coverage': 2.0.4 + '@jridgewell/trace-mapping': 0.3.20 + '@types/istanbul-lib-coverage': 2.0.5 convert-source-map: 2.0.0 dev: true @@ -18316,11 +17774,6 @@ packages: spdx-expression-parse: 3.0.1 dev: true - /validator@13.11.0: - resolution: {integrity: sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ==} - engines: {node: '>= 0.10'} - dev: true - /value-or-function@3.0.0: resolution: {integrity: sha512-jdBB2FrWvQC/pnPtIqcLsMaQgjhdb6B7tk1MMyTKapox+tQZbdRP4uLxu/JY0t7fbfDCUMnuelzEYv5GsxHhdg==} engines: {node: '>= 0.10'} @@ -18448,7 +17901,7 @@ packages: rollup: 3.28.1 sass: 1.66.1 optionalDependencies: - fsevents: 2.3.2 + fsevents: 2.3.3 dev: true /void-elements@3.1.0: @@ -18463,7 +17916,7 @@ packages: resolution: {integrity: sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==} dev: true - /vue-draggable-plus@0.2.6(@types/sortablejs@1.15.1): + /vue-draggable-plus@0.2.6(@types/sortablejs@1.15.4): resolution: {integrity: sha512-d+0omKIBIfLiJFggc6H4ePRaifbX+33+OiCMsxn8rG59yWXlJGrobexxgXetnSo/1NLTd0TkYZKNc4CA6iwJZw==} peerDependencies: '@types/sortablejs': ^1.15.0 @@ -18472,17 +17925,17 @@ packages: '@vue/composition-api': optional: true dependencies: - '@types/sortablejs': 1.15.1 + '@types/sortablejs': 1.15.4 dev: true - /vue-eslint-parser@9.3.1(eslint@8.46.0): + /vue-eslint-parser@9.3.1(eslint@8.51.0): resolution: {integrity: sha512-Clr85iD2XFZ3lJ52/ppmUDG/spxQu6+MAeHXjjyI4I1NUYZ9xmenQp4N0oaHJhrA8OOxltCVxMRfANGa70vU0g==} engines: {node: ^14.17.0 || >=16.0.0} peerDependencies: eslint: '>=6.0.0' dependencies: debug: 4.3.4(supports-color@8.1.1) - eslint: 8.46.0 + eslint: 8.51.0 eslint-scope: 7.2.2 eslint-visitor-keys: 3.4.2 espree: 9.6.1 @@ -18532,20 +17985,6 @@ packages: '@vue/shared': 3.3.4 dev: true - /w3c-hr-time@1.0.2: - resolution: {integrity: sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==} - deprecated: Use your platform's native performance.now() and performance.timeOrigin. - dependencies: - browser-process-hrtime: 1.0.0 - dev: true - - /w3c-xmlserializer@2.0.0: - resolution: {integrity: sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==} - engines: {node: '>=10'} - dependencies: - xml-name-validator: 3.0.0 - dev: true - /wait-on@6.0.1(debug@4.3.4): resolution: {integrity: sha512-zht+KASY3usTY5u2LgaNqn/Cd8MukxLGjdcZxT2ns5QzDmTFc4XoWBgC+C/na+sMRZTuVygQoMYwdcVjHnYIVw==} engines: {node: '>=10.0.0'} @@ -18605,16 +18044,6 @@ packages: /webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - /webidl-conversions@5.0.0: - resolution: {integrity: sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==} - engines: {node: '>=8'} - dev: true - - /webidl-conversions@6.1.0: - resolution: {integrity: sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==} - engines: {node: '>=10.4'} - dev: true - /webidl-conversions@7.0.0: resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} engines: {node: '>=12'} @@ -18684,12 +18113,6 @@ packages: engines: {node: '>=6'} dev: true - /whatwg-encoding@1.0.5: - resolution: {integrity: sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==} - dependencies: - iconv-lite: 0.4.24 - dev: true - /whatwg-encoding@2.0.0: resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} engines: {node: '>=12'} @@ -18697,10 +18120,6 @@ packages: iconv-lite: 0.6.3 dev: false - /whatwg-mimetype@2.3.0: - resolution: {integrity: sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==} - dev: true - /whatwg-mimetype@3.0.0: resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} engines: {node: '>=12'} @@ -18712,15 +18131,6 @@ packages: tr46: 0.0.3 webidl-conversions: 3.0.1 - /whatwg-url@8.7.0: - resolution: {integrity: sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==} - engines: {node: '>=10'} - dependencies: - lodash: 4.17.21 - tr46: 2.1.0 - webidl-conversions: 6.1.0 - dev: true - /whet.extend@0.9.9: resolution: {integrity: sha512-mmIPAft2vTgEILgPeZFqE/wWh24SEsR/k+N9fJ3Jxrz44iDFy9aemCxdksfURSHYFCLmvs/d/7Iso5XjPpNfrA==} engines: {node: '>=0.6.0'} @@ -18822,15 +18232,6 @@ packages: /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - /write-file-atomic@3.0.3: - resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} - dependencies: - imurmurhash: 0.1.4 - is-typedarray: 1.0.0 - signal-exit: 3.0.7 - typedarray-to-buffer: 3.1.5 - dev: true - /write-file-atomic@4.0.2: resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} @@ -18847,19 +18248,6 @@ packages: signal-exit: 4.1.0 dev: true - /ws@7.5.9: - resolution: {integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==} - engines: {node: '>=8.3.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - dev: true - /ws@8.12.0: resolution: {integrity: sha512-kU62emKIdKVeEIOIKVegvqpXMSTAMLJozpHZaJNDYqBjzlSYXQGviYwN1osDLJ9av68qHd4a2oSjd7yD4pacig==} engines: {node: '>=10.0.0'} @@ -18897,10 +18285,6 @@ packages: sax: 1.2.4 dev: false - /xml-name-validator@3.0.0: - resolution: {integrity: sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==} - dev: true - /xml-name-validator@4.0.0: resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} engines: {node: '>=12'} @@ -18919,10 +18303,6 @@ packages: engines: {node: '>=4.0'} dev: false - /xmlchars@2.2.0: - resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} - dev: true - /xtend@4.0.2: resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} engines: {node: '>=0.4'} @@ -19094,18 +18474,6 @@ packages: engines: {node: '>=12.20'} dev: true - /z-schema@5.0.5: - resolution: {integrity: sha512-D7eujBWkLa3p2sIpJA0d1pr7es+a7m0vFAnZLlCEKq/Ij2k0MLi9Br2UPxoxdYystm5K1yeBGzub0FlYUEWj2Q==} - engines: {node: '>=8.0.0'} - hasBin: true - dependencies: - lodash.get: 4.4.2 - lodash.isequal: 4.5.0 - validator: 13.11.0 - optionalDependencies: - commander: 9.5.0 - dev: true - /zip-stream@4.1.0: resolution: {integrity: sha512-zshzwQW7gG7hjpBlgeQP9RuyPGNxvJdzR8SUM3QhxCnLjWN2E7j3dOvpeDcQoETfHx0urRS7EtmVToql7YpU4A==} engines: {node: '>= 10'} @@ -19147,7 +18515,7 @@ packages: name: plyr version: 3.7.0 dependencies: - core-js: 3.32.0 + core-js: 3.33.0 custom-event-polyfill: 1.0.7 loadjs: 4.2.0 rangetouch: 2.0.1 From bf0819860ac749dadd8c8845d17c955032a1528d Mon Sep 17 00:00:00 2001 From: ThatOneCalculator <kainoa@t1c.dev> Date: Thu, 19 Oct 2023 16:49:10 -0700 Subject: [PATCH 15/74] docs: :memo: badges for firefish-js readme --- packages/firefish-js/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/firefish-js/README.md b/packages/firefish-js/README.md index d01395de20..2865a14e09 100644 --- a/packages/firefish-js/README.md +++ b/packages/firefish-js/README.md @@ -2,6 +2,8 @@ ## Firefish SDK for Node.js, Bun, and browsers +<img alt="npm" src="https://img.shields.io/npm/dm/firefish-js?logo=npm&color=%23CB0000"> <a href="https://pkg-size.dev/firefish-js"><img src="https://pkg-size.dev/badge/install/514440" title="Install size for firefish-js"></a> <a href="https://pkg-size.dev/firefish-js"><img src="https://pkg-size.dev/badge/bundle/21953" title="Bundle size for firefish-js"></a> + Fork of [misskey-js](https://www.npmjs.com/package/misskey-js) <https://www.npmjs.com/package/firefish-js> From eb936cc12997d93de7fe46f7563c411433d90c41 Mon Sep 17 00:00:00 2001 From: ThatOneCalculator <kainoa@t1c.dev> Date: Thu, 19 Oct 2023 16:51:54 -0700 Subject: [PATCH 16/74] refactor: :heavy_minus_sign: remove semver from firefish-js --- packages/firefish-js/.swcrc | 1 - packages/firefish-js/package.json | 9 +++--- pnpm-lock.yaml | 46 +++++++++++++++++++++++++------ 3 files changed, 42 insertions(+), 14 deletions(-) diff --git a/packages/firefish-js/.swcrc b/packages/firefish-js/.swcrc index 0fbb5c87c5..508e597b5c 100644 --- a/packages/firefish-js/.swcrc +++ b/packages/firefish-js/.swcrc @@ -1,6 +1,5 @@ { "$schema": "https://json.schemastore.org/swcrc", - "sourceMaps": true, "jsc": { "parser": { "syntax": "typescript", diff --git a/packages/firefish-js/package.json b/packages/firefish-js/package.json index 7728c3d99d..ea8aa90c85 100644 --- a/packages/firefish-js/package.json +++ b/packages/firefish-js/package.json @@ -1,6 +1,6 @@ { "name": "firefish-js", - "version": "0.0.26", + "version": "0.0.27", "description": "Firefish SDK for JavaScript", "main": "./built/index.js", "types": "./built/index.d.ts", @@ -33,11 +33,12 @@ "tsd": "^0.29.0", "typescript": "5.2.2" }, - "files": ["built"], + "files": [ + "built" + ], "dependencies": { "eventemitter3": "^5.0.1", - "reconnecting": "^4.4.1", - "semver": "^7.3.8" + "reconnecting": "^4.4.1" }, "optionalDependencies": { "@swc/core-android-arm64": "1.3.11" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 491b46c42e..80ec109348 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -899,9 +899,6 @@ importers: reconnecting: specifier: ^4.4.1 version: 4.4.1 - semver: - specifier: ^7.3.8 - version: 7.5.4 optionalDependencies: '@swc/core-android-arm64': specifier: 1.3.11 @@ -909,7 +906,7 @@ importers: devDependencies: '@swc/cli': specifier: ^0.1.62 - version: 0.1.62(@swc/core@1.3.78)(chokidar@3.3.1) + version: 0.1.62(@swc/core@1.3.78) '@swc/core': specifier: 1.3.78 version: 1.3.78 @@ -1143,7 +1140,7 @@ packages: '@babel/traverse': 7.22.10 '@babel/types': 7.22.10 convert-source-map: 1.9.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -1165,7 +1162,7 @@ packages: '@babel/traverse': 7.23.2 '@babel/types': 7.23.0 convert-source-map: 2.0.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -1584,7 +1581,7 @@ packages: '@babel/helper-split-export-declaration': 7.22.6 '@babel/parser': 7.22.10 '@babel/types': 7.22.10 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -1601,7 +1598,7 @@ packages: '@babel/helper-split-export-declaration': 7.22.6 '@babel/parser': 7.23.0 '@babel/types': 7.23.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -3242,6 +3239,26 @@ packages: resolution: {integrity: sha512-Uy0+khmZqUrUGm5dmMqVlnvufZRSK0FbYzVgp0UMstm+F5+W2/jnEEQyc9vo1ZR/E5ZI/B1WjjoTqBqwJL6Krw==} dev: false + /@swc/cli@0.1.62(@swc/core@1.3.78): + resolution: {integrity: sha512-kOFLjKY3XH1DWLfXL1/B5MizeNorHR8wHKEi92S/Zi9Md/AK17KSqR8MgyRJ6C1fhKHvbBCl8wboyKAFXStkYw==} + engines: {node: '>= 12.13'} + hasBin: true + peerDependencies: + '@swc/core': ^1.2.66 + chokidar: ^3.3.1 + peerDependenciesMeta: + chokidar: + optional: true + dependencies: + '@mole-inc/bin-wrapper': 8.0.1 + '@swc/core': 1.3.78 + commander: 7.2.0 + fast-glob: 3.3.1 + semver: 7.5.4 + slash: 3.0.0 + source-map: 0.7.4 + dev: true + /@swc/cli@0.1.62(@swc/core@1.3.78)(chokidar@3.3.1): resolution: {integrity: sha512-kOFLjKY3XH1DWLfXL1/B5MizeNorHR8wHKEi92S/Zi9Md/AK17KSqR8MgyRJ6C1fhKHvbBCl8wboyKAFXStkYw==} engines: {node: '>= 12.13'} @@ -7575,6 +7592,17 @@ packages: ms: 2.1.2 dev: false + /debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + /debug@4.3.4(supports-color@8.1.1): resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} @@ -11447,7 +11475,7 @@ packages: resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} engines: {node: '>=10'} dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 istanbul-lib-coverage: 3.2.0 source-map: 0.6.1 transitivePeerDependencies: From 58fa6d33067da106b5b55dd48a69d29c17fc8836 Mon Sep 17 00:00:00 2001 From: ThatOneCalculator <kainoa@t1c.dev> Date: Thu, 19 Oct 2023 16:53:07 -0700 Subject: [PATCH 17/74] docs: :memo: remove bundle size badge from firefish-js Won't stay in sync with published ver --- packages/firefish-js/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/firefish-js/README.md b/packages/firefish-js/README.md index 2865a14e09..3405a7659e 100644 --- a/packages/firefish-js/README.md +++ b/packages/firefish-js/README.md @@ -2,7 +2,7 @@ ## Firefish SDK for Node.js, Bun, and browsers -<img alt="npm" src="https://img.shields.io/npm/dm/firefish-js?logo=npm&color=%23CB0000"> <a href="https://pkg-size.dev/firefish-js"><img src="https://pkg-size.dev/badge/install/514440" title="Install size for firefish-js"></a> <a href="https://pkg-size.dev/firefish-js"><img src="https://pkg-size.dev/badge/bundle/21953" title="Bundle size for firefish-js"></a> +<img alt="npm" src="https://img.shields.io/npm/dm/firefish-js?logo=npm&color=%23CB0000"> Fork of [misskey-js](https://www.npmjs.com/package/misskey-js) From cc27ba1dbeb5bb350a790211cdba60f8c61037bf Mon Sep 17 00:00:00 2001 From: ThatOneCalculator <kainoa@t1c.dev> Date: Thu, 19 Oct 2023 16:53:50 -0700 Subject: [PATCH 18/74] docs: :memo: format badge as markdown --- packages/firefish-js/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/firefish-js/README.md b/packages/firefish-js/README.md index 3405a7659e..8a298e2293 100644 --- a/packages/firefish-js/README.md +++ b/packages/firefish-js/README.md @@ -2,7 +2,7 @@ ## Firefish SDK for Node.js, Bun, and browsers -<img alt="npm" src="https://img.shields.io/npm/dm/firefish-js?logo=npm&color=%23CB0000"> + Fork of [misskey-js](https://www.npmjs.com/package/misskey-js) From 53949b668a20180c1985eff0e7b491fa1e0c059d Mon Sep 17 00:00:00 2001 From: ThatOneCalculator <kainoa@t1c.dev> Date: Thu, 19 Oct 2023 17:01:02 -0700 Subject: [PATCH 19/74] docs: :memo: Misskey -> Firefish in documentation/comments/WebAuthn name --- CONTRIBUTING.md | 17 +++++------------ chart/templates/_helpers.tpl | 6 +++--- cypress/e2e/basic.cy.js | 4 ++-- packages/backend/src/index.ts | 2 +- .../src/remote/activitypub/db-resolver.ts | 8 ++++---- packages/client/src/pages/settings/2fa.vue | 2 +- packages/firefish-js/src/streaming.ts | 2 +- 7 files changed, 17 insertions(+), 24 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b9529ea737..743eaef005 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -94,9 +94,9 @@ An actual domain will be assigned so you can test the federation. - The tag name must be the version ## Development -During development, it is useful to use the `yarn dev` command. +During development, it is useful to use the `pnpm run dev` command. This command monitors the server-side and client-side source files and automatically builds them if they are modified. -In addition, it will also automatically start the Misskey server process. +In addition, it will also automatically start the Firefish server process. ## Testing - Test codes are located in [`/test`](/test). @@ -119,20 +119,13 @@ yarn test #### Run specify test ``` -TS_NODE_FILES=true TS_NODE_TRANSPILE_ONLY=true TS_NODE_PROJECT="./test/tsconfig.json" yarn dlx mocha test/foo.ts --require ts-node/register +TS_NODE_FILES=true TS_NODE_TRANSPILE_ONLY=true TS_NODE_PROJECT="./test/tsconfig.json" pnpx mocha test/foo.ts --require ts-node/register ``` -### e2e tests -TODO - -## Continuous integration -Misskey uses GitHub Actions for executing automated tests. -Configuration files are located in [`/.github/workflows`](/.github/workflows). - ## Vue -Misskey uses Vue(v3) as its front-end framework. +Firefish uses Vue(v3) as its front-end framework. - Use TypeScript. -- **When creating a new component, please use the Composition API (with [setup sugar](https://v3.vuejs.org/api/sfc-script-setup.html) and [ref sugar](https://github.com/vuejs/rfcs/discussions/369)) instead of the Options API.** +- **When creating a new component, please use the Composition API (with [setup syntax](https://v3.vuejs.org/api/sfc-script-setup.html) and [ref syntax](https://github.com/vuejs/rfcs/discussions/369)) instead of the Options API.** - Some of the existing components are implemented in the Options API, but it is an old implementation. Refactors that migrate those components to the Composition API are also welcome. ## nirax diff --git a/chart/templates/_helpers.tpl b/chart/templates/_helpers.tpl index 1b23250a84..215d209eef 100644 --- a/chart/templates/_helpers.tpl +++ b/chart/templates/_helpers.tpl @@ -98,11 +98,11 @@ url: "https://{{ .Values.firefish.domain }}/" #───┘ Port and TLS settings └─────────────────────────────────── # -# Misskey requires a reverse proxy to support HTTPS connections. +# Firefish requires a reverse proxy to support HTTPS connections. # # +----- https://example.tld/ ------------+ # +------+ |+-------------+ +----------------+| -# | User | ---> || Proxy (443) | ---> | Misskey (3000) || +# | User | ---> || Proxy (443) | ---> | Firefish (3000) || # +------+ |+-------------+ +----------------+| # +---------------------------------------+ # @@ -110,7 +110,7 @@ url: "https://{{ .Values.firefish.domain }}/" # An encrypted connection with HTTPS is highly recommended # because tokens may be transferred in GET requests. -# The port that your Misskey server should listen on. +# The port that your Firefish server should listen on. port: 3000 # ┌──────────────────────────┐ diff --git a/cypress/e2e/basic.cy.js b/cypress/e2e/basic.cy.js index f73a25efbc..295f419993 100644 --- a/cypress/e2e/basic.cy.js +++ b/cypress/e2e/basic.cy.js @@ -139,10 +139,10 @@ describe("After user singed in", () => { it("note", () => { cy.get("[data-cy-open-post-form]").click(); - cy.get("[data-cy-post-form-text]").type("Hello, Misskey!"); + cy.get("[data-cy-post-form-text]").type("Hello, Firefish!"); cy.get("[data-cy-open-post-form-submit]").click(); - cy.contains("Hello, Misskey!"); + cy.contains("Hello, Firefish!"); }); }); diff --git a/packages/backend/src/index.ts b/packages/backend/src/index.ts index 278f630f70..33b5826a7e 100644 --- a/packages/backend/src/index.ts +++ b/packages/backend/src/index.ts @@ -1,5 +1,5 @@ /** - * Misskey Entry Point! + * Firefish Entry Point */ import { EventEmitter } from "node:events"; diff --git a/packages/backend/src/remote/activitypub/db-resolver.ts b/packages/backend/src/remote/activitypub/db-resolver.ts index 39f3c6e430..a753606a14 100644 --- a/packages/backend/src/remote/activitypub/db-resolver.ts +++ b/packages/backend/src/remote/activitypub/db-resolver.ts @@ -70,7 +70,7 @@ export function parseUri(value: string | IObject): UriParseResult { export default class DbResolver { /** - * AP Note => Misskey Note in DB + * AP Note => Firefish Note in DB */ public async getNoteFromApId(value: string | IObject): Promise<Note | null> { const parsed = parseUri(value); @@ -114,7 +114,7 @@ export default class DbResolver { } /** - * AP Person => Misskey User in DB + * AP Person => Firefish User in DB */ public async getUserFromApId( value: string | IObject, @@ -147,7 +147,7 @@ export default class DbResolver { } /** - * AP KeyId => Misskey User and Key + * AP KeyId => Firefish User and Key */ public async getAuthUserFromKeyId(keyId: string): Promise<{ user: CacheableRemoteUser; @@ -181,7 +181,7 @@ export default class DbResolver { } /** - * AP Actor id => Misskey User and Key + * AP Actor id => Firefish User and Key */ public async getAuthUserFromApId(uri: string): Promise<{ user: CacheableRemoteUser; diff --git a/packages/client/src/pages/settings/2fa.vue b/packages/client/src/pages/settings/2fa.vue index 0caacdc60f..2bf07e03b0 100644 --- a/packages/client/src/pages/settings/2fa.vue +++ b/packages/client/src/pages/settings/2fa.vue @@ -279,7 +279,7 @@ async function addSecurityKey() { challenge: byteify(challenge.challenge, "base64"), rp: { id: hostname, - name: "Misskey", + name: "Firefish", }, user: { id: byteify($i!.id, "ascii"), diff --git a/packages/firefish-js/src/streaming.ts b/packages/firefish-js/src/streaming.ts index e6aa76dec7..4697acabd7 100644 --- a/packages/firefish-js/src/streaming.ts +++ b/packages/firefish-js/src/streaming.ts @@ -47,7 +47,7 @@ type StreamEvents = { } & BroadcastEvents; /** - * Misskey stream connection + * Firefish stream connection */ export default class Stream extends EventEmitter<StreamEvents> { private stream: ReconnectingWebsocket; From aa7f58d5a12ba9273af5c4096dcd66ec253e32d9 Mon Sep 17 00:00:00 2001 From: ThatOneCalculator <kainoa@t1c.dev> Date: Thu, 19 Oct 2023 17:03:12 -0700 Subject: [PATCH 20/74] chore: :fire: remove firefish-js changelog outdated, all changes in master changelog --- packages/firefish-js/CHANGELOG.md | 29 ----------------------------- 1 file changed, 29 deletions(-) delete mode 100644 packages/firefish-js/CHANGELOG.md diff --git a/packages/firefish-js/CHANGELOG.md b/packages/firefish-js/CHANGELOG.md deleted file mode 100644 index 88a5c24610..0000000000 --- a/packages/firefish-js/CHANGELOG.md +++ /dev/null @@ -1,29 +0,0 @@ -# 0.0.14 -- remove needless Object.freeze() - -# 0.0.13 -- expose ChannelConnection and Channels types - -# 0.0.12 -- fix a bug that cannot connect to streaming - -# 0.0.11 -- update user type -- add missing main stream types - -# 0.0.10 -- add consts - -# 0.0.9 -- add list of api permission -- Update Note type - -# 0.0.8 -- add type definition for `messagingMessage` event to main stream channel -- Update Note type - -# 0.0.7 -- Notificationsの型を修正 -- MessagingMessageの型を修正 -- UserLiteの型を修正 -- apiでネイティブfetchを格納する際に無名関数でラップするように From a1cd9f73a1bf760198329d2c26eb3a37e82d16c7 Mon Sep 17 00:00:00 2001 From: ThatOneCalculator <kainoa@t1c.dev> Date: Thu, 19 Oct 2023 17:10:30 -0700 Subject: [PATCH 21/74] chore: upgrade biome + lint & format --- package.json | 16 +- packages/backend/package.json | 2 +- packages/backend/src/const.ts | 2 +- packages/backend/src/global.d.ts | 2 +- packages/backend/test/ap-request.ts | 2 +- packages/backend/test/api-visibility.ts | 6 +- packages/backend/test/api.ts | 8 +- packages/backend/test/block.ts | 6 +- packages/backend/test/chart.ts | 8 +- packages/backend/test/fetch-resource.ts | 8 +- packages/backend/test/ff-visibility.ts | 8 +- packages/backend/test/get-file-info.ts | 2 +- packages/backend/test/mfm.ts | 2 +- packages/backend/test/mute.ts | 6 +- packages/backend/test/note.ts | 16 +- packages/backend/test/streaming.ts | 10 +- packages/backend/test/thread-mute.ts | 8 +- packages/backend/test/user-notes.ts | 8 +- packages/backend/test/utils.ts | 16 +- packages/client/package.json | 4 +- packages/client/src/account.ts | 10 +- packages/client/src/components/MkDialog.vue | 5 +- .../client/src/components/MkWaitingDialog.vue | 2 +- packages/client/src/i18n.ts | 2 +- packages/client/src/init.ts | 38 +- packages/client/src/instance.ts | 2 +- packages/client/src/navbar.ts | 12 +- packages/client/src/nirax.ts | 10 +- packages/client/src/os.ts | 20 +- packages/client/src/pages/admin/_header_.vue | 8 +- packages/client/src/plugin.ts | 8 +- packages/client/src/router.ts | 12 +- packages/client/src/scripts/autocomplete.ts | 6 +- packages/client/src/store.ts | 2 +- packages/client/src/stream.ts | 4 +- packages/client/src/theme-store.ts | 4 +- packages/client/tsconfig.json | 10 +- packages/firefish-js/src/api.types.ts | 10 +- packages/firefish-js/src/index.ts | 4 +- packages/firefish-js/src/streaming.ts | 6 +- packages/megalodon/package.json | 12 +- packages/megalodon/src/index.ts | 16 +- packages/megalodon/src/megalodon.ts | 10 +- packages/megalodon/src/misskey.ts | 20 +- packages/sw/tsconfig.json | 9 +- pnpm-lock.yaml | 431 +++++++----------- 46 files changed, 364 insertions(+), 449 deletions(-) diff --git a/package.json b/package.json index 0203670c41..c0c0918f16 100644 --- a/package.json +++ b/package.json @@ -46,14 +46,14 @@ "seedrandom": "^3.0.5" }, "devDependencies": { - "@biomejs/biome": "1.0.0", - "@biomejs/cli-darwin-arm64": "^1.0.0", - "@biomejs/cli-darwin-x64": "^1.0.0", - "@biomejs/cli-linux-arm64": "^1.0.0", - "@biomejs/cli-linux-x64": "^1.0.0", - "@types/gulp": "4.0.13", - "@types/gulp-rename": "2.0.2", - "@types/node": "20.5.8", + "@biomejs/biome": "1.3.0", + "@biomejs/cli-darwin-arm64": "^1.3.0", + "@biomejs/cli-darwin-x64": "^1.3.0", + "@biomejs/cli-linux-arm64": "^1.3.0", + "@biomejs/cli-linux-x64": "^1.3.0", + "@types/gulp": "4.0.16", + "@types/gulp-rename": "2.0.4", + "@types/node": "20.8.7", "add": "2.0.6", "cross-env": "7.0.3", "cypress": "10.11.0", diff --git a/packages/backend/package.json b/packages/backend/package.json index 110b8e14ef..9e891fad8e 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -162,7 +162,7 @@ "@types/koa__multer": "2.0.4", "@types/koa__router": "8.0.11", "@types/mocha": "9.1.1", - "@types/node": "18.11.18", + "@types/node": "20.8.7", "@types/node-fetch": "3.0.3", "@types/nodemailer": "6.4.9", "@types/oauth": "0.9.1", diff --git a/packages/backend/src/const.ts b/packages/backend/src/const.ts index 6dddf1fff5..8fc4bd25e0 100644 --- a/packages/backend/src/const.ts +++ b/packages/backend/src/const.ts @@ -1,7 +1,7 @@ import config from "@/config/index.js"; import { - DB_MAX_NOTE_TEXT_LENGTH, DB_MAX_IMAGE_COMMENT_LENGTH, + DB_MAX_NOTE_TEXT_LENGTH, } from "@/misc/hard-limits.js"; export const MAX_NOTE_TEXT_LENGTH = Math.min( diff --git a/packages/backend/src/global.d.ts b/packages/backend/src/global.d.ts index 503e26eb60..6c5a22e4b4 100644 --- a/packages/backend/src/global.d.ts +++ b/packages/backend/src/global.d.ts @@ -1,2 +1,2 @@ -// rome-ignore lint/suspicious/noExplicitAny: i have no idea +// biome-ignore lint/suspicious/noExplicitAny: i have no idea type FIXME = any; diff --git a/packages/backend/test/ap-request.ts b/packages/backend/test/ap-request.ts index bf77a38532..722977fe14 100644 --- a/packages/backend/test/ap-request.ts +++ b/packages/backend/test/ap-request.ts @@ -2,8 +2,8 @@ import * as assert from "assert"; import httpSignature from "@peertube/http-signature"; import { genRsaKeyPair } from "../src/misc/gen-key-pair.js"; import { - createSignedPost, createSignedGet, + createSignedPost, } from "../src/remote/activitypub/ap-request.js"; export const buildParsedSignature = ( diff --git a/packages/backend/test/api-visibility.ts b/packages/backend/test/api-visibility.ts index 0ee4a4d337..49b1b5a064 100644 --- a/packages/backend/test/api-visibility.ts +++ b/packages/backend/test/api-visibility.ts @@ -4,11 +4,11 @@ import * as assert from "assert"; import * as childProcess from "child_process"; import { async, - signup, - request, post, - startServer, + request, shutdownServer, + signup, + startServer, } from "./utils.js"; describe("API visibility", () => { diff --git a/packages/backend/test/api.ts b/packages/backend/test/api.ts index 19a754552c..0fc2f424ec 100644 --- a/packages/backend/test/api.ts +++ b/packages/backend/test/api.ts @@ -4,13 +4,13 @@ import * as assert from "assert"; import * as childProcess from "child_process"; import { async, - signup, - request, post, react, - uploadFile, - startServer, + request, shutdownServer, + signup, + startServer, + uploadFile, } from "./utils.js"; describe("API", () => { diff --git a/packages/backend/test/block.ts b/packages/backend/test/block.ts index 08192e4869..100a4ab7d5 100644 --- a/packages/backend/test/block.ts +++ b/packages/backend/test/block.ts @@ -4,11 +4,11 @@ import * as assert from "assert"; import * as childProcess from "child_process"; import { async, - signup, - request, post, - startServer, + request, shutdownServer, + signup, + startServer, } from "./utils.js"; describe("Block", () => { diff --git a/packages/backend/test/chart.ts b/packages/backend/test/chart.ts index e194c6c195..cd600f661a 100644 --- a/packages/backend/test/chart.ts +++ b/packages/backend/test/chart.ts @@ -2,11 +2,11 @@ process.env.NODE_ENV = "test"; import * as assert from "assert"; import * as lolex from "@sinonjs/fake-timers"; -import TestChart from "../src/services/chart/charts/test.js"; -import TestGroupedChart from "../src/services/chart/charts/test-grouped.js"; -import TestUniqueChart from "../src/services/chart/charts/test-unique.js"; -import TestIntersectionChart from "../src/services/chart/charts/test-intersection.js"; import { initDb } from "../src/db/postgre.js"; +import TestGroupedChart from "../src/services/chart/charts/test-grouped.js"; +import TestIntersectionChart from "../src/services/chart/charts/test-intersection.js"; +import TestUniqueChart from "../src/services/chart/charts/test-unique.js"; +import TestChart from "../src/services/chart/charts/test.js"; describe("Chart", () => { let testChart: TestChart; diff --git a/packages/backend/test/fetch-resource.ts b/packages/backend/test/fetch-resource.ts index da3116f0e8..00c0d736ef 100644 --- a/packages/backend/test/fetch-resource.ts +++ b/packages/backend/test/fetch-resource.ts @@ -5,13 +5,13 @@ import * as childProcess from "child_process"; import * as openapi from "@redocly/openapi-core"; import { async, - startServer, - signup, + port, post, request, - simpleGet, - port, shutdownServer, + signup, + simpleGet, + startServer, } from "./utils.js"; // Request Accept diff --git a/packages/backend/test/ff-visibility.ts b/packages/backend/test/ff-visibility.ts index f898926d99..efdbe7f0f6 100644 --- a/packages/backend/test/ff-visibility.ts +++ b/packages/backend/test/ff-visibility.ts @@ -4,14 +4,14 @@ import * as assert from "assert"; import * as childProcess from "child_process"; import { async, - signup, - request, + connectStream, post, react, - connectStream, - startServer, + request, shutdownServer, + signup, simpleGet, + startServer, } from "./utils.js"; describe("FF visibility", () => { diff --git a/packages/backend/test/get-file-info.ts b/packages/backend/test/get-file-info.ts index 22dc28c8e0..b1092af278 100644 --- a/packages/backend/test/get-file-info.ts +++ b/packages/backend/test/get-file-info.ts @@ -1,6 +1,6 @@ import * as assert from "assert"; -import { fileURLToPath } from "node:url"; import { dirname } from "node:path"; +import { fileURLToPath } from "node:url"; import { getFileInfo } from "../src/misc/get-file-info.js"; import { async } from "./utils.js"; diff --git a/packages/backend/test/mfm.ts b/packages/backend/test/mfm.ts index 926bdd259d..81ed95848a 100644 --- a/packages/backend/test/mfm.ts +++ b/packages/backend/test/mfm.ts @@ -1,8 +1,8 @@ import * as assert from "assert"; import * as mfm from "mfm-js"; -import { toHtml } from "../src/mfm/to-html.js"; import { fromHtml } from "../src/mfm/from-html.js"; +import { toHtml } from "../src/mfm/to-html.js"; describe("toHtml", () => { it("br", () => { diff --git a/packages/backend/test/mute.ts b/packages/backend/test/mute.ts index c511628342..831c2c1ee4 100644 --- a/packages/backend/test/mute.ts +++ b/packages/backend/test/mute.ts @@ -4,12 +4,12 @@ import * as assert from "assert"; import * as childProcess from "child_process"; import { async, - signup, - request, post, react, - startServer, + request, shutdownServer, + signup, + startServer, waitFire, } from "./utils.js"; diff --git a/packages/backend/test/note.ts b/packages/backend/test/note.ts index 3af4b88d87..b78138b1ed 100644 --- a/packages/backend/test/note.ts +++ b/packages/backend/test/note.ts @@ -4,15 +4,15 @@ import * as assert from "assert"; import * as childProcess from "child_process"; import { Note } from "../src/models/entities/note.js"; import { - async, - signup, - request, - post, - uploadUrl, - startServer, - shutdownServer, - initTestDb, api, + async, + initTestDb, + post, + request, + shutdownServer, + signup, + startServer, + uploadUrl, } from "./utils.js"; describe("Note", () => { diff --git a/packages/backend/test/streaming.ts b/packages/backend/test/streaming.ts index 3292c66e17..37171f4184 100644 --- a/packages/backend/test/streaming.ts +++ b/packages/backend/test/streaming.ts @@ -4,13 +4,13 @@ import * as assert from "assert"; import * as childProcess from "child_process"; import { Following } from "../src/models/entities/following.js"; import { - connectStream, - signup, api, - post, - startServer, - shutdownServer, + connectStream, initTestDb, + post, + shutdownServer, + signup, + startServer, waitFire, } from "./utils.js"; diff --git a/packages/backend/test/thread-mute.ts b/packages/backend/test/thread-mute.ts index 9b3bb8dfe4..88483b51c8 100644 --- a/packages/backend/test/thread-mute.ts +++ b/packages/backend/test/thread-mute.ts @@ -4,13 +4,13 @@ import * as assert from "assert"; import * as childProcess from "child_process"; import { async, - signup, - request, + connectStream, post, react, - connectStream, - startServer, + request, shutdownServer, + signup, + startServer, } from "./utils.js"; describe("Note thread mute", () => { diff --git a/packages/backend/test/user-notes.ts b/packages/backend/test/user-notes.ts index 86a541c101..cdf5e7dbbb 100644 --- a/packages/backend/test/user-notes.ts +++ b/packages/backend/test/user-notes.ts @@ -4,12 +4,12 @@ import * as assert from "assert"; import * as childProcess from "child_process"; import { async, - signup, - request, post, - uploadUrl, - startServer, + request, shutdownServer, + signup, + startServer, + uploadUrl, } from "./utils.js"; describe("users/notes", () => { diff --git a/packages/backend/test/utils.ts b/packages/backend/test/utils.ts index ff2dd79de9..3c8449fb58 100644 --- a/packages/backend/test/utils.ts +++ b/packages/backend/test/utils.ts @@ -1,18 +1,18 @@ -import * as fs from "node:fs"; -import * as path from "node:path"; -import { fileURLToPath } from "node:url"; -import { dirname } from "node:path"; import * as childProcess from "child_process"; -import * as http from "node:http"; import { SIGKILL } from "constants"; -import WebSocket from "ws"; +import * as fs from "node:fs"; +import * as http from "node:http"; +import * as path from "node:path"; +import { dirname } from "node:path"; +import { fileURLToPath } from "node:url"; import * as firefish from "firefish-js"; -import fetch from "node-fetch"; import FormData from "form-data"; +import got from "got"; +import fetch from "node-fetch"; import { DataSource } from "typeorm"; +import WebSocket from "ws"; import loadConfig from "../src/config/load.js"; import { entities } from "../src/db/postgre.js"; -import got from "got"; const _filename = fileURLToPath(import.meta.url); const _dirname = dirname(_filename); diff --git a/packages/client/package.json b/packages/client/package.json index 890aba4ab8..022bde257f 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -20,8 +20,8 @@ "@syuilo/aiscript": "0.11.1", "@types/escape-regexp": "0.0.1", "@types/glob": "8.1.0", - "@types/gulp": "4.0.13", - "@types/gulp-rename": "2.0.2", + "@types/gulp": "4.0.16", + "@types/gulp-rename": "2.0.4", "@types/katex": "0.16.2", "@types/matter-js": "0.19.0", "@types/punycode": "2.1.0", diff --git a/packages/client/src/account.ts b/packages/client/src/account.ts index 761ebe5e00..fd5b25514e 100644 --- a/packages/client/src/account.ts +++ b/packages/client/src/account.ts @@ -1,11 +1,11 @@ -import { defineAsyncComponent, reactive } from "vue"; -import type * as firefish from "firefish-js"; -import { i18n } from "./i18n"; -import { del, get, set } from "@/scripts/idb-proxy"; import { apiUrl } from "@/config"; import { alert, api, popup, popupMenu, waiting } from "@/os"; -import { reloadChannel, unisonReload } from "@/scripts/unison-reload"; import icon from "@/scripts/icon"; +import { del, get, set } from "@/scripts/idb-proxy"; +import { reloadChannel, unisonReload } from "@/scripts/unison-reload"; +import type * as firefish from "firefish-js"; +import { defineAsyncComponent, reactive } from "vue"; +import { i18n } from "./i18n"; // TODO: 他のタブと永続化されたstateを同期 diff --git a/packages/client/src/components/MkDialog.vue b/packages/client/src/components/MkDialog.vue index 216fb4500a..79439709ea 100644 --- a/packages/client/src/components/MkDialog.vue +++ b/packages/client/src/components/MkDialog.vue @@ -19,7 +19,10 @@ ></i> <i v-else-if="type === 'error'" - :class="[$style.iconInner, iconClass('ph-circle-wavy-warning')]" + :class="[ + $style.iconInner, + iconClass('ph-circle-wavy-warning'), + ]" ></i> <i v-else-if="type === 'warning'" diff --git a/packages/client/src/components/MkWaitingDialog.vue b/packages/client/src/components/MkWaitingDialog.vue index b5732c951d..01701755dd 100644 --- a/packages/client/src/components/MkWaitingDialog.vue +++ b/packages/client/src/components/MkWaitingDialog.vue @@ -31,7 +31,7 @@ <script lang="ts" setup> import { shallowRef, watch } from "vue"; import MkModal from "@/components/MkModal.vue"; -import iconClass from "@/scripts/icon" +import iconClass from "@/scripts/icon"; const modal = shallowRef<InstanceType<typeof MkModal>>(); diff --git a/packages/client/src/i18n.ts b/packages/client/src/i18n.ts index 5b0a7f9ed8..31a6686f1a 100644 --- a/packages/client/src/i18n.ts +++ b/packages/client/src/i18n.ts @@ -1,6 +1,6 @@ -import { markRaw } from "vue"; import { locale } from "@/config"; import { I18n } from "@/scripts/i18n"; +import { markRaw } from "vue"; export const i18n = markRaw(new I18n(locale)); diff --git a/packages/client/src/init.ts b/packages/client/src/init.ts index ddcdfc207c..2888e5ebf2 100644 --- a/packages/client/src/init.ts +++ b/packages/client/src/init.ts @@ -7,11 +7,11 @@ import "vite/modulepreload-polyfill"; import "@/style.scss"; -import "@phosphor-icons/web/fill"; import "@phosphor-icons/web/bold"; -import "@phosphor-icons/web/regular"; -import "@phosphor-icons/web/light"; import "@phosphor-icons/web/duotone"; +import "@phosphor-icons/web/fill"; +import "@phosphor-icons/web/light"; +import "@phosphor-icons/web/regular"; // #region account indexedDB migration import { set } from "@/scripts/idb-proxy"; @@ -23,6 +23,7 @@ if (accounts) { } // #endregion +import { compareVersions } from "compare-versions"; import { computed, createApp, @@ -31,29 +32,28 @@ import { version as vueVersion, watch, } from "vue"; -import { compareVersions } from "compare-versions"; -import widgets from "@/widgets"; -import directives from "@/directives"; +import { $i, login, refreshAccount, signout, updateAccount } from "@/account"; import components from "@/components"; import { host, lang, ui, version } from "@/config"; -import { applyTheme } from "@/scripts/theme"; -import { isDeviceDarkmode } from "@/scripts/is-device-darkmode"; +import directives from "@/directives"; import { i18n } from "@/i18n"; -import { alert, api, confirm, popup, post, toast } from "@/os"; -import { stream } from "@/stream"; -import * as sound from "@/scripts/sound"; -import { $i, login, refreshAccount, signout, updateAccount } from "@/account"; -import { ColdDeviceStorage, defaultStore } from "@/store"; import { fetchInstance, instance } from "@/instance"; -import { makeHotkey } from "@/scripts/hotkey"; -import { search } from "@/scripts/search"; +import { alert, api, confirm, popup, post, toast } from "@/os"; import { deviceKind } from "@/scripts/device-kind"; -import { initializeSw } from "@/scripts/initialize-sw"; -import { reloadChannel } from "@/scripts/unison-reload"; -import { reactionPicker } from "@/scripts/reaction-picker"; -import { getUrlWithoutLoginId } from "@/scripts/login-id"; import { getAccountFromId } from "@/scripts/get-account-from-id"; +import { makeHotkey } from "@/scripts/hotkey"; +import { initializeSw } from "@/scripts/initialize-sw"; +import { isDeviceDarkmode } from "@/scripts/is-device-darkmode"; +import { getUrlWithoutLoginId } from "@/scripts/login-id"; +import { reactionPicker } from "@/scripts/reaction-picker"; +import { search } from "@/scripts/search"; +import * as sound from "@/scripts/sound"; +import { applyTheme } from "@/scripts/theme"; +import { reloadChannel } from "@/scripts/unison-reload"; +import { ColdDeviceStorage, defaultStore } from "@/store"; +import { stream } from "@/stream"; +import widgets from "@/widgets"; function checkForSplash() { const splash = document.getElementById("splash"); diff --git a/packages/client/src/instance.ts b/packages/client/src/instance.ts index 783cb01ad6..493baeb94b 100644 --- a/packages/client/src/instance.ts +++ b/packages/client/src/instance.ts @@ -1,5 +1,5 @@ -import { computed, reactive } from "vue"; import type * as firefish from "firefish-js"; +import { computed, reactive } from "vue"; import { api } from "./os"; // TODO: 他のタブと永続化されたstateを同期 diff --git a/packages/client/src/navbar.ts b/packages/client/src/navbar.ts index c2ab1d4d1f..a917a55874 100644 --- a/packages/client/src/navbar.ts +++ b/packages/client/src/navbar.ts @@ -1,11 +1,11 @@ +import { ui } from "@/config"; +import { i18n } from "@/i18n"; +import * as os from "@/os"; +import icon from "@/scripts/icon"; +import { search } from "@/scripts/search"; +import { unisonReload } from "@/scripts/unison-reload"; import { computed, reactive } from "vue"; import { $i } from "./account"; -import { search } from "@/scripts/search"; -import * as os from "@/os"; -import { i18n } from "@/i18n"; -import { ui } from "@/config"; -import { unisonReload } from "@/scripts/unison-reload"; -import icon from "@/scripts/icon"; export const navbarItemDef = reactive({ notifications: { diff --git a/packages/client/src/nirax.ts b/packages/client/src/nirax.ts index 43e770ec33..9f5477ea21 100644 --- a/packages/client/src/nirax.ts +++ b/packages/client/src/nirax.ts @@ -1,10 +1,10 @@ // NIRAX --- A lightweight router +import { pleaseLogin } from "@/scripts/please-login"; +import { safeURIDecode } from "@/scripts/safe-uri-decode"; import { EventEmitter } from "eventemitter3"; import type { Component, ShallowRef } from "vue"; import { Ref, ref, shallowRef } from "vue"; -import { pleaseLogin } from "@/scripts/please-login"; -import { safeURIDecode } from "@/scripts/safe-uri-decode"; interface RouteDef { path: string; @@ -112,7 +112,7 @@ export class Router extends EventEmitter<{ let parts = [..._parts]; const props = new Map<string, string>(); - pathMatchLoop: for (const p of parsePath(route.path)) { + for (const p of parsePath(route.path)) { if (typeof p === "string") { if (p === parts[0]) { parts.shift(); @@ -128,7 +128,7 @@ export class Router extends EventEmitter<{ props.set(p.name, safeURIDecode(parts.join("/"))); parts = []; } - break pathMatchLoop; + break; } else { if (p.startsWith) { if (parts[0] == null || !parts[0].startsWith(p.startsWith)) @@ -159,7 +159,7 @@ export class Router extends EventEmitter<{ child, }; } else { - continue forEachRouteLoop; + continue; } } diff --git a/packages/client/src/os.ts b/packages/client/src/os.ts index 7a78e95530..a0f3d6e986 100644 --- a/packages/client/src/os.ts +++ b/packages/client/src/os.ts @@ -1,18 +1,18 @@ // TODO: なんでもかんでもos.tsに突っ込むのやめたいのでよしなに分割する +import { $i } from "@/account"; +import MkDialog from "@/components/MkDialog.vue"; +import MkPostFormDialog from "@/components/MkPostFormDialog.vue"; +import MkToast from "@/components/MkToast.vue"; +import MkWaitingDialog from "@/components/MkWaitingDialog.vue"; +import { url, apiUrl } from "@/config"; +import type { MenuItem } from "@/types/menu"; +import { EventEmitter } from "eventemitter3"; +import * as firefish from "firefish-js"; +import insertTextAtCursor from "insert-text-at-cursor"; import type { Component, Ref } from "vue"; import { defineAsyncComponent, markRaw, ref } from "vue"; -import { EventEmitter } from "eventemitter3"; -import insertTextAtCursor from "insert-text-at-cursor"; -import * as firefish from "firefish-js"; import { i18n } from "./i18n"; -import { apiUrl, url } from "@/config"; -import MkPostFormDialog from "@/components/MkPostFormDialog.vue"; -import MkWaitingDialog from "@/components/MkWaitingDialog.vue"; -import MkToast from "@/components/MkToast.vue"; -import MkDialog from "@/components/MkDialog.vue"; -import type { MenuItem } from "@/types/menu"; -import { $i } from "@/account"; export const pendingApiRequestsCount = ref(0); diff --git a/packages/client/src/pages/admin/_header_.vue b/packages/client/src/pages/admin/_header_.vue index 6d2506a177..7b0b627087 100644 --- a/packages/client/src/pages/admin/_header_.vue +++ b/packages/client/src/pages/admin/_header_.vue @@ -2,7 +2,11 @@ <div ref="el" class="fdidabkc" :style="{ background: bg }" @click="onClick"> <template v-if="metadata"> <div class="titleContainer" @click="showTabsPopup"> - <i v-if="metadata.icon" class="icon" :class="icon(metadata.icon)"></i> + <i + v-if="metadata.icon" + class="icon" + :class="icon(metadata.icon)" + ></i> <div class="title"> <div class="title">{{ metadata.title }}</div> @@ -63,7 +67,7 @@ import { scrollToTop } from "@/scripts/scroll"; import MkButton from "@/components/MkButton.vue"; import { globalEvents } from "@/events"; import { injectPageMetadata } from "@/scripts/page-metadata"; -import icon from "@/scripts/icon" +import icon from "@/scripts/icon"; interface Tab { key?: string | null; diff --git a/packages/client/src/plugin.ts b/packages/client/src/plugin.ts index 8e964ab3a2..0c0f84012a 100644 --- a/packages/client/src/plugin.ts +++ b/packages/client/src/plugin.ts @@ -1,8 +1,5 @@ -import { AiScript, utils, values } from "@syuilo/aiscript"; -import { deserialize } from "@syuilo/aiscript/built/serializer"; -import { jsToVal } from "@syuilo/aiscript/built/interpreter/util"; -import { createAiScriptEnv } from "@/scripts/aiscript/api"; import { inputText } from "@/os"; +import { createAiScriptEnv } from "@/scripts/aiscript/api"; import { noteActions, notePostInterruptors, @@ -10,6 +7,9 @@ import { postFormActions, userActions, } from "@/store"; +import { AiScript, utils, values } from "@syuilo/aiscript"; +import { jsToVal } from "@syuilo/aiscript/built/interpreter/util"; +import { deserialize } from "@syuilo/aiscript/built/serializer"; const pluginContexts = new Map<string, AiScript>(); diff --git a/packages/client/src/router.ts b/packages/client/src/router.ts index dd1621777e..5d9d7d752b 100644 --- a/packages/client/src/router.ts +++ b/packages/client/src/router.ts @@ -1,11 +1,11 @@ +import { $i, iAmModerator } from "@/account"; +import { ui } from "@/config"; +import { Router } from "@/nirax"; +import { api } from "@/os"; +import MkError from "@/pages/_error_.vue"; +import MkLoading from "@/pages/_loading_.vue"; import type { AsyncComponentLoader } from "vue"; import { defineAsyncComponent, inject } from "vue"; -import { Router } from "@/nirax"; -import { $i, iAmModerator } from "@/account"; -import MkLoading from "@/pages/_loading_.vue"; -import MkError from "@/pages/_error_.vue"; -import { api } from "@/os"; -import { ui } from "@/config"; function getGuestTimelineStatus() { api("meta", { diff --git a/packages/client/src/scripts/autocomplete.ts b/packages/client/src/scripts/autocomplete.ts index 0d5d16f180..18e56ba38d 100644 --- a/packages/client/src/scripts/autocomplete.ts +++ b/packages/client/src/scripts/autocomplete.ts @@ -88,7 +88,11 @@ export class Autocomplete { const isHashtag = hashtagIndex !== -1; const isMfmTag = mfmTagIndex !== -1; const isEmoji = - emojiIndex !== -1 && text.split(/:[a-z0-9_+\-]+:/).pop()!.includes(":"); + emojiIndex !== -1 && + text + .split(/:[a-z0-9_+\-]+:/) + .pop()! + .includes(":"); let opened = false; diff --git a/packages/client/src/store.ts b/packages/client/src/store.ts index 39dd533785..48885bac62 100644 --- a/packages/client/src/store.ts +++ b/packages/client/src/store.ts @@ -385,11 +385,11 @@ interface Plugin { ast: any[]; } +import darkTheme from "@/themes/d-rosepine.json5"; /** * Storage for configuration information that does not need to be constantly loaded into memory (non-reactive) */ import lightTheme from "@/themes/l-rosepinedawn.json5"; -import darkTheme from "@/themes/d-rosepine.json5"; export class ColdDeviceStorage { public static default = { diff --git a/packages/client/src/stream.ts b/packages/client/src/stream.ts index 6d7f890d6e..e114f9f77d 100644 --- a/packages/client/src/stream.ts +++ b/packages/client/src/stream.ts @@ -1,7 +1,7 @@ -import * as firefish from "firefish-js"; -import { markRaw } from "vue"; import { $i } from "@/account"; import { url } from "@/config"; +import * as firefish from "firefish-js"; +import { markRaw } from "vue"; export const stream = markRaw( new firefish.Stream( diff --git a/packages/client/src/theme-store.ts b/packages/client/src/theme-store.ts index 3dedc045e4..81925d3656 100644 --- a/packages/client/src/theme-store.ts +++ b/packages/client/src/theme-store.ts @@ -1,6 +1,6 @@ -import type { Theme } from "./scripts/theme"; -import { api } from "@/os"; import { $i } from "@/account"; +import { api } from "@/os"; +import type { Theme } from "./scripts/theme"; const lsCacheKey = $i ? `themes:${$i.id}` : ""; diff --git a/packages/client/tsconfig.json b/packages/client/tsconfig.json index 2d292dbfb0..f9b6e6560e 100644 --- a/packages/client/tsconfig.json +++ b/packages/client/tsconfig.json @@ -32,15 +32,9 @@ "types": [ "vite/client", ], - "lib": [ - "esnext", - "dom" - ], + "lib": ["esnext", "dom"], "jsx": "preserve" }, "compileOnSave": false, - "include": [ - "./**/*.ts", - "./**/*.vue" - ] + "include": ["./**/*.ts", "./**/*.vue"] } diff --git a/packages/firefish-js/src/api.types.ts b/packages/firefish-js/src/api.types.ts index 626bdaad02..c2344991d8 100644 --- a/packages/firefish-js/src/api.types.ts +++ b/packages/firefish-js/src/api.types.ts @@ -11,30 +11,30 @@ import { DetailedInstanceMetadata, DriveFile, DriveFolder, + FollowRequest, Following, FollowingFolloweePopulated, FollowingFollowerPopulated, - FollowRequest, GalleryPost, Instance, InstanceMetadata, LiteInstanceMetadata, MeDetailed, + MessagingMessage, Note, NoteFavorite, + NoteReaction, + Notification, OriginType, Page, ServerInfo, + Signin, Stats, User, UserDetailed, UserGroup, UserList, UserSorting, - Notification, - NoteReaction, - Signin, - MessagingMessage, } from "./entities"; type TODO = Record<string, any> | null; diff --git a/packages/firefish-js/src/index.ts b/packages/firefish-js/src/index.ts index 128ed8c535..c0212f8501 100644 --- a/packages/firefish-js/src/index.ts +++ b/packages/firefish-js/src/index.ts @@ -1,8 +1,8 @@ +import { Acct } from "./acct"; import { Endpoints } from "./api.types"; +import * as consts from "./consts"; import Stream, { Connection } from "./streaming"; import { Channels } from "./streaming.types"; -import { Acct } from "./acct"; -import * as consts from "./consts"; export { Endpoints, Stream, Connection as ChannelConnection, Channels, Acct }; diff --git a/packages/firefish-js/src/streaming.ts b/packages/firefish-js/src/streaming.ts index 4697acabd7..b3c2819d4f 100644 --- a/packages/firefish-js/src/streaming.ts +++ b/packages/firefish-js/src/streaming.ts @@ -27,9 +27,9 @@ export function urlQuery( const params = Object.entries(obj) .filter(([, v]) => (Array.isArray(v) ? v.length : v !== undefined)) .reduce( - // rome-ignore lint/suspicious/noAssignInExpressions: <Used for key assigning> - // rome-ignore lint/style/noNonNullAssertion: <> - // rome-ignore lint/style/noCommaOperator: <> + // biome-ignore lint/suspicious/noAssignInExpressions: <Used for key assigning> + // biome-ignore lint/style/noNonNullAssertion: <> + // biome-ignore lint/style/noCommaOperator: <> (a, [k, v]) => ((a[k] = v!), a), {} as Record<string, string | number | boolean>, ); diff --git a/packages/megalodon/package.json b/packages/megalodon/package.json index 3403b94b47..33043f0604 100644 --- a/packages/megalodon/package.json +++ b/packages/megalodon/package.json @@ -5,9 +5,9 @@ "typings": "./lib/src/index.d.ts", "scripts": { "build": "tsc -p ./", - "build:debug": "pnpm run build", + "build:debug": "pnpm run build", "lint": "pnpm biome check **/*.ts --apply", - "format": "pnpm biome format --write src/**/*.ts", + "format": "pnpm biome format --write src/**/*.ts", "doc": "typedoc --out ../docs ./src", "test": "NODE_ENV=test jest -u --maxWorkers=3" }, @@ -37,6 +37,7 @@ "dependencies": { "@types/oauth": "^0.9.0", "@types/ws": "^8.5.4", + "async-lock": "1.4.0", "axios": "1.2.2", "dayjs": "^1.11.7", "form-data": "^4.0.0", @@ -47,20 +48,19 @@ "socks-proxy-agent": "^7.0.0", "typescript": "4.9.4", "uuid": "^9.0.0", - "ws": "8.12.0", - "async-lock": "1.4.0" + "ws": "8.12.0" }, "devDependencies": { + "@types/async-lock": "1.4.0", "@types/core-js": "^2.5.0", "@types/form-data": "^2.5.0", "@types/jest": "^29.4.0", + "@types/node": "20.8.7", "@types/object-assign-deep": "^0.4.0", "@types/parse-link-header": "^2.0.0", "@types/uuid": "^9.0.0", - "@types/node": "18.11.18", "@typescript-eslint/eslint-plugin": "^5.49.0", "@typescript-eslint/parser": "^5.49.0", - "@types/async-lock": "1.4.0", "eslint": "^8.32.0", "eslint-config-prettier": "^8.6.0", "eslint-config-standard": "^16.0.3", diff --git a/packages/megalodon/src/index.ts b/packages/megalodon/src/index.ts index 758d3a46ad..c205988721 100644 --- a/packages/megalodon/src/index.ts +++ b/packages/megalodon/src/index.ts @@ -1,17 +1,17 @@ -import Response from "./response"; -import OAuth from "./oauth"; -import { isCancel, RequestCanceledError } from "./cancel"; -import { ProxyConfig } from "./proxy_config"; +import { RequestCanceledError, isCancel } from "./cancel"; +import Converter from "./converter"; +import Entity from "./entity"; +import FilterContext from "./filter_context"; import generator, { - detector, MegalodonInterface, WebSocketInterface, + detector, } from "./megalodon"; import Misskey from "./misskey"; -import Entity from "./entity"; import NotificationType from "./notification"; -import FilterContext from "./filter_context"; -import Converter from "./converter"; +import OAuth from "./oauth"; +import { ProxyConfig } from "./proxy_config"; +import Response from "./response"; export { Response, diff --git a/packages/megalodon/src/megalodon.ts b/packages/megalodon/src/megalodon.ts index 33a5790f67..0b760fe87d 100644 --- a/packages/megalodon/src/megalodon.ts +++ b/packages/megalodon/src/megalodon.ts @@ -1,10 +1,10 @@ -import Response from "./response"; +import axios, { AxiosRequestConfig } from "axios"; +import { DEFAULT_UA } from "./default"; +import Entity from "./entity"; +import Misskey from "./misskey"; import OAuth from "./oauth"; import proxyAgent, { ProxyConfig } from "./proxy_config"; -import Entity from "./entity"; -import axios, { AxiosRequestConfig } from "axios"; -import Misskey from "./misskey"; -import { DEFAULT_UA } from "./default"; +import Response from "./response"; export interface WebSocketInterface { start(): void; diff --git a/packages/megalodon/src/misskey.ts b/packages/megalodon/src/misskey.ts index 25922a2ffc..1c2c2ad6db 100644 --- a/packages/megalodon/src/misskey.ts +++ b/packages/megalodon/src/misskey.ts @@ -1,22 +1,22 @@ -import FormData from "form-data"; import AsyncLock from "async-lock"; +import FormData from "form-data"; -import MisskeyAPI from "./misskey/api_client"; +import fs from "node:fs"; +import MegalodonEntity from "@/entity"; import { DEFAULT_UA } from "./default"; -import { ProxyConfig } from "./proxy_config"; -import OAuth from "./oauth"; -import Response from "./response"; import Entity from "./entity"; import { - MegalodonInterface, - WebSocketInterface, - NoImplementedError, ArgumentError, + MegalodonInterface, + NoImplementedError, UnexpectedError, + WebSocketInterface, } from "./megalodon"; -import MegalodonEntity from "@/entity"; -import fs from "node:fs"; +import MisskeyAPI from "./misskey/api_client"; import MisskeyNotificationType from "./misskey/notification"; +import OAuth from "./oauth"; +import { ProxyConfig } from "./proxy_config"; +import Response from "./response"; type AccountCache = { locks: AsyncLock; diff --git a/packages/sw/tsconfig.json b/packages/sw/tsconfig.json index fad2ae5679..cc5e041d13 100644 --- a/packages/sw/tsconfig.json +++ b/packages/sw/tsconfig.json @@ -27,13 +27,8 @@ "node_modules/@types", "@types", ], - "lib": [ - "esnext", - "webworker" - ] + "lib": ["esnext", "webworker"] }, "compileOnSave": false, - "include": [ - "./**/*.ts", "./**/*.d.ts", "./**/*.tsx", "./**/*.vue" - ] + "include": ["./**/*.ts", "./**/*.d.ts", "./**/*.tsx", "./**/*.vue"] } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 80ec109348..2823e23be3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -31,29 +31,29 @@ importers: version: 3.0.5 devDependencies: '@biomejs/biome': - specifier: 1.0.0 - version: 1.0.0 + specifier: 1.3.0 + version: 1.3.0 '@biomejs/cli-darwin-arm64': - specifier: ^1.0.0 - version: 1.2.2 + specifier: ^1.3.0 + version: 1.3.0 '@biomejs/cli-darwin-x64': - specifier: ^1.0.0 - version: 1.2.2 + specifier: ^1.3.0 + version: 1.3.0 '@biomejs/cli-linux-arm64': - specifier: ^1.0.0 - version: 1.2.2 + specifier: ^1.3.0 + version: 1.3.0 '@biomejs/cli-linux-x64': - specifier: ^1.0.0 - version: 1.2.2 + specifier: ^1.3.0 + version: 1.3.0 '@types/gulp': - specifier: 4.0.13 - version: 4.0.13 + specifier: 4.0.16 + version: 4.0.16 '@types/gulp-rename': - specifier: 2.0.2 - version: 2.0.2 + specifier: 2.0.4 + version: 2.0.4 '@types/node': - specifier: 20.5.8 - version: 20.5.8 + specifier: 20.8.7 + version: 20.8.7 add: specifier: 2.0.6 version: 2.0.6 @@ -507,8 +507,8 @@ importers: specifier: 9.1.1 version: 9.1.1 '@types/node': - specifier: 18.11.18 - version: 18.11.18 + specifier: 20.8.7 + version: 20.8.7 '@types/node-fetch': specifier: 3.0.3 version: 3.0.3 @@ -601,7 +601,7 @@ importers: version: 9.4.4(typescript@5.1.6)(webpack@5.88.2) ts-node: specifier: 10.9.1 - version: 10.9.1(@swc/core@1.3.78)(@types/node@18.11.18)(typescript@5.1.6) + version: 10.9.1(@swc/core@1.3.78)(@types/node@20.8.7)(typescript@5.1.6) tsconfig-paths: specifier: 4.2.0 version: 4.2.0 @@ -657,11 +657,11 @@ importers: specifier: 8.1.0 version: 8.1.0 '@types/gulp': - specifier: 4.0.13 - version: 4.0.13 + specifier: 4.0.16 + version: 4.0.16 '@types/gulp-rename': - specifier: 2.0.2 - version: 2.0.2 + specifier: 2.0.4 + version: 2.0.4 '@types/katex': specifier: 0.16.2 version: 0.16.2 @@ -871,7 +871,7 @@ importers: version: 1.8.1 vite: specifier: 4.4.9 - version: 4.4.9(@types/node@20.5.8)(sass@1.66.1) + version: 4.4.9(@types/node@20.8.7)(sass@1.66.1) vite-plugin-compression: specifier: ^0.5.1 version: 0.5.1(vite@4.4.9) @@ -906,7 +906,7 @@ importers: devDependencies: '@swc/cli': specifier: ^0.1.62 - version: 0.1.62(@swc/core@1.3.78) + version: 0.1.62(@swc/core@1.3.78)(chokidar@3.3.1) '@swc/core': specifier: 1.3.78 version: 1.3.78 @@ -1002,8 +1002,8 @@ importers: specifier: ^29.4.0 version: 29.5.6 '@types/node': - specifier: 18.11.18 - version: 18.11.18 + specifier: 20.8.7 + version: 20.8.7 '@types/object-assign-deep': specifier: ^0.4.0 version: 0.4.2 @@ -1045,7 +1045,7 @@ importers: version: 5.0.0(eslint@8.46.0) jest: specifier: ^29.4.0 - version: 29.7.0(@types/node@18.11.18) + version: 29.7.0(@types/node@20.8.7) jest-worker: specifier: ^29.4.0 version: 29.7.0 @@ -1140,7 +1140,7 @@ packages: '@babel/traverse': 7.22.10 '@babel/types': 7.22.10 convert-source-map: 1.9.0 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -1162,7 +1162,7 @@ packages: '@babel/traverse': 7.23.2 '@babel/types': 7.23.0 convert-source-map: 2.0.0 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -1581,7 +1581,7 @@ packages: '@babel/helper-split-export-declaration': 7.22.6 '@babel/parser': 7.22.10 '@babel/types': 7.22.10 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -1598,7 +1598,7 @@ packages: '@babel/helper-split-export-declaration': 7.22.6 '@babel/parser': 7.23.0 '@babel/types': 7.23.0 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -1625,86 +1625,50 @@ packages: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: true - /@biomejs/biome@1.0.0: - resolution: {integrity: sha512-Y5CND1QZ5pF6hc4dFw5ItDutv9KJO91ksLdBIFyvHL7LmXN0UomqyyRWryvrqq+YlA8Q58cR6sqjjQuMp9E2Ig==} + /@biomejs/biome@1.3.0: + resolution: {integrity: sha512-IKe8eGhiW5PfD4B3GMerS9YucvL1cqEqocVdeBi/Q8o63znqy7aLU2Xc4DAw1qg9OurWxemAp2RQorSqYHwMow==} engines: {node: '>=14.*'} hasBin: true requiresBuild: true optionalDependencies: - '@biomejs/cli-darwin-arm64': 1.0.0 - '@biomejs/cli-darwin-x64': 1.0.0 - '@biomejs/cli-linux-arm64': 1.0.0 - '@biomejs/cli-linux-x64': 1.0.0 - '@biomejs/cli-win32-arm64': 1.0.0 - '@biomejs/cli-win32-x64': 1.0.0 + '@biomejs/cli-darwin-arm64': 1.3.0 + '@biomejs/cli-darwin-x64': 1.3.0 + '@biomejs/cli-linux-arm64': 1.3.0 + '@biomejs/cli-linux-x64': 1.3.0 + '@biomejs/cli-win32-arm64': 1.3.0 + '@biomejs/cli-win32-x64': 1.3.0 dev: true - /@biomejs/cli-darwin-arm64@1.0.0: - resolution: {integrity: sha512-3v7kEyxkf3D246esH+q/lDK5wWn+xLCXZpHCuc1itAmC35GkEc6S7um6C1VD3XKXLx6N0sJR/rTmjKiRGV32Ig==} - engines: {node: '>=14.*'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /@biomejs/cli-darwin-arm64@1.2.2: - resolution: {integrity: sha512-Fx1IURKhoqH6wPawtKLT6wcfMSjRRcNK8+VWau0iDOjXvNtjJpSmICbU89B7Vt/gZRwPqkfDMBkFwm6V5vFTSQ==} + /@biomejs/cli-darwin-arm64@1.3.0: + resolution: {integrity: sha512-O2NhR3ZXw1QknvoKAxwn76U9q/RYvLsZwbYl6+iY79gnL2SL1bljuFMUzRS5R1nNs3H/LOrHUq/JpleKjOwGUw==} engines: {node: '>=14.*'} cpu: [arm64] os: [darwin] dev: true - /@biomejs/cli-darwin-x64@1.0.0: - resolution: {integrity: sha512-uxIMt/X7TQWicjsImkqMvUUEqaFZTOJJrtEhlHl/eIaETWJmK3uAR7ihIWctpGJnN16sUgpLgwczc7FETqu/PQ==} - engines: {node: '>=14.*'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /@biomejs/cli-darwin-x64@1.2.2: - resolution: {integrity: sha512-JNaAFOI/ZisnmzvcFNd73geJxaFaN2L4YsWM6cgBeKyLY/ycl9C/PBTFfEmeB1c7f5XIIal8P2cj47kLJpN5Ig==} + /@biomejs/cli-darwin-x64@1.3.0: + resolution: {integrity: sha512-8rljS+4nLVuSPuPmuFp64bMZqwmGv9O/6wKoVk0kzeaVD1elSzMz+ZoTrRodbI1Hl8kItDdGf431L7S1EqRokQ==} engines: {node: '>=14.*'} cpu: [x64] os: [darwin] dev: true - /@biomejs/cli-linux-arm64@1.0.0: - resolution: {integrity: sha512-kJWtu3Xr4MdHV2Yn4U+eZudAGPgv0kRCjWAyzLRewJiqE5TLPrX08imB9SU1n3+VxNO8e2JJ0tWWBHo4J+aSEg==} - engines: {node: '>=14.*'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@biomejs/cli-linux-arm64@1.2.2: - resolution: {integrity: sha512-JHXRnfhOLx8UO/Fcyn2c5pFRri0XKqRZm2wf5oH5GSfLVpckDw2X15dYGbu3nmfM/3pcAaTV46pUpjrCnaAieg==} + /@biomejs/cli-linux-arm64@1.3.0: + resolution: {integrity: sha512-vQIEaXQf1pPJPetcd4jfM3118sG4AfZvbDuLnU/4lCUIs0XuwPYMcx2KzwXu2m0tn6J4xQsZHvNQyHpiBbp9vA==} engines: {node: '>=14.*'} cpu: [arm64] os: [linux] dev: true - /@biomejs/cli-linux-x64@1.0.0: - resolution: {integrity: sha512-FK6hYZ0Lkk39eXYx1+2ZWtLkApc0RdOpcjDVM96JbvI0bxqvNnm193BPXuxh5A/fCl6N28RNUvcKnZ5LbgZ0Yw==} - engines: {node: '>=14.*'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@biomejs/cli-linux-x64@1.2.2: - resolution: {integrity: sha512-5Zr+iM7lUKsw81p9PkXRESuH2/AhRZ6RCWkgE+FSLcxMhXy/4RDR+o2YQDsJM6cWKIzOJM05vDHTGrDq7vXE4A==} + /@biomejs/cli-linux-x64@1.3.0: + resolution: {integrity: sha512-ZH+PvgAZ3nr69O8Tb+MO+08k+0PhG0paWhkIaUW1AUlD7ruIpk+dlHp3DjHauSPFDZkNIxj6utwI1c5lP8hF9w==} engines: {node: '>=14.*'} cpu: [x64] os: [linux] dev: true - /@biomejs/cli-win32-arm64@1.0.0: - resolution: {integrity: sha512-kE+OY2isEJHBodiLPMlybZckHkl3CQWsvXuJEvSxkoMhLbGDPEV3yZ/0lEph3BlxP3KP5vUO3hOFGaTvHFOuqQ==} + /@biomejs/cli-win32-arm64@1.3.0: + resolution: {integrity: sha512-Mfo1oWXnuOL4zWidx0A7jQSs6+uZZYZB4wuD9lBCbuoQoRNFobGEs11z/iy8XW5mucx+MW4ylTAcDAS+5/2kEw==} engines: {node: '>=14.*'} cpu: [arm64] os: [win32] @@ -1712,8 +1676,8 @@ packages: dev: true optional: true - /@biomejs/cli-win32-x64@1.0.0: - resolution: {integrity: sha512-Ko6ZsbmbScPMEnh/xz4mwDSCZIUCAEjbbbnUVApgAAL2+1Hoe7Vnhh2RiwYRqy3tHrBIMDwXkSxj0vlf1G3EHg==} + /@biomejs/cli-win32-x64@1.3.0: + resolution: {integrity: sha512-t2EPg+zeMzimBoURfj9CKeNObCZ/MbFxdQj0+K5Q+LR41fUaevG/wOrM+Swh5emRXdSBUm0qsTq3xiyv77C3Ww==} engines: {node: '>=14.*'} cpu: [x64] os: [win32] @@ -2538,14 +2502,14 @@ packages: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 18.11.18 + '@types/node': 20.8.7 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.8.0 exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@18.11.18) + jest-config: 29.7.0(@types/node@20.8.7)(ts-node@10.9.1) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -2616,7 +2580,7 @@ packages: dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 18.11.18 + '@types/node': 20.8.7 jest-mock: 29.7.0 dev: true @@ -3239,26 +3203,6 @@ packages: resolution: {integrity: sha512-Uy0+khmZqUrUGm5dmMqVlnvufZRSK0FbYzVgp0UMstm+F5+W2/jnEEQyc9vo1ZR/E5ZI/B1WjjoTqBqwJL6Krw==} dev: false - /@swc/cli@0.1.62(@swc/core@1.3.78): - resolution: {integrity: sha512-kOFLjKY3XH1DWLfXL1/B5MizeNorHR8wHKEi92S/Zi9Md/AK17KSqR8MgyRJ6C1fhKHvbBCl8wboyKAFXStkYw==} - engines: {node: '>= 12.13'} - hasBin: true - peerDependencies: - '@swc/core': ^1.2.66 - chokidar: ^3.3.1 - peerDependenciesMeta: - chokidar: - optional: true - dependencies: - '@mole-inc/bin-wrapper': 8.0.1 - '@swc/core': 1.3.78 - commander: 7.2.0 - fast-glob: 3.3.1 - semver: 7.5.4 - slash: 3.0.0 - source-map: 0.7.4 - dev: true - /@swc/cli@0.1.62(@swc/core@1.3.78)(chokidar@3.3.1): resolution: {integrity: sha512-kOFLjKY3XH1DWLfXL1/B5MizeNorHR8wHKEi92S/Zi9Md/AK17KSqR8MgyRJ6C1fhKHvbBCl8wboyKAFXStkYw==} engines: {node: '>= 12.13'} @@ -3761,12 +3705,12 @@ packages: /@types/accepts@1.3.5: resolution: {integrity: sha512-jOdnI/3qTpHABjM5cx1Hc0sKsPoYCp+DP/GJRGtDlPd7fiV9oXGGIcjW/ZOxLIvjGz8MA+uMZI9metHlgqbgwQ==} dependencies: - '@types/node': 18.11.18 + '@types/node': 20.8.7 /@types/adm-zip@0.5.0: resolution: {integrity: sha512-FCJBJq9ODsQZUNURo5ILAQueuA8WJhRvuihS3ke2iI25mJlfV2LK8jG2Qj2z2AWg8U0FtWWqBHVRetceLskSaw==} dependencies: - '@types/node': 18.11.18 + '@types/node': 20.8.7 dev: true /@types/async-lock@1.4.0: @@ -3839,27 +3783,27 @@ packages: resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==} dependencies: '@types/connect': 3.4.35 - '@types/node': 18.11.18 + '@types/node': 20.8.7 /@types/cacheable-request@6.0.3: resolution: {integrity: sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==} dependencies: '@types/http-cache-semantics': 4.0.1 '@types/keyv': 3.1.4 - '@types/node': 18.11.18 + '@types/node': 20.8.7 '@types/responselike': 1.0.0 /@types/co-body@6.1.0: resolution: {integrity: sha512-3e0q2jyDAnx/DSZi0z2H0yoZ2wt5yRDZ+P7ymcMObvq0ufWRT4tsajyO+Q1VwVWiv9PRR4W3YEjEzBjeZlhF+w==} dependencies: - '@types/node': 18.11.18 + '@types/node': 20.8.7 '@types/qs': 6.9.7 dev: false /@types/connect@3.4.35: resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} dependencies: - '@types/node': 18.11.18 + '@types/node': 20.8.7 /@types/content-disposition@0.5.5: resolution: {integrity: sha512-v6LCdKfK6BwcqMo+wYW05rLS12S0ZO0Fl4w1h4aaZMD7bqT3gVUns6FvLJKGZHQmYn3SX55JWGpziwJRwVgutA==} @@ -3870,7 +3814,7 @@ packages: '@types/connect': 3.4.35 '@types/express': 4.17.17 '@types/keygrip': 1.0.2 - '@types/node': 18.11.18 + '@types/node': 20.8.7 /@types/core-js@2.5.7: resolution: {integrity: sha512-EhO4Lcd2Rs2bZvQwIDMZ1qsaZk8DpdOkQCbKpK0vt7fSjJGXrCA7EPauR/BZ7eJXks1een4FX7JtlhS136fklA==} @@ -3920,7 +3864,7 @@ packages: /@types/express-serve-static-core@4.17.35: resolution: {integrity: sha512-wALWQwrgiB2AWTT91CB62b6Yt0sNHpznUXeZEcnPU3DRdlDIz74x8Qg1UUYKSVFi+va5vKOLYRBI1bRKiLLKIg==} dependencies: - '@types/node': 18.11.18 + '@types/node': 20.8.7 '@types/qs': 6.9.7 '@types/range-parser': 1.2.4 '@types/send': 0.17.1 @@ -3936,7 +3880,7 @@ packages: /@types/fluent-ffmpeg@2.1.21: resolution: {integrity: sha512-+n3dy/Tegt6n+YwGZUiGq6i8Jrnt8+MoyPiW1L6J5EWUl7GSt18a/VyReecfCsvTTNBXNMIKOMHDstiQM8nJLA==} dependencies: - '@types/node': 18.11.18 + '@types/node': 20.8.7 dev: true /@types/form-data@2.5.0: @@ -3949,15 +3893,15 @@ packages: /@types/formidable@2.0.6: resolution: {integrity: sha512-L4HcrA05IgQyNYJj6kItuIkXrInJvsXTPC5B1i64FggWKKqSL+4hgt7asiSNva75AoLQjq29oPxFfU4GAQ6Z2w==} dependencies: - '@types/node': 18.11.18 + '@types/node': 20.8.7 dev: false - /@types/glob-stream@8.0.0: - resolution: {integrity: sha512-fxTWwdQmX9LWSHD7ZLlv3BHR992mKcVcDnT/2v+l/QZZo7TfDdyasqlSYVzOnMGWhRbrWeWkbj/mgezFjKynhw==} + /@types/glob-stream@8.0.1: + resolution: {integrity: sha512-sR8FnsG9sEkjKasMSYbRmzaSVYmY76ui0t+T+9BE2Wr/ansAKfNsu+xT0JvZL+7DDQDO/MPTg6g8hfNdhYWT2g==} dependencies: - '@types/node': 20.5.8 - '@types/picomatch': 2.3.0 - '@types/streamx': 2.9.1 + '@types/node': 20.8.7 + '@types/picomatch': 2.3.2 + '@types/streamx': 2.9.3 dev: true /@types/glob@8.1.0: @@ -3973,18 +3917,19 @@ packages: '@types/node': 20.8.7 dev: true - /@types/gulp-rename@2.0.2: - resolution: {integrity: sha512-CQsXqTVtAXqrPd4IbrrlJEEzRkUR3RXsyZbrVoOVqjlchDDmnyRDatAUisjpQjjCg/wjJrSiNg8T1uAbJ/7Qqg==} + /@types/gulp-rename@2.0.4: + resolution: {integrity: sha512-dhhbD+PlIGmxpYiSsLsTgMsyfqmwemlM6gnM2hXzDh68knKocRDBq/CNRhbGlAZkUH/7zCbEvadxQXQJtanMPw==} dependencies: - '@types/node': 20.5.8 - '@types/vinyl': 2.0.7 + '@types/node': 20.8.7 + '@types/vinyl': 2.0.9 dev: true - /@types/gulp@4.0.13: - resolution: {integrity: sha512-Ms20Q2tZ3MpThZGn4Ag6e7ifz/oQJFxsuiopqz5oHmhE6q2ohnELgafi5K/pKX/4ntlpidS61v/TXAguYsVcaA==} + /@types/gulp@4.0.16: + resolution: {integrity: sha512-yY3XJjYejEzIQqLt6ZXaOZ/jynVxUe7Km33XA1/sU2zfZ2AeFDragIcT+i53a+j7eoWPgVeikhFvtC0gCteBdA==} dependencies: - '@types/undertaker': 1.2.8 - '@types/vinyl-fs': 3.0.2 + '@types/node': 20.8.7 + '@types/undertaker': 1.2.10 + '@types/vinyl-fs': 3.0.4 chokidar: 3.5.3 dev: true @@ -4054,7 +3999,7 @@ packages: /@types/keyv@3.1.4: resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} dependencies: - '@types/node': 18.11.18 + '@types/node': 20.8.7 /@types/koa-bodyparser@4.3.10: resolution: {integrity: sha512-6ae05pjhmrmGhUR8GYD5qr5p9LTEMEGfGXCsK8VaSL+totwigm8+H/7MHW7K4854CMeuwRAubT8qcc/EagaeIA==} @@ -4170,7 +4115,7 @@ packages: '@types/http-errors': 2.0.1 '@types/keygrip': 1.0.2 '@types/koa-compose': 3.2.5 - '@types/node': 18.11.18 + '@types/node': 20.8.7 /@types/koa__cors@3.3.0: resolution: {integrity: sha512-FUN8YxcBakIs+walVe3+HcNP+Bxd0SB8BJHBWkglZ5C1XQWljlKcEFDG/dPiCIqwVCUbc5X0nYDlH62uEhdHMA==} @@ -4225,13 +4170,13 @@ packages: /@types/needle@3.2.0: resolution: {integrity: sha512-6XzvzEyJ2ozFNfPajFmqH9JOt0Hp+9TawaYpJT59iIP/zR0U37cfWCRwosyIeEBBZBi021Osq4jGAD3AOju5fg==} dependencies: - '@types/node': 18.11.18 + '@types/node': 20.8.7 dev: true /@types/node-fetch@2.6.4: resolution: {integrity: sha512-1ZX9fcN4Rvkvgv4E6PAY5WXUFWFcRWxZa3EW83UjycOB9ljJCedb2CupIP4RZMEwF/M3eTcCihbBRgwtGbg5Rg==} dependencies: - '@types/node': 20.5.8 + '@types/node': 20.8.7 form-data: 3.0.1 dev: false @@ -4245,22 +4190,19 @@ packages: /@types/node@14.18.63: resolution: {integrity: sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ==} - /@types/node@18.11.18: - resolution: {integrity: sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==} - /@types/node@20.5.8: resolution: {integrity: sha512-eajsR9aeljqNhK028VG0Wuw+OaY5LLxYmxeoXynIoE6jannr9/Ucd1LL0hSSoafk5LTYG+FfqsyGt81Q6Zkybw==} + dev: true /@types/node@20.8.7: resolution: {integrity: sha512-21TKHHh3eUHIi2MloeptJWALuCu5H7HQTdTrWIFReA8ad+aggoX+lRes3ex7/FtpC+sVUpFMQ+QTfYr74mruiQ==} dependencies: undici-types: 5.25.3 - dev: true /@types/nodemailer@6.4.9: resolution: {integrity: sha512-XYG8Gv+sHjaOtUpiuytahMy2mM3rectgroNbs6R3djZEKmPNiIJwe9KqOJBGzKKnNZNKvnuvmugBgpq3w/S0ig==} dependencies: - '@types/node': 18.11.18 + '@types/node': 20.8.7 dev: true /@types/normalize-package-data@2.4.3: @@ -4270,7 +4212,7 @@ packages: /@types/oauth@0.9.1: resolution: {integrity: sha512-a1iY62/a3yhZ7qH7cNUsxoI3U/0Fe9+RnuFrpTKr+0WVOzbKlSLojShCKe20aOD1Sppv+i8Zlq0pLDuTJnwS4A==} dependencies: - '@types/node': 18.11.18 + '@types/node': 20.8.7 /@types/object-assign-deep@0.4.2: resolution: {integrity: sha512-iF6qYKjYdg/kFg3AEM/msyh1+U4zZW043d2TnCS9fwib00nc8Asj+38LgIpkO/UpfUMRgJ0m/tHATwU2F8Bfow==} @@ -4288,15 +4230,15 @@ packages: resolution: {integrity: sha512-RKU5SIF0oyM2ZI0ubw66FkM/0RJUv/r84I7vJcXkcICcfeOpd1WXfpcqkFJPaWli5z3YdxMsfWojyU5uofT6sA==} dev: true - /@types/picomatch@2.3.0: - resolution: {integrity: sha512-O397rnSS9iQI4OirieAtsDqvCj4+3eY1J+EPdNTKuHuRWIfUoGyzX294o8C4KJYaLqgSrd2o60c5EqCU8Zv02g==} + /@types/picomatch@2.3.2: + resolution: {integrity: sha512-I+BytjxOlNYA285zP/3dVCRcE+OAvgHQZQt26MP7T7JbZ9DM/3W2WfViU1XuLypCzAx8PTC+MlYO3WLqjTyZ3g==} dev: true /@types/probe-image-size@7.2.0: resolution: {integrity: sha512-R5H3vw62gHNHrn+JGZbKejb+Z2D/6E5UNVlhCzIaBBLroMQMOFqy5Pap2gM+ZZHdqBtVU0/cx/M6to+mOJcoew==} dependencies: '@types/needle': 3.2.0 - '@types/node': 18.11.18 + '@types/node': 20.8.7 dev: true /@types/pug@2.0.6: @@ -4310,7 +4252,7 @@ packages: /@types/qrcode@1.5.1: resolution: {integrity: sha512-HpSN675K0PmxIDRpjMI3Mc2GiKo3dNu+X/F5SoItiaDS1lVfgC6Wac1c5lQDfKWbTJUSHWiHKzpJpBZG7k9gaA==} dependencies: - '@types/node': 18.11.18 + '@types/node': 20.8.7 dev: true /@types/qs@6.9.7: @@ -4341,7 +4283,7 @@ packages: /@types/responselike@1.0.0: resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==} dependencies: - '@types/node': 18.11.18 + '@types/node': 20.8.7 /@types/sanitize-html@2.9.0: resolution: {integrity: sha512-4fP/kEcKNj2u39IzrxWYuf/FnCCwwQCpif6wwY6ROUS1EPRIfWJjGkY3HIowY1EX/VbX5e86yq8AAE7UPMgATg==} @@ -4365,14 +4307,14 @@ packages: resolution: {integrity: sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==} dependencies: '@types/mime': 1.3.2 - '@types/node': 18.11.18 + '@types/node': 20.8.7 /@types/serve-static@1.15.2: resolution: {integrity: sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw==} dependencies: '@types/http-errors': 2.0.1 '@types/mime': 3.0.1 - '@types/node': 18.11.18 + '@types/node': 20.8.7 /@types/sinonjs__fake-timers@8.1.1: resolution: {integrity: sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==} @@ -4394,10 +4336,10 @@ packages: resolution: {integrity: sha512-g7CK9nHdwjK2n0ymT2CW698FuWJRIx+RP6embAzZ2Qi8/ilIrA1Imt2LVSeHUzKvpoi7BhmmQcXz95eS0f2JXw==} dev: true - /@types/streamx@2.9.1: - resolution: {integrity: sha512-9bywzhouyedmci7WCIPFwJ8zASDnxt2gaVUy52X0p0Tt085IJSAEP0L6j4SSNeDMSLzpYu6cPz0GrJZ7kPJ6Bg==} + /@types/streamx@2.9.3: + resolution: {integrity: sha512-D2eONMpz0JX15eA4pxylNVzq4kyqRRGqsMIxIjbfjDGaHMaoCvgFWn2+EkrL8/gODCvbNcPIVp7Eecr/+PX61g==} dependencies: - '@types/node': 20.5.8 + '@types/node': 20.8.7 dev: true /@types/throttle-debounce@5.0.0: @@ -4412,15 +4354,15 @@ packages: resolution: {integrity: sha512-dDZH/tXzwjutnuk4UacGgFRwV+JSLaXL1ikvidfJprkb7L9Nx1njcRHHmi3Dsvt7pgqqTEeucQuOrWHPFgzVHA==} dev: true - /@types/undertaker-registry@1.0.1: - resolution: {integrity: sha512-Z4TYuEKn9+RbNVk1Ll2SS4x1JeLHecolIbM/a8gveaHsW0Hr+RQMraZACwTO2VD7JvepgA6UO1A1VrbktQrIbQ==} + /@types/undertaker-registry@1.0.3: + resolution: {integrity: sha512-9wabQxkMB6Nb6FuPxvLQiMLBT2KkJXxgC9RoehnSSCvVzrag5GKxI5pekcgnMcZaGupuJOd0CLT+8ZwHHlG5vQ==} dev: true - /@types/undertaker@1.2.8: - resolution: {integrity: sha512-gW3PRqCHYpo45XFQHJBhch7L6hytPsIe0QeLujlnFsjHPnXLhJcPdN6a9368d7aIQgH2I/dUTPFBlGeSNA3qOg==} + /@types/undertaker@1.2.10: + resolution: {integrity: sha512-UzbgxdP5Zn0UlaLGF8CxXGpP7MCu/Y/b/24Kj3dK0J3+xOSmAGJw4JJKi21avFNuUviG59BMBUdrcL+KX+z7BA==} dependencies: - '@types/node': 20.5.8 - '@types/undertaker-registry': 1.0.1 + '@types/node': 20.8.7 + '@types/undertaker-registry': 1.0.3 async-done: 1.3.2 dev: true @@ -4436,25 +4378,32 @@ packages: resolution: {integrity: sha512-taHQQH/3ZyI3zP8M/puluDEIEvtQHVYcC6y3N8ijFtAd28+Ey/G4sg1u2gB01S8MwybLOKAp9/yCMu/uR5l3Ug==} dev: true - /@types/vinyl-fs@3.0.2: - resolution: {integrity: sha512-ctNcmmzbMIKooXjRkyyUCOu2Z4AyqibL+RhXoF3pb7K7j+ezItnakmpm31LymkYHSIM5ey0tjIFzTvFOTSBCGw==} + /@types/vinyl-fs@3.0.4: + resolution: {integrity: sha512-UIdM4bMUcWky41J0glmBx4WnCiF48J7Q2S0LJ8heFmZiB7vHeLOHoLx1ABxu4lY6eD2FswVp47cSIc1GFFJkbw==} dependencies: - '@types/glob-stream': 8.0.0 - '@types/node': 20.5.8 - '@types/vinyl': 2.0.7 + '@types/glob-stream': 8.0.1 + '@types/node': 20.8.7 + '@types/vinyl': 2.0.9 dev: true /@types/vinyl@2.0.7: resolution: {integrity: sha512-4UqPv+2567NhMQuMLdKAyK4yzrfCqwaTt6bLhHEs8PFcxbHILsrxaY63n4wgE/BRLDWDQeI+WcTmkXKExh9hQg==} dependencies: '@types/expect': 1.20.4 - '@types/node': 20.5.8 + '@types/node': 20.8.7 + dev: true + + /@types/vinyl@2.0.9: + resolution: {integrity: sha512-KCr4aTEUkzSF89qw09e2oxsC/RXXT3K5ZPv4gvj3XTiWVrxNoi7WrqNTahNE/Hul5C9z3B8w+yWNTQgua12oag==} + dependencies: + '@types/expect': 1.20.4 + '@types/node': 20.8.7 dev: true /@types/web-push@3.3.2: resolution: {integrity: sha512-JxWGVL/m7mWTIg4mRYO+A6s0jPmBkr4iJr39DqJpRJAc+jrPiEe1/asmkwerzRon8ZZDxaZJpsxpv0Z18Wo9gw==} dependencies: - '@types/node': 18.11.18 + '@types/node': 20.8.7 dev: true /@types/webgl-ext@0.0.30: @@ -4470,13 +4419,13 @@ packages: /@types/websocket@1.0.5: resolution: {integrity: sha512-NbsqiNX9CnEfC1Z0Vf4mE1SgAJ07JnRYcNex7AJ9zAVzmiGHmjKFEk7O4TJIsgv2B1sLEb6owKFZrACwdYngsQ==} dependencies: - '@types/node': 18.11.18 + '@types/node': 20.8.7 dev: true /@types/ws@8.5.5: resolution: {integrity: sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==} dependencies: - '@types/node': 18.11.18 + '@types/node': 20.8.7 /@types/yargs-parser@21.0.2: resolution: {integrity: sha512-5qcvofLPbfjmBfKaLfj/+f+Sbd6pN4zl7w7VSVI5uz7m9QZTuB2aZAa2uo1wHFBNN2x6g/SoTkXmd8mQnQF2Cw==} @@ -4492,7 +4441,7 @@ packages: resolution: {integrity: sha512-Km7XAtUIduROw7QPgvcft0lIupeG8a8rdKL8RiSyKvlE7dYY31fEn41HVuQsRFDuROA8tA4K2UVL+WdfFmErBA==} requiresBuild: true dependencies: - '@types/node': 20.5.8 + '@types/node': 14.18.63 dev: true optional: true @@ -4874,7 +4823,7 @@ packages: vite: ^4.0.0 vue: ^3.2.25 dependencies: - vite: 4.4.9(@types/node@20.5.8)(sass@1.66.1) + vite: 4.4.9(@types/node@20.8.7)(sass@1.66.1) vue: 3.3.4 dev: true @@ -7276,25 +7225,6 @@ packages: readable-stream: 3.6.2 dev: false - /create-jest@29.7.0(@types/node@18.11.18): - resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - dependencies: - '@jest/types': 29.6.3 - chalk: 4.1.2 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@18.11.18) - jest-util: 29.7.0 - prompts: 2.4.2 - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - dev: true - /create-jest@29.7.0(@types/node@20.8.7)(ts-node@10.9.1): resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -7592,17 +7522,6 @@ packages: ms: 2.1.2 dev: false - /debug@4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.2 - /debug@4.3.4(supports-color@8.1.1): resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} @@ -10333,7 +10252,7 @@ packages: resolution: {integrity: sha512-SVSF7ikuWKhpAW4l4wapAqPPSToJoiNKsbDoUnRrSgwZHH7lH8pbPeQj1aOVYQrbZKhfSVBxVW+Py7vtulRktw==} engines: {node: '>=10'} dependencies: - '@types/node': 20.5.8 + '@types/node': 20.8.7 '@types/vinyl': 2.0.7 istextorbinary: 3.3.0 replacestream: 4.0.3 @@ -11475,7 +11394,7 @@ packages: resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} engines: {node: '>=10'} dependencies: - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) istanbul-lib-coverage: 3.2.0 source-map: 0.6.1 transitivePeerDependencies: @@ -11555,7 +11474,7 @@ packages: - supports-color dev: true - /jest-cli@29.7.0(@types/node@18.11.18): + /jest-cli@29.7.0(@types/node@20.8.7): resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -11569,10 +11488,10 @@ packages: '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@18.11.18) + create-jest: 29.7.0(@types/node@20.8.7)(ts-node@10.9.1) exit: 0.1.2 import-local: 3.1.0 - jest-config: 29.7.0(@types/node@18.11.18) + jest-config: 29.7.0(@types/node@20.8.7)(ts-node@10.9.1) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -11611,46 +11530,6 @@ packages: - ts-node dev: true - /jest-config@29.7.0(@types/node@18.11.18): - resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@types/node': '*' - ts-node: '>=9.0.0' - peerDependenciesMeta: - '@types/node': - optional: true - ts-node: - optional: true - dependencies: - '@babel/core': 7.23.2 - '@jest/test-sequencer': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 18.11.18 - babel-jest: 29.7.0(@babel/core@7.23.2) - chalk: 4.1.2 - ci-info: 3.9.0 - deepmerge: 4.3.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-circus: 29.7.0 - jest-environment-node: 29.7.0 - jest-get-type: 29.6.3 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-runner: 29.7.0 - jest-util: 29.7.0 - jest-validate: 29.7.0 - micromatch: 4.0.5 - parse-json: 5.2.0 - pretty-format: 29.7.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - dev: true - /jest-config@29.7.0(@types/node@20.8.7)(ts-node@10.9.1): resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -11727,7 +11606,7 @@ packages: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 18.11.18 + '@types/node': 20.8.7 jest-mock: 29.7.0 jest-util: 29.7.0 dev: true @@ -11803,7 +11682,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 18.11.18 + '@types/node': 20.8.7 jest-util: 29.7.0 dev: true @@ -11985,7 +11864,7 @@ packages: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 18.11.18 + '@types/node': 20.8.7 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true @@ -11994,13 +11873,13 @@ packages: resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 18.11.18 + '@types/node': 20.8.7 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true - /jest@29.7.0(@types/node@18.11.18): + /jest@29.7.0(@types/node@20.8.7): resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -12013,7 +11892,7 @@ packages: '@jest/core': 29.7.0 '@jest/types': 29.6.3 import-local: 3.1.0 - jest-cli: 29.7.0(@types/node@18.11.18) + jest-cli: 29.7.0(@types/node@20.8.7) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -17111,7 +16990,7 @@ packages: '@babel/core': 7.23.2 bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@18.11.18) + jest: 29.7.0(@types/node@20.8.7) jest-util: 29.7.0 json5: 2.2.3 lodash.memoize: 4.1.2 @@ -17170,7 +17049,7 @@ packages: webpack: 5.88.2(@swc/core@1.3.78) dev: true - /ts-node@10.9.1(@swc/core@1.3.78)(@types/node@18.11.18)(typescript@5.1.6): + /ts-node@10.9.1(@swc/core@1.3.78)(@types/node@20.8.7)(typescript@5.1.6): resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -17190,7 +17069,7 @@ packages: '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 18.11.18 + '@types/node': 20.8.7 acorn: 8.10.0 acorn-walk: 8.2.0 arg: 4.1.3 @@ -17508,7 +17387,7 @@ packages: pg: 8.11.3 reflect-metadata: 0.1.13 sha.js: 2.4.11 - ts-node: 10.9.1(@swc/core@1.3.78)(@types/node@18.11.18)(typescript@5.1.6) + ts-node: 10.9.1(@swc/core@1.3.78)(@types/node@20.8.7)(typescript@5.1.6) tslib: 2.6.1 uuid: 9.0.0 yargs: 17.7.2 @@ -17581,7 +17460,6 @@ packages: /undici-types@5.25.3: resolution: {integrity: sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==} - dev: true /undici@5.23.0: resolution: {integrity: sha512-1D7w+fvRsqlQ9GscLBwcAJinqcZGHUKjbOmXdlE/v8BvEGXjeWAax+341q44EuTcHXXnfyKNbKRq4Lg7OzhMmg==} @@ -17890,7 +17768,7 @@ packages: chalk: 4.1.2 debug: 4.3.4(supports-color@8.1.1) fs-extra: 10.1.0 - vite: 4.4.9(@types/node@20.5.8)(sass@1.66.1) + vite: 4.4.9(@types/node@20.8.7)(sass@1.66.1) transitivePeerDependencies: - supports-color dev: true @@ -17932,6 +17810,43 @@ packages: fsevents: 2.3.3 dev: true + /vite@4.4.9(@types/node@20.8.7)(sass@1.66.1): + resolution: {integrity: sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true + peerDependencies: + '@types/node': '>= 14' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + '@types/node': 20.8.7 + esbuild: 0.18.20 + postcss: 8.4.27 + rollup: 3.28.1 + sass: 1.66.1 + optionalDependencies: + fsevents: 2.3.3 + dev: true + /void-elements@3.1.0: resolution: {integrity: sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==} engines: {node: '>=0.10.0'} From 0bc6d7e75342ce2cfd55ac55ee1aa1a752307344 Mon Sep 17 00:00:00 2001 From: ThatOneCalculator <kainoa@t1c.dev> Date: Thu, 19 Oct 2023 17:18:02 -0700 Subject: [PATCH 22/74] chore: :package: add homepage for firefish-js npm --- packages/firefish-js/package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/firefish-js/package.json b/packages/firefish-js/package.json index ea8aa90c85..734036d38e 100644 --- a/packages/firefish-js/package.json +++ b/packages/firefish-js/package.json @@ -2,6 +2,7 @@ "name": "firefish-js", "version": "0.0.27", "description": "Firefish SDK for JavaScript", + "homepage": "https://git.joinfirefish.org/firefish/firefish/-/tree/develop/packages/firefish-js", "main": "./built/index.js", "types": "./built/index.d.ts", "license": "MIT", From b4c0c4e5c65762e9f42ad86574996528114febee Mon Sep 17 00:00:00 2001 From: naskya <m@naskya.net> Date: Fri, 20 Oct 2023 07:20:16 +0000 Subject: [PATCH 23/74] fix: 0 is falsy --- packages/client/src/components/mfm.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/client/src/components/mfm.ts b/packages/client/src/components/mfm.ts index cfdbd8a23c..65ffa42108 100644 --- a/packages/client/src/components/mfm.ts +++ b/packages/client/src/components/mfm.ts @@ -264,7 +264,7 @@ export default defineComponent({ : token.props.args.y ? "perspective(128px) rotateY" : "rotate"; - const degrees = parseInt(token.props.args.deg) || "90"; + const degrees = parseFloat(token.props.args.deg) ?? "90"; style = `transform: ${rotate}(${degrees}deg); transform-origin: center center;`; break; } From dbbc2e2675f44a334084bb4746edf4f4b520def7 Mon Sep 17 00:00:00 2001 From: Essem <smswessem@gmail.com> Date: Fri, 20 Oct 2023 19:48:56 +0000 Subject: [PATCH 24/74] fix: :bug: Expose animation setting in MkFolder --- packages/client/src/components/MkFolder.vue | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/client/src/components/MkFolder.vue b/packages/client/src/components/MkFolder.vue index 4baa125136..279c8f7186 100644 --- a/packages/client/src/components/MkFolder.vue +++ b/packages/client/src/components/MkFolder.vue @@ -18,7 +18,7 @@ </button> </header> <transition - :name="defaultStore.state.animation ? 'folder-toggle' : ''" + :name="animation ? 'folder-toggle' : ''" @enter="enter" @after-enter="afterEnter" @leave="leave" @@ -62,6 +62,7 @@ export default defineComponent({ localStoragePrefix + this.persistKey, ) === "t" : this.expanded, + animation: defaultStore.state.animation, }; }, watch: { From ca2bf89082f9a1b0d15164410f2a1894b7bda426 Mon Sep 17 00:00:00 2001 From: naskya <m@naskya.net> Date: Sun, 22 Oct 2023 06:52:46 +0900 Subject: [PATCH 25/74] fix: localOnly icon isn't showing --- packages/client/src/components/MkVisibility.vue | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/client/src/components/MkVisibility.vue b/packages/client/src/components/MkVisibility.vue index 598c0b4cb0..3d691106dc 100644 --- a/packages/client/src/components/MkVisibility.vue +++ b/packages/client/src/components/MkVisibility.vue @@ -17,7 +17,10 @@ ></i> </span> <span v-if="note.localOnly" :class="$style.localOnly" - ><i v-tooltip="i18n.ts._visibility.localOnly" class="ph-users ph-lg"></i + ><i + v-tooltip="i18n.ts._visibility.localOnly" + :class="icon('ph-users')" + ></i ></span> </template> From e81ed199ae0c94f1f420a24e601e150bfe47042f Mon Sep 17 00:00:00 2001 From: naskya <m@naskya.net> Date: Sun, 22 Oct 2023 17:33:40 +0900 Subject: [PATCH 26/74] Revert "chore: upgrade biome + lint & format" This reverts commit a1cd9f73a1bf760198329d2c26eb3a37e82d16c7. --- package.json | 16 +- packages/backend/package.json | 2 +- packages/backend/src/const.ts | 2 +- packages/backend/src/global.d.ts | 2 +- packages/backend/test/ap-request.ts | 2 +- packages/backend/test/api-visibility.ts | 6 +- packages/backend/test/api.ts | 8 +- packages/backend/test/block.ts | 6 +- packages/backend/test/chart.ts | 8 +- packages/backend/test/fetch-resource.ts | 8 +- packages/backend/test/ff-visibility.ts | 10 +- packages/backend/test/get-file-info.ts | 2 +- packages/backend/test/mfm.ts | 2 +- packages/backend/test/mute.ts | 6 +- packages/backend/test/note.ts | 12 +- packages/backend/test/streaming.ts | 8 +- packages/backend/test/thread-mute.ts | 8 +- packages/backend/test/user-notes.ts | 8 +- packages/backend/test/utils.ts | 18 +- packages/client/package.json | 4 +- packages/client/src/account.ts | 10 +- packages/client/src/components/MkDialog.vue | 5 +- .../client/src/components/MkWaitingDialog.vue | 2 +- packages/client/src/i18n.ts | 2 +- packages/client/src/init.ts | 42 +- packages/client/src/instance.ts | 2 +- packages/client/src/navbar.ts | 12 +- packages/client/src/nirax.ts | 10 +- packages/client/src/os.ts | 20 +- packages/client/src/pages/admin/_header_.vue | 8 +- packages/client/src/plugin.ts | 8 +- packages/client/src/router.ts | 12 +- packages/client/src/scripts/autocomplete.ts | 6 +- packages/client/src/store.ts | 2 +- packages/client/src/stream.ts | 4 +- packages/client/src/theme-store.ts | 4 +- packages/client/tsconfig.json | 10 +- packages/firefish-js/src/api.types.ts | 10 +- packages/firefish-js/src/index.ts | 4 +- packages/firefish-js/src/streaming.ts | 6 +- packages/megalodon/package.json | 12 +- packages/megalodon/src/index.ts | 16 +- packages/megalodon/src/megalodon.ts | 10 +- packages/megalodon/src/misskey.ts | 20 +- packages/sw/tsconfig.json | 9 +- pnpm-lock.yaml | 431 +++++++++++------- 46 files changed, 450 insertions(+), 365 deletions(-) diff --git a/package.json b/package.json index c0c0918f16..0203670c41 100644 --- a/package.json +++ b/package.json @@ -46,14 +46,14 @@ "seedrandom": "^3.0.5" }, "devDependencies": { - "@biomejs/biome": "1.3.0", - "@biomejs/cli-darwin-arm64": "^1.3.0", - "@biomejs/cli-darwin-x64": "^1.3.0", - "@biomejs/cli-linux-arm64": "^1.3.0", - "@biomejs/cli-linux-x64": "^1.3.0", - "@types/gulp": "4.0.16", - "@types/gulp-rename": "2.0.4", - "@types/node": "20.8.7", + "@biomejs/biome": "1.0.0", + "@biomejs/cli-darwin-arm64": "^1.0.0", + "@biomejs/cli-darwin-x64": "^1.0.0", + "@biomejs/cli-linux-arm64": "^1.0.0", + "@biomejs/cli-linux-x64": "^1.0.0", + "@types/gulp": "4.0.13", + "@types/gulp-rename": "2.0.2", + "@types/node": "20.5.8", "add": "2.0.6", "cross-env": "7.0.3", "cypress": "10.11.0", diff --git a/packages/backend/package.json b/packages/backend/package.json index 9e891fad8e..110b8e14ef 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -162,7 +162,7 @@ "@types/koa__multer": "2.0.4", "@types/koa__router": "8.0.11", "@types/mocha": "9.1.1", - "@types/node": "20.8.7", + "@types/node": "18.11.18", "@types/node-fetch": "3.0.3", "@types/nodemailer": "6.4.9", "@types/oauth": "0.9.1", diff --git a/packages/backend/src/const.ts b/packages/backend/src/const.ts index 8fc4bd25e0..6dddf1fff5 100644 --- a/packages/backend/src/const.ts +++ b/packages/backend/src/const.ts @@ -1,7 +1,7 @@ import config from "@/config/index.js"; import { - DB_MAX_IMAGE_COMMENT_LENGTH, DB_MAX_NOTE_TEXT_LENGTH, + DB_MAX_IMAGE_COMMENT_LENGTH, } from "@/misc/hard-limits.js"; export const MAX_NOTE_TEXT_LENGTH = Math.min( diff --git a/packages/backend/src/global.d.ts b/packages/backend/src/global.d.ts index 6c5a22e4b4..503e26eb60 100644 --- a/packages/backend/src/global.d.ts +++ b/packages/backend/src/global.d.ts @@ -1,2 +1,2 @@ -// biome-ignore lint/suspicious/noExplicitAny: i have no idea +// rome-ignore lint/suspicious/noExplicitAny: i have no idea type FIXME = any; diff --git a/packages/backend/test/ap-request.ts b/packages/backend/test/ap-request.ts index 722977fe14..bf77a38532 100644 --- a/packages/backend/test/ap-request.ts +++ b/packages/backend/test/ap-request.ts @@ -2,8 +2,8 @@ import * as assert from "assert"; import httpSignature from "@peertube/http-signature"; import { genRsaKeyPair } from "../src/misc/gen-key-pair.js"; import { - createSignedGet, createSignedPost, + createSignedGet, } from "../src/remote/activitypub/ap-request.js"; export const buildParsedSignature = ( diff --git a/packages/backend/test/api-visibility.ts b/packages/backend/test/api-visibility.ts index 49b1b5a064..0ee4a4d337 100644 --- a/packages/backend/test/api-visibility.ts +++ b/packages/backend/test/api-visibility.ts @@ -4,11 +4,11 @@ import * as assert from "assert"; import * as childProcess from "child_process"; import { async, - post, - request, - shutdownServer, signup, + request, + post, startServer, + shutdownServer, } from "./utils.js"; describe("API visibility", () => { diff --git a/packages/backend/test/api.ts b/packages/backend/test/api.ts index 0fc2f424ec..19a754552c 100644 --- a/packages/backend/test/api.ts +++ b/packages/backend/test/api.ts @@ -4,13 +4,13 @@ import * as assert from "assert"; import * as childProcess from "child_process"; import { async, + signup, + request, post, react, - request, - shutdownServer, - signup, - startServer, uploadFile, + startServer, + shutdownServer, } from "./utils.js"; describe("API", () => { diff --git a/packages/backend/test/block.ts b/packages/backend/test/block.ts index 100a4ab7d5..08192e4869 100644 --- a/packages/backend/test/block.ts +++ b/packages/backend/test/block.ts @@ -4,11 +4,11 @@ import * as assert from "assert"; import * as childProcess from "child_process"; import { async, - post, - request, - shutdownServer, signup, + request, + post, startServer, + shutdownServer, } from "./utils.js"; describe("Block", () => { diff --git a/packages/backend/test/chart.ts b/packages/backend/test/chart.ts index cd600f661a..e194c6c195 100644 --- a/packages/backend/test/chart.ts +++ b/packages/backend/test/chart.ts @@ -2,11 +2,11 @@ process.env.NODE_ENV = "test"; import * as assert from "assert"; import * as lolex from "@sinonjs/fake-timers"; -import { initDb } from "../src/db/postgre.js"; -import TestGroupedChart from "../src/services/chart/charts/test-grouped.js"; -import TestIntersectionChart from "../src/services/chart/charts/test-intersection.js"; -import TestUniqueChart from "../src/services/chart/charts/test-unique.js"; import TestChart from "../src/services/chart/charts/test.js"; +import TestGroupedChart from "../src/services/chart/charts/test-grouped.js"; +import TestUniqueChart from "../src/services/chart/charts/test-unique.js"; +import TestIntersectionChart from "../src/services/chart/charts/test-intersection.js"; +import { initDb } from "../src/db/postgre.js"; describe("Chart", () => { let testChart: TestChart; diff --git a/packages/backend/test/fetch-resource.ts b/packages/backend/test/fetch-resource.ts index 00c0d736ef..da3116f0e8 100644 --- a/packages/backend/test/fetch-resource.ts +++ b/packages/backend/test/fetch-resource.ts @@ -5,13 +5,13 @@ import * as childProcess from "child_process"; import * as openapi from "@redocly/openapi-core"; import { async, - port, + startServer, + signup, post, request, - shutdownServer, - signup, simpleGet, - startServer, + port, + shutdownServer, } from "./utils.js"; // Request Accept diff --git a/packages/backend/test/ff-visibility.ts b/packages/backend/test/ff-visibility.ts index efdbe7f0f6..f898926d99 100644 --- a/packages/backend/test/ff-visibility.ts +++ b/packages/backend/test/ff-visibility.ts @@ -4,14 +4,14 @@ import * as assert from "assert"; import * as childProcess from "child_process"; import { async, - connectStream, + signup, + request, post, react, - request, - shutdownServer, - signup, - simpleGet, + connectStream, startServer, + shutdownServer, + simpleGet, } from "./utils.js"; describe("FF visibility", () => { diff --git a/packages/backend/test/get-file-info.ts b/packages/backend/test/get-file-info.ts index b1092af278..22dc28c8e0 100644 --- a/packages/backend/test/get-file-info.ts +++ b/packages/backend/test/get-file-info.ts @@ -1,6 +1,6 @@ import * as assert from "assert"; -import { dirname } from "node:path"; import { fileURLToPath } from "node:url"; +import { dirname } from "node:path"; import { getFileInfo } from "../src/misc/get-file-info.js"; import { async } from "./utils.js"; diff --git a/packages/backend/test/mfm.ts b/packages/backend/test/mfm.ts index 81ed95848a..926bdd259d 100644 --- a/packages/backend/test/mfm.ts +++ b/packages/backend/test/mfm.ts @@ -1,8 +1,8 @@ import * as assert from "assert"; import * as mfm from "mfm-js"; -import { fromHtml } from "../src/mfm/from-html.js"; import { toHtml } from "../src/mfm/to-html.js"; +import { fromHtml } from "../src/mfm/from-html.js"; describe("toHtml", () => { it("br", () => { diff --git a/packages/backend/test/mute.ts b/packages/backend/test/mute.ts index 831c2c1ee4..c511628342 100644 --- a/packages/backend/test/mute.ts +++ b/packages/backend/test/mute.ts @@ -4,12 +4,12 @@ import * as assert from "assert"; import * as childProcess from "child_process"; import { async, + signup, + request, post, react, - request, - shutdownServer, - signup, startServer, + shutdownServer, waitFire, } from "./utils.js"; diff --git a/packages/backend/test/note.ts b/packages/backend/test/note.ts index b78138b1ed..3af4b88d87 100644 --- a/packages/backend/test/note.ts +++ b/packages/backend/test/note.ts @@ -4,15 +4,15 @@ import * as assert from "assert"; import * as childProcess from "child_process"; import { Note } from "../src/models/entities/note.js"; import { - api, async, - initTestDb, - post, - request, - shutdownServer, signup, - startServer, + request, + post, uploadUrl, + startServer, + shutdownServer, + initTestDb, + api, } from "./utils.js"; describe("Note", () => { diff --git a/packages/backend/test/streaming.ts b/packages/backend/test/streaming.ts index 37171f4184..3292c66e17 100644 --- a/packages/backend/test/streaming.ts +++ b/packages/backend/test/streaming.ts @@ -4,13 +4,13 @@ import * as assert from "assert"; import * as childProcess from "child_process"; import { Following } from "../src/models/entities/following.js"; import { - api, connectStream, - initTestDb, - post, - shutdownServer, signup, + api, + post, startServer, + shutdownServer, + initTestDb, waitFire, } from "./utils.js"; diff --git a/packages/backend/test/thread-mute.ts b/packages/backend/test/thread-mute.ts index 88483b51c8..9b3bb8dfe4 100644 --- a/packages/backend/test/thread-mute.ts +++ b/packages/backend/test/thread-mute.ts @@ -4,13 +4,13 @@ import * as assert from "assert"; import * as childProcess from "child_process"; import { async, - connectStream, + signup, + request, post, react, - request, - shutdownServer, - signup, + connectStream, startServer, + shutdownServer, } from "./utils.js"; describe("Note thread mute", () => { diff --git a/packages/backend/test/user-notes.ts b/packages/backend/test/user-notes.ts index cdf5e7dbbb..86a541c101 100644 --- a/packages/backend/test/user-notes.ts +++ b/packages/backend/test/user-notes.ts @@ -4,12 +4,12 @@ import * as assert from "assert"; import * as childProcess from "child_process"; import { async, - post, - request, - shutdownServer, signup, - startServer, + request, + post, uploadUrl, + startServer, + shutdownServer, } from "./utils.js"; describe("users/notes", () => { diff --git a/packages/backend/test/utils.ts b/packages/backend/test/utils.ts index 3c8449fb58..ff2dd79de9 100644 --- a/packages/backend/test/utils.ts +++ b/packages/backend/test/utils.ts @@ -1,18 +1,18 @@ -import * as childProcess from "child_process"; -import { SIGKILL } from "constants"; import * as fs from "node:fs"; -import * as http from "node:http"; import * as path from "node:path"; -import { dirname } from "node:path"; import { fileURLToPath } from "node:url"; -import * as firefish from "firefish-js"; -import FormData from "form-data"; -import got from "got"; -import fetch from "node-fetch"; -import { DataSource } from "typeorm"; +import { dirname } from "node:path"; +import * as childProcess from "child_process"; +import * as http from "node:http"; +import { SIGKILL } from "constants"; import WebSocket from "ws"; +import * as firefish from "firefish-js"; +import fetch from "node-fetch"; +import FormData from "form-data"; +import { DataSource } from "typeorm"; import loadConfig from "../src/config/load.js"; import { entities } from "../src/db/postgre.js"; +import got from "got"; const _filename = fileURLToPath(import.meta.url); const _dirname = dirname(_filename); diff --git a/packages/client/package.json b/packages/client/package.json index 022bde257f..890aba4ab8 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -20,8 +20,8 @@ "@syuilo/aiscript": "0.11.1", "@types/escape-regexp": "0.0.1", "@types/glob": "8.1.0", - "@types/gulp": "4.0.16", - "@types/gulp-rename": "2.0.4", + "@types/gulp": "4.0.13", + "@types/gulp-rename": "2.0.2", "@types/katex": "0.16.2", "@types/matter-js": "0.19.0", "@types/punycode": "2.1.0", diff --git a/packages/client/src/account.ts b/packages/client/src/account.ts index fd5b25514e..761ebe5e00 100644 --- a/packages/client/src/account.ts +++ b/packages/client/src/account.ts @@ -1,11 +1,11 @@ +import { defineAsyncComponent, reactive } from "vue"; +import type * as firefish from "firefish-js"; +import { i18n } from "./i18n"; +import { del, get, set } from "@/scripts/idb-proxy"; import { apiUrl } from "@/config"; import { alert, api, popup, popupMenu, waiting } from "@/os"; -import icon from "@/scripts/icon"; -import { del, get, set } from "@/scripts/idb-proxy"; import { reloadChannel, unisonReload } from "@/scripts/unison-reload"; -import type * as firefish from "firefish-js"; -import { defineAsyncComponent, reactive } from "vue"; -import { i18n } from "./i18n"; +import icon from "@/scripts/icon"; // TODO: 他のタブと永続化されたstateを同期 diff --git a/packages/client/src/components/MkDialog.vue b/packages/client/src/components/MkDialog.vue index 79439709ea..216fb4500a 100644 --- a/packages/client/src/components/MkDialog.vue +++ b/packages/client/src/components/MkDialog.vue @@ -19,10 +19,7 @@ ></i> <i v-else-if="type === 'error'" - :class="[ - $style.iconInner, - iconClass('ph-circle-wavy-warning'), - ]" + :class="[$style.iconInner, iconClass('ph-circle-wavy-warning')]" ></i> <i v-else-if="type === 'warning'" diff --git a/packages/client/src/components/MkWaitingDialog.vue b/packages/client/src/components/MkWaitingDialog.vue index 01701755dd..b5732c951d 100644 --- a/packages/client/src/components/MkWaitingDialog.vue +++ b/packages/client/src/components/MkWaitingDialog.vue @@ -31,7 +31,7 @@ <script lang="ts" setup> import { shallowRef, watch } from "vue"; import MkModal from "@/components/MkModal.vue"; -import iconClass from "@/scripts/icon"; +import iconClass from "@/scripts/icon" const modal = shallowRef<InstanceType<typeof MkModal>>(); diff --git a/packages/client/src/i18n.ts b/packages/client/src/i18n.ts index 31a6686f1a..5b0a7f9ed8 100644 --- a/packages/client/src/i18n.ts +++ b/packages/client/src/i18n.ts @@ -1,6 +1,6 @@ +import { markRaw } from "vue"; import { locale } from "@/config"; import { I18n } from "@/scripts/i18n"; -import { markRaw } from "vue"; export const i18n = markRaw(new I18n(locale)); diff --git a/packages/client/src/init.ts b/packages/client/src/init.ts index 2888e5ebf2..ddcdfc207c 100644 --- a/packages/client/src/init.ts +++ b/packages/client/src/init.ts @@ -7,11 +7,11 @@ import "vite/modulepreload-polyfill"; import "@/style.scss"; -import "@phosphor-icons/web/bold"; -import "@phosphor-icons/web/duotone"; import "@phosphor-icons/web/fill"; -import "@phosphor-icons/web/light"; +import "@phosphor-icons/web/bold"; import "@phosphor-icons/web/regular"; +import "@phosphor-icons/web/light"; +import "@phosphor-icons/web/duotone"; // #region account indexedDB migration import { set } from "@/scripts/idb-proxy"; @@ -23,7 +23,6 @@ if (accounts) { } // #endregion -import { compareVersions } from "compare-versions"; import { computed, createApp, @@ -32,28 +31,29 @@ import { version as vueVersion, watch, } from "vue"; +import { compareVersions } from "compare-versions"; -import { $i, login, refreshAccount, signout, updateAccount } from "@/account"; +import widgets from "@/widgets"; +import directives from "@/directives"; import components from "@/components"; import { host, lang, ui, version } from "@/config"; -import directives from "@/directives"; -import { i18n } from "@/i18n"; -import { fetchInstance, instance } from "@/instance"; -import { alert, api, confirm, popup, post, toast } from "@/os"; -import { deviceKind } from "@/scripts/device-kind"; -import { getAccountFromId } from "@/scripts/get-account-from-id"; -import { makeHotkey } from "@/scripts/hotkey"; -import { initializeSw } from "@/scripts/initialize-sw"; -import { isDeviceDarkmode } from "@/scripts/is-device-darkmode"; -import { getUrlWithoutLoginId } from "@/scripts/login-id"; -import { reactionPicker } from "@/scripts/reaction-picker"; -import { search } from "@/scripts/search"; -import * as sound from "@/scripts/sound"; import { applyTheme } from "@/scripts/theme"; -import { reloadChannel } from "@/scripts/unison-reload"; -import { ColdDeviceStorage, defaultStore } from "@/store"; +import { isDeviceDarkmode } from "@/scripts/is-device-darkmode"; +import { i18n } from "@/i18n"; +import { alert, api, confirm, popup, post, toast } from "@/os"; import { stream } from "@/stream"; -import widgets from "@/widgets"; +import * as sound from "@/scripts/sound"; +import { $i, login, refreshAccount, signout, updateAccount } from "@/account"; +import { ColdDeviceStorage, defaultStore } from "@/store"; +import { fetchInstance, instance } from "@/instance"; +import { makeHotkey } from "@/scripts/hotkey"; +import { search } from "@/scripts/search"; +import { deviceKind } from "@/scripts/device-kind"; +import { initializeSw } from "@/scripts/initialize-sw"; +import { reloadChannel } from "@/scripts/unison-reload"; +import { reactionPicker } from "@/scripts/reaction-picker"; +import { getUrlWithoutLoginId } from "@/scripts/login-id"; +import { getAccountFromId } from "@/scripts/get-account-from-id"; function checkForSplash() { const splash = document.getElementById("splash"); diff --git a/packages/client/src/instance.ts b/packages/client/src/instance.ts index 493baeb94b..783cb01ad6 100644 --- a/packages/client/src/instance.ts +++ b/packages/client/src/instance.ts @@ -1,5 +1,5 @@ -import type * as firefish from "firefish-js"; import { computed, reactive } from "vue"; +import type * as firefish from "firefish-js"; import { api } from "./os"; // TODO: 他のタブと永続化されたstateを同期 diff --git a/packages/client/src/navbar.ts b/packages/client/src/navbar.ts index a917a55874..c2ab1d4d1f 100644 --- a/packages/client/src/navbar.ts +++ b/packages/client/src/navbar.ts @@ -1,11 +1,11 @@ -import { ui } from "@/config"; -import { i18n } from "@/i18n"; -import * as os from "@/os"; -import icon from "@/scripts/icon"; -import { search } from "@/scripts/search"; -import { unisonReload } from "@/scripts/unison-reload"; import { computed, reactive } from "vue"; import { $i } from "./account"; +import { search } from "@/scripts/search"; +import * as os from "@/os"; +import { i18n } from "@/i18n"; +import { ui } from "@/config"; +import { unisonReload } from "@/scripts/unison-reload"; +import icon from "@/scripts/icon"; export const navbarItemDef = reactive({ notifications: { diff --git a/packages/client/src/nirax.ts b/packages/client/src/nirax.ts index 9f5477ea21..43e770ec33 100644 --- a/packages/client/src/nirax.ts +++ b/packages/client/src/nirax.ts @@ -1,10 +1,10 @@ // NIRAX --- A lightweight router -import { pleaseLogin } from "@/scripts/please-login"; -import { safeURIDecode } from "@/scripts/safe-uri-decode"; import { EventEmitter } from "eventemitter3"; import type { Component, ShallowRef } from "vue"; import { Ref, ref, shallowRef } from "vue"; +import { pleaseLogin } from "@/scripts/please-login"; +import { safeURIDecode } from "@/scripts/safe-uri-decode"; interface RouteDef { path: string; @@ -112,7 +112,7 @@ export class Router extends EventEmitter<{ let parts = [..._parts]; const props = new Map<string, string>(); - for (const p of parsePath(route.path)) { + pathMatchLoop: for (const p of parsePath(route.path)) { if (typeof p === "string") { if (p === parts[0]) { parts.shift(); @@ -128,7 +128,7 @@ export class Router extends EventEmitter<{ props.set(p.name, safeURIDecode(parts.join("/"))); parts = []; } - break; + break pathMatchLoop; } else { if (p.startsWith) { if (parts[0] == null || !parts[0].startsWith(p.startsWith)) @@ -159,7 +159,7 @@ export class Router extends EventEmitter<{ child, }; } else { - continue; + continue forEachRouteLoop; } } diff --git a/packages/client/src/os.ts b/packages/client/src/os.ts index a0f3d6e986..7a78e95530 100644 --- a/packages/client/src/os.ts +++ b/packages/client/src/os.ts @@ -1,18 +1,18 @@ // TODO: なんでもかんでもos.tsに突っ込むのやめたいのでよしなに分割する -import { $i } from "@/account"; -import MkDialog from "@/components/MkDialog.vue"; -import MkPostFormDialog from "@/components/MkPostFormDialog.vue"; -import MkToast from "@/components/MkToast.vue"; -import MkWaitingDialog from "@/components/MkWaitingDialog.vue"; -import { url, apiUrl } from "@/config"; -import type { MenuItem } from "@/types/menu"; -import { EventEmitter } from "eventemitter3"; -import * as firefish from "firefish-js"; -import insertTextAtCursor from "insert-text-at-cursor"; import type { Component, Ref } from "vue"; import { defineAsyncComponent, markRaw, ref } from "vue"; +import { EventEmitter } from "eventemitter3"; +import insertTextAtCursor from "insert-text-at-cursor"; +import * as firefish from "firefish-js"; import { i18n } from "./i18n"; +import { apiUrl, url } from "@/config"; +import MkPostFormDialog from "@/components/MkPostFormDialog.vue"; +import MkWaitingDialog from "@/components/MkWaitingDialog.vue"; +import MkToast from "@/components/MkToast.vue"; +import MkDialog from "@/components/MkDialog.vue"; +import type { MenuItem } from "@/types/menu"; +import { $i } from "@/account"; export const pendingApiRequestsCount = ref(0); diff --git a/packages/client/src/pages/admin/_header_.vue b/packages/client/src/pages/admin/_header_.vue index 7b0b627087..6d2506a177 100644 --- a/packages/client/src/pages/admin/_header_.vue +++ b/packages/client/src/pages/admin/_header_.vue @@ -2,11 +2,7 @@ <div ref="el" class="fdidabkc" :style="{ background: bg }" @click="onClick"> <template v-if="metadata"> <div class="titleContainer" @click="showTabsPopup"> - <i - v-if="metadata.icon" - class="icon" - :class="icon(metadata.icon)" - ></i> + <i v-if="metadata.icon" class="icon" :class="icon(metadata.icon)"></i> <div class="title"> <div class="title">{{ metadata.title }}</div> @@ -67,7 +63,7 @@ import { scrollToTop } from "@/scripts/scroll"; import MkButton from "@/components/MkButton.vue"; import { globalEvents } from "@/events"; import { injectPageMetadata } from "@/scripts/page-metadata"; -import icon from "@/scripts/icon"; +import icon from "@/scripts/icon" interface Tab { key?: string | null; diff --git a/packages/client/src/plugin.ts b/packages/client/src/plugin.ts index 0c0f84012a..8e964ab3a2 100644 --- a/packages/client/src/plugin.ts +++ b/packages/client/src/plugin.ts @@ -1,5 +1,8 @@ -import { inputText } from "@/os"; +import { AiScript, utils, values } from "@syuilo/aiscript"; +import { deserialize } from "@syuilo/aiscript/built/serializer"; +import { jsToVal } from "@syuilo/aiscript/built/interpreter/util"; import { createAiScriptEnv } from "@/scripts/aiscript/api"; +import { inputText } from "@/os"; import { noteActions, notePostInterruptors, @@ -7,9 +10,6 @@ import { postFormActions, userActions, } from "@/store"; -import { AiScript, utils, values } from "@syuilo/aiscript"; -import { jsToVal } from "@syuilo/aiscript/built/interpreter/util"; -import { deserialize } from "@syuilo/aiscript/built/serializer"; const pluginContexts = new Map<string, AiScript>(); diff --git a/packages/client/src/router.ts b/packages/client/src/router.ts index 5d9d7d752b..dd1621777e 100644 --- a/packages/client/src/router.ts +++ b/packages/client/src/router.ts @@ -1,11 +1,11 @@ -import { $i, iAmModerator } from "@/account"; -import { ui } from "@/config"; -import { Router } from "@/nirax"; -import { api } from "@/os"; -import MkError from "@/pages/_error_.vue"; -import MkLoading from "@/pages/_loading_.vue"; import type { AsyncComponentLoader } from "vue"; import { defineAsyncComponent, inject } from "vue"; +import { Router } from "@/nirax"; +import { $i, iAmModerator } from "@/account"; +import MkLoading from "@/pages/_loading_.vue"; +import MkError from "@/pages/_error_.vue"; +import { api } from "@/os"; +import { ui } from "@/config"; function getGuestTimelineStatus() { api("meta", { diff --git a/packages/client/src/scripts/autocomplete.ts b/packages/client/src/scripts/autocomplete.ts index 18e56ba38d..0d5d16f180 100644 --- a/packages/client/src/scripts/autocomplete.ts +++ b/packages/client/src/scripts/autocomplete.ts @@ -88,11 +88,7 @@ export class Autocomplete { const isHashtag = hashtagIndex !== -1; const isMfmTag = mfmTagIndex !== -1; const isEmoji = - emojiIndex !== -1 && - text - .split(/:[a-z0-9_+\-]+:/) - .pop()! - .includes(":"); + emojiIndex !== -1 && text.split(/:[a-z0-9_+\-]+:/).pop()!.includes(":"); let opened = false; diff --git a/packages/client/src/store.ts b/packages/client/src/store.ts index 48885bac62..39dd533785 100644 --- a/packages/client/src/store.ts +++ b/packages/client/src/store.ts @@ -385,11 +385,11 @@ interface Plugin { ast: any[]; } -import darkTheme from "@/themes/d-rosepine.json5"; /** * Storage for configuration information that does not need to be constantly loaded into memory (non-reactive) */ import lightTheme from "@/themes/l-rosepinedawn.json5"; +import darkTheme from "@/themes/d-rosepine.json5"; export class ColdDeviceStorage { public static default = { diff --git a/packages/client/src/stream.ts b/packages/client/src/stream.ts index e114f9f77d..6d7f890d6e 100644 --- a/packages/client/src/stream.ts +++ b/packages/client/src/stream.ts @@ -1,7 +1,7 @@ -import { $i } from "@/account"; -import { url } from "@/config"; import * as firefish from "firefish-js"; import { markRaw } from "vue"; +import { $i } from "@/account"; +import { url } from "@/config"; export const stream = markRaw( new firefish.Stream( diff --git a/packages/client/src/theme-store.ts b/packages/client/src/theme-store.ts index 81925d3656..3dedc045e4 100644 --- a/packages/client/src/theme-store.ts +++ b/packages/client/src/theme-store.ts @@ -1,6 +1,6 @@ -import { $i } from "@/account"; -import { api } from "@/os"; import type { Theme } from "./scripts/theme"; +import { api } from "@/os"; +import { $i } from "@/account"; const lsCacheKey = $i ? `themes:${$i.id}` : ""; diff --git a/packages/client/tsconfig.json b/packages/client/tsconfig.json index f9b6e6560e..2d292dbfb0 100644 --- a/packages/client/tsconfig.json +++ b/packages/client/tsconfig.json @@ -32,9 +32,15 @@ "types": [ "vite/client", ], - "lib": ["esnext", "dom"], + "lib": [ + "esnext", + "dom" + ], "jsx": "preserve" }, "compileOnSave": false, - "include": ["./**/*.ts", "./**/*.vue"] + "include": [ + "./**/*.ts", + "./**/*.vue" + ] } diff --git a/packages/firefish-js/src/api.types.ts b/packages/firefish-js/src/api.types.ts index c2344991d8..626bdaad02 100644 --- a/packages/firefish-js/src/api.types.ts +++ b/packages/firefish-js/src/api.types.ts @@ -11,30 +11,30 @@ import { DetailedInstanceMetadata, DriveFile, DriveFolder, - FollowRequest, Following, FollowingFolloweePopulated, FollowingFollowerPopulated, + FollowRequest, GalleryPost, Instance, InstanceMetadata, LiteInstanceMetadata, MeDetailed, - MessagingMessage, Note, NoteFavorite, - NoteReaction, - Notification, OriginType, Page, ServerInfo, - Signin, Stats, User, UserDetailed, UserGroup, UserList, UserSorting, + Notification, + NoteReaction, + Signin, + MessagingMessage, } from "./entities"; type TODO = Record<string, any> | null; diff --git a/packages/firefish-js/src/index.ts b/packages/firefish-js/src/index.ts index c0212f8501..128ed8c535 100644 --- a/packages/firefish-js/src/index.ts +++ b/packages/firefish-js/src/index.ts @@ -1,8 +1,8 @@ -import { Acct } from "./acct"; import { Endpoints } from "./api.types"; -import * as consts from "./consts"; import Stream, { Connection } from "./streaming"; import { Channels } from "./streaming.types"; +import { Acct } from "./acct"; +import * as consts from "./consts"; export { Endpoints, Stream, Connection as ChannelConnection, Channels, Acct }; diff --git a/packages/firefish-js/src/streaming.ts b/packages/firefish-js/src/streaming.ts index b3c2819d4f..4697acabd7 100644 --- a/packages/firefish-js/src/streaming.ts +++ b/packages/firefish-js/src/streaming.ts @@ -27,9 +27,9 @@ export function urlQuery( const params = Object.entries(obj) .filter(([, v]) => (Array.isArray(v) ? v.length : v !== undefined)) .reduce( - // biome-ignore lint/suspicious/noAssignInExpressions: <Used for key assigning> - // biome-ignore lint/style/noNonNullAssertion: <> - // biome-ignore lint/style/noCommaOperator: <> + // rome-ignore lint/suspicious/noAssignInExpressions: <Used for key assigning> + // rome-ignore lint/style/noNonNullAssertion: <> + // rome-ignore lint/style/noCommaOperator: <> (a, [k, v]) => ((a[k] = v!), a), {} as Record<string, string | number | boolean>, ); diff --git a/packages/megalodon/package.json b/packages/megalodon/package.json index 33043f0604..3403b94b47 100644 --- a/packages/megalodon/package.json +++ b/packages/megalodon/package.json @@ -5,9 +5,9 @@ "typings": "./lib/src/index.d.ts", "scripts": { "build": "tsc -p ./", - "build:debug": "pnpm run build", + "build:debug": "pnpm run build", "lint": "pnpm biome check **/*.ts --apply", - "format": "pnpm biome format --write src/**/*.ts", + "format": "pnpm biome format --write src/**/*.ts", "doc": "typedoc --out ../docs ./src", "test": "NODE_ENV=test jest -u --maxWorkers=3" }, @@ -37,7 +37,6 @@ "dependencies": { "@types/oauth": "^0.9.0", "@types/ws": "^8.5.4", - "async-lock": "1.4.0", "axios": "1.2.2", "dayjs": "^1.11.7", "form-data": "^4.0.0", @@ -48,19 +47,20 @@ "socks-proxy-agent": "^7.0.0", "typescript": "4.9.4", "uuid": "^9.0.0", - "ws": "8.12.0" + "ws": "8.12.0", + "async-lock": "1.4.0" }, "devDependencies": { - "@types/async-lock": "1.4.0", "@types/core-js": "^2.5.0", "@types/form-data": "^2.5.0", "@types/jest": "^29.4.0", - "@types/node": "20.8.7", "@types/object-assign-deep": "^0.4.0", "@types/parse-link-header": "^2.0.0", "@types/uuid": "^9.0.0", + "@types/node": "18.11.18", "@typescript-eslint/eslint-plugin": "^5.49.0", "@typescript-eslint/parser": "^5.49.0", + "@types/async-lock": "1.4.0", "eslint": "^8.32.0", "eslint-config-prettier": "^8.6.0", "eslint-config-standard": "^16.0.3", diff --git a/packages/megalodon/src/index.ts b/packages/megalodon/src/index.ts index c205988721..758d3a46ad 100644 --- a/packages/megalodon/src/index.ts +++ b/packages/megalodon/src/index.ts @@ -1,17 +1,17 @@ -import { RequestCanceledError, isCancel } from "./cancel"; -import Converter from "./converter"; -import Entity from "./entity"; -import FilterContext from "./filter_context"; +import Response from "./response"; +import OAuth from "./oauth"; +import { isCancel, RequestCanceledError } from "./cancel"; +import { ProxyConfig } from "./proxy_config"; import generator, { + detector, MegalodonInterface, WebSocketInterface, - detector, } from "./megalodon"; import Misskey from "./misskey"; +import Entity from "./entity"; import NotificationType from "./notification"; -import OAuth from "./oauth"; -import { ProxyConfig } from "./proxy_config"; -import Response from "./response"; +import FilterContext from "./filter_context"; +import Converter from "./converter"; export { Response, diff --git a/packages/megalodon/src/megalodon.ts b/packages/megalodon/src/megalodon.ts index 0b760fe87d..33a5790f67 100644 --- a/packages/megalodon/src/megalodon.ts +++ b/packages/megalodon/src/megalodon.ts @@ -1,10 +1,10 @@ -import axios, { AxiosRequestConfig } from "axios"; -import { DEFAULT_UA } from "./default"; -import Entity from "./entity"; -import Misskey from "./misskey"; +import Response from "./response"; import OAuth from "./oauth"; import proxyAgent, { ProxyConfig } from "./proxy_config"; -import Response from "./response"; +import Entity from "./entity"; +import axios, { AxiosRequestConfig } from "axios"; +import Misskey from "./misskey"; +import { DEFAULT_UA } from "./default"; export interface WebSocketInterface { start(): void; diff --git a/packages/megalodon/src/misskey.ts b/packages/megalodon/src/misskey.ts index 1c2c2ad6db..25922a2ffc 100644 --- a/packages/megalodon/src/misskey.ts +++ b/packages/megalodon/src/misskey.ts @@ -1,22 +1,22 @@ -import AsyncLock from "async-lock"; import FormData from "form-data"; +import AsyncLock from "async-lock"; -import fs from "node:fs"; -import MegalodonEntity from "@/entity"; +import MisskeyAPI from "./misskey/api_client"; import { DEFAULT_UA } from "./default"; +import { ProxyConfig } from "./proxy_config"; +import OAuth from "./oauth"; +import Response from "./response"; import Entity from "./entity"; import { - ArgumentError, MegalodonInterface, - NoImplementedError, - UnexpectedError, WebSocketInterface, + NoImplementedError, + ArgumentError, + UnexpectedError, } from "./megalodon"; -import MisskeyAPI from "./misskey/api_client"; +import MegalodonEntity from "@/entity"; +import fs from "node:fs"; import MisskeyNotificationType from "./misskey/notification"; -import OAuth from "./oauth"; -import { ProxyConfig } from "./proxy_config"; -import Response from "./response"; type AccountCache = { locks: AsyncLock; diff --git a/packages/sw/tsconfig.json b/packages/sw/tsconfig.json index cc5e041d13..fad2ae5679 100644 --- a/packages/sw/tsconfig.json +++ b/packages/sw/tsconfig.json @@ -27,8 +27,13 @@ "node_modules/@types", "@types", ], - "lib": ["esnext", "webworker"] + "lib": [ + "esnext", + "webworker" + ] }, "compileOnSave": false, - "include": ["./**/*.ts", "./**/*.d.ts", "./**/*.tsx", "./**/*.vue"] + "include": [ + "./**/*.ts", "./**/*.d.ts", "./**/*.tsx", "./**/*.vue" + ] } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2823e23be3..80ec109348 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -31,29 +31,29 @@ importers: version: 3.0.5 devDependencies: '@biomejs/biome': - specifier: 1.3.0 - version: 1.3.0 + specifier: 1.0.0 + version: 1.0.0 '@biomejs/cli-darwin-arm64': - specifier: ^1.3.0 - version: 1.3.0 + specifier: ^1.0.0 + version: 1.2.2 '@biomejs/cli-darwin-x64': - specifier: ^1.3.0 - version: 1.3.0 + specifier: ^1.0.0 + version: 1.2.2 '@biomejs/cli-linux-arm64': - specifier: ^1.3.0 - version: 1.3.0 + specifier: ^1.0.0 + version: 1.2.2 '@biomejs/cli-linux-x64': - specifier: ^1.3.0 - version: 1.3.0 + specifier: ^1.0.0 + version: 1.2.2 '@types/gulp': - specifier: 4.0.16 - version: 4.0.16 + specifier: 4.0.13 + version: 4.0.13 '@types/gulp-rename': - specifier: 2.0.4 - version: 2.0.4 + specifier: 2.0.2 + version: 2.0.2 '@types/node': - specifier: 20.8.7 - version: 20.8.7 + specifier: 20.5.8 + version: 20.5.8 add: specifier: 2.0.6 version: 2.0.6 @@ -507,8 +507,8 @@ importers: specifier: 9.1.1 version: 9.1.1 '@types/node': - specifier: 20.8.7 - version: 20.8.7 + specifier: 18.11.18 + version: 18.11.18 '@types/node-fetch': specifier: 3.0.3 version: 3.0.3 @@ -601,7 +601,7 @@ importers: version: 9.4.4(typescript@5.1.6)(webpack@5.88.2) ts-node: specifier: 10.9.1 - version: 10.9.1(@swc/core@1.3.78)(@types/node@20.8.7)(typescript@5.1.6) + version: 10.9.1(@swc/core@1.3.78)(@types/node@18.11.18)(typescript@5.1.6) tsconfig-paths: specifier: 4.2.0 version: 4.2.0 @@ -657,11 +657,11 @@ importers: specifier: 8.1.0 version: 8.1.0 '@types/gulp': - specifier: 4.0.16 - version: 4.0.16 + specifier: 4.0.13 + version: 4.0.13 '@types/gulp-rename': - specifier: 2.0.4 - version: 2.0.4 + specifier: 2.0.2 + version: 2.0.2 '@types/katex': specifier: 0.16.2 version: 0.16.2 @@ -871,7 +871,7 @@ importers: version: 1.8.1 vite: specifier: 4.4.9 - version: 4.4.9(@types/node@20.8.7)(sass@1.66.1) + version: 4.4.9(@types/node@20.5.8)(sass@1.66.1) vite-plugin-compression: specifier: ^0.5.1 version: 0.5.1(vite@4.4.9) @@ -906,7 +906,7 @@ importers: devDependencies: '@swc/cli': specifier: ^0.1.62 - version: 0.1.62(@swc/core@1.3.78)(chokidar@3.3.1) + version: 0.1.62(@swc/core@1.3.78) '@swc/core': specifier: 1.3.78 version: 1.3.78 @@ -1002,8 +1002,8 @@ importers: specifier: ^29.4.0 version: 29.5.6 '@types/node': - specifier: 20.8.7 - version: 20.8.7 + specifier: 18.11.18 + version: 18.11.18 '@types/object-assign-deep': specifier: ^0.4.0 version: 0.4.2 @@ -1045,7 +1045,7 @@ importers: version: 5.0.0(eslint@8.46.0) jest: specifier: ^29.4.0 - version: 29.7.0(@types/node@20.8.7) + version: 29.7.0(@types/node@18.11.18) jest-worker: specifier: ^29.4.0 version: 29.7.0 @@ -1140,7 +1140,7 @@ packages: '@babel/traverse': 7.22.10 '@babel/types': 7.22.10 convert-source-map: 1.9.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -1162,7 +1162,7 @@ packages: '@babel/traverse': 7.23.2 '@babel/types': 7.23.0 convert-source-map: 2.0.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -1581,7 +1581,7 @@ packages: '@babel/helper-split-export-declaration': 7.22.6 '@babel/parser': 7.22.10 '@babel/types': 7.22.10 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -1598,7 +1598,7 @@ packages: '@babel/helper-split-export-declaration': 7.22.6 '@babel/parser': 7.23.0 '@babel/types': 7.23.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -1625,50 +1625,86 @@ packages: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: true - /@biomejs/biome@1.3.0: - resolution: {integrity: sha512-IKe8eGhiW5PfD4B3GMerS9YucvL1cqEqocVdeBi/Q8o63znqy7aLU2Xc4DAw1qg9OurWxemAp2RQorSqYHwMow==} + /@biomejs/biome@1.0.0: + resolution: {integrity: sha512-Y5CND1QZ5pF6hc4dFw5ItDutv9KJO91ksLdBIFyvHL7LmXN0UomqyyRWryvrqq+YlA8Q58cR6sqjjQuMp9E2Ig==} engines: {node: '>=14.*'} hasBin: true requiresBuild: true optionalDependencies: - '@biomejs/cli-darwin-arm64': 1.3.0 - '@biomejs/cli-darwin-x64': 1.3.0 - '@biomejs/cli-linux-arm64': 1.3.0 - '@biomejs/cli-linux-x64': 1.3.0 - '@biomejs/cli-win32-arm64': 1.3.0 - '@biomejs/cli-win32-x64': 1.3.0 + '@biomejs/cli-darwin-arm64': 1.0.0 + '@biomejs/cli-darwin-x64': 1.0.0 + '@biomejs/cli-linux-arm64': 1.0.0 + '@biomejs/cli-linux-x64': 1.0.0 + '@biomejs/cli-win32-arm64': 1.0.0 + '@biomejs/cli-win32-x64': 1.0.0 dev: true - /@biomejs/cli-darwin-arm64@1.3.0: - resolution: {integrity: sha512-O2NhR3ZXw1QknvoKAxwn76U9q/RYvLsZwbYl6+iY79gnL2SL1bljuFMUzRS5R1nNs3H/LOrHUq/JpleKjOwGUw==} + /@biomejs/cli-darwin-arm64@1.0.0: + resolution: {integrity: sha512-3v7kEyxkf3D246esH+q/lDK5wWn+xLCXZpHCuc1itAmC35GkEc6S7um6C1VD3XKXLx6N0sJR/rTmjKiRGV32Ig==} + engines: {node: '>=14.*'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@biomejs/cli-darwin-arm64@1.2.2: + resolution: {integrity: sha512-Fx1IURKhoqH6wPawtKLT6wcfMSjRRcNK8+VWau0iDOjXvNtjJpSmICbU89B7Vt/gZRwPqkfDMBkFwm6V5vFTSQ==} engines: {node: '>=14.*'} cpu: [arm64] os: [darwin] dev: true - /@biomejs/cli-darwin-x64@1.3.0: - resolution: {integrity: sha512-8rljS+4nLVuSPuPmuFp64bMZqwmGv9O/6wKoVk0kzeaVD1elSzMz+ZoTrRodbI1Hl8kItDdGf431L7S1EqRokQ==} + /@biomejs/cli-darwin-x64@1.0.0: + resolution: {integrity: sha512-uxIMt/X7TQWicjsImkqMvUUEqaFZTOJJrtEhlHl/eIaETWJmK3uAR7ihIWctpGJnN16sUgpLgwczc7FETqu/PQ==} + engines: {node: '>=14.*'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@biomejs/cli-darwin-x64@1.2.2: + resolution: {integrity: sha512-JNaAFOI/ZisnmzvcFNd73geJxaFaN2L4YsWM6cgBeKyLY/ycl9C/PBTFfEmeB1c7f5XIIal8P2cj47kLJpN5Ig==} engines: {node: '>=14.*'} cpu: [x64] os: [darwin] dev: true - /@biomejs/cli-linux-arm64@1.3.0: - resolution: {integrity: sha512-vQIEaXQf1pPJPetcd4jfM3118sG4AfZvbDuLnU/4lCUIs0XuwPYMcx2KzwXu2m0tn6J4xQsZHvNQyHpiBbp9vA==} + /@biomejs/cli-linux-arm64@1.0.0: + resolution: {integrity: sha512-kJWtu3Xr4MdHV2Yn4U+eZudAGPgv0kRCjWAyzLRewJiqE5TLPrX08imB9SU1n3+VxNO8e2JJ0tWWBHo4J+aSEg==} + engines: {node: '>=14.*'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@biomejs/cli-linux-arm64@1.2.2: + resolution: {integrity: sha512-JHXRnfhOLx8UO/Fcyn2c5pFRri0XKqRZm2wf5oH5GSfLVpckDw2X15dYGbu3nmfM/3pcAaTV46pUpjrCnaAieg==} engines: {node: '>=14.*'} cpu: [arm64] os: [linux] dev: true - /@biomejs/cli-linux-x64@1.3.0: - resolution: {integrity: sha512-ZH+PvgAZ3nr69O8Tb+MO+08k+0PhG0paWhkIaUW1AUlD7ruIpk+dlHp3DjHauSPFDZkNIxj6utwI1c5lP8hF9w==} + /@biomejs/cli-linux-x64@1.0.0: + resolution: {integrity: sha512-FK6hYZ0Lkk39eXYx1+2ZWtLkApc0RdOpcjDVM96JbvI0bxqvNnm193BPXuxh5A/fCl6N28RNUvcKnZ5LbgZ0Yw==} + engines: {node: '>=14.*'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@biomejs/cli-linux-x64@1.2.2: + resolution: {integrity: sha512-5Zr+iM7lUKsw81p9PkXRESuH2/AhRZ6RCWkgE+FSLcxMhXy/4RDR+o2YQDsJM6cWKIzOJM05vDHTGrDq7vXE4A==} engines: {node: '>=14.*'} cpu: [x64] os: [linux] dev: true - /@biomejs/cli-win32-arm64@1.3.0: - resolution: {integrity: sha512-Mfo1oWXnuOL4zWidx0A7jQSs6+uZZYZB4wuD9lBCbuoQoRNFobGEs11z/iy8XW5mucx+MW4ylTAcDAS+5/2kEw==} + /@biomejs/cli-win32-arm64@1.0.0: + resolution: {integrity: sha512-kE+OY2isEJHBodiLPMlybZckHkl3CQWsvXuJEvSxkoMhLbGDPEV3yZ/0lEph3BlxP3KP5vUO3hOFGaTvHFOuqQ==} engines: {node: '>=14.*'} cpu: [arm64] os: [win32] @@ -1676,8 +1712,8 @@ packages: dev: true optional: true - /@biomejs/cli-win32-x64@1.3.0: - resolution: {integrity: sha512-t2EPg+zeMzimBoURfj9CKeNObCZ/MbFxdQj0+K5Q+LR41fUaevG/wOrM+Swh5emRXdSBUm0qsTq3xiyv77C3Ww==} + /@biomejs/cli-win32-x64@1.0.0: + resolution: {integrity: sha512-Ko6ZsbmbScPMEnh/xz4mwDSCZIUCAEjbbbnUVApgAAL2+1Hoe7Vnhh2RiwYRqy3tHrBIMDwXkSxj0vlf1G3EHg==} engines: {node: '>=14.*'} cpu: [x64] os: [win32] @@ -2502,14 +2538,14 @@ packages: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.8.7 + '@types/node': 18.11.18 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.8.0 exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@20.8.7)(ts-node@10.9.1) + jest-config: 29.7.0(@types/node@18.11.18) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -2580,7 +2616,7 @@ packages: dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.8.7 + '@types/node': 18.11.18 jest-mock: 29.7.0 dev: true @@ -3203,6 +3239,26 @@ packages: resolution: {integrity: sha512-Uy0+khmZqUrUGm5dmMqVlnvufZRSK0FbYzVgp0UMstm+F5+W2/jnEEQyc9vo1ZR/E5ZI/B1WjjoTqBqwJL6Krw==} dev: false + /@swc/cli@0.1.62(@swc/core@1.3.78): + resolution: {integrity: sha512-kOFLjKY3XH1DWLfXL1/B5MizeNorHR8wHKEi92S/Zi9Md/AK17KSqR8MgyRJ6C1fhKHvbBCl8wboyKAFXStkYw==} + engines: {node: '>= 12.13'} + hasBin: true + peerDependencies: + '@swc/core': ^1.2.66 + chokidar: ^3.3.1 + peerDependenciesMeta: + chokidar: + optional: true + dependencies: + '@mole-inc/bin-wrapper': 8.0.1 + '@swc/core': 1.3.78 + commander: 7.2.0 + fast-glob: 3.3.1 + semver: 7.5.4 + slash: 3.0.0 + source-map: 0.7.4 + dev: true + /@swc/cli@0.1.62(@swc/core@1.3.78)(chokidar@3.3.1): resolution: {integrity: sha512-kOFLjKY3XH1DWLfXL1/B5MizeNorHR8wHKEi92S/Zi9Md/AK17KSqR8MgyRJ6C1fhKHvbBCl8wboyKAFXStkYw==} engines: {node: '>= 12.13'} @@ -3705,12 +3761,12 @@ packages: /@types/accepts@1.3.5: resolution: {integrity: sha512-jOdnI/3qTpHABjM5cx1Hc0sKsPoYCp+DP/GJRGtDlPd7fiV9oXGGIcjW/ZOxLIvjGz8MA+uMZI9metHlgqbgwQ==} dependencies: - '@types/node': 20.8.7 + '@types/node': 18.11.18 /@types/adm-zip@0.5.0: resolution: {integrity: sha512-FCJBJq9ODsQZUNURo5ILAQueuA8WJhRvuihS3ke2iI25mJlfV2LK8jG2Qj2z2AWg8U0FtWWqBHVRetceLskSaw==} dependencies: - '@types/node': 20.8.7 + '@types/node': 18.11.18 dev: true /@types/async-lock@1.4.0: @@ -3783,27 +3839,27 @@ packages: resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==} dependencies: '@types/connect': 3.4.35 - '@types/node': 20.8.7 + '@types/node': 18.11.18 /@types/cacheable-request@6.0.3: resolution: {integrity: sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==} dependencies: '@types/http-cache-semantics': 4.0.1 '@types/keyv': 3.1.4 - '@types/node': 20.8.7 + '@types/node': 18.11.18 '@types/responselike': 1.0.0 /@types/co-body@6.1.0: resolution: {integrity: sha512-3e0q2jyDAnx/DSZi0z2H0yoZ2wt5yRDZ+P7ymcMObvq0ufWRT4tsajyO+Q1VwVWiv9PRR4W3YEjEzBjeZlhF+w==} dependencies: - '@types/node': 20.8.7 + '@types/node': 18.11.18 '@types/qs': 6.9.7 dev: false /@types/connect@3.4.35: resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} dependencies: - '@types/node': 20.8.7 + '@types/node': 18.11.18 /@types/content-disposition@0.5.5: resolution: {integrity: sha512-v6LCdKfK6BwcqMo+wYW05rLS12S0ZO0Fl4w1h4aaZMD7bqT3gVUns6FvLJKGZHQmYn3SX55JWGpziwJRwVgutA==} @@ -3814,7 +3870,7 @@ packages: '@types/connect': 3.4.35 '@types/express': 4.17.17 '@types/keygrip': 1.0.2 - '@types/node': 20.8.7 + '@types/node': 18.11.18 /@types/core-js@2.5.7: resolution: {integrity: sha512-EhO4Lcd2Rs2bZvQwIDMZ1qsaZk8DpdOkQCbKpK0vt7fSjJGXrCA7EPauR/BZ7eJXks1een4FX7JtlhS136fklA==} @@ -3864,7 +3920,7 @@ packages: /@types/express-serve-static-core@4.17.35: resolution: {integrity: sha512-wALWQwrgiB2AWTT91CB62b6Yt0sNHpznUXeZEcnPU3DRdlDIz74x8Qg1UUYKSVFi+va5vKOLYRBI1bRKiLLKIg==} dependencies: - '@types/node': 20.8.7 + '@types/node': 18.11.18 '@types/qs': 6.9.7 '@types/range-parser': 1.2.4 '@types/send': 0.17.1 @@ -3880,7 +3936,7 @@ packages: /@types/fluent-ffmpeg@2.1.21: resolution: {integrity: sha512-+n3dy/Tegt6n+YwGZUiGq6i8Jrnt8+MoyPiW1L6J5EWUl7GSt18a/VyReecfCsvTTNBXNMIKOMHDstiQM8nJLA==} dependencies: - '@types/node': 20.8.7 + '@types/node': 18.11.18 dev: true /@types/form-data@2.5.0: @@ -3893,15 +3949,15 @@ packages: /@types/formidable@2.0.6: resolution: {integrity: sha512-L4HcrA05IgQyNYJj6kItuIkXrInJvsXTPC5B1i64FggWKKqSL+4hgt7asiSNva75AoLQjq29oPxFfU4GAQ6Z2w==} dependencies: - '@types/node': 20.8.7 + '@types/node': 18.11.18 dev: false - /@types/glob-stream@8.0.1: - resolution: {integrity: sha512-sR8FnsG9sEkjKasMSYbRmzaSVYmY76ui0t+T+9BE2Wr/ansAKfNsu+xT0JvZL+7DDQDO/MPTg6g8hfNdhYWT2g==} + /@types/glob-stream@8.0.0: + resolution: {integrity: sha512-fxTWwdQmX9LWSHD7ZLlv3BHR992mKcVcDnT/2v+l/QZZo7TfDdyasqlSYVzOnMGWhRbrWeWkbj/mgezFjKynhw==} dependencies: - '@types/node': 20.8.7 - '@types/picomatch': 2.3.2 - '@types/streamx': 2.9.3 + '@types/node': 20.5.8 + '@types/picomatch': 2.3.0 + '@types/streamx': 2.9.1 dev: true /@types/glob@8.1.0: @@ -3917,19 +3973,18 @@ packages: '@types/node': 20.8.7 dev: true - /@types/gulp-rename@2.0.4: - resolution: {integrity: sha512-dhhbD+PlIGmxpYiSsLsTgMsyfqmwemlM6gnM2hXzDh68knKocRDBq/CNRhbGlAZkUH/7zCbEvadxQXQJtanMPw==} + /@types/gulp-rename@2.0.2: + resolution: {integrity: sha512-CQsXqTVtAXqrPd4IbrrlJEEzRkUR3RXsyZbrVoOVqjlchDDmnyRDatAUisjpQjjCg/wjJrSiNg8T1uAbJ/7Qqg==} dependencies: - '@types/node': 20.8.7 - '@types/vinyl': 2.0.9 + '@types/node': 20.5.8 + '@types/vinyl': 2.0.7 dev: true - /@types/gulp@4.0.16: - resolution: {integrity: sha512-yY3XJjYejEzIQqLt6ZXaOZ/jynVxUe7Km33XA1/sU2zfZ2AeFDragIcT+i53a+j7eoWPgVeikhFvtC0gCteBdA==} + /@types/gulp@4.0.13: + resolution: {integrity: sha512-Ms20Q2tZ3MpThZGn4Ag6e7ifz/oQJFxsuiopqz5oHmhE6q2ohnELgafi5K/pKX/4ntlpidS61v/TXAguYsVcaA==} dependencies: - '@types/node': 20.8.7 - '@types/undertaker': 1.2.10 - '@types/vinyl-fs': 3.0.4 + '@types/undertaker': 1.2.8 + '@types/vinyl-fs': 3.0.2 chokidar: 3.5.3 dev: true @@ -3999,7 +4054,7 @@ packages: /@types/keyv@3.1.4: resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} dependencies: - '@types/node': 20.8.7 + '@types/node': 18.11.18 /@types/koa-bodyparser@4.3.10: resolution: {integrity: sha512-6ae05pjhmrmGhUR8GYD5qr5p9LTEMEGfGXCsK8VaSL+totwigm8+H/7MHW7K4854CMeuwRAubT8qcc/EagaeIA==} @@ -4115,7 +4170,7 @@ packages: '@types/http-errors': 2.0.1 '@types/keygrip': 1.0.2 '@types/koa-compose': 3.2.5 - '@types/node': 20.8.7 + '@types/node': 18.11.18 /@types/koa__cors@3.3.0: resolution: {integrity: sha512-FUN8YxcBakIs+walVe3+HcNP+Bxd0SB8BJHBWkglZ5C1XQWljlKcEFDG/dPiCIqwVCUbc5X0nYDlH62uEhdHMA==} @@ -4170,13 +4225,13 @@ packages: /@types/needle@3.2.0: resolution: {integrity: sha512-6XzvzEyJ2ozFNfPajFmqH9JOt0Hp+9TawaYpJT59iIP/zR0U37cfWCRwosyIeEBBZBi021Osq4jGAD3AOju5fg==} dependencies: - '@types/node': 20.8.7 + '@types/node': 18.11.18 dev: true /@types/node-fetch@2.6.4: resolution: {integrity: sha512-1ZX9fcN4Rvkvgv4E6PAY5WXUFWFcRWxZa3EW83UjycOB9ljJCedb2CupIP4RZMEwF/M3eTcCihbBRgwtGbg5Rg==} dependencies: - '@types/node': 20.8.7 + '@types/node': 20.5.8 form-data: 3.0.1 dev: false @@ -4190,19 +4245,22 @@ packages: /@types/node@14.18.63: resolution: {integrity: sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ==} + /@types/node@18.11.18: + resolution: {integrity: sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==} + /@types/node@20.5.8: resolution: {integrity: sha512-eajsR9aeljqNhK028VG0Wuw+OaY5LLxYmxeoXynIoE6jannr9/Ucd1LL0hSSoafk5LTYG+FfqsyGt81Q6Zkybw==} - dev: true /@types/node@20.8.7: resolution: {integrity: sha512-21TKHHh3eUHIi2MloeptJWALuCu5H7HQTdTrWIFReA8ad+aggoX+lRes3ex7/FtpC+sVUpFMQ+QTfYr74mruiQ==} dependencies: undici-types: 5.25.3 + dev: true /@types/nodemailer@6.4.9: resolution: {integrity: sha512-XYG8Gv+sHjaOtUpiuytahMy2mM3rectgroNbs6R3djZEKmPNiIJwe9KqOJBGzKKnNZNKvnuvmugBgpq3w/S0ig==} dependencies: - '@types/node': 20.8.7 + '@types/node': 18.11.18 dev: true /@types/normalize-package-data@2.4.3: @@ -4212,7 +4270,7 @@ packages: /@types/oauth@0.9.1: resolution: {integrity: sha512-a1iY62/a3yhZ7qH7cNUsxoI3U/0Fe9+RnuFrpTKr+0WVOzbKlSLojShCKe20aOD1Sppv+i8Zlq0pLDuTJnwS4A==} dependencies: - '@types/node': 20.8.7 + '@types/node': 18.11.18 /@types/object-assign-deep@0.4.2: resolution: {integrity: sha512-iF6qYKjYdg/kFg3AEM/msyh1+U4zZW043d2TnCS9fwib00nc8Asj+38LgIpkO/UpfUMRgJ0m/tHATwU2F8Bfow==} @@ -4230,15 +4288,15 @@ packages: resolution: {integrity: sha512-RKU5SIF0oyM2ZI0ubw66FkM/0RJUv/r84I7vJcXkcICcfeOpd1WXfpcqkFJPaWli5z3YdxMsfWojyU5uofT6sA==} dev: true - /@types/picomatch@2.3.2: - resolution: {integrity: sha512-I+BytjxOlNYA285zP/3dVCRcE+OAvgHQZQt26MP7T7JbZ9DM/3W2WfViU1XuLypCzAx8PTC+MlYO3WLqjTyZ3g==} + /@types/picomatch@2.3.0: + resolution: {integrity: sha512-O397rnSS9iQI4OirieAtsDqvCj4+3eY1J+EPdNTKuHuRWIfUoGyzX294o8C4KJYaLqgSrd2o60c5EqCU8Zv02g==} dev: true /@types/probe-image-size@7.2.0: resolution: {integrity: sha512-R5H3vw62gHNHrn+JGZbKejb+Z2D/6E5UNVlhCzIaBBLroMQMOFqy5Pap2gM+ZZHdqBtVU0/cx/M6to+mOJcoew==} dependencies: '@types/needle': 3.2.0 - '@types/node': 20.8.7 + '@types/node': 18.11.18 dev: true /@types/pug@2.0.6: @@ -4252,7 +4310,7 @@ packages: /@types/qrcode@1.5.1: resolution: {integrity: sha512-HpSN675K0PmxIDRpjMI3Mc2GiKo3dNu+X/F5SoItiaDS1lVfgC6Wac1c5lQDfKWbTJUSHWiHKzpJpBZG7k9gaA==} dependencies: - '@types/node': 20.8.7 + '@types/node': 18.11.18 dev: true /@types/qs@6.9.7: @@ -4283,7 +4341,7 @@ packages: /@types/responselike@1.0.0: resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==} dependencies: - '@types/node': 20.8.7 + '@types/node': 18.11.18 /@types/sanitize-html@2.9.0: resolution: {integrity: sha512-4fP/kEcKNj2u39IzrxWYuf/FnCCwwQCpif6wwY6ROUS1EPRIfWJjGkY3HIowY1EX/VbX5e86yq8AAE7UPMgATg==} @@ -4307,14 +4365,14 @@ packages: resolution: {integrity: sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==} dependencies: '@types/mime': 1.3.2 - '@types/node': 20.8.7 + '@types/node': 18.11.18 /@types/serve-static@1.15.2: resolution: {integrity: sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw==} dependencies: '@types/http-errors': 2.0.1 '@types/mime': 3.0.1 - '@types/node': 20.8.7 + '@types/node': 18.11.18 /@types/sinonjs__fake-timers@8.1.1: resolution: {integrity: sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==} @@ -4336,10 +4394,10 @@ packages: resolution: {integrity: sha512-g7CK9nHdwjK2n0ymT2CW698FuWJRIx+RP6embAzZ2Qi8/ilIrA1Imt2LVSeHUzKvpoi7BhmmQcXz95eS0f2JXw==} dev: true - /@types/streamx@2.9.3: - resolution: {integrity: sha512-D2eONMpz0JX15eA4pxylNVzq4kyqRRGqsMIxIjbfjDGaHMaoCvgFWn2+EkrL8/gODCvbNcPIVp7Eecr/+PX61g==} + /@types/streamx@2.9.1: + resolution: {integrity: sha512-9bywzhouyedmci7WCIPFwJ8zASDnxt2gaVUy52X0p0Tt085IJSAEP0L6j4SSNeDMSLzpYu6cPz0GrJZ7kPJ6Bg==} dependencies: - '@types/node': 20.8.7 + '@types/node': 20.5.8 dev: true /@types/throttle-debounce@5.0.0: @@ -4354,15 +4412,15 @@ packages: resolution: {integrity: sha512-dDZH/tXzwjutnuk4UacGgFRwV+JSLaXL1ikvidfJprkb7L9Nx1njcRHHmi3Dsvt7pgqqTEeucQuOrWHPFgzVHA==} dev: true - /@types/undertaker-registry@1.0.3: - resolution: {integrity: sha512-9wabQxkMB6Nb6FuPxvLQiMLBT2KkJXxgC9RoehnSSCvVzrag5GKxI5pekcgnMcZaGupuJOd0CLT+8ZwHHlG5vQ==} + /@types/undertaker-registry@1.0.1: + resolution: {integrity: sha512-Z4TYuEKn9+RbNVk1Ll2SS4x1JeLHecolIbM/a8gveaHsW0Hr+RQMraZACwTO2VD7JvepgA6UO1A1VrbktQrIbQ==} dev: true - /@types/undertaker@1.2.10: - resolution: {integrity: sha512-UzbgxdP5Zn0UlaLGF8CxXGpP7MCu/Y/b/24Kj3dK0J3+xOSmAGJw4JJKi21avFNuUviG59BMBUdrcL+KX+z7BA==} + /@types/undertaker@1.2.8: + resolution: {integrity: sha512-gW3PRqCHYpo45XFQHJBhch7L6hytPsIe0QeLujlnFsjHPnXLhJcPdN6a9368d7aIQgH2I/dUTPFBlGeSNA3qOg==} dependencies: - '@types/node': 20.8.7 - '@types/undertaker-registry': 1.0.3 + '@types/node': 20.5.8 + '@types/undertaker-registry': 1.0.1 async-done: 1.3.2 dev: true @@ -4378,32 +4436,25 @@ packages: resolution: {integrity: sha512-taHQQH/3ZyI3zP8M/puluDEIEvtQHVYcC6y3N8ijFtAd28+Ey/G4sg1u2gB01S8MwybLOKAp9/yCMu/uR5l3Ug==} dev: true - /@types/vinyl-fs@3.0.4: - resolution: {integrity: sha512-UIdM4bMUcWky41J0glmBx4WnCiF48J7Q2S0LJ8heFmZiB7vHeLOHoLx1ABxu4lY6eD2FswVp47cSIc1GFFJkbw==} + /@types/vinyl-fs@3.0.2: + resolution: {integrity: sha512-ctNcmmzbMIKooXjRkyyUCOu2Z4AyqibL+RhXoF3pb7K7j+ezItnakmpm31LymkYHSIM5ey0tjIFzTvFOTSBCGw==} dependencies: - '@types/glob-stream': 8.0.1 - '@types/node': 20.8.7 - '@types/vinyl': 2.0.9 + '@types/glob-stream': 8.0.0 + '@types/node': 20.5.8 + '@types/vinyl': 2.0.7 dev: true /@types/vinyl@2.0.7: resolution: {integrity: sha512-4UqPv+2567NhMQuMLdKAyK4yzrfCqwaTt6bLhHEs8PFcxbHILsrxaY63n4wgE/BRLDWDQeI+WcTmkXKExh9hQg==} dependencies: '@types/expect': 1.20.4 - '@types/node': 20.8.7 - dev: true - - /@types/vinyl@2.0.9: - resolution: {integrity: sha512-KCr4aTEUkzSF89qw09e2oxsC/RXXT3K5ZPv4gvj3XTiWVrxNoi7WrqNTahNE/Hul5C9z3B8w+yWNTQgua12oag==} - dependencies: - '@types/expect': 1.20.4 - '@types/node': 20.8.7 + '@types/node': 20.5.8 dev: true /@types/web-push@3.3.2: resolution: {integrity: sha512-JxWGVL/m7mWTIg4mRYO+A6s0jPmBkr4iJr39DqJpRJAc+jrPiEe1/asmkwerzRon8ZZDxaZJpsxpv0Z18Wo9gw==} dependencies: - '@types/node': 20.8.7 + '@types/node': 18.11.18 dev: true /@types/webgl-ext@0.0.30: @@ -4419,13 +4470,13 @@ packages: /@types/websocket@1.0.5: resolution: {integrity: sha512-NbsqiNX9CnEfC1Z0Vf4mE1SgAJ07JnRYcNex7AJ9zAVzmiGHmjKFEk7O4TJIsgv2B1sLEb6owKFZrACwdYngsQ==} dependencies: - '@types/node': 20.8.7 + '@types/node': 18.11.18 dev: true /@types/ws@8.5.5: resolution: {integrity: sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==} dependencies: - '@types/node': 20.8.7 + '@types/node': 18.11.18 /@types/yargs-parser@21.0.2: resolution: {integrity: sha512-5qcvofLPbfjmBfKaLfj/+f+Sbd6pN4zl7w7VSVI5uz7m9QZTuB2aZAa2uo1wHFBNN2x6g/SoTkXmd8mQnQF2Cw==} @@ -4441,7 +4492,7 @@ packages: resolution: {integrity: sha512-Km7XAtUIduROw7QPgvcft0lIupeG8a8rdKL8RiSyKvlE7dYY31fEn41HVuQsRFDuROA8tA4K2UVL+WdfFmErBA==} requiresBuild: true dependencies: - '@types/node': 14.18.63 + '@types/node': 20.5.8 dev: true optional: true @@ -4823,7 +4874,7 @@ packages: vite: ^4.0.0 vue: ^3.2.25 dependencies: - vite: 4.4.9(@types/node@20.8.7)(sass@1.66.1) + vite: 4.4.9(@types/node@20.5.8)(sass@1.66.1) vue: 3.3.4 dev: true @@ -7225,6 +7276,25 @@ packages: readable-stream: 3.6.2 dev: false + /create-jest@29.7.0(@types/node@18.11.18): + resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + dependencies: + '@jest/types': 29.6.3 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-config: 29.7.0(@types/node@18.11.18) + jest-util: 29.7.0 + prompts: 2.4.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + dev: true + /create-jest@29.7.0(@types/node@20.8.7)(ts-node@10.9.1): resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -7522,6 +7592,17 @@ packages: ms: 2.1.2 dev: false + /debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + /debug@4.3.4(supports-color@8.1.1): resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} @@ -10252,7 +10333,7 @@ packages: resolution: {integrity: sha512-SVSF7ikuWKhpAW4l4wapAqPPSToJoiNKsbDoUnRrSgwZHH7lH8pbPeQj1aOVYQrbZKhfSVBxVW+Py7vtulRktw==} engines: {node: '>=10'} dependencies: - '@types/node': 20.8.7 + '@types/node': 20.5.8 '@types/vinyl': 2.0.7 istextorbinary: 3.3.0 replacestream: 4.0.3 @@ -11394,7 +11475,7 @@ packages: resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} engines: {node: '>=10'} dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 istanbul-lib-coverage: 3.2.0 source-map: 0.6.1 transitivePeerDependencies: @@ -11474,7 +11555,7 @@ packages: - supports-color dev: true - /jest-cli@29.7.0(@types/node@20.8.7): + /jest-cli@29.7.0(@types/node@18.11.18): resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -11488,10 +11569,10 @@ packages: '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@20.8.7)(ts-node@10.9.1) + create-jest: 29.7.0(@types/node@18.11.18) exit: 0.1.2 import-local: 3.1.0 - jest-config: 29.7.0(@types/node@20.8.7)(ts-node@10.9.1) + jest-config: 29.7.0(@types/node@18.11.18) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -11530,6 +11611,46 @@ packages: - ts-node dev: true + /jest-config@29.7.0(@types/node@18.11.18): + resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@types/node': '*' + ts-node: '>=9.0.0' + peerDependenciesMeta: + '@types/node': + optional: true + ts-node: + optional: true + dependencies: + '@babel/core': 7.23.2 + '@jest/test-sequencer': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 18.11.18 + babel-jest: 29.7.0(@babel/core@7.23.2) + chalk: 4.1.2 + ci-info: 3.9.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 29.7.0 + jest-environment-node: 29.7.0 + jest-get-type: 29.6.3 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-runner: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + micromatch: 4.0.5 + parse-json: 5.2.0 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + dev: true + /jest-config@29.7.0(@types/node@20.8.7)(ts-node@10.9.1): resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -11606,7 +11727,7 @@ packages: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.8.7 + '@types/node': 18.11.18 jest-mock: 29.7.0 jest-util: 29.7.0 dev: true @@ -11682,7 +11803,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 20.8.7 + '@types/node': 18.11.18 jest-util: 29.7.0 dev: true @@ -11864,7 +11985,7 @@ packages: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 20.8.7 + '@types/node': 18.11.18 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true @@ -11873,13 +11994,13 @@ packages: resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 20.8.7 + '@types/node': 18.11.18 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true - /jest@29.7.0(@types/node@20.8.7): + /jest@29.7.0(@types/node@18.11.18): resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -11892,7 +12013,7 @@ packages: '@jest/core': 29.7.0 '@jest/types': 29.6.3 import-local: 3.1.0 - jest-cli: 29.7.0(@types/node@20.8.7) + jest-cli: 29.7.0(@types/node@18.11.18) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -16990,7 +17111,7 @@ packages: '@babel/core': 7.23.2 bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@20.8.7) + jest: 29.7.0(@types/node@18.11.18) jest-util: 29.7.0 json5: 2.2.3 lodash.memoize: 4.1.2 @@ -17049,7 +17170,7 @@ packages: webpack: 5.88.2(@swc/core@1.3.78) dev: true - /ts-node@10.9.1(@swc/core@1.3.78)(@types/node@20.8.7)(typescript@5.1.6): + /ts-node@10.9.1(@swc/core@1.3.78)(@types/node@18.11.18)(typescript@5.1.6): resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -17069,7 +17190,7 @@ packages: '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 20.8.7 + '@types/node': 18.11.18 acorn: 8.10.0 acorn-walk: 8.2.0 arg: 4.1.3 @@ -17387,7 +17508,7 @@ packages: pg: 8.11.3 reflect-metadata: 0.1.13 sha.js: 2.4.11 - ts-node: 10.9.1(@swc/core@1.3.78)(@types/node@20.8.7)(typescript@5.1.6) + ts-node: 10.9.1(@swc/core@1.3.78)(@types/node@18.11.18)(typescript@5.1.6) tslib: 2.6.1 uuid: 9.0.0 yargs: 17.7.2 @@ -17460,6 +17581,7 @@ packages: /undici-types@5.25.3: resolution: {integrity: sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==} + dev: true /undici@5.23.0: resolution: {integrity: sha512-1D7w+fvRsqlQ9GscLBwcAJinqcZGHUKjbOmXdlE/v8BvEGXjeWAax+341q44EuTcHXXnfyKNbKRq4Lg7OzhMmg==} @@ -17768,7 +17890,7 @@ packages: chalk: 4.1.2 debug: 4.3.4(supports-color@8.1.1) fs-extra: 10.1.0 - vite: 4.4.9(@types/node@20.8.7)(sass@1.66.1) + vite: 4.4.9(@types/node@20.5.8)(sass@1.66.1) transitivePeerDependencies: - supports-color dev: true @@ -17810,43 +17932,6 @@ packages: fsevents: 2.3.3 dev: true - /vite@4.4.9(@types/node@20.8.7)(sass@1.66.1): - resolution: {integrity: sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==} - engines: {node: ^14.18.0 || >=16.0.0} - hasBin: true - peerDependencies: - '@types/node': '>= 14' - less: '*' - lightningcss: ^1.21.0 - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - dependencies: - '@types/node': 20.8.7 - esbuild: 0.18.20 - postcss: 8.4.27 - rollup: 3.28.1 - sass: 1.66.1 - optionalDependencies: - fsevents: 2.3.3 - dev: true - /void-elements@3.1.0: resolution: {integrity: sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==} engines: {node: '>=0.10.0'} From 08cb14a04d6ff573b7194252c3660fd3f4894f26 Mon Sep 17 00:00:00 2001 From: naskya <m@naskya.net> Date: Sun, 22 Oct 2023 17:44:32 +0900 Subject: [PATCH 27/74] chore: run lint --- packages/client/src/account.ts | 1 - packages/client/src/components/MkDialog.vue | 5 +- .../client/src/components/MkMediaList.vue | 6 +- .../client/src/components/MkModPlayer.vue | 93 +++++++++---------- .../client/src/components/MkWaitingDialog.vue | 2 +- packages/client/src/init.ts | 2 +- packages/client/src/os.ts | 2 +- packages/client/src/pages/admin/_header_.vue | 8 +- .../client/src/scripts/check-word-mute.ts | 6 +- packages/client/src/scripts/chiptune2.ts | 6 +- packages/client/src/ui/universal.vue | 2 +- 11 files changed, 68 insertions(+), 65 deletions(-) diff --git a/packages/client/src/account.ts b/packages/client/src/account.ts index 761ebe5e00..d1141986e2 100644 --- a/packages/client/src/account.ts +++ b/packages/client/src/account.ts @@ -100,7 +100,6 @@ function fetchAccount(token: string): Promise<Account> { if (res.error.id === "a8c724b3-6e9c-4b46-b1a8-bc3ed6258370") { showSuspendedDialog(); signout(); - return; } else { alert({ type: "error", diff --git a/packages/client/src/components/MkDialog.vue b/packages/client/src/components/MkDialog.vue index 216fb4500a..79439709ea 100644 --- a/packages/client/src/components/MkDialog.vue +++ b/packages/client/src/components/MkDialog.vue @@ -19,7 +19,10 @@ ></i> <i v-else-if="type === 'error'" - :class="[$style.iconInner, iconClass('ph-circle-wavy-warning')]" + :class="[ + $style.iconInner, + iconClass('ph-circle-wavy-warning'), + ]" ></i> <i v-else-if="type === 'warning'" diff --git a/packages/client/src/components/MkMediaList.vue b/packages/client/src/components/MkMediaList.vue index 72f50129eb..0d6f098f81 100644 --- a/packages/client/src/components/MkMediaList.vue +++ b/packages/client/src/components/MkMediaList.vue @@ -50,9 +50,9 @@ import XMedia from "@/components/MkMedia.vue"; import XModPlayer from "@/components/MkModPlayer.vue"; import * as os from "@/os"; import { + FILE_EXT_TRACKER_MODULES, FILE_TYPE_BROWSERSAFE, FILE_TYPE_TRACKER_MODULES, - FILE_EXT_TRACKER_MODULES, } from "@/const"; const props = defineProps<{ @@ -196,9 +196,7 @@ const previewable = (file: firefish.entities.DriveFile): boolean => { const isModule = (file: firefish.entities.DriveFile): boolean => { return ( - FILE_TYPE_TRACKER_MODULES.some((type) => { - return file.type === type; - }) || + FILE_TYPE_TRACKER_MODULES.includes(file.type) || FILE_EXT_TRACKER_MODULES.some((ext) => { return file.name.toLowerCase().endsWith("." + ext); }) diff --git a/packages/client/src/components/MkModPlayer.vue b/packages/client/src/components/MkModPlayer.vue index 08bfa69b85..1129d2bb62 100644 --- a/packages/client/src/components/MkModPlayer.vue +++ b/packages/client/src/components/MkModPlayer.vue @@ -1,33 +1,33 @@ <template> - <div class="mod-player-disabled" v-if="!available"> + <div v-if="!available" class="mod-player-disabled"> <MkLoading v-if="fetching" /> <MkError v-else-if="error" @retry="load()" /> </div> - <div class="mod-player-disabled" v-else-if="hide" @click="toggleVisible()"> + <div v-else-if="hide" class="mod-player-disabled" @click="toggleVisible()"> <div> <b><i class="ph-warning"></i> {{ i18n.ts.sensitive }}</b> <span>{{ i18n.ts.clickToShow }}</span> </div> </div> - <div class="mod-player-enabled" v-else> + <div v-else class="mod-player-enabled"> <div class="pattern-display"> - <div class="mod-pattern" ref="modPattern" v-if="patternShow"> + <div v-if="patternShow" ref="modPattern" class="mod-pattern"> <span v-for="(row, i) in patData[currentPattern]" - ref="initRow" - v-bind:class="{ modRowActive: isRowActive(i) }" v-if="patData.length !== 0" + ref="initRow" + :class="{ modRowActive: isRowActive(i) }" > - <span v-bind:class="{ modColQuarter: i % 4 === 0 }">{{ + <span :class="{ modColQuarter: i % 4 === 0 }">{{ indexText(i) }}</span> <span class="mod-row-inner">{{ getRowText(row) }}</span> </span> <MkLoading v-else /> </div> - <div class="mod-pattern" v-else @click="showPattern()"> - <span class="modRowActive" ref="initRow"> + <div v-else class="mod-pattern" @click="showPattern()"> + <span ref="initRow" class="modRowActive"> <span class="modColQuarter">00</span> <span class="mod-row-inner">|F-12Ev10XEF</span> </span> @@ -36,39 +36,39 @@ </div> </div> <div class="controls"> - <button class="play" @click="playPause()" v-if="!loading"> - <i class="ph-pause ph-fill" v-if="playing"></i> - <i class="ph-play ph-fill" v-else></i> + <button v-if="!loading" class="play" @click="playPause()"> + <i v-if="playing" class="ph-pause ph-fill"></i> + <i v-else class="ph-play ph-fill"></i> </button> <MkLoading v-else :em="true" /> <button class="stop" @click="stop()"> <i class="ph-stop ph-fill"></i> </button> <button class="loop" @click="toggleLoop()"> - <i class="ph-repeat ph-fill" v-if="loop === -1"></i> - <i class="ph-repeat-once ph-fill" v-else></i> + <i v-if="loop === -1" class="ph-repeat ph-fill"></i> + <i v-else class="ph-repeat-once ph-fill"></i> </button> <FormRange + ref="progress" + v-model="position" class="progress" :min="0" :max="length" - v-model="position" :step="0.1" - ref="progress" :background="false" :tooltips="false" :instant="true" @update:modelValue="performSeek()" ></FormRange> <button class="mute" @click="toggleMute()"> - <i class="ph-speaker-simple-x ph-fill" v-if="muted"></i> - <i class="ph-speaker-simple-high ph-fill" v-else></i> + <i v-if="muted" class="ph-speaker-simple-x ph-fill"></i> + <i v-else class="ph-speaker-simple-high ph-fill"></i> </button> <FormRange + v-model="player.context.gain.value" class="volume" :min="0" :max="1" - v-model="player.context.gain.value" :step="0.1" :background="false" :tooltips="false" @@ -106,13 +106,13 @@ </template> <script lang="ts" setup> -import { ref, shallowRef, nextTick, onDeactivated, onMounted } from "vue"; -import * as firefish from "firefish-js"; +import { nextTick, onDeactivated, onMounted, ref, shallowRef } from "vue"; +import type * as firefish from "firefish-js"; import FormRange from "./form/range.vue"; import { i18n } from "@/i18n"; import * as os from "@/os"; import { defaultStore } from "@/store"; -import { ChiptuneJsPlayer, ChiptuneJsConfig } from "@/scripts/chiptune2"; +import { ChiptuneJsConfig, ChiptuneJsPlayer } from "@/scripts/chiptune2"; import icon from "@/scripts/icon"; const props = defineProps<{ @@ -130,25 +130,25 @@ interface ModRow { const available = ref(false); const initRow = shallowRef<HTMLSpanElement>(); const player = shallowRef(new ChiptuneJsPlayer(new ChiptuneJsConfig())); -let hide = ref( +const hide = ref( defaultStore.state.nsfw === "force" ? true : props.module.isSensitive && defaultStore.state.nsfw !== "ignore", ); -let playing = ref(false); -let patternShow = ref(false); -let modPattern = ref<HTMLDivElement>(); -let progress = ref<typeof FormRange>(); -let position = ref(0); -let patData = shallowRef([] as ModRow[][]); -let currentPattern = ref(0); -let nbChannels = ref(0); -let length = ref(1); -let muted = ref(false); -let loop = ref(0); -let fetching = ref(true); -let error = ref(false); -let loading = ref(false); +const playing = ref(false); +const patternShow = ref(false); +const modPattern = ref<HTMLDivElement>(); +const progress = ref<typeof FormRange>(); +const position = ref(0); +const patData = shallowRef([] as ModRow[][]); +const currentPattern = ref(0); +const nbChannels = ref(0); +const length = ref(1); +const muted = ref(false); +const loop = ref(0); +const fetching = ref(true); +const error = ref(false); +const loading = ref(false); function load() { player.value @@ -168,10 +168,10 @@ function load() { onMounted(load); -let currentRow = 0; -let rowHeight = 0; -let buffer = null; -let isSeeking = false; +let currentRow = 0, + rowHeight = 0, + buffer = null, + isSeeking = false; function captionPopup() { os.alert({ @@ -293,7 +293,6 @@ function isRowActive(i: number) { } return true; } - return; } function indexText(i: number) { @@ -305,11 +304,11 @@ function indexText(i: number) { } function getRow(pattern: number, rowOffset: number) { - let notes: string[] = [], - insts: string[] = [], - vols: string[] = [], - fxs: string[] = [], - ops: string[] = []; + const notes: string[] = []; + const insts: string[] = []; + const vols: string[] = []; + const fxs: string[] = []; + const ops: string[] = []; for (let channel = 0; channel < nbChannels.value; channel++) { const part = player.value.getPatternRowChannel( diff --git a/packages/client/src/components/MkWaitingDialog.vue b/packages/client/src/components/MkWaitingDialog.vue index b5732c951d..01701755dd 100644 --- a/packages/client/src/components/MkWaitingDialog.vue +++ b/packages/client/src/components/MkWaitingDialog.vue @@ -31,7 +31,7 @@ <script lang="ts" setup> import { shallowRef, watch } from "vue"; import MkModal from "@/components/MkModal.vue"; -import iconClass from "@/scripts/icon" +import iconClass from "@/scripts/icon"; const modal = shallowRef<InstanceType<typeof MkModal>>(); diff --git a/packages/client/src/init.ts b/packages/client/src/init.ts index ddcdfc207c..9abcc08544 100644 --- a/packages/client/src/init.ts +++ b/packages/client/src/init.ts @@ -14,7 +14,6 @@ import "@phosphor-icons/web/light"; import "@phosphor-icons/web/duotone"; // #region account indexedDB migration -import { set } from "@/scripts/idb-proxy"; const accounts = localStorage.getItem("accounts"); if (accounts) { @@ -32,6 +31,7 @@ import { watch, } from "vue"; import { compareVersions } from "compare-versions"; +import { set } from "@/scripts/idb-proxy"; import widgets from "@/widgets"; import directives from "@/directives"; diff --git a/packages/client/src/os.ts b/packages/client/src/os.ts index 7a78e95530..d21f0c4685 100644 --- a/packages/client/src/os.ts +++ b/packages/client/src/os.ts @@ -24,7 +24,7 @@ export const api = (( endpoint: string, data: Record<string, any> = {}, token?: string | null | undefined, - useToken: boolean = true, + useToken = true, ) => { pendingApiRequestsCount.value++; diff --git a/packages/client/src/pages/admin/_header_.vue b/packages/client/src/pages/admin/_header_.vue index 6d2506a177..7b0b627087 100644 --- a/packages/client/src/pages/admin/_header_.vue +++ b/packages/client/src/pages/admin/_header_.vue @@ -2,7 +2,11 @@ <div ref="el" class="fdidabkc" :style="{ background: bg }" @click="onClick"> <template v-if="metadata"> <div class="titleContainer" @click="showTabsPopup"> - <i v-if="metadata.icon" class="icon" :class="icon(metadata.icon)"></i> + <i + v-if="metadata.icon" + class="icon" + :class="icon(metadata.icon)" + ></i> <div class="title"> <div class="title">{{ metadata.title }}</div> @@ -63,7 +67,7 @@ import { scrollToTop } from "@/scripts/scroll"; import MkButton from "@/components/MkButton.vue"; import { globalEvents } from "@/events"; import { injectPageMetadata } from "@/scripts/page-metadata"; -import icon from "@/scripts/icon" +import icon from "@/scripts/icon"; interface Tab { key?: string | null; diff --git a/packages/client/src/scripts/check-word-mute.ts b/packages/client/src/scripts/check-word-mute.ts index 730351c590..7a39950cf2 100644 --- a/packages/client/src/scripts/check-word-mute.ts +++ b/packages/client/src/scripts/check-word-mute.ts @@ -105,14 +105,14 @@ export function getWordSoftMute( } } if (mutedLangs.length > 0) { - let noteLangMuted = checkLangMute(note, mutedLangs); + const noteLangMuted = checkLangMute(note, mutedLangs); if (noteLangMuted.muted) { noteLangMuted.what = "note"; return noteLangMuted; } if (note.renote) { - let renoteLangMuted = checkLangMute(note, mutedLangs); + const renoteLangMuted = checkLangMute(note, mutedLangs); if (renoteLangMuted.muted) { renoteLangMuted.what = note.text == null ? "renote" : "quote"; return renoteLangMuted; @@ -120,7 +120,7 @@ export function getWordSoftMute( } if (note.reply) { - let replyLangMuted = checkLangMute(note, mutedLangs); + const replyLangMuted = checkLangMute(note, mutedLangs); if (replyLangMuted.muted) { replyLangMuted.what = "reply"; return replyLangMuted; diff --git a/packages/client/src/scripts/chiptune2.ts b/packages/client/src/scripts/chiptune2.ts index 5904f37fcf..2f62428f47 100644 --- a/packages/client/src/scripts/chiptune2.ts +++ b/packages/client/src/scripts/chiptune2.ts @@ -309,9 +309,9 @@ ChiptuneJsPlayer.prototype.createLibopenmptNode = async function ( } return; } - let framesRendered = 0; - let ended = false; - let error = false; + let framesRendered = 0, + ended = false, + error = false; const currentPattern = processNode.player.libopenmpt._openmpt_module_get_current_pattern( diff --git a/packages/client/src/ui/universal.vue b/packages/client/src/ui/universal.vue index 1082dc946c..b2e1110db5 100644 --- a/packages/client/src/ui/universal.vue +++ b/packages/client/src/ui/universal.vue @@ -132,8 +132,8 @@ <button v-if="isMobile && mainRouter.currentRoute.value.name === 'index'" - v-vibrate="5" ref="postButton" + v-vibrate="5" :aria-label="i18n.t('note')" class="postButton button post _button" @click="os.post()" From 68cbc3a43c60c6f71c1566db548181e886d08e5c Mon Sep 17 00:00:00 2001 From: jolupa <jolupameister@gmail.com> Date: Sat, 21 Oct 2023 14:48:51 +0000 Subject: [PATCH 28/74] chore: Translated using Weblate (Catalan) Currently translated at 100.0% (1863 of 1863 strings) Translation: Firefish/locales Translate-URL: https://hosted.weblate.org/projects/firefish/locales/ca/ --- locales/ca-ES.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locales/ca-ES.yml b/locales/ca-ES.yml index e04c7a6670..48635a1703 100644 --- a/locales/ca-ES.yml +++ b/locales/ca-ES.yml @@ -1553,7 +1553,7 @@ troubleshooting: Resolució de problemes learnMore: Més informació misskeyUpdated: Firefish s'ha actualitzat! translate: Tradueix -translatedFrom: Traduït desde {x} +translatedFrom: Traduït del {x} aiChanMode: Ai-chan a la interfície d'usuari clàssica keepCw: Mantenir els avisos de contingut pubSub: Comptes Pub/Sub From 64b83ddb9f3789e648cbd63c115a40a56986a95a Mon Sep 17 00:00:00 2001 From: PrivateGER <privateger@privateger.me> Date: Sun, 22 Oct 2023 21:21:36 +0200 Subject: [PATCH 29/74] Fix use of wrong library for CBOR authentication object --- packages/backend/package.json | 3 +- .../server/api/endpoints/i/2fa/key-done.ts | 12 +- pnpm-lock.yaml | 134 ++++++++++++------ 3 files changed, 102 insertions(+), 47 deletions(-) diff --git a/packages/backend/package.json b/packages/backend/package.json index 110b8e14ef..396cc963dd 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -51,6 +51,7 @@ "blurhash": "2.0.5", "bull": "4.11.3", "cacheable-lookup": "TheEssem/cacheable-lookup", + "cbor-x": "^1.5.4", "chalk": "5.3.0", "chalk-template": "0.4.0", "chokidar": "^3.5.3", @@ -91,7 +92,7 @@ "meilisearch": "0.34.1", "mfm-js": "0.23.3", "mime-types": "2.1.35", - "msgpackr": "1.9.7", + "msgpackr": "^1.9.9", "multer": "1.4.4-lts.1", "native-utils": "link:native-utils", "nested-property": "4.0.0", diff --git a/packages/backend/src/server/api/endpoints/i/2fa/key-done.ts b/packages/backend/src/server/api/endpoints/i/2fa/key-done.ts index 32f972d0b6..9ea437b037 100644 --- a/packages/backend/src/server/api/endpoints/i/2fa/key-done.ts +++ b/packages/backend/src/server/api/endpoints/i/2fa/key-done.ts @@ -1,4 +1,4 @@ -import { decode } from "msgpackr"; +import { decode } from "cbor-x"; import define from "../../../define.js"; import { UserProfiles, @@ -62,7 +62,7 @@ export default define(meta, paramDef, async (ps, user) => { const clientDataJSONHash = hash(Buffer.from(ps.clientDataJSON, "utf-8")); - const attestation = decode(Buffer.from(ps.attestationObject, "utf-8")); + const attestation = decode(Buffer.from(ps.attestationObject, "hex")); const rpIdHash = attestation.authData.slice(0, 32); if (!rpIdHashReal.equals(rpIdHash)) { @@ -79,7 +79,13 @@ export default define(meta, paramDef, async (ps, user) => { const credentialIdLength = authData.readUInt16BE(53); const credentialId = authData.slice(55, 55 + credentialIdLength); const publicKeyData = authData.slice(55 + credentialIdLength); - const publicKey: Map<number, any> = decode(publicKeyData); + const publicKey: Map<Number, any> = new Map( + Object.entries(decode(publicKeyData)).map(([key, value]) => [ + Number(key), + value, + ]), + ); + if (publicKey.get(3) !== -7) { throw new Error("alg mismatch"); } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 80ec109348..d9318431ea 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -171,6 +171,9 @@ importers: cacheable-lookup: specifier: TheEssem/cacheable-lookup version: github.com/TheEssem/cacheable-lookup/dd2fb616366a3c68dcf321a57a67295967b204bf + cbor-x: + specifier: ^1.5.4 + version: 1.5.4 chalk: specifier: 5.3.0 version: 5.3.0 @@ -292,8 +295,8 @@ importers: specifier: 2.1.35 version: 2.1.35 msgpackr: - specifier: 1.9.7 - version: 1.9.7 + specifier: ^1.9.9 + version: 1.9.9 multer: specifier: 1.4.4-lts.1 version: 1.4.4-lts.1 @@ -906,7 +909,7 @@ importers: devDependencies: '@swc/cli': specifier: ^0.1.62 - version: 0.1.62(@swc/core@1.3.78) + version: 0.1.62(@swc/core@1.3.78)(chokidar@3.3.1) '@swc/core': specifier: 1.3.78 version: 1.3.78 @@ -1140,7 +1143,7 @@ packages: '@babel/traverse': 7.22.10 '@babel/types': 7.22.10 convert-source-map: 1.9.0 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -1162,7 +1165,7 @@ packages: '@babel/traverse': 7.23.2 '@babel/types': 7.23.0 convert-source-map: 2.0.0 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -1581,7 +1584,7 @@ packages: '@babel/helper-split-export-declaration': 7.22.6 '@babel/parser': 7.22.10 '@babel/types': 7.22.10 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -1598,7 +1601,7 @@ packages: '@babel/helper-split-export-declaration': 7.22.6 '@babel/parser': 7.23.0 '@babel/types': 7.23.0 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -1804,6 +1807,54 @@ packages: '@bull-board/api': 5.8.0(@bull-board/ui@5.8.0) dev: false + /@cbor-extract/cbor-extract-darwin-arm64@2.1.1: + resolution: {integrity: sha512-blVBy5MXz6m36Vx0DfLd7PChOQKEs8lK2bD1WJn/vVgG4FXZiZmZb2GECHFvVPA5T7OnODd9xZiL3nMCv6QUhA==} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@cbor-extract/cbor-extract-darwin-x64@2.1.1: + resolution: {integrity: sha512-h6KFOzqk8jXTvkOftyRIWGrd7sKQzQv2jVdTL9nKSf3D2drCvQB/LHUxAOpPXo3pv2clDtKs3xnHalpEh3rDsw==} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@cbor-extract/cbor-extract-linux-arm64@2.1.1: + resolution: {integrity: sha512-SxAaRcYf8S0QHaMc7gvRSiTSr7nUYMqbUdErBEu+HYA4Q6UNydx1VwFE68hGcp1qvxcy9yT5U7gA+a5XikfwSQ==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@cbor-extract/cbor-extract-linux-arm@2.1.1: + resolution: {integrity: sha512-ds0uikdcIGUjPyraV4oJqyVE5gl/qYBpa/Wnh6l6xLE2lj/hwnjT2XcZCChdXwW/YFZ1LUHs6waoYN8PmK0nKQ==} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@cbor-extract/cbor-extract-linux-x64@2.1.1: + resolution: {integrity: sha512-GVK+8fNIE9lJQHAlhOROYiI0Yd4bAZ4u++C2ZjlkS3YmO6hi+FUxe6Dqm+OKWTcMpL/l71N6CQAmaRcb4zyJuA==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@cbor-extract/cbor-extract-win32-x64@2.1.1: + resolution: {integrity: sha512-2Niq1C41dCRIDeD8LddiH+mxGlO7HJ612Ll3D/E73ZWBmycued+8ghTr/Ho3CMOWPUEr08XtyBMVXAjqF+TcKw==} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false + optional: true + /@chainsafe/is-ip@2.0.2: resolution: {integrity: sha512-ndGqEMG1W5WkGagaqOZHpPU172AGdxr+LD15sv3WIUvT5oCFUrG1Y0CW/v2Egwj4JXEvSibaIIIqImsm98y1nA==} dev: false @@ -3239,33 +3290,13 @@ packages: resolution: {integrity: sha512-Uy0+khmZqUrUGm5dmMqVlnvufZRSK0FbYzVgp0UMstm+F5+W2/jnEEQyc9vo1ZR/E5ZI/B1WjjoTqBqwJL6Krw==} dev: false - /@swc/cli@0.1.62(@swc/core@1.3.78): - resolution: {integrity: sha512-kOFLjKY3XH1DWLfXL1/B5MizeNorHR8wHKEi92S/Zi9Md/AK17KSqR8MgyRJ6C1fhKHvbBCl8wboyKAFXStkYw==} - engines: {node: '>= 12.13'} - hasBin: true - peerDependencies: - '@swc/core': ^1.2.66 - chokidar: ^3.3.1 - peerDependenciesMeta: - chokidar: - optional: true - dependencies: - '@mole-inc/bin-wrapper': 8.0.1 - '@swc/core': 1.3.78 - commander: 7.2.0 - fast-glob: 3.3.1 - semver: 7.5.4 - slash: 3.0.0 - source-map: 0.7.4 - dev: true - /@swc/cli@0.1.62(@swc/core@1.3.78)(chokidar@3.3.1): resolution: {integrity: sha512-kOFLjKY3XH1DWLfXL1/B5MizeNorHR8wHKEi92S/Zi9Md/AK17KSqR8MgyRJ6C1fhKHvbBCl8wboyKAFXStkYw==} engines: {node: '>= 12.13'} hasBin: true peerDependencies: '@swc/core': ^1.2.66 - chokidar: ^3.3.1 + chokidar: ^3.5.1 peerDependenciesMeta: chokidar: optional: true @@ -6229,7 +6260,7 @@ packages: get-port: 5.1.1 ioredis: 5.3.2 lodash: 4.17.21 - msgpackr: 1.9.7 + msgpackr: 1.9.9 semver: 7.5.4 uuid: 8.3.2 transitivePeerDependencies: @@ -6401,6 +6432,28 @@ packages: /caseless@0.12.0: resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} + /cbor-extract@2.1.1: + resolution: {integrity: sha512-1UX977+L+zOJHsp0mWFG13GLwO6ucKgSmSW6JTl8B9GUvACvHeIVpFqhU92299Z6PfD09aTXDell5p+lp1rUFA==} + hasBin: true + requiresBuild: true + dependencies: + node-gyp-build-optional-packages: 5.0.3 + optionalDependencies: + '@cbor-extract/cbor-extract-darwin-arm64': 2.1.1 + '@cbor-extract/cbor-extract-darwin-x64': 2.1.1 + '@cbor-extract/cbor-extract-linux-arm': 2.1.1 + '@cbor-extract/cbor-extract-linux-arm64': 2.1.1 + '@cbor-extract/cbor-extract-linux-x64': 2.1.1 + '@cbor-extract/cbor-extract-win32-x64': 2.1.1 + dev: false + optional: true + + /cbor-x@1.5.4: + resolution: {integrity: sha512-PVKILDn+Rf6MRhhcyzGXi5eizn1i0i3F8Fe6UMMxXBnWkalq9+C5+VTmlIjAYM4iF2IYF2N+zToqAfYOp+3rfw==} + optionalDependencies: + cbor-extract: 2.1.1 + dev: false + /cbor@8.1.0: resolution: {integrity: sha512-DwGjNW9omn6EwP70aXsn7FQJx5kO12tX0bZkaTjzdVFM6/7nhA4t0EENocKGx6D2Bch9PE2KzCUf5SceBdeijg==} engines: {node: '>=12.19'} @@ -7592,17 +7645,6 @@ packages: ms: 2.1.2 dev: false - /debug@4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.2 - /debug@4.3.4(supports-color@8.1.1): resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} @@ -11475,7 +11517,7 @@ packages: resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} engines: {node: '>=10'} dependencies: - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) istanbul-lib-coverage: 3.2.0 source-map: 0.6.1 transitivePeerDependencies: @@ -13440,8 +13482,8 @@ packages: dev: false optional: true - /msgpackr@1.9.7: - resolution: {integrity: sha512-baUNaLvKQvVhzfWTNO07njwbZK1Lxjtb0P1JL6/EhXdLTHzR57/mZqqJC39TtQKvOmkJA4pcejS4dbk7BDgLLA==} + /msgpackr@1.9.9: + resolution: {integrity: sha512-sbn6mioS2w0lq1O6PpGtsv6Gy8roWM+o3o4Sqjd6DudrL/nOugY+KyJUimoWzHnf9OkO0T6broHFnYE/R05t9A==} optionalDependencies: msgpackr-extract: 3.0.2 dev: false @@ -13629,6 +13671,12 @@ packages: fetch-blob: 3.2.0 formdata-polyfill: 4.0.10 + /node-gyp-build-optional-packages@5.0.3: + resolution: {integrity: sha512-k75jcVzk5wnnc/FMxsf4udAoTEUv2jY3ycfdSd3yWu6Cnd1oee6/CfZJApyscA4FJOmdoixWwiwOyf16RzD5JA==} + hasBin: true + dev: false + optional: true + /node-gyp-build-optional-packages@5.0.7: resolution: {integrity: sha512-YlCCc6Wffkx0kHkmam79GKvDQ6x+QZkMjFGrIMxgFNILFvGSbCp2fCBC55pGTT9gVaz8Na5CLmxt/urtzRv36w==} hasBin: true From 1bf6cdce614c1c90ff01513ca1d2fe87bc3c5d90 Mon Sep 17 00:00:00 2001 From: Minneyar <63-minneyar@users.noreply.git.joinfirefish.org> Date: Sun, 22 Oct 2023 21:29:46 +0000 Subject: [PATCH 30/74] fix: Extract $i from account.ts into reactiveAccount.ts to fix circular dependency Co-authored-by: minneyar <speed@sakabatou.net> --- packages/client/src/account.ts | 10 ++-------- packages/client/src/components/MkChatPreview.vue | 2 +- packages/client/src/components/MkCropperDialog.vue | 2 +- packages/client/src/components/MkDrive.file.vue | 2 +- packages/client/src/components/MkFollowButton.vue | 2 +- packages/client/src/components/MkHeatmap.vue | 2 +- packages/client/src/components/MkMention.vue | 2 +- packages/client/src/components/MkNote.vue | 2 +- packages/client/src/components/MkNoteDetailed.vue | 2 +- packages/client/src/components/MkNoteSub.vue | 2 +- packages/client/src/components/MkNotifications.vue | 2 +- packages/client/src/components/MkPostForm.vue | 7 ++----- .../src/components/MkPushNotificationAllowButton.vue | 3 ++- packages/client/src/components/MkQuoteButton.vue | 2 +- .../src/components/MkReactionsViewer.reaction.vue | 2 +- packages/client/src/components/MkReactionsViewer.vue | 2 +- packages/client/src/components/MkRenoteButton.vue | 2 +- packages/client/src/components/MkTimeline.vue | 2 +- packages/client/src/components/MkTutorialDialog.vue | 2 +- packages/client/src/components/global/MkPageHeader.vue | 3 ++- packages/client/src/components/page/page.vue | 2 +- packages/client/src/init.ts | 3 ++- packages/client/src/navbar.ts | 2 +- packages/client/src/os.ts | 2 +- packages/client/src/pages/admin/index.vue | 2 +- packages/client/src/pages/auth.vue | 3 ++- packages/client/src/pages/channel.vue | 2 +- packages/client/src/pages/clip.vue | 2 +- packages/client/src/pages/explore.users.vue | 2 +- packages/client/src/pages/follow-requests.vue | 2 +- packages/client/src/pages/messaging/index.vue | 2 +- .../src/pages/messaging/messaging-room.message.vue | 2 +- packages/client/src/pages/messaging/messaging-room.vue | 2 +- packages/client/src/pages/miauth.vue | 3 ++- packages/client/src/pages/page-editor/page-editor.vue | 2 +- packages/client/src/pages/scratchpad.vue | 2 +- packages/client/src/pages/settings/2fa.vue | 2 +- packages/client/src/pages/settings/account-info.vue | 2 +- packages/client/src/pages/settings/accounts.vue | 2 +- packages/client/src/pages/settings/drive.vue | 2 +- packages/client/src/pages/settings/email.vue | 2 +- packages/client/src/pages/settings/general.vue | 2 +- packages/client/src/pages/settings/index.vue | 3 ++- packages/client/src/pages/settings/instance-mute.vue | 2 +- packages/client/src/pages/settings/migration.vue | 2 +- packages/client/src/pages/settings/notifications.vue | 2 +- .../client/src/pages/settings/preferences-backups.vue | 2 +- packages/client/src/pages/settings/privacy.vue | 2 +- packages/client/src/pages/settings/profile.vue | 2 +- packages/client/src/pages/settings/word-mute.vue | 2 +- packages/client/src/pages/theme-editor.vue | 2 +- packages/client/src/pages/timeline.vue | 2 +- packages/client/src/pages/user/home.vue | 2 +- packages/client/src/pages/user/index.vue | 2 +- packages/client/src/pizzax.ts | 2 +- packages/client/src/reactiveAccount.ts | 9 +++++++++ packages/client/src/router.ts | 3 ++- packages/client/src/scripts/aiscript/api.ts | 2 +- packages/client/src/scripts/get-note-menu.ts | 2 +- packages/client/src/scripts/get-user-menu.ts | 3 ++- packages/client/src/scripts/please-login.ts | 2 +- packages/client/src/scripts/upload.ts | 2 +- packages/client/src/scripts/use-note-capture.ts | 2 +- packages/client/src/stream.ts | 2 +- packages/client/src/theme-store.ts | 2 +- packages/client/src/ui/_common_/common.vue | 2 +- packages/client/src/ui/_common_/navbar.vue | 3 ++- packages/client/src/ui/_common_/sw-inject.ts | 3 ++- packages/client/src/ui/deck.vue | 2 +- packages/client/src/ui/deck/tl-column.vue | 2 +- packages/client/src/ui/universal.vue | 2 +- packages/client/src/widgets/activity.vue | 2 +- packages/client/src/widgets/aiscript.vue | 2 +- packages/client/src/widgets/button.vue | 2 +- packages/client/src/widgets/calendar.vue | 2 +- 75 files changed, 95 insertions(+), 85 deletions(-) create mode 100644 packages/client/src/reactiveAccount.ts diff --git a/packages/client/src/account.ts b/packages/client/src/account.ts index d1141986e2..f1185e4df3 100644 --- a/packages/client/src/account.ts +++ b/packages/client/src/account.ts @@ -6,17 +6,11 @@ import { apiUrl } from "@/config"; import { alert, api, popup, popupMenu, waiting } from "@/os"; import { reloadChannel, unisonReload } from "@/scripts/unison-reload"; import icon from "@/scripts/icon"; +import { $i } from "@/reactiveAccount"; // TODO: 他のタブと永続化されたstateを同期 -type Account = firefish.entities.MeDetailed; - -const accountData = localStorage.getItem("account"); - -// TODO: 外部からはreadonlyに -export const $i = accountData - ? reactive(JSON.parse(accountData) as Account) - : null; +export type Account = firefish.entities.MeDetailed; export const iAmModerator = $i != null && ($i.isAdmin || $i.isModerator); export const iAmAdmin = $i?.isAdmin; diff --git a/packages/client/src/components/MkChatPreview.vue b/packages/client/src/components/MkChatPreview.vue index d4c8dfaa74..27db671bd5 100644 --- a/packages/client/src/components/MkChatPreview.vue +++ b/packages/client/src/components/MkChatPreview.vue @@ -66,7 +66,7 @@ import * as Acct from "firefish-js/built/acct"; import { i18n } from "@/i18n"; import { acct } from "@/filters/user"; -import { $i } from "@/account"; +import { $i } from "@/reactiveAccount"; const getAcct = Acct.toString; diff --git a/packages/client/src/components/MkCropperDialog.vue b/packages/client/src/components/MkCropperDialog.vue index c85cdf9419..1c56699337 100644 --- a/packages/client/src/components/MkCropperDialog.vue +++ b/packages/client/src/components/MkCropperDialog.vue @@ -42,7 +42,7 @@ import Cropper from "cropperjs"; import tinycolor from "tinycolor2"; import XModalWindow from "@/components/MkModalWindow.vue"; import * as os from "@/os"; -import { $i } from "@/account"; +import { $i } from "@/reactiveAccount"; import { defaultStore } from "@/store"; import { apiUrl, url } from "@/config"; import { query } from "@/scripts/url"; diff --git a/packages/client/src/components/MkDrive.file.vue b/packages/client/src/components/MkDrive.file.vue index 8f5a10730b..483375938b 100644 --- a/packages/client/src/components/MkDrive.file.vue +++ b/packages/client/src/components/MkDrive.file.vue @@ -45,7 +45,7 @@ import MkDriveFileThumbnail from "@/components/MkDriveFileThumbnail.vue"; import bytes from "@/filters/bytes"; import * as os from "@/os"; import { i18n } from "@/i18n"; -import { $i } from "@/account"; +import { $i } from "@/reactiveAccount"; import icon from "@/scripts/icon"; const props = withDefaults( diff --git a/packages/client/src/components/MkFollowButton.vue b/packages/client/src/components/MkFollowButton.vue index 961805f553..035847480f 100644 --- a/packages/client/src/components/MkFollowButton.vue +++ b/packages/client/src/components/MkFollowButton.vue @@ -66,7 +66,7 @@ import type * as firefish from "firefish-js"; import * as os from "@/os"; import { stream } from "@/stream"; import { i18n } from "@/i18n"; -import { $i } from "@/account"; +import { $i } from "@/reactiveAccount"; import { getUserMenu } from "@/scripts/get-user-menu"; import { useRouter } from "@/router"; import { vibrate } from "@/scripts/vibrate"; diff --git a/packages/client/src/components/MkHeatmap.vue b/packages/client/src/components/MkHeatmap.vue index 0565c5914b..fb88f995f7 100644 --- a/packages/client/src/components/MkHeatmap.vue +++ b/packages/client/src/components/MkHeatmap.vue @@ -15,7 +15,7 @@ import { defaultStore } from "@/store"; import { useChartTooltip } from "@/scripts/use-chart-tooltip"; import { alpha } from "@/scripts/color"; import { initChart } from "@/scripts/init-chart"; -import { $i } from "@/account"; +import { $i } from "@/reactiveAccount"; initChart(); diff --git a/packages/client/src/components/MkMention.vue b/packages/client/src/components/MkMention.vue index fa8e2a871a..b113d9cb15 100644 --- a/packages/client/src/components/MkMention.vue +++ b/packages/client/src/components/MkMention.vue @@ -37,7 +37,7 @@ import { toUnicode } from "punycode"; import {} from "vue"; import { host as localHost } from "@/config"; -import { $i } from "@/account"; +import { $i } from "@/reactiveAccount"; import { defaultStore } from "@/store"; const props = defineProps<{ diff --git a/packages/client/src/components/MkNote.vue b/packages/client/src/components/MkNote.vue index 7a63f9012e..92584bce0d 100644 --- a/packages/client/src/components/MkNote.vue +++ b/packages/client/src/components/MkNote.vue @@ -294,7 +294,7 @@ import { userPage } from "@/filters/user"; import * as os from "@/os"; import { defaultStore, noteViewInterruptors } from "@/store"; import { reactionPicker } from "@/scripts/reaction-picker"; -import { $i } from "@/account"; +import { $i } from "@/reactiveAccount"; import { i18n } from "@/i18n"; import { getNoteMenu } from "@/scripts/get-note-menu"; import { useNoteCapture } from "@/scripts/use-note-capture"; diff --git a/packages/client/src/components/MkNoteDetailed.vue b/packages/client/src/components/MkNoteDetailed.vue index a2e9c10db8..97232c5185 100644 --- a/packages/client/src/components/MkNoteDetailed.vue +++ b/packages/client/src/components/MkNoteDetailed.vue @@ -182,7 +182,7 @@ import { userPage } from "@/filters/user"; import * as os from "@/os"; import { defaultStore, noteViewInterruptors } from "@/store"; import { reactionPicker } from "@/scripts/reaction-picker"; -import { $i } from "@/account"; +import { $i } from "@/reactiveAccount"; import { i18n } from "@/i18n"; import { getNoteMenu } from "@/scripts/get-note-menu"; import { useNoteCapture } from "@/scripts/use-note-capture"; diff --git a/packages/client/src/components/MkNoteSub.vue b/packages/client/src/components/MkNoteSub.vue index 1dd1351700..5bca4e8dc0 100644 --- a/packages/client/src/components/MkNoteSub.vue +++ b/packages/client/src/components/MkNoteSub.vue @@ -210,7 +210,7 @@ import { useRouter } from "@/router"; import { userPage } from "@/filters/user"; import * as os from "@/os"; import { reactionPicker } from "@/scripts/reaction-picker"; -import { $i } from "@/account"; +import { $i } from "@/reactiveAccount"; import { i18n } from "@/i18n"; import { useNoteCapture } from "@/scripts/use-note-capture"; import { defaultStore } from "@/store"; diff --git a/packages/client/src/components/MkNotifications.vue b/packages/client/src/components/MkNotifications.vue index e9292342b2..8ae7365110 100644 --- a/packages/client/src/components/MkNotifications.vue +++ b/packages/client/src/components/MkNotifications.vue @@ -54,7 +54,7 @@ import XNotification from "@/components/MkNotification.vue"; import XList from "@/components/MkDateSeparatedList.vue"; import XNote from "@/components/MkNote.vue"; import { stream } from "@/stream"; -import { $i } from "@/account"; +import { $i } from "@/reactiveAccount"; import { i18n } from "@/i18n"; const props = defineProps<{ diff --git a/packages/client/src/components/MkPostForm.vue b/packages/client/src/components/MkPostForm.vue index fabf44411c..a3d7b46667 100644 --- a/packages/client/src/components/MkPostForm.vue +++ b/packages/client/src/components/MkPostForm.vue @@ -268,11 +268,8 @@ import { defaultStore, notePostInterruptors, postFormActions } from "@/store"; import MkInfo from "@/components/MkInfo.vue"; import { i18n } from "@/i18n"; import { instance } from "@/instance"; -import { - $i, - getAccounts, - openAccountMenu as openAccountMenu_, -} from "@/account"; +import { getAccounts, openAccountMenu as openAccountMenu_ } from "@/account"; +import { $i } from "@/reactiveAccount"; import { uploadFile } from "@/scripts/upload"; import { deepClone } from "@/scripts/clone"; import XCheatSheet from "@/components/MkCheatSheetDialog.vue"; diff --git a/packages/client/src/components/MkPushNotificationAllowButton.vue b/packages/client/src/components/MkPushNotificationAllowButton.vue index 37ba5ceef3..575983e3b7 100644 --- a/packages/client/src/components/MkPushNotificationAllowButton.vue +++ b/packages/client/src/components/MkPushNotificationAllowButton.vue @@ -55,7 +55,8 @@ <script setup lang="ts"> import { ref } from "vue"; -import { $i, getAccounts } from "@/account"; +import { getAccounts } from "@/account"; +import { $i } from "@/reactiveAccount"; import MkButton from "@/components/MkButton.vue"; import { instance } from "@/instance"; import { api, apiWithDialog, promiseDialog } from "@/os"; diff --git a/packages/client/src/components/MkQuoteButton.vue b/packages/client/src/components/MkQuoteButton.vue index 3832a13d33..baa09d71ec 100644 --- a/packages/client/src/components/MkQuoteButton.vue +++ b/packages/client/src/components/MkQuoteButton.vue @@ -14,7 +14,7 @@ import { computed } from "vue"; import type { Note } from "firefish-js/built/entities"; import { pleaseLogin } from "@/scripts/please-login"; import * as os from "@/os"; -import { $i } from "@/account"; +import { $i } from "@/reactiveAccount"; import { i18n } from "@/i18n"; import { defaultStore } from "@/store"; import icon from "@/scripts/icon"; diff --git a/packages/client/src/components/MkReactionsViewer.reaction.vue b/packages/client/src/components/MkReactionsViewer.reaction.vue index 9b4ce95628..5bd2a9e5dd 100644 --- a/packages/client/src/components/MkReactionsViewer.reaction.vue +++ b/packages/client/src/components/MkReactionsViewer.reaction.vue @@ -28,7 +28,7 @@ import XDetails from "@/components/MkReactionsViewer.details.vue"; import XReactionIcon from "@/components/MkReactionIcon.vue"; import * as os from "@/os"; import { useTooltip } from "@/scripts/use-tooltip"; -import { $i } from "@/account"; +import { $i } from "@/reactiveAccount"; const props = defineProps<{ reaction: string; diff --git a/packages/client/src/components/MkReactionsViewer.vue b/packages/client/src/components/MkReactionsViewer.vue index e0e695e3f3..dbae48b614 100644 --- a/packages/client/src/components/MkReactionsViewer.vue +++ b/packages/client/src/components/MkReactionsViewer.vue @@ -19,7 +19,7 @@ <script lang="ts" setup> import { computed, ref } from "vue"; import type * as firefish from "firefish-js"; -import { $i } from "@/account"; +import { $i } from "@/reactiveAccount"; import XReaction from "@/components/MkReactionsViewer.reaction.vue"; const props = defineProps<{ diff --git a/packages/client/src/components/MkRenoteButton.vue b/packages/client/src/components/MkRenoteButton.vue index 0c0790d86e..f9262ac54b 100644 --- a/packages/client/src/components/MkRenoteButton.vue +++ b/packages/client/src/components/MkRenoteButton.vue @@ -27,7 +27,7 @@ import Ripple from "@/components/MkRipple.vue"; import XDetails from "@/components/MkUsersTooltip.vue"; import { pleaseLogin } from "@/scripts/please-login"; import * as os from "@/os"; -import { $i } from "@/account"; +import { $i } from "@/reactiveAccount"; import { useTooltip } from "@/scripts/use-tooltip"; import { i18n } from "@/i18n"; import { defaultStore } from "@/store"; diff --git a/packages/client/src/components/MkTimeline.vue b/packages/client/src/components/MkTimeline.vue index 864876b6cc..beca720a37 100644 --- a/packages/client/src/components/MkTimeline.vue +++ b/packages/client/src/components/MkTimeline.vue @@ -33,7 +33,7 @@ import XNotes from "@/components/MkNotes.vue"; import MkInfo from "@/components/MkInfo.vue"; import { stream } from "@/stream"; import * as sound from "@/scripts/sound"; -import { $i } from "@/account"; +import { $i } from "@/reactiveAccount"; import { i18n } from "@/i18n"; import { defaultStore } from "@/store"; import icon from "@/scripts/icon"; diff --git a/packages/client/src/components/MkTutorialDialog.vue b/packages/client/src/components/MkTutorialDialog.vue index 767e8c3fd6..d60bf9be60 100644 --- a/packages/client/src/components/MkTutorialDialog.vue +++ b/packages/client/src/components/MkTutorialDialog.vue @@ -211,7 +211,7 @@ import MkPushNotificationAllowButton from "@/components/MkPushNotificationAllowB import FormSwitch from "@/components/form/switch.vue"; import { defaultStore } from "@/store"; import { i18n } from "@/i18n"; -import { $i } from "@/account"; +import { $i } from "@/reactiveAccount"; import { instance } from "@/instance"; import icon from "@/scripts/icon"; diff --git a/packages/client/src/components/global/MkPageHeader.vue b/packages/client/src/components/global/MkPageHeader.vue index f6f32fc2f9..c68c2695fd 100644 --- a/packages/client/src/components/global/MkPageHeader.vue +++ b/packages/client/src/components/global/MkPageHeader.vue @@ -138,7 +138,8 @@ import MkFollowButton from "@/components/MkFollowButton.vue"; import { popupMenu } from "@/os"; import { scrollToTop } from "@/scripts/scroll"; import { injectPageMetadata } from "@/scripts/page-metadata"; -import { $i, openAccountMenu as openAccountMenu_ } from "@/account"; +import { openAccountMenu as openAccountMenu_ } from "@/account"; +import { $i } from "@/reactiveAccount"; import { i18n } from "@/i18n"; import icon from "@/scripts/icon"; diff --git a/packages/client/src/components/page/page.vue b/packages/client/src/components/page/page.vue index 4041b0e6fd..5edda71d07 100644 --- a/packages/client/src/components/page/page.vue +++ b/packages/client/src/components/page/page.vue @@ -21,7 +21,7 @@ import { parse } from "@syuilo/aiscript"; import XBlock from "./page.block.vue"; import { Hpml } from "@/scripts/hpml/evaluator"; import { url } from "@/config"; -import { $i } from "@/account"; +import { $i } from "@/reactiveAccount"; import { defaultStore } from "@/store"; export default defineComponent({ diff --git a/packages/client/src/init.ts b/packages/client/src/init.ts index 9abcc08544..92846d13c7 100644 --- a/packages/client/src/init.ts +++ b/packages/client/src/init.ts @@ -43,7 +43,8 @@ import { i18n } from "@/i18n"; import { alert, api, confirm, popup, post, toast } from "@/os"; import { stream } from "@/stream"; import * as sound from "@/scripts/sound"; -import { $i, login, refreshAccount, signout, updateAccount } from "@/account"; +import { login, refreshAccount, signout, updateAccount } from "@/account"; +import { $i } from "@/reactiveAccount"; import { ColdDeviceStorage, defaultStore } from "@/store"; import { fetchInstance, instance } from "@/instance"; import { makeHotkey } from "@/scripts/hotkey"; diff --git a/packages/client/src/navbar.ts b/packages/client/src/navbar.ts index c2ab1d4d1f..3021359e41 100644 --- a/packages/client/src/navbar.ts +++ b/packages/client/src/navbar.ts @@ -1,5 +1,5 @@ import { computed, reactive } from "vue"; -import { $i } from "./account"; +import { $i } from "@/reactiveAccount"; import { search } from "@/scripts/search"; import * as os from "@/os"; import { i18n } from "@/i18n"; diff --git a/packages/client/src/os.ts b/packages/client/src/os.ts index d21f0c4685..0baefc68a9 100644 --- a/packages/client/src/os.ts +++ b/packages/client/src/os.ts @@ -12,7 +12,7 @@ import MkWaitingDialog from "@/components/MkWaitingDialog.vue"; import MkToast from "@/components/MkToast.vue"; import MkDialog from "@/components/MkDialog.vue"; import type { MenuItem } from "@/types/menu"; -import { $i } from "@/account"; +import { $i } from "@/reactiveAccount"; export const pendingApiRequestsCount = ref(0); diff --git a/packages/client/src/pages/admin/index.vue b/packages/client/src/pages/admin/index.vue index f4c5490420..009a6ba6e2 100644 --- a/packages/client/src/pages/admin/index.vue +++ b/packages/client/src/pages/admin/index.vue @@ -73,7 +73,7 @@ import MkSuperMenu from "@/components/MkSuperMenu.vue"; import MkInfo from "@/components/MkInfo.vue"; import { instance } from "@/instance"; import { version } from "@/config"; -import { $i } from "@/account"; +import { $i } from "@/reactiveAccount"; import * as os from "@/os"; import { lookupUser } from "@/scripts/lookup-user"; import { lookupFile } from "@/scripts/lookup-file"; diff --git a/packages/client/src/pages/auth.vue b/packages/client/src/pages/auth.vue index 0c0f52d75b..5762fd9613 100644 --- a/packages/client/src/pages/auth.vue +++ b/packages/client/src/pages/auth.vue @@ -51,7 +51,8 @@ import XForm from "./auth.form.vue"; import MkSignin from "@/components/MkSignin.vue"; import MkKeyValue from "@/components/MkKeyValue.vue"; import * as os from "@/os"; -import { $i, login } from "@/account"; +import { login } from "@/account"; +import { $i } from "@/reactiveAccount"; import { i18n } from "@/i18n"; const props = defineProps<{ diff --git a/packages/client/src/pages/channel.vue b/packages/client/src/pages/channel.vue index e84b0e1d45..f141cc6fa8 100644 --- a/packages/client/src/pages/channel.vue +++ b/packages/client/src/pages/channel.vue @@ -103,7 +103,7 @@ import XTimeline from "@/components/MkTimeline.vue"; import XChannelFollowButton from "@/components/MkChannelFollowButton.vue"; import * as os from "@/os"; import { useRouter } from "@/router"; -import { $i } from "@/account"; +import { $i } from "@/reactiveAccount"; import { i18n } from "@/i18n"; import { definePageMetadata } from "@/scripts/page-metadata"; import icon from "@/scripts/icon"; diff --git a/packages/client/src/pages/clip.vue b/packages/client/src/pages/clip.vue index 7d8a2c27b3..033864e1d6 100644 --- a/packages/client/src/pages/clip.vue +++ b/packages/client/src/pages/clip.vue @@ -31,7 +31,7 @@ import { computed, provide, ref, watch } from "vue"; import type * as firefish from "firefish-js"; import XNotes from "@/components/MkNotes.vue"; -import { $i } from "@/account"; +import { $i } from "@/reactiveAccount"; import { i18n } from "@/i18n"; import * as os from "@/os"; import { definePageMetadata } from "@/scripts/page-metadata"; diff --git a/packages/client/src/pages/explore.users.vue b/packages/client/src/pages/explore.users.vue index 89dd1efdf6..9f3a4391d8 100644 --- a/packages/client/src/pages/explore.users.vue +++ b/packages/client/src/pages/explore.users.vue @@ -146,7 +146,7 @@ import MkFolder from "@/components/MkFolder.vue"; import MkTab from "@/components/MkTab.vue"; import * as os from "@/os"; import { i18n } from "@/i18n"; -import { $i } from "@/account"; +import { $i } from "@/reactiveAccount"; import icon from "@/scripts/icon"; const props = defineProps<{ diff --git a/packages/client/src/pages/follow-requests.vue b/packages/client/src/pages/follow-requests.vue index 68d0ce78c0..a3282a7ea9 100644 --- a/packages/client/src/pages/follow-requests.vue +++ b/packages/client/src/pages/follow-requests.vue @@ -88,7 +88,7 @@ import { acct, userPage } from "@/filters/user"; import * as os from "@/os"; import { i18n } from "@/i18n"; import { definePageMetadata } from "@/scripts/page-metadata"; -import { $i } from "@/account"; +import { $i } from "@/reactiveAccount"; import icon from "@/scripts/icon"; const paginationComponent = ref<InstanceType<typeof MkPagination>>(); diff --git a/packages/client/src/pages/messaging/index.vue b/packages/client/src/pages/messaging/index.vue index 1649a6c311..6892a24c39 100644 --- a/packages/client/src/pages/messaging/index.vue +++ b/packages/client/src/pages/messaging/index.vue @@ -100,7 +100,7 @@ import { stream } from "@/stream"; import { useRouter } from "@/router"; import { i18n } from "@/i18n"; import { definePageMetadata } from "@/scripts/page-metadata"; -import { $i } from "@/account"; +import { $i } from "@/reactiveAccount"; import { deviceKind } from "@/scripts/device-kind"; import { defaultStore } from "@/store"; import icon from "@/scripts/icon"; diff --git a/packages/client/src/pages/messaging/messaging-room.message.vue b/packages/client/src/pages/messaging/messaging-room.message.vue index 6094d2b4b1..f1ce1baf71 100644 --- a/packages/client/src/pages/messaging/messaging-room.message.vue +++ b/packages/client/src/pages/messaging/messaging-room.message.vue @@ -90,7 +90,7 @@ import XMediaList from "@/components/MkMediaList.vue"; import { extractUrlFromMfm } from "@/scripts/extract-url-from-mfm"; import MkUrlPreview from "@/components/MkUrlPreview.vue"; import * as os from "@/os"; -import { $i } from "@/account"; +import { $i } from "@/reactiveAccount"; import { i18n } from "@/i18n"; import icon from "@/scripts/icon"; diff --git a/packages/client/src/pages/messaging/messaging-room.vue b/packages/client/src/pages/messaging/messaging-room.vue index 6655c5be8d..336996df92 100644 --- a/packages/client/src/pages/messaging/messaging-room.vue +++ b/packages/client/src/pages/messaging/messaging-room.vue @@ -122,7 +122,7 @@ import { stream } from "@/stream"; import * as sound from "@/scripts/sound"; import { vibrate } from "@/scripts/vibrate"; import { i18n } from "@/i18n"; -import { $i } from "@/account"; +import { $i } from "@/reactiveAccount"; import { defaultStore } from "@/store"; import { definePageMetadata } from "@/scripts/page-metadata"; import icon from "@/scripts/icon"; diff --git a/packages/client/src/pages/miauth.vue b/packages/client/src/pages/miauth.vue index 9d1e3fe6bf..34dd7825b9 100644 --- a/packages/client/src/pages/miauth.vue +++ b/packages/client/src/pages/miauth.vue @@ -82,7 +82,8 @@ import { ref } from "vue"; import MkSignin from "@/components/MkSignin.vue"; import MkButton from "@/components/MkButton.vue"; import * as os from "@/os"; -import { $i, login } from "@/account"; +import { login } from "@/account"; +import { $i } from "@/reactiveAccount"; import { appendQuery, query } from "@/scripts/url"; import { i18n } from "@/i18n"; import icon from "@/scripts/icon"; diff --git a/packages/client/src/pages/page-editor/page-editor.vue b/packages/client/src/pages/page-editor/page-editor.vue index 3a581ff208..4d1608455b 100644 --- a/packages/client/src/pages/page-editor/page-editor.vue +++ b/packages/client/src/pages/page-editor/page-editor.vue @@ -179,7 +179,7 @@ import { selectFile } from "@/scripts/select-file"; import { mainRouter } from "@/router"; import { i18n } from "@/i18n"; import { definePageMetadata } from "@/scripts/page-metadata"; -import { $i } from "@/account"; +import { $i } from "@/reactiveAccount"; import icon from "@/scripts/icon"; const props = defineProps<{ diff --git a/packages/client/src/pages/scratchpad.vue b/packages/client/src/pages/scratchpad.vue index e7c65701c5..f6620e7268 100644 --- a/packages/client/src/pages/scratchpad.vue +++ b/packages/client/src/pages/scratchpad.vue @@ -50,7 +50,7 @@ import MkContainer from "@/components/MkContainer.vue"; import MkButton from "@/components/MkButton.vue"; import { createAiScriptEnv } from "@/scripts/aiscript/api"; import * as os from "@/os"; -import { $i } from "@/account"; +import { $i } from "@/reactiveAccount"; import { i18n } from "@/i18n"; import { definePageMetadata } from "@/scripts/page-metadata"; import icon from "@/scripts/icon"; diff --git a/packages/client/src/pages/settings/2fa.vue b/packages/client/src/pages/settings/2fa.vue index 2bf07e03b0..75c2e32f82 100644 --- a/packages/client/src/pages/settings/2fa.vue +++ b/packages/client/src/pages/settings/2fa.vue @@ -120,7 +120,7 @@ import MkSwitch from "@/components/form/switch.vue"; import FormSection from "@/components/form/section.vue"; import MkFolder from "@/components/MkFolder.vue"; import * as os from "@/os"; -import { $i } from "@/account"; +import { $i } from "@/reactiveAccount"; import { i18n } from "@/i18n"; import icon from "@/scripts/icon"; diff --git a/packages/client/src/pages/settings/account-info.vue b/packages/client/src/pages/settings/account-info.vue index 7342f2df42..d3b640a7e4 100644 --- a/packages/client/src/pages/settings/account-info.vue +++ b/packages/client/src/pages/settings/account-info.vue @@ -179,7 +179,7 @@ import MkKeyValue from "@/components/MkKeyValue.vue"; import * as os from "@/os"; import number from "@/filters/number"; import bytes from "@/filters/bytes"; -import { $i } from "@/account"; +import { $i } from "@/reactiveAccount"; import { i18n } from "@/i18n"; import { definePageMetadata } from "@/scripts/page-metadata"; import icon from "@/scripts/icon"; diff --git a/packages/client/src/pages/settings/accounts.vue b/packages/client/src/pages/settings/accounts.vue index 7058b652ad..2e0230d7a2 100644 --- a/packages/client/src/pages/settings/accounts.vue +++ b/packages/client/src/pages/settings/accounts.vue @@ -34,12 +34,12 @@ import FormSuspense from "@/components/form/suspense.vue"; import FormButton from "@/components/MkButton.vue"; import * as os from "@/os"; import { - $i, removeAccount as _removeAccount, addAccount as addAccounts, getAccounts, login, } from "@/account"; +import { $i } from "@/reactiveAccount"; import { i18n } from "@/i18n"; import { definePageMetadata } from "@/scripts/page-metadata"; import icon from "@/scripts/icon"; diff --git a/packages/client/src/pages/settings/drive.vue b/packages/client/src/pages/settings/drive.vue index e6b07acaa3..bd8b46600a 100644 --- a/packages/client/src/pages/settings/drive.vue +++ b/packages/client/src/pages/settings/drive.vue @@ -85,7 +85,7 @@ import { defaultStore } from "@/store"; import MkChart from "@/components/MkChart.vue"; import { i18n } from "@/i18n"; import { definePageMetadata } from "@/scripts/page-metadata"; -import { $i } from "@/account"; +import { $i } from "@/reactiveAccount"; import icon from "@/scripts/icon"; const fetching = ref(true); diff --git a/packages/client/src/pages/settings/email.vue b/packages/client/src/pages/settings/email.vue index 4d760fb9e7..da8578ead7 100644 --- a/packages/client/src/pages/settings/email.vue +++ b/packages/client/src/pages/settings/email.vue @@ -66,7 +66,7 @@ import FormSection from "@/components/form/section.vue"; import FormInput from "@/components/form/input.vue"; import FormSwitch from "@/components/form/switch.vue"; import * as os from "@/os"; -import { $i } from "@/account"; +import { $i } from "@/reactiveAccount"; import { i18n } from "@/i18n"; import { definePageMetadata } from "@/scripts/page-metadata"; import icon from "@/scripts/icon"; diff --git a/packages/client/src/pages/settings/general.vue b/packages/client/src/pages/settings/general.vue index 5b475b8939..0891b9269a 100644 --- a/packages/client/src/pages/settings/general.vue +++ b/packages/client/src/pages/settings/general.vue @@ -303,7 +303,7 @@ <script lang="ts" setup> import { computed, ref, watch } from "vue"; -import { $i } from "@/account"; +import { $i } from "@/reactiveAccount"; import FormSwitch from "@/components/form/switch.vue"; import FormSelect from "@/components/form/select.vue"; import FormRadios from "@/components/form/radios.vue"; diff --git a/packages/client/src/pages/settings/index.vue b/packages/client/src/pages/settings/index.vue index 56caea41f1..47812e5349 100644 --- a/packages/client/src/pages/settings/index.vue +++ b/packages/client/src/pages/settings/index.vue @@ -45,7 +45,8 @@ import { computed, onActivated, onMounted, onUnmounted, ref, watch } from "vue"; import { i18n } from "@/i18n"; import MkInfo from "@/components/MkInfo.vue"; import MkSuperMenu from "@/components/MkSuperMenu.vue"; -import { $i, signout } from "@/account"; +import { signout } from "@/account"; +import { $i } from "@/reactiveAccount"; import { unisonReload } from "@/scripts/unison-reload"; import { instance } from "@/instance"; import { useRouter } from "@/router"; diff --git a/packages/client/src/pages/settings/instance-mute.vue b/packages/client/src/pages/settings/instance-mute.vue index 1826fcc2c6..f73416bbb4 100644 --- a/packages/client/src/pages/settings/instance-mute.vue +++ b/packages/client/src/pages/settings/instance-mute.vue @@ -26,7 +26,7 @@ import FormTextarea from "@/components/form/textarea.vue"; import MkInfo from "@/components/MkInfo.vue"; import MkButton from "@/components/MkButton.vue"; import * as os from "@/os"; -import { $i } from "@/account"; +import { $i } from "@/reactiveAccount"; import { i18n } from "@/i18n"; import { definePageMetadata } from "@/scripts/page-metadata"; import icon from "@/scripts/icon"; diff --git a/packages/client/src/pages/settings/migration.vue b/packages/client/src/pages/settings/migration.vue index d05f473771..527b297c3f 100644 --- a/packages/client/src/pages/settings/migration.vue +++ b/packages/client/src/pages/settings/migration.vue @@ -60,7 +60,7 @@ import FormInfo from "@/components/MkInfo.vue"; import * as os from "@/os"; import { i18n } from "@/i18n"; import { definePageMetadata } from "@/scripts/page-metadata"; -import { $i } from "@/account"; +import { $i } from "@/reactiveAccount"; import icon from "@/scripts/icon"; const moveToAccount = ref(""); diff --git a/packages/client/src/pages/settings/notifications.vue b/packages/client/src/pages/settings/notifications.vue index 0e0f954a55..0100451893 100644 --- a/packages/client/src/pages/settings/notifications.vue +++ b/packages/client/src/pages/settings/notifications.vue @@ -54,7 +54,7 @@ import { notificationTypes } from "firefish-js"; import FormButton from "@/components/MkButton.vue"; import FormSection from "@/components/form/section.vue"; import * as os from "@/os"; -import { $i } from "@/account"; +import { $i } from "@/reactiveAccount"; import { i18n } from "@/i18n"; import { definePageMetadata } from "@/scripts/page-metadata"; import MkPushNotificationAllowButton from "@/components/MkPushNotificationAllowButton.vue"; diff --git a/packages/client/src/pages/settings/preferences-backups.vue b/packages/client/src/pages/settings/preferences-backups.vue index e5197dc489..da4a40b323 100644 --- a/packages/client/src/pages/settings/preferences-backups.vue +++ b/packages/client/src/pages/settings/preferences-backups.vue @@ -65,7 +65,7 @@ import * as os from "@/os"; import { ColdDeviceStorage, defaultStore } from "@/store"; import { unisonReload } from "@/scripts/unison-reload"; import { stream } from "@/stream"; -import { $i } from "@/account"; +import { $i } from "@/reactiveAccount"; import { i18n } from "@/i18n"; import { host, version } from "@/config"; import { definePageMetadata } from "@/scripts/page-metadata"; diff --git a/packages/client/src/pages/settings/privacy.vue b/packages/client/src/pages/settings/privacy.vue index 3b0e154181..a7c5f56a90 100644 --- a/packages/client/src/pages/settings/privacy.vue +++ b/packages/client/src/pages/settings/privacy.vue @@ -157,7 +157,7 @@ import FormFolder from "@/components/form/folder.vue"; import * as os from "@/os"; import { defaultStore } from "@/store"; import { i18n } from "@/i18n"; -import { $i } from "@/account"; +import { $i } from "@/reactiveAccount"; import { definePageMetadata } from "@/scripts/page-metadata"; import icon from "@/scripts/icon"; diff --git a/packages/client/src/pages/settings/profile.vue b/packages/client/src/pages/settings/profile.vue index 3d9eb2246b..99486adf8c 100644 --- a/packages/client/src/pages/settings/profile.vue +++ b/packages/client/src/pages/settings/profile.vue @@ -170,7 +170,7 @@ import FormSlot from "@/components/form/slot.vue"; import { selectFile } from "@/scripts/select-file"; import * as os from "@/os"; import { i18n } from "@/i18n"; -import { $i } from "@/account"; +import { $i } from "@/reactiveAccount"; import { langmap } from "@/scripts/langmap"; import { definePageMetadata } from "@/scripts/page-metadata"; import { host } from "@/config"; diff --git a/packages/client/src/pages/settings/word-mute.vue b/packages/client/src/pages/settings/word-mute.vue index 7b2c45d04a..68b6b09a45 100644 --- a/packages/client/src/pages/settings/word-mute.vue +++ b/packages/client/src/pages/settings/word-mute.vue @@ -70,7 +70,7 @@ import MkTab from "@/components/MkTab.vue"; import * as os from "@/os"; import number from "@/filters/number"; import { defaultStore } from "@/store"; -import { $i } from "@/account"; +import { $i } from "@/reactiveAccount"; import { i18n } from "@/i18n"; import { definePageMetadata } from "@/scripts/page-metadata"; import icon from "@/scripts/icon"; diff --git a/packages/client/src/pages/theme-editor.vue b/packages/client/src/pages/theme-editor.vue index d7fba77d12..527b62c470 100644 --- a/packages/client/src/pages/theme-editor.vue +++ b/packages/client/src/pages/theme-editor.vue @@ -151,7 +151,7 @@ import FormButton from "@/components/MkButton.vue"; import FormTextarea from "@/components/form/textarea.vue"; import FormFolder from "@/components/form/folder.vue"; -import { $i } from "@/account"; +import { $i } from "@/reactiveAccount"; import type { Theme } from "@/scripts/theme"; import { applyTheme } from "@/scripts/theme"; import lightTheme from "@/themes/_light.json5"; diff --git a/packages/client/src/pages/timeline.vue b/packages/client/src/pages/timeline.vue index 3573e00523..05dcaa6abf 100644 --- a/packages/client/src/pages/timeline.vue +++ b/packages/client/src/pages/timeline.vue @@ -74,7 +74,7 @@ import * as os from "@/os"; import { defaultStore } from "@/store"; import { i18n } from "@/i18n"; import { instance } from "@/instance"; -import { $i } from "@/account"; +import { $i } from "@/reactiveAccount"; import { definePageMetadata } from "@/scripts/page-metadata"; import { deviceKind } from "@/scripts/device-kind"; import icon from "@/scripts/icon"; diff --git a/packages/client/src/pages/user/home.vue b/packages/client/src/pages/user/home.vue index 029b56aa6b..a59df2b0fb 100644 --- a/packages/client/src/pages/user/home.vue +++ b/packages/client/src/pages/user/home.vue @@ -392,7 +392,7 @@ import { userPage } from "@/filters/user"; import { defaultStore } from "@/store"; import * as os from "@/os"; import { i18n } from "@/i18n"; -import { $i } from "@/account"; +import { $i } from "@/reactiveAccount"; import { host } from "@/config"; import icon from "@/scripts/icon"; diff --git a/packages/client/src/pages/user/index.vue b/packages/client/src/pages/user/index.vue index a0c9f4326d..9fe9678e6a 100644 --- a/packages/client/src/pages/user/index.vue +++ b/packages/client/src/pages/user/index.vue @@ -37,7 +37,7 @@ import * as os from "@/os"; import { useRouter } from "@/router"; import { definePageMetadata } from "@/scripts/page-metadata"; import { i18n } from "@/i18n"; -import { $i } from "@/account"; +import { $i } from "@/reactiveAccount"; import icon from "@/scripts/icon"; const XHome = defineAsyncComponent(() => import("./home.vue")); diff --git a/packages/client/src/pizzax.ts b/packages/client/src/pizzax.ts index 1155158067..790885d590 100644 --- a/packages/client/src/pizzax.ts +++ b/packages/client/src/pizzax.ts @@ -2,7 +2,7 @@ import type { Ref } from "vue"; import { onUnmounted, ref, watch } from "vue"; -import { $i } from "./account"; +import { $i } from "@/reactiveAccount"; import { api } from "./os"; import { stream } from "./stream"; diff --git a/packages/client/src/reactiveAccount.ts b/packages/client/src/reactiveAccount.ts new file mode 100644 index 0000000000..218024d60b --- /dev/null +++ b/packages/client/src/reactiveAccount.ts @@ -0,0 +1,9 @@ +import { reactive } from "vue"; +import { Account } from "@/account"; + +const accountData = localStorage.getItem("account"); + +// TODO: 外部からはreadonlyに +export const $i = accountData + ? reactive(JSON.parse(accountData) as Account) + : null; diff --git a/packages/client/src/router.ts b/packages/client/src/router.ts index dd1621777e..ea772bad5c 100644 --- a/packages/client/src/router.ts +++ b/packages/client/src/router.ts @@ -1,7 +1,8 @@ import type { AsyncComponentLoader } from "vue"; import { defineAsyncComponent, inject } from "vue"; import { Router } from "@/nirax"; -import { $i, iAmModerator } from "@/account"; +import { iAmModerator } from "@/account"; +import { $i } from "@/reactiveAccount"; import MkLoading from "@/pages/_loading_.vue"; import MkError from "@/pages/_error_.vue"; import { api } from "@/os"; diff --git a/packages/client/src/scripts/aiscript/api.ts b/packages/client/src/scripts/aiscript/api.ts index 9ec2db9632..55b8977230 100644 --- a/packages/client/src/scripts/aiscript/api.ts +++ b/packages/client/src/scripts/aiscript/api.ts @@ -1,6 +1,6 @@ import { utils, values } from "@syuilo/aiscript"; import * as os from "@/os"; -import { $i } from "@/account"; +import { $i } from "@/reactiveAccount"; export function createAiScriptEnv(opts) { let apiRequests = 0; diff --git a/packages/client/src/scripts/get-note-menu.ts b/packages/client/src/scripts/get-note-menu.ts index fea50ced3b..5bbb69a461 100644 --- a/packages/client/src/scripts/get-note-menu.ts +++ b/packages/client/src/scripts/get-note-menu.ts @@ -1,7 +1,7 @@ import type { Ref } from "vue"; import { defineAsyncComponent, inject } from "vue"; import type * as firefish from "firefish-js"; -import { $i } from "@/account"; +import { $i } from "@/reactiveAccount"; import { i18n } from "@/i18n"; import { instance } from "@/instance"; import * as os from "@/os"; diff --git a/packages/client/src/scripts/get-user-menu.ts b/packages/client/src/scripts/get-user-menu.ts index 83c70546bb..e9a6ca567f 100644 --- a/packages/client/src/scripts/get-user-menu.ts +++ b/packages/client/src/scripts/get-user-menu.ts @@ -5,7 +5,8 @@ import copyToClipboard from "@/scripts/copy-to-clipboard"; import { host } from "@/config"; import * as os from "@/os"; import { userActions } from "@/store"; -import { $i, iAmModerator } from "@/account"; +import { iAmModerator } from "@/account"; +import { $i } from "@/reactiveAccount"; import { mainRouter } from "@/router"; import type { Router } from "@/nirax"; import icon from "@/scripts/icon"; diff --git a/packages/client/src/scripts/please-login.ts b/packages/client/src/scripts/please-login.ts index f8f3983ae5..b8421172d4 100644 --- a/packages/client/src/scripts/please-login.ts +++ b/packages/client/src/scripts/please-login.ts @@ -1,5 +1,5 @@ import { defineAsyncComponent } from "vue"; -import { $i } from "@/account"; +import { $i } from "@/reactiveAccount"; import { i18n } from "@/i18n"; import { popup } from "@/os"; import { vibrate } from "@/scripts/vibrate"; diff --git a/packages/client/src/scripts/upload.ts b/packages/client/src/scripts/upload.ts index 2b26ba3024..37f3c8faf1 100644 --- a/packages/client/src/scripts/upload.ts +++ b/packages/client/src/scripts/upload.ts @@ -3,7 +3,7 @@ import type * as firefish from "firefish-js"; import { readAndCompressImage } from "browser-image-resizer"; import { defaultStore } from "@/store"; import { apiUrl } from "@/config"; -import { $i } from "@/account"; +import { $i } from "@/reactiveAccount"; import { alert } from "@/os"; import { i18n } from "@/i18n"; diff --git a/packages/client/src/scripts/use-note-capture.ts b/packages/client/src/scripts/use-note-capture.ts index 57cf5b84a4..7c5f29d0a3 100644 --- a/packages/client/src/scripts/use-note-capture.ts +++ b/packages/client/src/scripts/use-note-capture.ts @@ -2,7 +2,7 @@ import type { Ref } from "vue"; import { onUnmounted } from "vue"; import type * as firefish from "firefish-js"; import { stream } from "@/stream"; -import { $i } from "@/account"; +import { $i } from "@/reactiveAccount"; import * as os from "@/os"; export function useNoteCapture(props: { diff --git a/packages/client/src/stream.ts b/packages/client/src/stream.ts index 6d7f890d6e..28a8a26650 100644 --- a/packages/client/src/stream.ts +++ b/packages/client/src/stream.ts @@ -1,6 +1,6 @@ import * as firefish from "firefish-js"; import { markRaw } from "vue"; -import { $i } from "@/account"; +import { $i } from "@/reactiveAccount"; import { url } from "@/config"; export const stream = markRaw( diff --git a/packages/client/src/theme-store.ts b/packages/client/src/theme-store.ts index 3dedc045e4..866ba064c4 100644 --- a/packages/client/src/theme-store.ts +++ b/packages/client/src/theme-store.ts @@ -1,6 +1,6 @@ import type { Theme } from "./scripts/theme"; import { api } from "@/os"; -import { $i } from "@/account"; +import { $i } from "@/reactiveAccount"; const lsCacheKey = $i ? `themes:${$i.id}` : ""; diff --git a/packages/client/src/ui/_common_/common.vue b/packages/client/src/ui/_common_/common.vue index 8e2d20f92f..d808f303c4 100644 --- a/packages/client/src/ui/_common_/common.vue +++ b/packages/client/src/ui/_common_/common.vue @@ -22,7 +22,7 @@ import { swInject } from "./sw-inject"; import { pendingApiRequestsCount, popup, popups } from "@/os"; import { uploads } from "@/scripts/upload"; import * as sound from "@/scripts/sound"; -import { $i } from "@/account"; +import { $i } from "@/reactiveAccount"; import { stream } from "@/stream"; const XStreamIndicator = defineAsyncComponent( diff --git a/packages/client/src/ui/_common_/navbar.vue b/packages/client/src/ui/_common_/navbar.vue index 3fad8c0bf0..a5043ed942 100644 --- a/packages/client/src/ui/_common_/navbar.vue +++ b/packages/client/src/ui/_common_/navbar.vue @@ -149,7 +149,8 @@ import { computed, defineAsyncComponent, ref, watch } from "vue"; import * as os from "@/os"; import { navbarItemDef } from "@/navbar"; -import { $i, openAccountMenu as openAccountMenu_ } from "@/account"; +import { openAccountMenu as openAccountMenu_ } from "@/account"; +import { $i } from "@/reactiveAccount"; import { openHelpMenu_ } from "@/scripts/helpMenu"; import { defaultStore } from "@/store"; import { i18n } from "@/i18n"; diff --git a/packages/client/src/ui/_common_/sw-inject.ts b/packages/client/src/ui/_common_/sw-inject.ts index 7e419c63e0..f55caadc80 100644 --- a/packages/client/src/ui/_common_/sw-inject.ts +++ b/packages/client/src/ui/_common_/sw-inject.ts @@ -1,6 +1,7 @@ import { inject } from "vue"; import { post } from "@/os"; -import { $i, login } from "@/account"; +import { login } from "@/account"; +import { $i } from "@/reactiveAccount"; import { defaultStore } from "@/store"; import { getAccountFromId } from "@/scripts/get-account-from-id"; import { mainRouter } from "@/router"; diff --git a/packages/client/src/ui/deck.vue b/packages/client/src/ui/deck.vue index 49962087b9..21901916a9 100644 --- a/packages/client/src/ui/deck.vue +++ b/packages/client/src/ui/deck.vue @@ -203,7 +203,7 @@ import XDrawerMenu from "@/ui/_common_/navbar-for-mobile.vue"; import MkButton from "@/components/MkButton.vue"; import * as os from "@/os"; import { navbarItemDef } from "@/navbar"; -import { $i } from "@/account"; +import { $i } from "@/reactiveAccount"; import { i18n } from "@/i18n"; import { mainRouter } from "@/router"; import { unisonReload } from "@/scripts/unison-reload"; diff --git a/packages/client/src/ui/deck/tl-column.vue b/packages/client/src/ui/deck/tl-column.vue index 9b37687d1b..9c7b4404de 100644 --- a/packages/client/src/ui/deck/tl-column.vue +++ b/packages/client/src/ui/deck/tl-column.vue @@ -50,7 +50,7 @@ import type { Column } from "./deck-store"; import { removeColumn, updateColumn } from "./deck-store"; import XTimeline from "@/components/MkTimeline.vue"; import * as os from "@/os"; -import { $i } from "@/account"; +import { $i } from "@/reactiveAccount"; import { instance } from "@/instance"; import { i18n } from "@/i18n"; import icon from "@/scripts/icon"; diff --git a/packages/client/src/ui/universal.vue b/packages/client/src/ui/universal.vue index b2e1110db5..32cf5e97ca 100644 --- a/packages/client/src/ui/universal.vue +++ b/packages/client/src/ui/universal.vue @@ -199,7 +199,7 @@ import * as os from "@/os"; import { defaultStore } from "@/store"; import { navbarItemDef } from "@/navbar"; import { i18n } from "@/i18n"; -import { $i } from "@/account"; +import { $i } from "@/reactiveAccount"; import { mainRouter } from "@/router"; import { provideMetadataReceiver } from "@/scripts/page-metadata"; import { deviceKind } from "@/scripts/device-kind"; diff --git a/packages/client/src/widgets/activity.vue b/packages/client/src/widgets/activity.vue index 651307b1a2..beab1b068e 100644 --- a/packages/client/src/widgets/activity.vue +++ b/packages/client/src/widgets/activity.vue @@ -46,7 +46,7 @@ import MkHeatmap from "@/components/MkHeatmap.vue"; import type { GetFormResultType } from "@/scripts/form"; import * as os from "@/os"; import MkContainer from "@/components/MkContainer.vue"; -import { $i } from "@/account"; +import { $i } from "@/reactiveAccount"; import { i18n } from "@/i18n"; import icon from "@/scripts/icon"; diff --git a/packages/client/src/widgets/aiscript.vue b/packages/client/src/widgets/aiscript.vue index 256620dfce..5b6c886b4d 100644 --- a/packages/client/src/widgets/aiscript.vue +++ b/packages/client/src/widgets/aiscript.vue @@ -34,7 +34,7 @@ import type { GetFormResultType } from "@/scripts/form"; import * as os from "@/os"; import MkContainer from "@/components/MkContainer.vue"; import { createAiScriptEnv } from "@/scripts/aiscript/api"; -import { $i } from "@/account"; +import { $i } from "@/reactiveAccount"; import { i18n } from "@/i18n"; import icon from "@/scripts/icon"; diff --git a/packages/client/src/widgets/button.vue b/packages/client/src/widgets/button.vue index b9378e0ea2..35295d7aa8 100644 --- a/packages/client/src/widgets/button.vue +++ b/packages/client/src/widgets/button.vue @@ -18,7 +18,7 @@ import { import type { GetFormResultType } from "@/scripts/form"; import * as os from "@/os"; import { createAiScriptEnv } from "@/scripts/aiscript/api"; -import { $i } from "@/account"; +import { $i } from "@/reactiveAccount"; import MkButton from "@/components/MkButton.vue"; const name = "button"; diff --git a/packages/client/src/widgets/calendar.vue b/packages/client/src/widgets/calendar.vue index eb2ec6c410..e98b5049da 100644 --- a/packages/client/src/widgets/calendar.vue +++ b/packages/client/src/widgets/calendar.vue @@ -54,7 +54,7 @@ import { import type { GetFormResultType } from "@/scripts/form"; import { i18n } from "@/i18n"; import { useInterval } from "@/scripts/use-interval"; -import { $i } from "@/account"; +import { $i } from "@/reactiveAccount"; const name = "calendar"; From 993340bae6c1edf8591e0d3a32d153e850eb0254 Mon Sep 17 00:00:00 2001 From: naskya <m@naskya.net> Date: Mon, 23 Oct 2023 18:32:33 +0900 Subject: [PATCH 31/74] fix: overlooked fix in cdf839bc --- packages/backend/src/remote/activitypub/models/person.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/backend/src/remote/activitypub/models/person.ts b/packages/backend/src/remote/activitypub/models/person.ts index 1db90ad7f1..ab017b65ac 100644 --- a/packages/backend/src/remote/activitypub/models/person.ts +++ b/packages/backend/src/remote/activitypub/models/person.ts @@ -456,7 +456,7 @@ export async function updatePerson( const emojiNames = emojis.map((emoji) => emoji.name); - const { fields } = analyzeAttachments(person.attachment || []); + const fields = analyzeAttachments(person.attachment || []); const tags = extractApHashtags(person.tag) .map((tag) => normalizeForSearch(tag)) From c80b5d3512d9ac1a93eca1d85ccdf1caf667ce87 Mon Sep 17 00:00:00 2001 From: naskya <m@naskya.net> Date: Mon, 23 Oct 2023 21:46:35 +0900 Subject: [PATCH 32/74] fix: "_lang_" should be the language name, not the translation of "English" --- locales/gl.yml | 2 +- locales/pt-PT.yml | 2 +- locales/pt_BR.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/locales/gl.yml b/locales/gl.yml index 3b8d60181a..eada0c213b 100644 --- a/locales/gl.yml +++ b/locales/gl.yml @@ -1,4 +1,4 @@ -_lang_: Inglés +_lang_: Galego introFirefish: Benvida! Firefish é unha plataforma de medios sociais de código aberto, descentralizada e gratuíta para sempre!🚀 monthAndDay: '{day}/{month}' diff --git a/locales/pt-PT.yml b/locales/pt-PT.yml index cb5ebabdc0..092b0ac751 100644 --- a/locales/pt-PT.yml +++ b/locales/pt-PT.yml @@ -1,4 +1,4 @@ -_lang_: "Português" +_lang_: "Português (Portugal)" headlineFirefish: "Uma rede ligada por notas" introFirefish: "Bem-vindo! Firefish é um serviço de microblogue descentralizado de código aberto, gratuito para sempre! 🚀" diff --git a/locales/pt_BR.yml b/locales/pt_BR.yml index f8fb651182..deaa2f32d9 100644 --- a/locales/pt_BR.yml +++ b/locales/pt_BR.yml @@ -1,6 +1,6 @@ +_lang_: Português (Brasil) username: Nome de usuário ok: OK -_lang_: Inglês headlineFirefish: Uma plataforma de mídia social descentralizada e de código aberto que é gratuita para sempre! 🚀 search: Pesquisar From 2691bd14eeb86b110a9c51938161bf0f95018a67 Mon Sep 17 00:00:00 2001 From: naskya <m@naskya.net> Date: Tue, 24 Oct 2023 05:15:19 +0000 Subject: [PATCH 33/74] Update example.yml (add signTo ActivityPubGet: true) --- .config/example.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.config/example.yml b/.config/example.yml index 49922d65ae..46efda9142 100644 --- a/.config/example.yml +++ b/.config/example.yml @@ -192,6 +192,9 @@ reservedUsernames: [ # Proxy remote files (default: false) #proxyRemoteFiles: true +# Use authorized fetch for outgoing requests +signToActivityPubGet: true + #allowedPrivateNetworks: [ # '127.0.0.1/32' #] From a04f488da00b0b9c3ffb80a0d373400223f109ed Mon Sep 17 00:00:00 2001 From: Johann150 <johann.galle@protonmail.com> Date: Mon, 27 Mar 2023 18:43:49 +0200 Subject: [PATCH 34/74] feat: client: add page 'posts with file attached' Based on FoundKey commit 3747d7ecb1. Closes #10695 --- locales/de-DE.yml | 2 + locales/en-US.yml | 2 + locales/ja-JP.yml | 2 + .../client/src/components/MkDrive.file.vue | 6 +++ packages/client/src/components/MkTimeline.vue | 6 +++ packages/client/src/pages/attached-files.vue | 39 +++++++++++++++++++ packages/client/src/router.ts | 5 +++ 7 files changed, 62 insertions(+) create mode 100644 packages/client/src/pages/attached-files.vue diff --git a/locales/de-DE.yml b/locales/de-DE.yml index 9521870fd8..693b521c43 100644 --- a/locales/de-DE.yml +++ b/locales/de-DE.yml @@ -402,6 +402,8 @@ withReplies: "Antworten beinhalten" connectedTo: "Mit folgenden Nutzerkonten verknüpft" notesAndReplies: "Beiträge und Antworten" withFiles: "Beiträge mit Dateien" +attachedToNotes: "Beiträge mit dieser Datei" +showAttachedNotes: "Zeige Beiträge mit dieser Datei" silence: "stummschalten" silenceConfirm: "Sind Sie sicher, dass Sie diesen Benutzer Stummschalten möchten?" unsilence: "Stummschaltung aufheben" diff --git a/locales/en-US.yml b/locales/en-US.yml index 24fc392444..3594c7e092 100644 --- a/locales/en-US.yml +++ b/locales/en-US.yml @@ -429,6 +429,8 @@ withReplies: "Include replies" connectedTo: "Following account(s) are connected" notesAndReplies: "Posts and replies" withFiles: "Including files" +attachedToNotes: "Posts with this file" +showAttachedNotes: "Show posts with this file" silence: "Silence" silenceConfirm: "Are you sure that you want to silence this user?" unsilence: "Undo silencing" diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml index 31d817b7b0..04bfa297a3 100644 --- a/locales/ja-JP.yml +++ b/locales/ja-JP.yml @@ -384,6 +384,8 @@ withReplies: "返信を含む" connectedTo: "次のアカウントに接続されています" notesAndReplies: "投稿と返信" withFiles: "ファイル付き" +attachedToNotes: "このファイルが添付された投稿" +showAttachedNotes: "このファイルが添付された投稿を見る" silence: "サイレンス" silenceConfirm: "サイレンスしますか?" unsilence: "サイレンス解除" diff --git a/packages/client/src/components/MkDrive.file.vue b/packages/client/src/components/MkDrive.file.vue index 483375938b..5163b9f7cb 100644 --- a/packages/client/src/components/MkDrive.file.vue +++ b/packages/client/src/components/MkDrive.file.vue @@ -107,6 +107,12 @@ function getMenu() { icon: `${icon("ph-download-simple")}`, download: props.file.name, }, + { + type: "a", + href: `/my/drive/file/${props.file.id}/attached`, + text: i18n.ts.showAttachedNotes, + icon: `${icon("ph-paperclip")}`, + }, null, { text: i18n.ts.delete, diff --git a/packages/client/src/components/MkTimeline.vue b/packages/client/src/components/MkTimeline.vue index beca720a37..c310851e2e 100644 --- a/packages/client/src/components/MkTimeline.vue +++ b/packages/client/src/components/MkTimeline.vue @@ -44,6 +44,7 @@ const props = defineProps<{ antenna?: string; channel?: string; sound?: boolean; + fileId?: string; }>(); const queue = ref(0); @@ -195,6 +196,11 @@ if (props.src === "antenna") { channelId: props.channel, }); connection.on("note", prepend); +} else if (props.src === "file") { + endpoint = "drive/files/attached-notes"; + query = { + fileId: props.fileId, + }; } function closeHint() { diff --git a/packages/client/src/pages/attached-files.vue b/packages/client/src/pages/attached-files.vue new file mode 100644 index 0000000000..e0fd09d419 --- /dev/null +++ b/packages/client/src/pages/attached-files.vue @@ -0,0 +1,39 @@ +<template> + <MkStickyContainer> + <template #header + ><MkPageHeader :display-back-button="true" + /></template> + <MkSpacer :content-max="800"> + <div class="attachments-timeline"> + <XTimeline ref="tl" class="tl" src="file" :fileId="fileId" /> + </div> + </MkSpacer> + </MkStickyContainer> +</template> + +<script lang="ts" setup> +import { computed } from "vue"; +import XTimeline from "@/components/MkTimeline.vue"; +import { i18n } from "@/i18n"; +import { definePageMetadata } from "@/scripts/page-metadata"; +import icon from "@/scripts/icon"; + +defineProps<{ + fileId: string; +}>(); + +definePageMetadata( + computed(() => ({ + title: i18n.ts.attachedToNotes, + icon: `${icon("ph-paperclip")}`, + })), +); +</script> + +<style lang="scss" scoped> +.attachments-timeline { + background: var(--bg); + border-radius: var(--radius); + overflow: clip; +} +</style> diff --git a/packages/client/src/router.ts b/packages/client/src/router.ts index ea772bad5c..23fdd5d39e 100644 --- a/packages/client/src/router.ts +++ b/packages/client/src/router.ts @@ -583,6 +583,11 @@ export const routes = [ component: page(() => import("./pages/drive.vue")), loginRequired: true, }, + { + path: "/my/drive/file/:fileId/attached", + component: page(() => import("./pages/attached-files.vue")), + loginRequired: true, + }, { path: "/my/drive", component: page(() => import("./pages/drive.vue")), From ed54ecd5b7ec04d857fdb0df26366fd8e2114e6c Mon Sep 17 00:00:00 2001 From: Ramdziana F Y <ramdziana@outlook.co.id> Date: Tue, 24 Oct 2023 11:54:14 +0000 Subject: [PATCH 35/74] chore: Translated using Weblate (Indonesian) Currently translated at 100.0% (1870 of 1870 strings) Translation: Firefish/locales Translate-URL: https://hosted.weblate.org/projects/firefish/locales/id/ --- locales/id-ID.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/locales/id-ID.yml b/locales/id-ID.yml index 9bd99d40cc..3c3d068d96 100644 --- a/locales/id-ID.yml +++ b/locales/id-ID.yml @@ -2181,3 +2181,14 @@ openServerInfo: Tampilkan informasi server dengan mengeklik ticker server di seb kiriman vibrate: Putar getaran clickToShowPatterns: Klik untuk menampilkan pola modul +iconSet: Set ikon +_iconSets: + fill: Penuh + regular: Reguler + bold: Tebal + duotone: Duotone + light: Tipis +reactions: Reaksi +replies: Balasan +quotes: Kutipan +renotes: Postingan ulang From 927ade999c75262c80fb852cf9694f9c6c5e053b Mon Sep 17 00:00:00 2001 From: Pynolo <pynolo@tarine.net> Date: Tue, 24 Oct 2023 10:11:51 +0000 Subject: [PATCH 36/74] chore: Translated using Weblate (Italian) Currently translated at 99.8% (1868 of 1870 strings) Translation: Firefish/locales Translate-URL: https://hosted.weblate.org/projects/firefish/locales/it/ --- locales/it-IT.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/locales/it-IT.yml b/locales/it-IT.yml index dc9da6dc7f..a4d3f5ba4a 100644 --- a/locales/it-IT.yml +++ b/locales/it-IT.yml @@ -2169,3 +2169,14 @@ openServerInfo: Mostra informazioni sul server cliccando sul riquadro del server un post vibrate: Abilita la vibrazione clickToShowPatterns: Clicca per vedere i pattern del modulo +iconSet: Set di icone +_iconSets: + fill: Con riempimento + regular: Regolare + bold: Grassetto + duotone: Con due toni + light: Sottile +reactions: Reazioni +replies: Risposte +quotes: Citazioni +renotes: Boost From 58c53e068918ec16c77c0b526e5fc5d3468b3567 Mon Sep 17 00:00:00 2001 From: "@DDoSkiray@ddoskey.com" <+DDoSkiray+ddoskey.com@users.noreply.hosted.weblate.org> Date: Tue, 24 Oct 2023 12:32:51 +0000 Subject: [PATCH 37/74] chore: Translated using Weblate (Japanese (Kansai)) Currently translated at 70.3% (1315 of 1870 strings) Translation: Firefish/locales Translate-URL: https://hosted.weblate.org/projects/firefish/locales/ja_KS/ --- locales/ja-KS.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/locales/ja-KS.yml b/locales/ja-KS.yml index c768084362..4f77592dcd 100644 --- a/locales/ja-KS.yml +++ b/locales/ja-KS.yml @@ -1444,7 +1444,12 @@ _tutorial: step4_1: 投稿しとーみ step5_1: タイムライン! 文字と写真の宝石箱や~ step5_2: うちのサーバーでは{timelines}種類のタイムラインをご用意しとります。 - step4_2: 最初は{introduction}に投稿したり、シンプルに「ここは賑やかどすなぁ。うちはそこまで喋れまへんが、どうぞよろしゅうに」などと投稿しはる方もいてます。 + step4_2: 最初は{introduction}に投稿したり、シンプルに「ここは賑やかどすなぁ。ウチはそんなに喋れまへんが、どうぞよろしゅうに」などと投稿しはる方もいてます。 + step5_7: グローバル{icon}タイムラインでは、接続しとるそこいらのサーバーからアレがガーッ流れてきてえらいこっちゃで。 + step5_6: おすすめ{icon}タイムラインでは、うちの管理人がばりおすすめしとるサーバーの投稿を表示させとうよ。 + step5_5: ソーシャル{icon}タイムラインでは、ホームタイムラインとローカルタイムラインの投稿が両方見られてホンマお得やわぁ。 + step5_3: ホーム{icon}タイムラインでは、あんたはんがフォローしてはる兄ちゃんらの投稿が見られまんねん。 + step5_4: ローカル{icon}タイムラインでは、このサーバーにおる人らの投稿を見られますわ。 _postForm: _placeholders: b: なんかおましたか? From df0e93bad55588c2a3d0e184ace394523159a615 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=B5=E3=83=9D=E3=83=9F=E3=82=AF?= <dev@sup39.dev> Date: Tue, 24 Oct 2023 09:12:12 +0000 Subject: [PATCH 38/74] chore: Translated using Weblate (Chinese (Traditional)) Currently translated at 99.7% (1866 of 1870 strings) Translation: Firefish/locales Translate-URL: https://hosted.weblate.org/projects/firefish/locales/zh_Hant/ --- locales/zh-TW.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/locales/zh-TW.yml b/locales/zh-TW.yml index 34cf9acf12..82b3276b62 100644 --- a/locales/zh-TW.yml +++ b/locales/zh-TW.yml @@ -1994,3 +1994,10 @@ indexable: 登錄至貼文搜尋引擎 origin: 來源 objectStorageS3ForcePathStyle: 使用基於路徑的端點(Endpoint)URL clickToShowPatterns: 點擊顯示模組模式(Module Pattern) +iconSet: 圖示的樣式 +_iconSets: + fill: 填滿 + regular: 標準 + bold: 粗線 + duotone: 雙色 + light: 細線 From 6f30da145407b296f1bc6313c81e5a3dfecc00bc Mon Sep 17 00:00:00 2001 From: naskya <m@naskya.net> Date: Wed, 25 Oct 2023 16:44:56 +0000 Subject: [PATCH 39/74] Update Dockerfile to use node:20 --- Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index c7d9a95d86..1b94fc9b43 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ ## Install dev and compilation dependencies, build files -FROM node:latest as build +FROM node:20 as build WORKDIR /firefish # Install compilation dependencies @@ -48,7 +48,7 @@ RUN env NODE_ENV=production sh -c "pnpm run --filter '!native-utils' build && pn RUN pnpm i --prod --frozen-lockfile ## Runtime container -FROM node:latest +FROM node:20 WORKDIR /firefish # Install runtime dependencies From 27d7e456cd936b7207821b59d14cb722f680bc2e Mon Sep 17 00:00:00 2001 From: naskya <m@naskya.net> Date: Thu, 26 Oct 2023 03:03:38 +0000 Subject: [PATCH 40/74] fix: targetLang is `xx-yy` or `xx_yy` --- packages/backend/src/server/api/endpoints/notes/translate.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/backend/src/server/api/endpoints/notes/translate.ts b/packages/backend/src/server/api/endpoints/notes/translate.ts index 1e90fb617e..d46a819344 100644 --- a/packages/backend/src/server/api/endpoints/notes/translate.ts +++ b/packages/backend/src/server/api/endpoints/notes/translate.ts @@ -64,6 +64,7 @@ export default define(meta, paramDef, async (ps, user) => { let targetLang = ps.targetLang; if (targetLang.includes("-")) targetLang = targetLang.split("-")[0]; + if (targetLang.includes("_")) targetLang = targetLang.split("_")[0]; if (instance.libreTranslateApiUrl != null) { const jsonBody = { From 2f145608ac773bfae3041b8580400b0d27a40771 Mon Sep 17 00:00:00 2001 From: Daniel Drozdz <nya@femsci.net> Date: Wed, 25 Oct 2023 19:14:42 +0000 Subject: [PATCH 41/74] chore: Translated using Weblate (Polish) Currently translated at 91.6% (1714 of 1870 strings) Translation: Firefish/locales Translate-URL: https://hosted.weblate.org/projects/firefish/locales/pl/ --- locales/pl-PL.yml | 67 +++++++++++++++++++++++++++-------------------- 1 file changed, 39 insertions(+), 28 deletions(-) diff --git a/locales/pl-PL.yml b/locales/pl-PL.yml index 5b83762cd5..1369babee2 100644 --- a/locales/pl-PL.yml +++ b/locales/pl-PL.yml @@ -1,6 +1,6 @@ _lang_: "Polski" -headlineFirefish: "Otwartoźródłowa, zdecentralizowana sieć społecznościowa, która zawsze - będzie darmowa! 🚀" +headlineFirefish: "Otwartoźródłowa, zdecentralizowana sieć społecznościowa, która + zawsze będzie darmowa! 🚀" introFirefish: "Hej! Firefish to otwartoźródłowa oraz zdecentralizowana sieć społecznościowa, która zawsze będzie darmowa! 🚀" monthAndDay: "{month}-{day}" @@ -94,7 +94,7 @@ privacy: "Prywatność" makeFollowManuallyApprove: "Prośby o możliwość obserwacji wymagają zatwierdzenia" defaultNoteVisibility: "Domyślna widoczność" follow: "Obserwuj" -followRequest: "Poproś o możliwość obserwacji" +followRequest: "Poproś o możliwość obserwowania" followRequests: "Prośby o możliwość obserwacji" unfollow: "Przestań obserwować" followRequestPending: "Oczekująca prośba o możliwość obserwacji" @@ -147,9 +147,9 @@ cacheRemoteFilesDescription: "Gdy ta opcja jest wyłączona, zdalne pliki są ł bezpośrednio ze zdalnego serwera. Wyłączenie tej opcji zmniejszy użycie powierzchni dyskowej, ale zwiększy transfer, ponieważ miniaturki nie będą generowane." flagAsBot: "To konto jest botem" -flagAsBotDescription: "Jeżeli ten kanał jest kontrolowany przez jakiś program, ustaw - tę opcję. Jeżeli włączona, będzie działać jako flaga informująca innych programistów, - aby zapobiegać nieskończonej interakcji z różnymi botami i dostosowywać wewnętrzne +flagAsBotDescription: "Ustaw tę opcję ten jeśli kanał kontrolowany jest przez jakiś + program. Po włączeniu, będzie działać jako flaga informująca innych programistów, + aby zapobiegać nieskończonej interakcji pomiędzy innymi botami i dostosowywać wewnętrzne systemy Firefish, traktując konto jako bota." flagAsCat: "Czy jesteś kotem? 😺" flagAsCatDescription: "Dostaniesz kocie uszka, oraz będziesz mówić jak kot!" @@ -158,7 +158,7 @@ autoAcceptFollowed: "Automatycznie przyjmuj prośby o możliwość obserwacji od których obserwujesz" addAccount: "Dodaj konto" loginFailed: "Nie udało się zalogować" -showOnRemote: "Zobacz na zdalnym serwerze" +showOnRemote: "Zobacz oryginalną treść" general: "Ogólne" wallpaper: "Tapeta" setWallpaper: "Ustaw tapetę" @@ -211,7 +211,7 @@ noUsers: "Brak użytkowników" editProfile: "Edytuj profil" noteDeleteConfirm: "Czy na pewno chcesz usunąć ten wpis?" pinLimitExceeded: "Nie możesz przypiąć więcej wpisów" -intro: "Zakończono instalację Firefish! Utwórz konto administratora." +intro: "Zakończono instalację Firefish! Utwórz teraz konto administratora." done: "Gotowe" processing: "Przetwarzanie" preview: "Podgląd" @@ -299,11 +299,11 @@ emptyDrive: "Dysk jest pusty" emptyFolder: "Ten katalog jest pusty" unableToDelete: "Nie można usunąć" inputNewFileName: "Wprowadź nową nazwę pliku" -inputNewDescription: "Proszę wpisać nowy napis" +inputNewDescription: "Podaj nowy napis" inputNewFolderName: "Wprowadź nową nazwę katalogu" circularReferenceFolder: "Katalog docelowy jest podkatalogiem katalogu, który chcesz przenieść." -hasChildFilesOrFolders: "Ponieważ ten katalog nie jest pusty, nie może być usunięty." +hasChildFilesOrFolders: "Katalog nie może być usunięty ponieważ nie jest pusty." copyUrl: "Skopiuj adres URL" rename: "Zmień nazwę" avatar: "Awatar" @@ -578,8 +578,8 @@ disablePlayer: "Zamknij odtwarzacz wideo" expandTweet: "Rozwiń tweet" themeEditor: "Edytor motywu" description: "Opis" -describeFile: "Dodaj podpis" -enterFileDescription: "Wprowadź napis" +describeFile: "Dodaj opis" +enterFileDescription: "Wprowadź opis" author: "Autor" leaveConfirm: "Są niezapisane zmiany. Czy chcesz je odrzucić?" manage: "Zarządzanie" @@ -616,7 +616,7 @@ emptyToDisableSmtpAuth: "Pozostaw adres e-mail i hasło puste, aby wyłączyć w SMTP" smtpSecureInfo: "Wyłącz, jeżeli używasz STARTTLS" testEmail: "Przetestuj dostarczanie wiadomości e-mail" -wordMute: "Wyciszenie słowa" +wordMute: "Wyciszenie słów i języków" instanceMute: "Wyciszenie serwera" userSaysSomething: "{name} powiedział* coś" makeActive: "Aktywuj" @@ -691,8 +691,7 @@ no: "Nie" driveFilesCount: "Liczba plików na dysku" driveUsage: "Użycie przestrzeni dyskowej" noCrawle: "Odrzuć indeksowanie przez crawlery" -noCrawleDescription: "Proś wyszukiwarki internetowe, aby nie indeksowały Twojego profilu, - wpisów, stron itd." +noCrawleDescription: "Proś wyszukiwarki internetowe, aby nie indeksowały Twoich treści." lockedAccountInfo: "Dopóki nie ustawisz widoczności wpisu na \"Obserwujący\", twoje wpisy będą mogli widzieć wszyscy, nawet jeśli ustawisz manualne zatwierdzanie obserwujących." alwaysMarkSensitive: "Oznacz domyślnie jako NSFW" @@ -759,7 +758,7 @@ useReactionPickerForContextMenu: "Otwórz wybornik reakcji prawym kliknięciem" typingUsers: "{users} pisze/ą" jumpToSpecifiedDate: "Przejdź do określonej daty" showingPastTimeline: "Obecnie wyświetla starą oś czasu" -clear: "Wróć" +clear: "Wyczyść" markAllAsRead: "Oznacz wszystkie jako przeczytane" goBack: "Wróć" unlikeConfirm: "Na pewno chcesz usunąć polubienie?" @@ -800,7 +799,7 @@ gallery: "Galeria" recentPosts: "Ostatnie wpisy" popularPosts: "Popularne wpisy" shareWithNote: "Udostępnij z wpisem" -ads: "Reklamy" +ads: "Banery" expiration: "Ankieta kończy się" memo: "Notatki" priority: "Priorytet" @@ -852,7 +851,7 @@ ffVisibility: "Widoczność obserwowanych/obserwujących" ffVisibilityDescription: "Pozwala skonfigurować, kto może zobaczyć, kogo obserwujesz i kto Cię obserwuje." continueThread: "Kontynuuj wątek" -deleteAccountConfirm: "Spowoduje to nieodwracalne usunięcie Twojego konta. Kontynuować?" +deleteAccountConfirm: "Spowoduje to nieodwracalne usunięcie tego konta. Kontynuować?" incorrectPassword: "Nieprawidłowe hasło." voteConfirm: "Potwierdzić swój głos na \"{choice}\"?" hide: "Ukryj" @@ -1001,8 +1000,8 @@ _nsfw: force: "Ukrywaj wszystkie media" _mfm: cheatSheet: "Ściąga MFM" - intro: "MFM jest językiem składniowym używanym przez m.in. Firefish, forki *key (w - tym Firefish), oraz Akkomę, który może być użyty w wielu miejscach. Tu znajdziesz + intro: "MFM jest językiem składniowym używanym przez m.in. Firefish, forki *key + (w tym Firefish), oraz Akkomę, który może być użyty w wielu miejscach. Tu znajdziesz listę wszystkich możliwych elementów składni MFM." dummy: "Firefish rozszerza świat Fediwersum" mention: "Wspomnij" @@ -1250,7 +1249,7 @@ _tutorial: innej połączonej instancji." step6_1: "Więc, czym to jest to miejsce?" step6_2: "Cóż, nie dołączył*ś po prostu do Firefish. Dołączył*ś do portalu do Fediverse, - połączonej sieci tysięcy serwerów, zwanych instancjami." + sieci tysięcy połączonych ze sobą serwerów, zwanych instancjami." step6_3: "Każdy serwer działa w inny sposób, i nie wszystkie serwery używają Firefish. Ten jednak używa! Jest to trochę skomplikowane, ale w krótkim czasie załapiesz o co chodzi." @@ -1816,8 +1815,8 @@ instanceSecurity: Bezpieczeństwo serwera privateMode: Tryb prywatny allowedInstances: Dopuszczone serwery recommended: Polecane -allowedInstancesDescription: Hosty serwerów, które mają być dopuszczone do federacji, - każdy oddzielony nowym wierszem (dotyczy tylko trybu prywatnego). +allowedInstancesDescription: Hosty serwerów, które mają być dopuszczone do federacji. + Każdy oddzielony nowym wierszem (dotyczy tylko trybu prywatnego). seperateRenoteQuote: Oddziel przyciski podbicia i cytowania refreshInterval: 'Częstotliwość aktualizacji ' slow: Wolna @@ -1916,14 +1915,14 @@ sendErrorReportsDescription: "Gdy ta opcja jest włączona, szczegółowe inform błędach będą udostępnianie z Firefish gdy wystąpi problem, pomagając w ulepszaniu Firefish.\nZawrze to informacje takie jak wersja twojego systemu operacyjnego, przeglądarki, Twoja aktywność na Firefish itd." -privateModeInfo: Gdy ta opcja jest włączona, tylko serwery z białej listy mogą federować - się z twoim serwerem. Wszystkie posty będą ukryte publicznie. +privateModeInfo: Gdy ta opcja jest włączona, tylko serwery z listy serwerów dozwolonych + mogą federować się z twoim serwerem. Żadne posty nie będą publicznie dostępne. oneHour: Godzina oneDay: Dzień oneWeek: Tydzień recommendedInstances: Polecane serwery recommendedInstancesDescription: Polecane serwery, mające pojawić się w odpowiedniej - osi czasu, oddzielane nowymi liniami. NIE dodawaj “https://”, TYLKO samą domenę. + osi czasu, oddzielane nowymi liniami. rateLimitExceeded: Przekroczono ratelimit cropImage: Kadruj zdjęcie cropImageAsk: Czy chcesz skadrować to zdjęcie? @@ -1948,7 +1947,7 @@ activeEmailValidationDescription: Włącza ściślejszą walidację adresów e-m obejmuje sprawdzanie adresów jednorazowych oraz tego, czy rzeczywiście można się z nim komunikować. Jeśli wyłączone, walidowany jest tylko format wiadomości e-mail. shuffle: Losuj -showAds: Pokazuj reklamy +showAds: Pokazuj banery enterSendsMessage: Wciśnij Enter w komunikatorze, by wysłać wiadomość (domyślnie – Ctrl + Enter) adminCustomCssWarn: To ustawienie powinno być używane tylko pod warunkiem, że wiesz @@ -2012,7 +2011,7 @@ silencedInstancesDescription: Wypisz nazwy hostów serwerów, które chcesz wyci cannotUploadBecauseExceedsFileSizeLimit: Ten plik nie mógł być przesłany, ponieważ jego wielkość przekracza dozwolony limit. sendModMail: Wyślij Powiadomienie Moderacyjne -searchPlaceholder: Szukaj Firefish +searchPlaceholder: Szukaj w Firefish jumpToPrevious: Przejdź do poprzedniej sekcji listsDesc: Listy umożliwiają tworzenie osi czasu z określonymi użytkownikami. Dostęp do nich można uzyskać na stronie osi czasu. @@ -2028,3 +2027,15 @@ newer: nowsze older: starsze cw: Ostrzeżenie zawartości removeReaction: Usuń reakcję +reactions: Reakcje +clipsDesc: Spinki to skategoryzowane zakładki, które można udostępniać. Możesz utworzyć + spinkę dla każdego wpisu w menu wpisu. +swipeOnMobile: Pozwalaj na przeciąganie pomiędzy stronami +image: Obrazek +xl: XL +replies: Odpowiedzi +video: Film +quotes: Cytaty +clickToShowPatterns: Kliknij aby pokazać wzory modułów +renotes: Boosty +audio: Dźwięk From 9f1a7d90c6d52e72ef26379a21354bb43d5c7e90 Mon Sep 17 00:00:00 2001 From: naskya <m@naskya.net> Date: Fri, 27 Oct 2023 15:56:57 +0000 Subject: [PATCH 42/74] remove integrations from nodeinfo --- packages/backend/src/server/nodeinfo.ts | 3 --- 1 file changed, 3 deletions(-) diff --git a/packages/backend/src/server/nodeinfo.ts b/packages/backend/src/server/nodeinfo.ts index 2d01446522..a1d519f3e2 100644 --- a/packages/backend/src/server/nodeinfo.ts +++ b/packages/backend/src/server/nodeinfo.ts @@ -89,9 +89,6 @@ const nodeinfo2 = async () => { enableRecaptcha: meta.enableRecaptcha, maxNoteTextLength: MAX_NOTE_TEXT_LENGTH, maxCaptionTextLength: MAX_CAPTION_TEXT_LENGTH, - enableTwitterIntegration: meta.enableTwitterIntegration, - enableGithubIntegration: meta.enableGithubIntegration, - enableDiscordIntegration: meta.enableDiscordIntegration, enableEmail: meta.enableEmail, enableServiceWorker: meta.enableServiceWorker, proxyAccountName: proxyAccount ? proxyAccount.username : null, From cb53dab8bda06690cb31e6ac972fd69f54943e6c Mon Sep 17 00:00:00 2001 From: naskya <m@naskya.net> Date: Sun, 29 Oct 2023 10:03:07 +0000 Subject: [PATCH 43/74] fix: check isIndexable in built-in post search --- packages/backend/src/server/api/endpoints/notes/search.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/backend/src/server/api/endpoints/notes/search.ts b/packages/backend/src/server/api/endpoints/notes/search.ts index 6247bd6526..8143c8bf03 100644 --- a/packages/backend/src/server/api/endpoints/notes/search.ts +++ b/packages/backend/src/server/api/endpoints/notes/search.ts @@ -90,6 +90,7 @@ export default define(meta, paramDef, async (ps, me) => { .andWhere("note.text ILIKE :q", { q: `%${sqlLikeEscape(ps.query)}%` }) .andWhere("note.visibility = 'public'") .innerJoinAndSelect("note.user", "user") + .andWhere("user.isIndexable = TRUE") .leftJoinAndSelect("user.avatar", "avatar") .leftJoinAndSelect("user.banner", "banner") .leftJoinAndSelect("note.reply", "reply") From 15f7fdc65d7fac03215044a03d06170274bb5ddc Mon Sep 17 00:00:00 2001 From: naskya <m@naskya.net> Date: Sun, 29 Oct 2023 10:16:09 +0000 Subject: [PATCH 44/74] dev20 --- package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 0203670c41..fb71b745c2 100644 --- a/package.json +++ b/package.json @@ -1,12 +1,12 @@ { "name": "firefish", - "version": "1.0.5-dev19", + "version": "1.0.5-dev20", "codename": "aqua", "repository": { "type": "git", "url": "https://git.joinfirefish.org/firefish/firefish.git" }, - "packageManager": "pnpm@8.9.2", + "packageManager": "pnpm@8.10.0", "private": true, "scripts": { "rebuild": "pnpm run clean && pnpm run build", @@ -64,7 +64,7 @@ "gulp-replace": "1.1.4", "gulp-terser": "2.1.0", "install-peers": "^1.0.4", - "pnpm": "8.9.2", + "pnpm": "8.10.0", "start-server-and-test": "1.15.2", "typescript": "5.2.2" } From 9efb26f4443cd15424e313a6d72c9ce6c885f2fd Mon Sep 17 00:00:00 2001 From: naskya <m@naskya.net> Date: Sun, 29 Oct 2023 19:48:00 +0900 Subject: [PATCH 45/74] chore: up lockfile --- pnpm-lock.yaml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d9318431ea..32e8fd06cc 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -85,8 +85,8 @@ importers: specifier: ^1.0.4 version: 1.0.4 pnpm: - specifier: 8.9.2 - version: 8.9.2 + specifier: 8.10.0 + version: 8.10.0 start-server-and-test: specifier: 1.15.2 version: 1.15.2 @@ -3296,7 +3296,7 @@ packages: hasBin: true peerDependencies: '@swc/core': ^1.2.66 - chokidar: ^3.5.1 + chokidar: ^3.3.1 peerDependenciesMeta: chokidar: optional: true @@ -13674,6 +13674,7 @@ packages: /node-gyp-build-optional-packages@5.0.3: resolution: {integrity: sha512-k75jcVzk5wnnc/FMxsf4udAoTEUv2jY3ycfdSd3yWu6Cnd1oee6/CfZJApyscA4FJOmdoixWwiwOyf16RzD5JA==} hasBin: true + requiresBuild: true dev: false optional: true @@ -14606,8 +14607,8 @@ packages: engines: {node: '>=14.19.0'} dev: false - /pnpm@8.9.2: - resolution: {integrity: sha512-udNf6RsqWFTa3EMDSj57LmdfpLVuIOjgnvB4+lU8GPiu1EBR57Nui43UNfl+sMRMT/O0T8fG+n0h4frBe75mHg==} + /pnpm@8.10.0: + resolution: {integrity: sha512-nCy4Pyts9qJdjFgwC/mRl8fvO+hM8+dm8pBUtAuDtC+Kq6b8wxSp7PJ8APfOgKdXu0xgiADnrb4tKdxccFb1vg==} engines: {node: '>=16.14'} hasBin: true dev: true From 3b3320d5323648a5ad9a9c3e12561613e3b89a6c Mon Sep 17 00:00:00 2001 From: naskya <m@naskya.net> Date: Sun, 29 Oct 2023 19:49:47 +0900 Subject: [PATCH 46/74] chore: lint --- packages/client/src/pizzax.ts | 2 +- packages/client/src/reactiveAccount.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/client/src/pizzax.ts b/packages/client/src/pizzax.ts index 790885d590..a16c8067f6 100644 --- a/packages/client/src/pizzax.ts +++ b/packages/client/src/pizzax.ts @@ -2,9 +2,9 @@ import type { Ref } from "vue"; import { onUnmounted, ref, watch } from "vue"; -import { $i } from "@/reactiveAccount"; import { api } from "./os"; import { stream } from "./stream"; +import { $i } from "@/reactiveAccount"; type StateDef = Record< string, diff --git a/packages/client/src/reactiveAccount.ts b/packages/client/src/reactiveAccount.ts index 218024d60b..46ff249926 100644 --- a/packages/client/src/reactiveAccount.ts +++ b/packages/client/src/reactiveAccount.ts @@ -1,5 +1,5 @@ import { reactive } from "vue"; -import { Account } from "@/account"; +import type { Account } from "@/account"; const accountData = localStorage.getItem("account"); From 981165ae8bf8d416e08ca66d86765b7bae8e0f4c Mon Sep 17 00:00:00 2001 From: ThatOneCalculator <kainoa@t1c.dev> Date: Sun, 29 Oct 2023 13:37:01 -0700 Subject: [PATCH 47/74] feat: :sparkles: Support for _misskey_summary Co-authored-by: kakkokari-gtyih <daisho7308+f@gmail.com> ref: https://github.com/misskey-dev/misskey/pull/12184 --- packages/backend/src/remote/activitypub/models/person.ts | 4 +++- packages/backend/src/remote/activitypub/renderer/index.ts | 1 + packages/backend/src/remote/activitypub/renderer/person.ts | 1 + packages/backend/src/remote/activitypub/type.ts | 1 + 4 files changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/backend/src/remote/activitypub/models/person.ts b/packages/backend/src/remote/activitypub/models/person.ts index ab017b65ac..b13ee23e89 100644 --- a/packages/backend/src/remote/activitypub/models/person.ts +++ b/packages/backend/src/remote/activitypub/models/person.ts @@ -313,7 +313,9 @@ export async function createPerson( await transactionalEntityManager.save( new UserProfile({ userId: user.id, - description: person.summary + description: person._misskey_summary + ? truncate(person._misskey_summary, summaryLength) + : person.summary ? htmlToMfm(truncate(person.summary, summaryLength), person.tag) : null, url: url, diff --git a/packages/backend/src/remote/activitypub/renderer/index.ts b/packages/backend/src/remote/activitypub/renderer/index.ts index 7d2eb95288..c60a1f4cdb 100644 --- a/packages/backend/src/remote/activitypub/renderer/index.ts +++ b/packages/backend/src/remote/activitypub/renderer/index.ts @@ -43,6 +43,7 @@ export const renderActivity = (x: any): IActivity | null => { _misskey_talk: "misskey:_misskey_talk", _misskey_reaction: "misskey:_misskey_reaction", _misskey_votes: "misskey:_misskey_votes", + _misskey_summary: "misskey:_misskey_summary", isCat: "misskey:isCat", // Fedibird fedibird: "http://fedibird.com/ns#", diff --git a/packages/backend/src/remote/activitypub/renderer/person.ts b/packages/backend/src/remote/activitypub/renderer/person.ts index 9f642bb9e5..db176a0dde 100644 --- a/packages/backend/src/remote/activitypub/renderer/person.ts +++ b/packages/backend/src/remote/activitypub/renderer/person.ts @@ -74,6 +74,7 @@ export async function renderPerson(user: ILocalUser) { summary: profile.description ? toHtml(mfm.parse(profile.description)) : null, + _misskey_summary: profile.description, icon: avatar ? renderImage(avatar) : null, image: banner ? renderImage(banner) : null, tag, diff --git a/packages/backend/src/remote/activitypub/type.ts b/packages/backend/src/remote/activitypub/type.ts index 0e63f3ed55..cf0410767b 100644 --- a/packages/backend/src/remote/activitypub/type.ts +++ b/packages/backend/src/remote/activitypub/type.ts @@ -205,6 +205,7 @@ export interface IActor extends IObject { }; "vcard:bday"?: string; "vcard:Address"?: string; + _misskey_summary?: string; } export const isCollection = (object: IObject): object is ICollection => From ae2ad03c25bdf08fab330ceb7c732b6b0a7eb31d Mon Sep 17 00:00:00 2001 From: ThatOneCalculator <kainoa@t1c.dev> Date: Sun, 29 Oct 2023 13:45:05 -0700 Subject: [PATCH 48/74] refactor: :globe_with_meridians: bot -> automated Matches Mastodon, prevents confusion Ref: https://firefish.community/notes/9lcootq9f108qzz2 --- locales/en-US.yml | 8 ++++---- locales/ja-JP.yml | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/locales/en-US.yml b/locales/en-US.yml index 24fc392444..9ecba74ef6 100644 --- a/locales/en-US.yml +++ b/locales/en-US.yml @@ -168,11 +168,11 @@ cacheRemoteFiles: "Cache remote files" cacheRemoteFilesDescription: "When this setting is disabled, remote files are loaded directly from the remote server. Disabling this will decrease storage usage, but increase traffic, as thumbnails will not be generated." -flagAsBot: "Mark this account as a bot" +flagAsBot: "Mark this account as automated" flagAsBotDescription: "Enable this option if this account is controlled by a program. If enabled, it will act as a flag for other developers to prevent endless interaction - chains with other bots and adjust Firefish's internal systems to treat this account - as a bot." + chains with other automated accounts and adjust Firefish's internal systems to treat this + account as an automated account." flagAsCat: "Are you a cat? 😺" flagAsCatDescription: "You'll get cat ears and speak like a cat!" flagSpeakAsCat: "Speak as a cat" @@ -1115,7 +1115,7 @@ noGraze: "Please disable the \"Graze for Mastodon\" browser extension, as it int with Firefish." silencedWarning: "This page is showing because these users are from servers your admin silenced, so they may potentially be spam." -isBot: "This account is a bot" +isBot: "This account is automated" isLocked: "This account has follow approvals" isModerator: "Moderator" isAdmin: "Administrator" diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml index 31d817b7b0..b33115bb01 100644 --- a/locales/ja-JP.yml +++ b/locales/ja-JP.yml @@ -149,8 +149,8 @@ addEmoji: "絵文字を追加" settingGuide: "おすすめ設定" cacheRemoteFiles: "リモートのファイルをキャッシュする" cacheRemoteFilesDescription: "この設定を無効にすると、リモートファイルをキャッシュせず直リンクします。サーバーのストレージを節約できますが、サムネイルが生成されないので通信量が増加します。" -flagAsBot: "Botとして設定" -flagAsBotDescription: "このアカウントがBotである場合は、この設定をオンにします。オンにすると、反応の連鎖を防ぐためのフラグとして他の開発者に役立ったり、Firefishのシステム上での扱いがBotに合ったものになります。" +flagAsBot: "自動化されたアカウントとして設定" +flagAsBotDescription: "このアカウントが自動化された場合は、この設定をオンにします。オンにすると、反応の連鎖を防ぐためのフラグとして他の開発者に役立ったり、Firefishのシステム上での扱いが自動化されたアカウントに合ったものになります。" flagAsCat: "あなたは…猫?😺" flagAsCatDescription: "このアカウントが猫であることを示す猫モードを有効にするには、このフラグをオンにします。" flagSpeakAsCat: "猫語で話す" @@ -1954,7 +1954,7 @@ isModerator: モデレーター audio: 音声 image: 画像 video: 動画 -isBot: このアカウントはBotです +isBot: このアカウントは自動化されたです isLocked: このアカウントのフォローは承認制です isAdmin: 管理者 isPatron: Firefish 後援者 From 1c9389ca218168852745ab59e1741aa47cd1579f Mon Sep 17 00:00:00 2001 From: ThatOneCalculator <kainoa@t1c.dev> Date: Sun, 29 Oct 2023 14:02:04 -0700 Subject: [PATCH 49/74] fix: :recycle: set en-US as default lang for type --- packages/client/src/config.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/client/src/config.ts b/packages/client/src/config.ts index 0b346d1dd6..e77ee87e85 100644 --- a/packages/client/src/config.ts +++ b/packages/client/src/config.ts @@ -12,7 +12,7 @@ export const wsUrl = `${url .replace("https://", "wss://")}/streaming`; export const lang = localStorage.getItem("lang"); export const langs = _LANGS_; -export const locale = JSON.parse(localStorage.getItem("locale")); +export const locale = JSON.parse(localStorage.getItem("locale") || "en-US"); export const version = _VERSION_; export const instanceName = siteName === "Firefish" ? host : siteName; export const ui = localStorage.getItem("ui"); From b8a85257a0cf97778ceaef5b80b2037e0e4f8f5b Mon Sep 17 00:00:00 2001 From: ThatOneCalculator <kainoa@t1c.dev> Date: Sun, 29 Oct 2023 14:02:14 -0700 Subject: [PATCH 50/74] refactor: :fire: remove unused reference to MisskeyClient --- packages/backend/src/server/web/views/flush.pug | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/backend/src/server/web/views/flush.pug b/packages/backend/src/server/web/views/flush.pug index e9866587e5..bb032ffa26 100644 --- a/packages/backend/src/server/web/views/flush.pug +++ b/packages/backend/src/server/web/views/flush.pug @@ -37,7 +37,8 @@ html localStorage.clear(); message('localStorage cleared.'); - const idbPromises = ['MisskeyClient', 'keyval-store'].map((name, i, arr) => new Promise((res, rej) => { + //- Removed 'MisskeyClient' due to seemingly being never referenced + const idbPromises = ['keyval-store'].map((name, i, arr) => new Promise((res, rej) => { const delidb = indexedDB.deleteDatabase(name); delidb.onsuccess = () => res(message(`indexedDB "${name}" cleared. (${i + 1}/${arr.length})`)); delidb.onerror = e => rej(e) From b2626674388ea99454066120ab7214d6067357e5 Mon Sep 17 00:00:00 2001 From: naskya <m@naskya.net> Date: Mon, 30 Oct 2023 04:41:13 +0000 Subject: [PATCH 51/74] chore: update ja-JP.yml --- locales/ja-JP.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml index b33115bb01..a3fa197d5c 100644 --- a/locales/ja-JP.yml +++ b/locales/ja-JP.yml @@ -150,7 +150,7 @@ settingGuide: "おすすめ設定" cacheRemoteFiles: "リモートのファイルをキャッシュする" cacheRemoteFilesDescription: "この設定を無効にすると、リモートファイルをキャッシュせず直リンクします。サーバーのストレージを節約できますが、サムネイルが生成されないので通信量が増加します。" flagAsBot: "自動化されたアカウントとして設定" -flagAsBotDescription: "このアカウントが自動化された場合は、この設定をオンにします。オンにすると、反応の連鎖を防ぐためのフラグとして他の開発者に役立ったり、Firefishのシステム上での扱いが自動化されたアカウントに合ったものになります。" +flagAsBotDescription: "このアカウントが自動で投稿する場合は、この設定をオンにします。オンにすると、反応の連鎖を防ぐためのフラグとして他の開発者に役立ったり、Firefishのシステム上での扱いが自動で投稿するアカウントに合ったものになります。" flagAsCat: "あなたは…猫?😺" flagAsCatDescription: "このアカウントが猫であることを示す猫モードを有効にするには、このフラグをオンにします。" flagSpeakAsCat: "猫語で話す" @@ -1954,7 +1954,7 @@ isModerator: モデレーター audio: 音声 image: 画像 video: 動画 -isBot: このアカウントは自動化されたです +isBot: このアカウントは自動で投稿します isLocked: このアカウントのフォローは承認制です isAdmin: 管理者 isPatron: Firefish 後援者 From 460bd3af1f1a317358beb11be5deb6cd068217b6 Mon Sep 17 00:00:00 2001 From: Marud <translate-calckey@marud.fr> Date: Sat, 28 Oct 2023 23:15:43 +0000 Subject: [PATCH 52/74] chore: Translated using Weblate (French) Currently translated at 100.0% (1870 of 1870 strings) Translation: Firefish/locales Translate-URL: https://hosted.weblate.org/projects/firefish/locales/fr/ --- locales/fr-FR.yml | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/locales/fr-FR.yml b/locales/fr-FR.yml index 9cd2d1e3c2..f6c2eb55f1 100644 --- a/locales/fr-FR.yml +++ b/locales/fr-FR.yml @@ -114,7 +114,7 @@ you: "Vous" clickToShow: "Cliquer pour afficher" sensitive: "Contenu sensible" add: "Ajouter" -reaction: "Réactions" +reaction: "Réaction" reactionSetting: "Réactions à afficher dans le sélecteur de réactions" reactionSettingDescription2: "Déplacer pour réorganiser, cliquer pour effacer, utiliser « + » pour ajouter." @@ -1148,7 +1148,7 @@ _wordMute: langDescription: Cacher du fil de publication les publications qui correspondent à ces langues. muteLangs: Langages filtrés - muteLangsDescription: Séparer avec des espaces or des retours à la ligne pour une + muteLangsDescription: Séparer avec des espaces ou des retours à la ligne pour une condition OU (OR). _instanceMute: instanceMuteDescription2: "Séparer avec des sauts de lignes" @@ -2225,3 +2225,14 @@ indexable: Indexable languageForTranslation: Langage post-traduction vibrate: Jouer les vibrations clickToShowPatterns: Cliquer pour montrer les patrons de modules +iconSet: Jeu d'icônes +_iconSets: + fill: Rempli + regular: Normal + bold: Gras + duotone: Deux tons + light: Fin +reactions: Réactions +replies: Réponses +quotes: Citations +renotes: Boosts From adee17b85ac7c61e4de4903480f64ecee1c06b02 Mon Sep 17 00:00:00 2001 From: naskya <m@naskya.net> Date: Mon, 30 Oct 2023 17:58:37 +0900 Subject: [PATCH 53/74] chore: organize backend imports * remove unused/duplicate imports * replace paths like "../../../define.js" to be more readable * add missing @types packages --- packages/backend/package.json | 5 + packages/backend/src/boot/master.ts | 5 +- packages/backend/src/boot/worker.ts | 3 +- packages/backend/src/daemons/queue-stats.ts | 2 +- packages/backend/src/daemons/server-stats.ts | 2 +- packages/backend/src/db/postgre.ts | 3 +- packages/backend/src/misc/app-lock.ts | 2 +- packages/backend/src/misc/captcha.ts | 2 +- .../backend/src/misc/check-hit-antenna.ts | 8 +- .../src/models/entities/note-thread-muting.ts | 1 - .../backend/src/models/entities/user-ip.ts | 11 +- packages/backend/src/models/index.ts | 2 - .../src/models/repositories/drive-file.ts | 4 +- .../src/models/repositories/notification.ts | 3 +- .../backend/src/models/repositories/user.ts | 1 - .../processors/background/index-all-notes.ts | 2 +- .../processors/db/export-custom-emojis.ts | 2 - .../queue/processors/db/import-blocking.ts | 2 +- .../queue/processors/db/import-masto-post.ts | 1 - .../processors/ended-poll-notification.ts | 5 +- .../queue/processors/system/verify-links.ts | 1 - .../src/queue/processors/webhook-deliver.ts | 1 - .../src/remote/activitypub/audience.ts | 1 - .../src/remote/activitypub/kernel/read.ts | 2 +- .../remote/activitypub/kernel/undo/accept.ts | 1 - .../remote/activitypub/misc/get-note-html.ts | 2 +- .../remote/activitypub/misc/html-to-mfm.ts | 2 +- .../src/remote/activitypub/models/image.ts | 3 +- .../src/remote/activitypub/models/mention.ts | 1 - .../src/remote/activitypub/models/note.ts | 6 +- .../src/remote/activitypub/models/person.ts | 5 +- .../src/remote/activitypub/renderer/flag.ts | 3 - .../src/remote/activitypub/renderer/undo.ts | 1 - .../src/remote/activitypub/resolver.ts | 8 +- packages/backend/src/server/activitypub.ts | 3 +- packages/backend/src/server/api/call.ts | 2 - packages/backend/src/server/api/define.ts | 1 - .../api/endpoints/admin/abuse-user-reports.ts | 4 +- .../api/endpoints/admin/accounts/create.ts | 4 +- .../api/endpoints/admin/accounts/delete.ts | 2 +- .../api/endpoints/admin/accounts/hosted.ts | 2 +- .../server/api/endpoints/admin/ad/create.ts | 2 +- .../server/api/endpoints/admin/ad/delete.ts | 4 +- .../src/server/api/endpoints/admin/ad/list.ts | 4 +- .../server/api/endpoints/admin/ad/update.ts | 4 +- .../endpoints/admin/announcements/create.ts | 2 +- .../endpoints/admin/announcements/delete.ts | 4 +- .../api/endpoints/admin/announcements/list.ts | 4 +- .../endpoints/admin/announcements/update.ts | 4 +- .../server/api/endpoints/admin/delete-2fa.ts | 2 +- .../api/endpoints/admin/delete-account.ts | 2 +- .../admin/delete-all-files-of-a-user.ts | 2 +- .../api/endpoints/admin/delete-passkeys.ts | 2 +- .../admin/drive-capacity-override.ts | 2 +- .../admin/drive/clean-remote-files.ts | 2 +- .../api/endpoints/admin/drive/cleanup.ts | 2 +- .../server/api/endpoints/admin/drive/files.ts | 4 +- .../api/endpoints/admin/drive/show-file.ts | 4 +- .../endpoints/admin/emoji/add-aliases-bulk.ts | 3 +- .../server/api/endpoints/admin/emoji/add.ts | 4 +- .../server/api/endpoints/admin/emoji/copy.ts | 4 +- .../api/endpoints/admin/emoji/delete-bulk.ts | 3 +- .../api/endpoints/admin/emoji/delete.ts | 4 +- .../api/endpoints/admin/emoji/import-zip.ts | 2 +- .../api/endpoints/admin/emoji/list-remote.ts | 4 +- .../server/api/endpoints/admin/emoji/list.ts | 2 +- .../admin/emoji/remove-aliases-bulk.ts | 3 +- .../endpoints/admin/emoji/set-aliases-bulk.ts | 3 +- .../admin/emoji/set-category-bulk.ts | 3 +- .../endpoints/admin/emoji/set-license-bulk.ts | 3 +- .../api/endpoints/admin/emoji/update.ts | 4 +- .../admin/federation/delete-all-files.ts | 2 +- .../refresh-remote-instance-metadata.ts | 2 +- .../admin/federation/remove-all-following.ts | 2 +- .../admin/federation/update-instance.ts | 2 +- .../api/endpoints/admin/get-index-stats.ts | 2 +- .../api/endpoints/admin/get-table-stats.ts | 2 +- .../api/endpoints/admin/get-user-ips.ts | 2 +- .../src/server/api/endpoints/admin/invite.ts | 2 +- .../src/server/api/endpoints/admin/meta.ts | 3 +- .../api/endpoints/admin/moderators/add.ts | 2 +- .../api/endpoints/admin/moderators/remove.ts | 2 +- .../api/endpoints/admin/promo/create.ts | 6 +- .../server/api/endpoints/admin/queue/clear.ts | 2 +- .../endpoints/admin/queue/deliver-delayed.ts | 2 +- .../endpoints/admin/queue/inbox-delayed.ts | 2 +- .../server/api/endpoints/admin/queue/stats.ts | 2 +- .../server/api/endpoints/admin/relays/add.ts | 4 +- .../server/api/endpoints/admin/relays/list.ts | 2 +- .../api/endpoints/admin/relays/remove.ts | 2 +- .../api/endpoints/admin/reset-password.ts | 2 +- .../admin/resolve-abuse-user-report.ts | 2 +- .../api/endpoints/admin/search/index-all.ts | 2 +- .../server/api/endpoints/admin/send-email.ts | 2 +- .../api/endpoints/admin/send-mod-mail.ts | 4 +- .../server/api/endpoints/admin/server-info.ts | 4 +- .../endpoints/admin/show-moderation-logs.ts | 4 +- .../server/api/endpoints/admin/show-user.ts | 2 +- .../server/api/endpoints/admin/show-users.ts | 2 +- .../api/endpoints/admin/silence-user.ts | 2 +- .../api/endpoints/admin/suspend-user.ts | 2 +- .../api/endpoints/admin/unsilence-user.ts | 2 +- .../api/endpoints/admin/unsuspend-user.ts | 2 +- .../server/api/endpoints/admin/update-meta.ts | 2 +- .../api/endpoints/admin/update-user-note.ts | 2 +- .../src/server/api/endpoints/admin/vacuum.ts | 2 +- .../src/server/api/endpoints/announcements.ts | 4 +- .../server/api/endpoints/antennas/create.ts | 4 +- .../server/api/endpoints/antennas/delete.ts | 4 +- .../src/server/api/endpoints/antennas/list.ts | 2 +- .../server/api/endpoints/antennas/markread.ts | 3 +- .../server/api/endpoints/antennas/notes.ts | 14 +- .../src/server/api/endpoints/antennas/show.ts | 4 +- .../server/api/endpoints/antennas/update.ts | 4 +- .../src/server/api/endpoints/ap/get.ts | 2 +- .../src/server/api/endpoints/ap/show.ts | 4 +- .../src/server/api/endpoints/app/create.ts | 2 +- .../src/server/api/endpoints/app/show.ts | 4 +- .../src/server/api/endpoints/auth/accept.ts | 4 +- .../api/endpoints/auth/session/generate.ts | 4 +- .../server/api/endpoints/auth/session/show.ts | 4 +- .../api/endpoints/auth/session/userkey.ts | 4 +- .../server/api/endpoints/blocking/create.ts | 6 +- .../server/api/endpoints/blocking/delete.ts | 6 +- .../src/server/api/endpoints/blocking/list.ts | 4 +- .../server/api/endpoints/channels/create.ts | 4 +- .../server/api/endpoints/channels/featured.ts | 2 +- .../server/api/endpoints/channels/follow.ts | 4 +- .../server/api/endpoints/channels/followed.ts | 2 +- .../server/api/endpoints/channels/owned.ts | 4 +- .../server/api/endpoints/channels/search.ts | 4 +- .../src/server/api/endpoints/channels/show.ts | 4 +- .../server/api/endpoints/channels/timeline.ts | 6 +- .../server/api/endpoints/channels/unfollow.ts | 4 +- .../server/api/endpoints/channels/update.ts | 4 +- .../api/endpoints/charts/active-users.ts | 2 +- .../server/api/endpoints/charts/ap-request.ts | 2 +- .../src/server/api/endpoints/charts/drive.ts | 2 +- .../server/api/endpoints/charts/federation.ts | 2 +- .../server/api/endpoints/charts/hashtag.ts | 2 +- .../server/api/endpoints/charts/instance.ts | 2 +- .../src/server/api/endpoints/charts/notes.ts | 2 +- .../server/api/endpoints/charts/user/drive.ts | 2 +- .../api/endpoints/charts/user/following.ts | 2 +- .../server/api/endpoints/charts/user/notes.ts | 2 +- .../api/endpoints/charts/user/reactions.ts | 2 +- .../src/server/api/endpoints/charts/users.ts | 2 +- .../server/api/endpoints/clips/add-note.ts | 6 +- .../src/server/api/endpoints/clips/create.ts | 2 +- .../src/server/api/endpoints/clips/delete.ts | 4 +- .../src/server/api/endpoints/clips/list.ts | 2 +- .../src/server/api/endpoints/clips/notes.ts | 12 +- .../server/api/endpoints/clips/remove-note.ts | 6 +- .../src/server/api/endpoints/clips/show.ts | 4 +- .../src/server/api/endpoints/clips/update.ts | 4 +- .../endpoints/compatibility/custom-emojis.ts | 2 +- .../api/endpoints/compatibility/peers.ts | 2 +- .../src/server/api/endpoints/custom-motd.ts | 2 +- .../api/endpoints/custom-splash-icons.ts | 2 +- .../backend/src/server/api/endpoints/drive.ts | 2 +- .../src/server/api/endpoints/drive/files.ts | 4 +- .../endpoints/drive/files/attached-notes.ts | 4 +- .../endpoints/drive/files/caption-image.ts | 2 +- .../endpoints/drive/files/check-existence.ts | 2 +- .../api/endpoints/drive/files/create.ts | 6 +- .../api/endpoints/drive/files/delete.ts | 6 +- .../api/endpoints/drive/files/find-by-hash.ts | 2 +- .../server/api/endpoints/drive/files/find.ts | 2 +- .../server/api/endpoints/drive/files/show.ts | 6 +- .../api/endpoints/drive/files/update.ts | 4 +- .../endpoints/drive/files/upload-from-url.ts | 2 +- .../src/server/api/endpoints/drive/folders.ts | 4 +- .../api/endpoints/drive/folders/create.ts | 4 +- .../api/endpoints/drive/folders/delete.ts | 4 +- .../api/endpoints/drive/folders/find.ts | 2 +- .../api/endpoints/drive/folders/show.ts | 4 +- .../api/endpoints/drive/folders/update.ts | 4 +- .../src/server/api/endpoints/drive/stream.ts | 4 +- .../api/endpoints/email-address/available.ts | 2 +- .../backend/src/server/api/endpoints/emoji.ts | 4 +- .../src/server/api/endpoints/endpoint.ts | 4 +- .../src/server/api/endpoints/endpoints.ts | 4 +- .../api/endpoints/export-custom-emojis.ts | 2 +- .../api/endpoints/federation/followers.ts | 4 +- .../api/endpoints/federation/following.ts | 4 +- .../api/endpoints/federation/instances.ts | 3 +- .../api/endpoints/federation/show-instance.ts | 2 +- .../server/api/endpoints/federation/stats.ts | 2 +- .../federation/update-remote-user.ts | 4 +- .../server/api/endpoints/federation/users.ts | 4 +- .../src/server/api/endpoints/fetch-rss.ts | 2 +- .../server/api/endpoints/following/create.ts | 6 +- .../server/api/endpoints/following/delete.ts | 6 +- .../api/endpoints/following/invalidate.ts | 6 +- .../endpoints/following/requests/accept.ts | 6 +- .../endpoints/following/requests/cancel.ts | 6 +- .../api/endpoints/following/requests/list.ts | 2 +- .../endpoints/following/requests/reject.ts | 6 +- .../server/api/endpoints/gallery/featured.ts | 2 +- .../server/api/endpoints/gallery/popular.ts | 2 +- .../src/server/api/endpoints/gallery/posts.ts | 4 +- .../api/endpoints/gallery/posts/create.ts | 5 +- .../api/endpoints/gallery/posts/delete.ts | 4 +- .../api/endpoints/gallery/posts/like.ts | 4 +- .../api/endpoints/gallery/posts/show.ts | 4 +- .../api/endpoints/gallery/posts/unlike.ts | 4 +- .../api/endpoints/gallery/posts/update.ts | 4 +- .../api/endpoints/get-online-users-count.ts | 2 +- .../src/server/api/endpoints/get-sounds.ts | 2 +- .../src/server/api/endpoints/hashtags/list.ts | 2 +- .../server/api/endpoints/hashtags/search.ts | 2 +- .../src/server/api/endpoints/hashtags/show.ts | 4 +- .../server/api/endpoints/hashtags/trend.ts | 2 +- .../server/api/endpoints/hashtags/users.ts | 2 +- .../backend/src/server/api/endpoints/i.ts | 2 +- .../src/server/api/endpoints/i/2fa/done.ts | 2 +- .../server/api/endpoints/i/2fa/key-done.ts | 4 +- .../api/endpoints/i/2fa/password-less.ts | 4 +- .../api/endpoints/i/2fa/register-key.ts | 4 +- .../server/api/endpoints/i/2fa/register.ts | 2 +- .../server/api/endpoints/i/2fa/remove-key.ts | 2 +- .../server/api/endpoints/i/2fa/unregister.ts | 2 +- .../server/api/endpoints/i/2fa/update-key.ts | 4 +- .../src/server/api/endpoints/i/apps.ts | 2 +- .../server/api/endpoints/i/authorized-apps.ts | 2 +- .../server/api/endpoints/i/change-password.ts | 2 +- .../server/api/endpoints/i/delete-account.ts | 2 +- .../server/api/endpoints/i/export-blocking.ts | 2 +- .../api/endpoints/i/export-following.ts | 2 +- .../src/server/api/endpoints/i/export-mute.ts | 2 +- .../server/api/endpoints/i/export-notes.ts | 2 +- .../api/endpoints/i/export-user-lists.ts | 2 +- .../src/server/api/endpoints/i/favorites.ts | 4 +- .../server/api/endpoints/i/gallery/likes.ts | 4 +- .../server/api/endpoints/i/gallery/posts.ts | 4 +- .../endpoints/i/get-word-muted-notes-count.ts | 2 +- .../server/api/endpoints/i/import-blocking.ts | 4 +- .../api/endpoints/i/import-following.ts | 4 +- .../server/api/endpoints/i/import-muting.ts | 4 +- .../server/api/endpoints/i/import-posts.ts | 4 +- .../api/endpoints/i/import-user-lists.ts | 4 +- .../src/server/api/endpoints/i/known-as.ts | 6 +- .../src/server/api/endpoints/i/move.ts | 6 +- .../server/api/endpoints/i/notifications.ts | 6 +- .../src/server/api/endpoints/i/page-likes.ts | 4 +- .../src/server/api/endpoints/i/pages.ts | 4 +- .../backend/src/server/api/endpoints/i/pin.ts | 4 +- .../i/read-all-messaging-messages.ts | 2 +- .../api/endpoints/i/read-all-unread-notes.ts | 2 +- .../api/endpoints/i/read-announcement.ts | 4 +- .../api/endpoints/i/regenerate-token.ts | 4 +- .../api/endpoints/i/registry/get-all.ts | 2 +- .../api/endpoints/i/registry/get-detail.ts | 4 +- .../api/endpoints/i/registry/get-unsecure.ts | 4 +- .../server/api/endpoints/i/registry/get.ts | 4 +- .../endpoints/i/registry/keys-with-type.ts | 2 +- .../server/api/endpoints/i/registry/keys.ts | 2 +- .../server/api/endpoints/i/registry/remove.ts | 4 +- .../server/api/endpoints/i/registry/scopes.ts | 2 +- .../server/api/endpoints/i/registry/set.ts | 2 +- .../server/api/endpoints/i/revoke-token.ts | 2 +- .../server/api/endpoints/i/signin-history.ts | 4 +- .../src/server/api/endpoints/i/unpin.ts | 4 +- .../server/api/endpoints/i/update-email.ts | 4 +- .../src/server/api/endpoints/i/update.ts | 5 +- .../api/endpoints/i/user-group-invites.ts | 4 +- .../server/api/endpoints/i/webhooks/create.ts | 2 +- .../server/api/endpoints/i/webhooks/delete.ts | 4 +- .../server/api/endpoints/i/webhooks/list.ts | 2 +- .../server/api/endpoints/i/webhooks/show.ts | 4 +- .../server/api/endpoints/i/webhooks/update.ts | 4 +- .../server/api/endpoints/latest-version.ts | 2 +- .../server/api/endpoints/messaging/history.ts | 2 +- .../api/endpoints/messaging/messages.ts | 10 +- .../endpoints/messaging/messages/create.ts | 7 +- .../endpoints/messaging/messages/delete.ts | 4 +- .../api/endpoints/messaging/messages/read.ts | 6 +- .../backend/src/server/api/endpoints/meta.ts | 2 +- .../server/api/endpoints/miauth/gen-token.ts | 2 +- .../src/server/api/endpoints/mute/create.ts | 6 +- .../src/server/api/endpoints/mute/delete.ts | 6 +- .../src/server/api/endpoints/mute/list.ts | 4 +- .../src/server/api/endpoints/my/apps.ts | 2 +- .../backend/src/server/api/endpoints/notes.ts | 4 +- .../server/api/endpoints/notes/children.ts | 10 +- .../src/server/api/endpoints/notes/clips.ts | 6 +- .../api/endpoints/notes/conversation.ts | 6 +- .../src/server/api/endpoints/notes/create.ts | 8 +- .../src/server/api/endpoints/notes/delete.ts | 6 +- .../src/server/api/endpoints/notes/edit.ts | 11 +- .../api/endpoints/notes/favorites/create.ts | 6 +- .../api/endpoints/notes/favorites/delete.ts | 6 +- .../server/api/endpoints/notes/featured.ts | 6 +- .../api/endpoints/notes/global-timeline.ts | 16 +-- .../api/endpoints/notes/hybrid-timeline.ts | 20 +-- .../api/endpoints/notes/local-timeline.ts | 22 +-- .../server/api/endpoints/notes/mentions.ts | 12 +- .../endpoints/notes/polls/recommendation.ts | 2 +- .../server/api/endpoints/notes/polls/vote.ts | 6 +- .../server/api/endpoints/notes/reactions.ts | 7 +- .../api/endpoints/notes/reactions/create.ts | 6 +- .../api/endpoints/notes/reactions/delete.ts | 6 +- .../endpoints/notes/recommended-timeline.ts | 20 +-- .../src/server/api/endpoints/notes/renotes.ts | 14 +- .../src/server/api/endpoints/notes/replies.ts | 10 +- .../api/endpoints/notes/search-by-tag.ts | 10 +- .../src/server/api/endpoints/notes/search.ts | 10 +- .../src/server/api/endpoints/notes/show.ts | 6 +- .../src/server/api/endpoints/notes/state.ts | 5 +- .../endpoints/notes/thread-muting/create.ts | 6 +- .../endpoints/notes/thread-muting/delete.ts | 6 +- .../server/api/endpoints/notes/timeline.ts | 20 +-- .../server/api/endpoints/notes/translate.ts | 6 +- .../server/api/endpoints/notes/unrenote.ts | 6 +- .../api/endpoints/notes/user-list-timeline.ts | 8 +- .../api/endpoints/notes/watching/create.ts | 6 +- .../api/endpoints/notes/watching/delete.ts | 6 +- .../api/endpoints/notifications/create.ts | 2 +- .../notifications/mark-all-as-read.ts | 2 +- .../api/endpoints/notifications/read.ts | 4 +- .../src/server/api/endpoints/page-push.ts | 4 +- .../src/server/api/endpoints/pages/create.ts | 4 +- .../src/server/api/endpoints/pages/delete.ts | 4 +- .../server/api/endpoints/pages/featured.ts | 2 +- .../src/server/api/endpoints/pages/like.ts | 4 +- .../src/server/api/endpoints/pages/show.ts | 4 +- .../src/server/api/endpoints/pages/unlike.ts | 4 +- .../src/server/api/endpoints/pages/update.ts | 4 +- .../src/server/api/endpoints/patrons.ts | 2 +- .../backend/src/server/api/endpoints/ping.ts | 2 +- .../src/server/api/endpoints/pinned-users.ts | 2 +- .../src/server/api/endpoints/promo/read.ts | 6 +- .../api/endpoints/recommended-instances.ts | 2 +- .../src/server/api/endpoints/release.ts | 2 +- .../api/endpoints/renote-mute/create.ts | 6 +- .../api/endpoints/renote-mute/delete.ts | 6 +- .../server/api/endpoints/renote-mute/list.ts | 4 +- .../api/endpoints/request-reset-password.ts | 4 +- .../src/server/api/endpoints/reset-db.ts | 3 +- .../server/api/endpoints/reset-password.ts | 6 +- .../src/server/api/endpoints/server-info.ts | 2 +- .../backend/src/server/api/endpoints/stats.ts | 3 +- .../src/server/api/endpoints/sw/register.ts | 2 +- .../api/endpoints/sw/show-registration.ts | 2 +- .../src/server/api/endpoints/sw/unregister.ts | 2 +- .../api/endpoints/sw/update-registration.ts | 2 +- .../backend/src/server/api/endpoints/test.ts | 2 +- .../api/endpoints/username/available.ts | 2 +- .../backend/src/server/api/endpoints/users.ts | 6 +- .../src/server/api/endpoints/users/clips.ts | 4 +- .../server/api/endpoints/users/followers.ts | 6 +- .../server/api/endpoints/users/following.ts | 6 +- .../api/endpoints/users/gallery/posts.ts | 4 +- .../users/get-frequently-replied-users.ts | 6 +- .../api/endpoints/users/groups/create.ts | 2 +- .../api/endpoints/users/groups/delete.ts | 4 +- .../users/groups/invitations/accept.ts | 4 +- .../users/groups/invitations/reject.ts | 4 +- .../api/endpoints/users/groups/invite.ts | 6 +- .../api/endpoints/users/groups/joined.ts | 2 +- .../api/endpoints/users/groups/leave.ts | 4 +- .../api/endpoints/users/groups/owned.ts | 2 +- .../server/api/endpoints/users/groups/pull.ts | 6 +- .../server/api/endpoints/users/groups/show.ts | 4 +- .../api/endpoints/users/groups/transfer.ts | 6 +- .../api/endpoints/users/groups/update.ts | 4 +- .../api/endpoints/users/lists/create.ts | 2 +- .../api/endpoints/users/lists/delete-all.ts | 4 +- .../api/endpoints/users/lists/delete.ts | 4 +- .../server/api/endpoints/users/lists/list.ts | 2 +- .../server/api/endpoints/users/lists/pull.ts | 6 +- .../server/api/endpoints/users/lists/push.ts | 6 +- .../server/api/endpoints/users/lists/show.ts | 4 +- .../api/endpoints/users/lists/update.ts | 4 +- .../src/server/api/endpoints/users/notes.ts | 14 +- .../src/server/api/endpoints/users/pages.ts | 4 +- .../server/api/endpoints/users/reactions.ts | 8 +- .../api/endpoints/users/recommendation.ts | 6 +- .../server/api/endpoints/users/relation.ts | 2 +- .../api/endpoints/users/report-abuse.ts | 6 +- .../users/search-by-username-and-host.ts | 3 +- .../src/server/api/endpoints/users/search.ts | 2 +- .../src/server/api/endpoints/users/show.ts | 6 +- .../src/server/api/endpoints/users/stats.ts | 4 +- packages/backend/src/server/api/index.ts | 9 +- packages/backend/src/server/api/limiter.ts | 3 +- .../mastodon/ApiMastodonCompatibleService.ts | 2 +- .../src/server/api/mastodon/converters.ts | 2 +- .../server/api/mastodon/endpoints/account.ts | 5 +- .../src/server/api/mastodon/endpoints/auth.ts | 3 - .../server/api/mastodon/endpoints/filter.ts | 3 +- .../api/mastodon/endpoints/notifications.ts | 4 +- .../server/api/mastodon/endpoints/search.ts | 1 - .../server/api/mastodon/endpoints/status.ts | 3 +- .../server/api/mastodon/endpoints/timeline.ts | 2 +- .../src/server/api/openapi/gen-spec.ts | 2 +- .../backend/src/server/api/private/signin.ts | 6 +- .../src/server/api/private/signup-pending.ts | 6 +- .../backend/src/server/api/private/signup.ts | 2 +- .../server/api/stream/channels/messaging.ts | 2 +- .../backend/src/server/api/stream/index.ts | 4 +- .../src/server/file/byte-range-readable.ts | 2 +- packages/backend/src/server/index.ts | 3 +- .../backend/src/services/blocking/create.ts | 1 - .../backend/src/services/blocking/delete.ts | 3 +- .../src/services/chart/charts/active-users.ts | 1 - .../src/services/chart/charts/drive.ts | 2 - .../src/services/create-system-user.ts | 2 +- .../backend/src/services/delete-account.ts | 4 +- .../backend/src/services/drive/add-file.ts | 3 +- .../backend/src/services/drive/delete-file.ts | 2 +- .../drive/generate-video-thumbnail.ts | 1 - packages/backend/src/services/drive/logger.ts | 2 +- packages/backend/src/services/drive/s3.ts | 2 +- .../src/services/fetch-instance-metadata.ts | 2 +- packages/backend/src/services/fetch-rel-me.ts | 1 - .../backend/src/services/following/create.ts | 4 +- .../backend/src/services/following/delete.ts | 2 +- .../backend/src/services/following/reject.ts | 1 - .../src/services/following/requests/accept.ts | 1 - .../src/services/following/requests/cancel.ts | 1 - .../src/services/following/requests/create.ts | 2 +- packages/backend/src/services/i/pin.ts | 2 +- packages/backend/src/services/i/update.ts | 2 +- packages/backend/src/services/logger.ts | 2 +- packages/backend/src/services/note/create.ts | 8 +- packages/backend/src/services/note/delete.ts | 4 +- .../backend/src/services/note/polls/update.ts | 2 +- .../backend/src/services/note/polls/vote.ts | 3 +- .../src/services/note/reaction/create.ts | 2 +- packages/backend/src/services/relay.ts | 2 +- .../src/services/send-email-notification.ts | 8 +- packages/backend/src/services/send-email.ts | 2 +- packages/backend/src/services/stream.ts | 2 +- .../backend/src/services/user-list/push.ts | 2 +- packages/backend/tsconfig.json | 2 +- pnpm-lock.yaml | 132 +++++++++++++++--- 437 files changed, 884 insertions(+), 887 deletions(-) diff --git a/packages/backend/package.json b/packages/backend/package.json index 396cc963dd..1923938b6a 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -146,6 +146,8 @@ "@swc/core": "1.3.78", "@types/adm-zip": "^0.5.0", "@types/bcryptjs": "2.4.2", + "@types/color-convert": "^2.0.2", + "@types/content-disposition": "^0.5.7", "@types/escape-regexp": "0.0.1", "@types/fluent-ffmpeg": "2.1.21", "@types/js-yaml": "4.0.5", @@ -167,6 +169,8 @@ "@types/node-fetch": "3.0.3", "@types/nodemailer": "6.4.9", "@types/oauth": "0.9.1", + "@types/opencc-js": "^1.0.2", + "@types/pg": "^8.10.7", "@types/probe-image-size": "^7.2.0", "@types/pug": "2.0.6", "@types/punycode": "2.1.0", @@ -179,6 +183,7 @@ "@types/sanitize-html": "2.9.0", "@types/semver": "7.5.0", "@types/sinonjs__fake-timers": "8.1.2", + "@types/syslog-pro": "^1.0.2", "@types/tinycolor2": "1.4.3", "@types/tmp": "0.2.3", "@types/uuid": "9.0.2", diff --git a/packages/backend/src/boot/master.ts b/packages/backend/src/boot/master.ts index 4470cea9cb..89f72227a1 100644 --- a/packages/backend/src/boot/master.ts +++ b/packages/backend/src/boot/master.ts @@ -10,10 +10,9 @@ import semver from "semver"; import Logger from "@/services/logger.js"; import loadConfig from "@/config/load.js"; import type { Config } from "@/config/types.js"; -import { lessThan } from "@/prelude/array.js"; -import { envOption } from "../env.js"; +import { envOption } from "@/env.js"; import { showMachineInfo } from "@/misc/show-machine-info.js"; -import { db, initDb } from "../db/postgre.js"; +import { db, initDb } from "@/db/postgre.js"; const _filename = fileURLToPath(import.meta.url); const _dirname = dirname(_filename); diff --git a/packages/backend/src/boot/worker.ts b/packages/backend/src/boot/worker.ts index 236621b010..0acdcd97c6 100644 --- a/packages/backend/src/boot/worker.ts +++ b/packages/backend/src/boot/worker.ts @@ -1,6 +1,5 @@ import cluster from "node:cluster"; -import { initDb } from "../db/postgre.js"; -import config from "@/config/index.js"; +import { initDb } from "@/db/postgre.js"; import os from "node:os"; /** diff --git a/packages/backend/src/daemons/queue-stats.ts b/packages/backend/src/daemons/queue-stats.ts index 381b52a916..c358518fa4 100644 --- a/packages/backend/src/daemons/queue-stats.ts +++ b/packages/backend/src/daemons/queue-stats.ts @@ -1,5 +1,5 @@ import Xev from "xev"; -import { deliverQueue, inboxQueue } from "../queue/queues.js"; +import { deliverQueue, inboxQueue } from "@/queue/queues.js"; const ev = new Xev(); diff --git a/packages/backend/src/daemons/server-stats.ts b/packages/backend/src/daemons/server-stats.ts index 39d81ec914..dc7493381c 100644 --- a/packages/backend/src/daemons/server-stats.ts +++ b/packages/backend/src/daemons/server-stats.ts @@ -2,7 +2,7 @@ import si from "systeminformation"; import Xev from "xev"; import * as osUtils from "os-utils"; import { fetchMeta } from "@/misc/fetch-meta.js"; -import meilisearch from "../db/meilisearch.js"; +import meilisearch from "@/db/meilisearch.js"; const ev = new Xev(); diff --git a/packages/backend/src/db/postgre.ts b/packages/backend/src/db/postgre.ts index 10ea5b15f6..d68f919a75 100644 --- a/packages/backend/src/db/postgre.ts +++ b/packages/backend/src/db/postgre.ts @@ -74,9 +74,10 @@ import { UserIp } from "@/models/entities/user-ip.js"; import { NoteEdit } from "@/models/entities/note-edit.js"; import { entities as charts } from "@/services/chart/entities.js"; -import { envOption } from "../env.js"; import { dbLogger } from "./logger.js"; import { redisClient } from "./redis.js"; + +// TODO?: should we avoid importing things from built directory? import { nativeInitDatabase } from "native-utils/built/index.js"; const sqlLogger = dbLogger.createSubLogger("sql", "gray", false); diff --git a/packages/backend/src/misc/app-lock.ts b/packages/backend/src/misc/app-lock.ts index 198310c884..91d408ac5d 100644 --- a/packages/backend/src/misc/app-lock.ts +++ b/packages/backend/src/misc/app-lock.ts @@ -1,4 +1,4 @@ -import { redisClient } from "../db/redis.js"; +import { redisClient } from "@/db/redis.js"; import { Mutex } from "redis-semaphore"; /** diff --git a/packages/backend/src/misc/captcha.ts b/packages/backend/src/misc/captcha.ts index 8ea4abedb6..b3b3dca39d 100644 --- a/packages/backend/src/misc/captcha.ts +++ b/packages/backend/src/misc/captcha.ts @@ -1,6 +1,6 @@ import fetch from "node-fetch"; import { URLSearchParams } from "node:url"; -import { getAgentByUrl } from "./fetch.js"; +import { getAgentByUrl } from "@/misc/fetch.js"; import config from "@/config/index.js"; export async function verifyRecaptcha(secret: string, response: string) { diff --git a/packages/backend/src/misc/check-hit-antenna.ts b/packages/backend/src/misc/check-hit-antenna.ts index 199b2d9647..1f4f2f2fae 100644 --- a/packages/backend/src/misc/check-hit-antenna.ts +++ b/packages/backend/src/misc/check-hit-antenna.ts @@ -2,11 +2,11 @@ import type { Antenna } from "@/models/entities/antenna.js"; import type { Note } from "@/models/entities/note.js"; import type { User } from "@/models/entities/user.js"; import { Blockings, UserProfiles } from "@/models/index.js"; -import { getFullApAccount } from "./convert-host.js"; +import { getFullApAccount } from "@/misc/convert-host.js"; import * as Acct from "@/misc/acct.js"; -import type { Packed } from "./schema.js"; -import { Cache } from "./cache.js"; -import { getWordHardMute } from "./check-word-mute.js"; +import type { Packed } from "@/misc/schema.js"; +import { Cache } from "@/misc/cache.js"; +import { getWordHardMute } from "@/misc/check-word-mute.js"; const blockingCache = new Cache<User["id"][]>("blocking", 60 * 5); const mutedWordsCache = new Cache<string[][] | undefined>("mutedWords", 60 * 5); diff --git a/packages/backend/src/models/entities/note-thread-muting.ts b/packages/backend/src/models/entities/note-thread-muting.ts index 704b328503..7e5fad59a4 100644 --- a/packages/backend/src/models/entities/note-thread-muting.ts +++ b/packages/backend/src/models/entities/note-thread-muting.ts @@ -7,7 +7,6 @@ import { ManyToOne, } from "typeorm"; import { User } from "./user.js"; -import { Note } from "./note.js"; import { id } from "../id.js"; @Entity() diff --git a/packages/backend/src/models/entities/user-ip.ts b/packages/backend/src/models/entities/user-ip.ts index c30e56b66b..adef48e4c4 100644 --- a/packages/backend/src/models/entities/user-ip.ts +++ b/packages/backend/src/models/entities/user-ip.ts @@ -1,14 +1,5 @@ -import { - PrimaryColumn, - Entity, - Index, - JoinColumn, - Column, - ManyToOne, - PrimaryGeneratedColumn, -} from "typeorm"; +import { Entity, Index, Column, PrimaryGeneratedColumn } from "typeorm"; import { id } from "../id.js"; -import { Note } from "./note.js"; import type { User } from "./user.js"; @Entity() diff --git a/packages/backend/src/models/index.ts b/packages/backend/src/models/index.ts index 8782d57408..c1f37cf6d4 100644 --- a/packages/backend/src/models/index.ts +++ b/packages/backend/src/models/index.ts @@ -1,9 +1,7 @@ -import {} from "typeorm"; import { db } from "@/db/postgre.js"; import { Announcement } from "./entities/announcement.js"; import { AnnouncementRead } from "./entities/announcement-read.js"; -import { Instance } from "./entities/instance.js"; import { Poll } from "./entities/poll.js"; import { PollVote } from "./entities/poll-vote.js"; import { Meta } from "./entities/meta.js"; diff --git a/packages/backend/src/models/repositories/drive-file.ts b/packages/backend/src/models/repositories/drive-file.ts index 3918f7947b..1b4f477d33 100644 --- a/packages/backend/src/models/repositories/drive-file.ts +++ b/packages/backend/src/models/repositories/drive-file.ts @@ -2,12 +2,10 @@ import { db } from "@/db/postgre.js"; import { DriveFile } from "@/models/entities/drive-file.js"; import type { User } from "@/models/entities/user.js"; import { toPuny } from "@/misc/convert-host.js"; -import { awaitAll, Promiseable } from "@/prelude/await-all.js"; +import { awaitAll } from "@/prelude/await-all.js"; import type { Packed } from "@/misc/schema.js"; import config from "@/config/index.js"; import { query, appendQuery } from "@/prelude/url.js"; -import { Meta } from "@/models/entities/meta.js"; -import { fetchMeta } from "@/misc/fetch-meta.js"; import { Users, DriveFolders } from "../index.js"; import { deepClone } from "@/misc/clone.js"; diff --git a/packages/backend/src/models/repositories/notification.ts b/packages/backend/src/models/repositories/notification.ts index 1538e67d86..90dfbd7397 100644 --- a/packages/backend/src/models/repositories/notification.ts +++ b/packages/backend/src/models/repositories/notification.ts @@ -1,4 +1,4 @@ -import { In, Repository } from "typeorm"; +import { In } from "typeorm"; import { Notification } from "@/models/entities/notification.js"; import { awaitAll } from "@/prelude/await-all.js"; import type { Packed } from "@/misc/schema.js"; @@ -6,7 +6,6 @@ import type { Note } from "@/models/entities/note.js"; import type { NoteReaction } from "@/models/entities/note-reaction.js"; import type { User } from "@/models/entities/user.js"; import { aggregateNoteEmojis, prefetchEmojis } from "@/misc/populate-emojis.js"; -import { notificationTypes } from "@/types.js"; import { db } from "@/db/postgre.js"; import { Users, diff --git a/packages/backend/src/models/repositories/user.ts b/packages/backend/src/models/repositories/user.ts index e4284f935f..be1dbc4531 100644 --- a/packages/backend/src/models/repositories/user.ts +++ b/packages/backend/src/models/repositories/user.ts @@ -7,7 +7,6 @@ import type { Packed } from "@/misc/schema.js"; import type { Promiseable } from "@/prelude/await-all.js"; import { awaitAll } from "@/prelude/await-all.js"; import { populateEmojis } from "@/misc/populate-emojis.js"; -import { getAntennas } from "@/misc/antenna-cache.js"; import { USER_ACTIVE_THRESHOLD, USER_ONLINE_THRESHOLD } from "@/const.js"; import { Cache } from "@/misc/cache.js"; import { db } from "@/db/postgre.js"; diff --git a/packages/backend/src/queue/processors/background/index-all-notes.ts b/packages/backend/src/queue/processors/background/index-all-notes.ts index c0275b420a..262724cbd6 100644 --- a/packages/backend/src/queue/processors/background/index-all-notes.ts +++ b/packages/backend/src/queue/processors/background/index-all-notes.ts @@ -6,7 +6,7 @@ import { Notes } from "@/models/index.js"; import { MoreThan } from "typeorm"; import { index } from "@/services/note/create.js"; import { Note } from "@/models/entities/note.js"; -import meilisearch from "../../../db/meilisearch.js"; +import meilisearch from "@/db/meilisearch.js"; const logger = queueLogger.createSubLogger("index-all-notes"); diff --git a/packages/backend/src/queue/processors/db/export-custom-emojis.ts b/packages/backend/src/queue/processors/db/export-custom-emojis.ts index 7a19d0b60b..86de43af42 100644 --- a/packages/backend/src/queue/processors/db/export-custom-emojis.ts +++ b/packages/backend/src/queue/processors/db/export-custom-emojis.ts @@ -1,14 +1,12 @@ import type Bull from "bull"; import * as fs from "node:fs"; -import { ulid } from "ulid"; import mime from "mime-types"; import archiver from "archiver"; import { queueLogger } from "../../logger.js"; import { addFile } from "@/services/drive/add-file.js"; import { format as dateFormat } from "date-fns"; import { Users, Emojis } from "@/models/index.js"; -import {} from "@/queue/types.js"; import { createTemp, createTempDir } from "@/misc/create-temp.js"; import { downloadUrl } from "@/misc/download-url.js"; import config from "@/config/index.js"; diff --git a/packages/backend/src/queue/processors/db/import-blocking.ts b/packages/backend/src/queue/processors/db/import-blocking.ts index 2fdf80a6eb..290c9dbceb 100644 --- a/packages/backend/src/queue/processors/db/import-blocking.ts +++ b/packages/backend/src/queue/processors/db/import-blocking.ts @@ -5,7 +5,7 @@ import * as Acct from "@/misc/acct.js"; import { resolveUser } from "@/remote/resolve-user.js"; import { downloadTextFile } from "@/misc/download-text-file.js"; import { isSelfHost, toPuny } from "@/misc/convert-host.js"; -import { Users, DriveFiles, Blockings } from "@/models/index.js"; +import { Users, DriveFiles } from "@/models/index.js"; import type { DbUserImportJobData } from "@/queue/types.js"; import block from "@/services/blocking/create.js"; import { IsNull } from "typeorm"; diff --git a/packages/backend/src/queue/processors/db/import-masto-post.ts b/packages/backend/src/queue/processors/db/import-masto-post.ts index 9b86a5903f..c484ac0e17 100644 --- a/packages/backend/src/queue/processors/db/import-masto-post.ts +++ b/packages/backend/src/queue/processors/db/import-masto-post.ts @@ -5,7 +5,6 @@ import { queueLogger } from "../../logger.js"; import type Bull from "bull"; import { htmlToMfm } from "@/remote/activitypub/misc/html-to-mfm.js"; import { resolveNote } from "@/remote/activitypub/models/note.js"; -import { Note } from "@/models/entities/note.js"; import { uploadFromUrl } from "@/services/drive/upload-from-url.js"; import type { DriveFile } from "@/models/entities/drive-file.js"; import { Notes, NoteEdits } from "@/models/index.js"; diff --git a/packages/backend/src/queue/processors/ended-poll-notification.ts b/packages/backend/src/queue/processors/ended-poll-notification.ts index 3bf010a1b9..f93b067b8a 100644 --- a/packages/backend/src/queue/processors/ended-poll-notification.ts +++ b/packages/backend/src/queue/processors/ended-poll-notification.ts @@ -1,11 +1,12 @@ import type Bull from "bull"; import { Notes, PollVotes } from "@/models/index.js"; -import { queueLogger } from "../logger.js"; +// import { queueLogger } from "../logger.js"; import type { EndedPollNotificationJobData } from "@/queue/types.js"; import { createNotification } from "@/services/create-notification.js"; import { deliverQuestionUpdate } from "@/services/note/polls/update.js"; -const logger = queueLogger.createSubLogger("ended-poll-notification"); +// unused +// const logger = queueLogger.createSubLogger("ended-poll-notification"); export async function endedPollNotification( job: Bull.Job<EndedPollNotificationJobData>, diff --git a/packages/backend/src/queue/processors/system/verify-links.ts b/packages/backend/src/queue/processors/system/verify-links.ts index 3ddda9baf4..4ee88c6310 100644 --- a/packages/backend/src/queue/processors/system/verify-links.ts +++ b/packages/backend/src/queue/processors/system/verify-links.ts @@ -4,7 +4,6 @@ import { UserProfiles } from "@/models/index.js"; import { Not } from "typeorm"; import { queueLogger } from "../../logger.js"; import { verifyLink } from "@/services/fetch-rel-me.js"; -import config from "@/config/index.js"; const logger = queueLogger.createSubLogger("verify-links"); diff --git a/packages/backend/src/queue/processors/webhook-deliver.ts b/packages/backend/src/queue/processors/webhook-deliver.ts index 286b401ba7..12c9a05498 100644 --- a/packages/backend/src/queue/processors/webhook-deliver.ts +++ b/packages/backend/src/queue/processors/webhook-deliver.ts @@ -1,4 +1,3 @@ -import { URL } from "node:url"; import type Bull from "bull"; import Logger from "@/services/logger.js"; import type { WebhookDeliverJobData } from "../types.js"; diff --git a/packages/backend/src/remote/activitypub/audience.ts b/packages/backend/src/remote/activitypub/audience.ts index 21b1b2e6ac..9d840bc574 100644 --- a/packages/backend/src/remote/activitypub/audience.ts +++ b/packages/backend/src/remote/activitypub/audience.ts @@ -8,7 +8,6 @@ import type { CacheableRemoteUser, CacheableUser, } from "@/models/entities/user.js"; -import { User } from "@/models/entities/user.js"; type Visibility = "public" | "home" | "followers" | "specified"; diff --git a/packages/backend/src/remote/activitypub/kernel/read.ts b/packages/backend/src/remote/activitypub/kernel/read.ts index 7cc70976c3..53fa7fe63b 100644 --- a/packages/backend/src/remote/activitypub/kernel/read.ts +++ b/packages/backend/src/remote/activitypub/kernel/read.ts @@ -3,7 +3,7 @@ import type { IRead } from "../type.js"; import { getApId } from "../type.js"; import { isSelfHost, extractDbHost } from "@/misc/convert-host.js"; import { MessagingMessages } from "@/models/index.js"; -import { readUserMessagingMessage } from "../../../server/api/common/read-messaging-message.js"; +import { readUserMessagingMessage } from "@/server/api/common/read-messaging-message.js"; export const performReadActivity = async ( actor: CacheableRemoteUser, diff --git a/packages/backend/src/remote/activitypub/kernel/undo/accept.ts b/packages/backend/src/remote/activitypub/kernel/undo/accept.ts index 2cd05a77d2..7cf457046a 100644 --- a/packages/backend/src/remote/activitypub/kernel/undo/accept.ts +++ b/packages/backend/src/remote/activitypub/kernel/undo/accept.ts @@ -1,5 +1,4 @@ import unfollow from "@/services/following/delete.js"; -import cancelRequest from "@/services/following/requests/cancel.js"; import type { IAccept } from "../../type.js"; import type { CacheableRemoteUser } from "@/models/entities/user.js"; import { Followings } from "@/models/index.js"; diff --git a/packages/backend/src/remote/activitypub/misc/get-note-html.ts b/packages/backend/src/remote/activitypub/misc/get-note-html.ts index cb5294f731..7521d12131 100644 --- a/packages/backend/src/remote/activitypub/misc/get-note-html.ts +++ b/packages/backend/src/remote/activitypub/misc/get-note-html.ts @@ -1,6 +1,6 @@ import * as mfm from "mfm-js"; import type { Note } from "@/models/entities/note.js"; -import { toHtml } from "../../../mfm/to-html.js"; +import { toHtml } from "@/mfm/to-html.js"; export default function (note: Note) { if (!note.text) return ""; diff --git a/packages/backend/src/remote/activitypub/misc/html-to-mfm.ts b/packages/backend/src/remote/activitypub/misc/html-to-mfm.ts index 9d71a46a36..f18958f70d 100644 --- a/packages/backend/src/remote/activitypub/misc/html-to-mfm.ts +++ b/packages/backend/src/remote/activitypub/misc/html-to-mfm.ts @@ -1,6 +1,6 @@ import type { IObject } from "../type.js"; import { extractApHashtagObjects } from "../models/tag.js"; -import { fromHtml } from "../../../mfm/from-html.js"; +import { fromHtml } from "@/mfm/from-html.js"; export function htmlToMfm(html: string, tag?: IObject | IObject[]) { const hashtagNames = extractApHashtagObjects(tag) diff --git a/packages/backend/src/remote/activitypub/models/image.ts b/packages/backend/src/remote/activitypub/models/image.ts index 67652d57de..2cf0c6c152 100644 --- a/packages/backend/src/remote/activitypub/models/image.ts +++ b/packages/backend/src/remote/activitypub/models/image.ts @@ -1,11 +1,10 @@ import { uploadFromUrl } from "@/services/drive/upload-from-url.js"; import type { CacheableRemoteUser } from "@/models/entities/user.js"; -import { IRemoteUser } from "@/models/entities/user.js"; import Resolver from "../resolver.js"; import { fetchMeta } from "@/misc/fetch-meta.js"; import { apLogger } from "../logger.js"; import type { DriveFile } from "@/models/entities/drive-file.js"; -import { DriveFiles, Users } from "@/models/index.js"; +import { DriveFiles } from "@/models/index.js"; import { truncate } from "@/misc/truncate.js"; import { DB_MAX_IMAGE_COMMENT_LENGTH } from "@/misc/hard-limits.js"; diff --git a/packages/backend/src/remote/activitypub/models/mention.ts b/packages/backend/src/remote/activitypub/models/mention.ts index b888fa21a4..e9f80bc43f 100644 --- a/packages/backend/src/remote/activitypub/models/mention.ts +++ b/packages/backend/src/remote/activitypub/models/mention.ts @@ -1,7 +1,6 @@ import promiseLimit from "promise-limit"; import { toArray, unique } from "@/prelude/array.js"; import type { CacheableUser } from "@/models/entities/user.js"; -import { User } from "@/models/entities/user.js"; import type { IObject, IApMention } from "../type.js"; import { isMention } from "../type.js"; import Resolver from "../resolver.js"; diff --git a/packages/backend/src/remote/activitypub/models/note.ts b/packages/backend/src/remote/activitypub/models/note.ts index b2354bba61..d9eedb3058 100644 --- a/packages/backend/src/remote/activitypub/models/note.ts +++ b/packages/backend/src/remote/activitypub/models/note.ts @@ -6,10 +6,7 @@ import post from "@/services/note/create.js"; import { extractMentionedUsers } from "@/services/note/create.js"; import { resolvePerson } from "./person.js"; import { resolveImage } from "./image.js"; -import type { - ILocalUser, - CacheableRemoteUser, -} from "@/models/entities/user.js"; +import type { CacheableRemoteUser } from "@/models/entities/user.js"; import { htmlToMfm } from "../misc/html-to-mfm.js"; import { extractApHashtags } from "./tag.js"; import { unique, toArray, toSingle } from "@/prelude/array.js"; @@ -52,7 +49,6 @@ import { In } from "typeorm"; import { DB_MAX_IMAGE_COMMENT_LENGTH } from "@/misc/hard-limits.js"; import { truncate } from "@/misc/truncate.js"; import { type Size, getEmojiSize } from "@/misc/emoji-meta.js"; -import { fetchMeta } from "@/misc/fetch-meta.js"; import { langmap } from "@/misc/langmap.js"; const logger = apLogger; diff --git a/packages/backend/src/remote/activitypub/models/person.ts b/packages/backend/src/remote/activitypub/models/person.ts index b13ee23e89..15083fa877 100644 --- a/packages/backend/src/remote/activitypub/models/person.ts +++ b/packages/backend/src/remote/activitypub/models/person.ts @@ -8,7 +8,6 @@ import { updateUsertags } from "@/services/update-hashtag.js"; import { Users, Instances, - DriveFiles, Followings, UserProfiles, UserPublickeys, @@ -33,8 +32,8 @@ import { publishInternalEvent } from "@/services/stream.js"; import { db } from "@/db/postgre.js"; import { apLogger } from "../logger.js"; import { htmlToMfm } from "../misc/html-to-mfm.js"; -import { fromHtml } from "../../../mfm/from-html.js"; -import type { IActor, IObject, IApPropertyValue } from "../type.js"; +import { fromHtml } from "@/mfm/from-html.js"; +import type { IActor, IObject } from "../type.js"; import { isCollectionOrOrderedCollection, isCollection, diff --git a/packages/backend/src/remote/activitypub/renderer/flag.ts b/packages/backend/src/remote/activitypub/renderer/flag.ts index f94d508e1d..44da33f5c2 100644 --- a/packages/backend/src/remote/activitypub/renderer/flag.ts +++ b/packages/backend/src/remote/activitypub/renderer/flag.ts @@ -1,8 +1,5 @@ import config from "@/config/index.js"; -import { IObject, IActivity } from "@/remote/activitypub/type.js"; import type { ILocalUser } from "@/models/entities/user.js"; -import { IRemoteUser } from "@/models/entities/user.js"; -import { getInstanceActor } from "@/services/instance-actor.js"; // to anonymise reporters, the reporting actor must be a system user // object has to be a uri or array of uris diff --git a/packages/backend/src/remote/activitypub/renderer/undo.ts b/packages/backend/src/remote/activitypub/renderer/undo.ts index 249d643b25..4394c4bf2f 100644 --- a/packages/backend/src/remote/activitypub/renderer/undo.ts +++ b/packages/backend/src/remote/activitypub/renderer/undo.ts @@ -1,6 +1,5 @@ import config from "@/config/index.js"; import type { User } from "@/models/entities/user.js"; -import { ILocalUser } from "@/models/entities/user.js"; export default (object: any, user: { id: User["id"] }) => { if (object == null) return null; diff --git a/packages/backend/src/remote/activitypub/resolver.ts b/packages/backend/src/remote/activitypub/resolver.ts index 608ca3e935..c4bee109d2 100644 --- a/packages/backend/src/remote/activitypub/resolver.ts +++ b/packages/backend/src/remote/activitypub/resolver.ts @@ -7,13 +7,7 @@ import { extractDbHost, isSelfHost } from "@/misc/convert-host.js"; import { signedGet } from "./request.js"; import type { IObject, ICollection, IOrderedCollection } from "./type.js"; import { isCollectionOrOrderedCollection, getApId } from "./type.js"; -import { - FollowRequests, - Notes, - NoteReactions, - Polls, - Users, -} from "@/models/index.js"; +import { Notes, NoteReactions, Polls, Users } from "@/models/index.js"; import { parseUri } from "./db-resolver.js"; import renderNote from "@/remote/activitypub/renderer/note.js"; import { renderLike } from "@/remote/activitypub/renderer/like.js"; diff --git a/packages/backend/src/server/activitypub.ts b/packages/backend/src/server/activitypub.ts index f9d5eb99c3..337db59933 100644 --- a/packages/backend/src/server/activitypub.ts +++ b/packages/backend/src/server/activitypub.ts @@ -9,7 +9,7 @@ import renderKey from "@/remote/activitypub/renderer/key.js"; import { renderPerson } from "@/remote/activitypub/renderer/person.js"; import renderEmoji from "@/remote/activitypub/renderer/emoji.js"; import { inbox as processInbox } from "@/queue/index.js"; -import { isSelfHost, toPuny } from "@/misc/convert-host.js"; +import { isSelfHost } from "@/misc/convert-host.js"; import { Notes, Users, @@ -22,7 +22,6 @@ import { renderLike } from "@/remote/activitypub/renderer/like.js"; import { getUserKeypair } from "@/misc/keypair-store.js"; import { checkFetch, - hasSignature, getSignatureUser, } from "@/remote/activitypub/check-fetch.js"; import { getInstanceActor } from "@/services/instance-actor.js"; diff --git a/packages/backend/src/server/api/call.ts b/packages/backend/src/server/api/call.ts index 0a1027b835..2132edd0f5 100644 --- a/packages/backend/src/server/api/call.ts +++ b/packages/backend/src/server/api/call.ts @@ -1,7 +1,6 @@ import { performance } from "perf_hooks"; import type Koa from "koa"; import type { CacheableLocalUser } from "@/models/entities/user.js"; -import { User } from "@/models/entities/user.js"; import type { AccessToken } from "@/models/entities/access-token.js"; import { getIpHash } from "@/misc/get-ip-hash.js"; import { limiter } from "./limiter.js"; @@ -10,7 +9,6 @@ import endpoints from "./endpoints.js"; import compatibility from "./compatibility.js"; import { ApiError } from "./error.js"; import { apiLogger } from "./logger.js"; -import type { AccessToken } from "@/models/entities/access-token.js"; import { fetchMeta } from "@/misc/fetch-meta.js"; const accessDenied = { diff --git a/packages/backend/src/server/api/define.ts b/packages/backend/src/server/api/define.ts index ee0844185f..946f86a63f 100644 --- a/packages/backend/src/server/api/define.ts +++ b/packages/backend/src/server/api/define.ts @@ -1,7 +1,6 @@ import * as fs from "node:fs"; import Ajv from "ajv"; import type { CacheableLocalUser } from "@/models/entities/user.js"; -import { ILocalUser } from "@/models/entities/user.js"; import type { Schema, SchemaType } from "@/misc/schema.js"; import type { AccessToken } from "@/models/entities/access-token.js"; import type { IEndpointMeta } from "./endpoints.js"; diff --git a/packages/backend/src/server/api/endpoints/admin/abuse-user-reports.ts b/packages/backend/src/server/api/endpoints/admin/abuse-user-reports.ts index 4861431403..78034917f0 100644 --- a/packages/backend/src/server/api/endpoints/admin/abuse-user-reports.ts +++ b/packages/backend/src/server/api/endpoints/admin/abuse-user-reports.ts @@ -1,6 +1,6 @@ -import define from "../../define.js"; +import define from "@/server/api/define.js"; import { AbuseUserReports } from "@/models/index.js"; -import { makePaginationQuery } from "../../common/make-pagination-query.js"; +import { makePaginationQuery } from "@/server/api/common/make-pagination-query.js"; export const meta = { tags: ["admin"], diff --git a/packages/backend/src/server/api/endpoints/admin/accounts/create.ts b/packages/backend/src/server/api/endpoints/admin/accounts/create.ts index 2e035d1695..e5972173c9 100644 --- a/packages/backend/src/server/api/endpoints/admin/accounts/create.ts +++ b/packages/backend/src/server/api/endpoints/admin/accounts/create.ts @@ -1,6 +1,6 @@ -import define from "../../../define.js"; +import define from "@/server/api/define.js"; import { Users } from "@/models/index.js"; -import { signup } from "../../../common/signup.js"; +import { signup } from "@/server/api/common/signup.js"; import { IsNull } from "typeorm"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/admin/accounts/delete.ts b/packages/backend/src/server/api/endpoints/admin/accounts/delete.ts index 3f7243ab50..4235180838 100644 --- a/packages/backend/src/server/api/endpoints/admin/accounts/delete.ts +++ b/packages/backend/src/server/api/endpoints/admin/accounts/delete.ts @@ -1,4 +1,4 @@ -import define from "../../../define.js"; +import define from "@/server/api/define.js"; import { Users } from "@/models/index.js"; import { doPostSuspend } from "@/services/suspend-user.js"; import { publishUserEvent } from "@/services/stream.js"; diff --git a/packages/backend/src/server/api/endpoints/admin/accounts/hosted.ts b/packages/backend/src/server/api/endpoints/admin/accounts/hosted.ts index a7b6e95c28..601cd95003 100644 --- a/packages/backend/src/server/api/endpoints/admin/accounts/hosted.ts +++ b/packages/backend/src/server/api/endpoints/admin/accounts/hosted.ts @@ -2,7 +2,7 @@ import config from "@/config/index.js"; import { Meta } from "@/models/entities/meta.js"; import { insertModerationLog } from "@/services/insert-moderation-log.js"; import { db } from "@/db/postgre.js"; -import define from "../../../define.js"; +import define from "@/server/api/define.js"; export const meta = { tags: ["admin"], diff --git a/packages/backend/src/server/api/endpoints/admin/ad/create.ts b/packages/backend/src/server/api/endpoints/admin/ad/create.ts index db39f3eb27..bfe4d54461 100644 --- a/packages/backend/src/server/api/endpoints/admin/ad/create.ts +++ b/packages/backend/src/server/api/endpoints/admin/ad/create.ts @@ -1,4 +1,4 @@ -import define from "../../../define.js"; +import define from "@/server/api/define.js"; import { Ads } from "@/models/index.js"; import { genId } from "@/misc/gen-id.js"; diff --git a/packages/backend/src/server/api/endpoints/admin/ad/delete.ts b/packages/backend/src/server/api/endpoints/admin/ad/delete.ts index ee6d314de7..802eb5ef6b 100644 --- a/packages/backend/src/server/api/endpoints/admin/ad/delete.ts +++ b/packages/backend/src/server/api/endpoints/admin/ad/delete.ts @@ -1,6 +1,6 @@ -import define from "../../../define.js"; +import define from "@/server/api/define.js"; import { Ads } from "@/models/index.js"; -import { ApiError } from "../../../error.js"; +import { ApiError } from "@/server/api/error.js"; export const meta = { tags: ["admin"], diff --git a/packages/backend/src/server/api/endpoints/admin/ad/list.ts b/packages/backend/src/server/api/endpoints/admin/ad/list.ts index 65944d31e9..1f39e73e5e 100644 --- a/packages/backend/src/server/api/endpoints/admin/ad/list.ts +++ b/packages/backend/src/server/api/endpoints/admin/ad/list.ts @@ -1,6 +1,6 @@ -import define from "../../../define.js"; +import define from "@/server/api/define.js"; import { Ads } from "@/models/index.js"; -import { makePaginationQuery } from "../../../common/make-pagination-query.js"; +import { makePaginationQuery } from "@/server/api/common/make-pagination-query.js"; export const meta = { tags: ["admin"], diff --git a/packages/backend/src/server/api/endpoints/admin/ad/update.ts b/packages/backend/src/server/api/endpoints/admin/ad/update.ts index 2c70387310..52f31a3ce0 100644 --- a/packages/backend/src/server/api/endpoints/admin/ad/update.ts +++ b/packages/backend/src/server/api/endpoints/admin/ad/update.ts @@ -1,6 +1,6 @@ -import define from "../../../define.js"; +import define from "@/server/api/define.js"; import { Ads } from "@/models/index.js"; -import { ApiError } from "../../../error.js"; +import { ApiError } from "@/server/api/error.js"; export const meta = { tags: ["admin"], diff --git a/packages/backend/src/server/api/endpoints/admin/announcements/create.ts b/packages/backend/src/server/api/endpoints/admin/announcements/create.ts index 754cc6c893..8af778486c 100644 --- a/packages/backend/src/server/api/endpoints/admin/announcements/create.ts +++ b/packages/backend/src/server/api/endpoints/admin/announcements/create.ts @@ -1,4 +1,4 @@ -import define from "../../../define.js"; +import define from "@/server/api/define.js"; import { Announcements } from "@/models/index.js"; import { genId } from "@/misc/gen-id.js"; diff --git a/packages/backend/src/server/api/endpoints/admin/announcements/delete.ts b/packages/backend/src/server/api/endpoints/admin/announcements/delete.ts index 5665b94a7b..8b2326cdaf 100644 --- a/packages/backend/src/server/api/endpoints/admin/announcements/delete.ts +++ b/packages/backend/src/server/api/endpoints/admin/announcements/delete.ts @@ -1,6 +1,6 @@ -import define from "../../../define.js"; +import define from "@/server/api/define.js"; import { Announcements } from "@/models/index.js"; -import { ApiError } from "../../../error.js"; +import { ApiError } from "@/server/api/error.js"; export const meta = { tags: ["admin"], diff --git a/packages/backend/src/server/api/endpoints/admin/announcements/list.ts b/packages/backend/src/server/api/endpoints/admin/announcements/list.ts index e96517c68e..a13fabd602 100644 --- a/packages/backend/src/server/api/endpoints/admin/announcements/list.ts +++ b/packages/backend/src/server/api/endpoints/admin/announcements/list.ts @@ -1,7 +1,7 @@ import { Announcements, AnnouncementReads } from "@/models/index.js"; import type { Announcement } from "@/models/entities/announcement.js"; -import define from "../../../define.js"; -import { makePaginationQuery } from "../../../common/make-pagination-query.js"; +import define from "@/server/api/define.js"; +import { makePaginationQuery } from "@/server/api/common/make-pagination-query.js"; export const meta = { tags: ["admin"], diff --git a/packages/backend/src/server/api/endpoints/admin/announcements/update.ts b/packages/backend/src/server/api/endpoints/admin/announcements/update.ts index 616b94d699..03af414737 100644 --- a/packages/backend/src/server/api/endpoints/admin/announcements/update.ts +++ b/packages/backend/src/server/api/endpoints/admin/announcements/update.ts @@ -1,6 +1,6 @@ -import define from "../../../define.js"; +import define from "@/server/api/define.js"; import { Announcements } from "@/models/index.js"; -import { ApiError } from "../../../error.js"; +import { ApiError } from "@/server/api/error.js"; export const meta = { tags: ["admin"], diff --git a/packages/backend/src/server/api/endpoints/admin/delete-2fa.ts b/packages/backend/src/server/api/endpoints/admin/delete-2fa.ts index 04f6abb82c..1cf60d9c52 100644 --- a/packages/backend/src/server/api/endpoints/admin/delete-2fa.ts +++ b/packages/backend/src/server/api/endpoints/admin/delete-2fa.ts @@ -1,6 +1,6 @@ import { Users, UserProfiles } from "@/models/index.js"; import { publishMainStream } from "@/services/stream.js"; -import define from "../../define.js"; +import define from "@/server/api/define.js"; export const meta = { tags: ["admin"], diff --git a/packages/backend/src/server/api/endpoints/admin/delete-account.ts b/packages/backend/src/server/api/endpoints/admin/delete-account.ts index 9fd196888d..1b6dc31a2c 100644 --- a/packages/backend/src/server/api/endpoints/admin/delete-account.ts +++ b/packages/backend/src/server/api/endpoints/admin/delete-account.ts @@ -1,6 +1,6 @@ import { Users } from "@/models/index.js"; import { deleteAccount } from "@/services/delete-account.js"; -import define from "../../define.js"; +import define from "@/server/api/define.js"; export const meta = { tags: ["admin"], diff --git a/packages/backend/src/server/api/endpoints/admin/delete-all-files-of-a-user.ts b/packages/backend/src/server/api/endpoints/admin/delete-all-files-of-a-user.ts index 7969008113..b52f609804 100644 --- a/packages/backend/src/server/api/endpoints/admin/delete-all-files-of-a-user.ts +++ b/packages/backend/src/server/api/endpoints/admin/delete-all-files-of-a-user.ts @@ -1,4 +1,4 @@ -import define from "../../define.js"; +import define from "@/server/api/define.js"; import { deleteFile } from "@/services/drive/delete-file.js"; import { DriveFiles } from "@/models/index.js"; diff --git a/packages/backend/src/server/api/endpoints/admin/delete-passkeys.ts b/packages/backend/src/server/api/endpoints/admin/delete-passkeys.ts index 3b5c595281..7a54f5d99f 100644 --- a/packages/backend/src/server/api/endpoints/admin/delete-passkeys.ts +++ b/packages/backend/src/server/api/endpoints/admin/delete-passkeys.ts @@ -1,6 +1,6 @@ import { Users, UserProfiles, UserSecurityKeys } from "@/models/index.js"; import { publishMainStream } from "@/services/stream.js"; -import define from "../../define.js"; +import define from "@/server/api/define.js"; export const meta = { tags: ["admin"], diff --git a/packages/backend/src/server/api/endpoints/admin/drive-capacity-override.ts b/packages/backend/src/server/api/endpoints/admin/drive-capacity-override.ts index c8be344696..d4bb3045c6 100644 --- a/packages/backend/src/server/api/endpoints/admin/drive-capacity-override.ts +++ b/packages/backend/src/server/api/endpoints/admin/drive-capacity-override.ts @@ -1,4 +1,4 @@ -import define from "../../define.js"; +import define from "@/server/api/define.js"; import { Users } from "@/models/index.js"; import { insertModerationLog } from "@/services/insert-moderation-log.js"; import { publishInternalEvent } from "@/services/stream.js"; diff --git a/packages/backend/src/server/api/endpoints/admin/drive/clean-remote-files.ts b/packages/backend/src/server/api/endpoints/admin/drive/clean-remote-files.ts index 1b0c1260bd..84c04793e3 100644 --- a/packages/backend/src/server/api/endpoints/admin/drive/clean-remote-files.ts +++ b/packages/backend/src/server/api/endpoints/admin/drive/clean-remote-files.ts @@ -1,4 +1,4 @@ -import define from "../../../define.js"; +import define from "@/server/api/define.js"; import { createCleanRemoteFilesJob } from "@/queue/index.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/admin/drive/cleanup.ts b/packages/backend/src/server/api/endpoints/admin/drive/cleanup.ts index 04208f6004..e56c027ff2 100644 --- a/packages/backend/src/server/api/endpoints/admin/drive/cleanup.ts +++ b/packages/backend/src/server/api/endpoints/admin/drive/cleanup.ts @@ -1,5 +1,5 @@ import { IsNull } from "typeorm"; -import define from "../../../define.js"; +import define from "@/server/api/define.js"; import { deleteFile } from "@/services/drive/delete-file.js"; import { DriveFiles } from "@/models/index.js"; diff --git a/packages/backend/src/server/api/endpoints/admin/drive/files.ts b/packages/backend/src/server/api/endpoints/admin/drive/files.ts index 5cb0aecd81..e068f1dc9b 100644 --- a/packages/backend/src/server/api/endpoints/admin/drive/files.ts +++ b/packages/backend/src/server/api/endpoints/admin/drive/files.ts @@ -1,6 +1,6 @@ import { DriveFiles } from "@/models/index.js"; -import define from "../../../define.js"; -import { makePaginationQuery } from "../../../common/make-pagination-query.js"; +import define from "@/server/api/define.js"; +import { makePaginationQuery } from "@/server/api/common/make-pagination-query.js"; export const meta = { tags: ["admin"], diff --git a/packages/backend/src/server/api/endpoints/admin/drive/show-file.ts b/packages/backend/src/server/api/endpoints/admin/drive/show-file.ts index d65ec09fc2..a080615e74 100644 --- a/packages/backend/src/server/api/endpoints/admin/drive/show-file.ts +++ b/packages/backend/src/server/api/endpoints/admin/drive/show-file.ts @@ -1,6 +1,6 @@ import { DriveFiles } from "@/models/index.js"; -import define from "../../../define.js"; -import { ApiError } from "../../../error.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; export const meta = { tags: ["admin"], diff --git a/packages/backend/src/server/api/endpoints/admin/emoji/add-aliases-bulk.ts b/packages/backend/src/server/api/endpoints/admin/emoji/add-aliases-bulk.ts index 1ea457adf2..02b3877b87 100644 --- a/packages/backend/src/server/api/endpoints/admin/emoji/add-aliases-bulk.ts +++ b/packages/backend/src/server/api/endpoints/admin/emoji/add-aliases-bulk.ts @@ -1,7 +1,6 @@ -import define from "../../../define.js"; +import define from "@/server/api/define.js"; import { Emojis } from "@/models/index.js"; import { In } from "typeorm"; -import { ApiError } from "../../../error.js"; import { db } from "@/db/postgre.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/admin/emoji/add.ts b/packages/backend/src/server/api/endpoints/admin/emoji/add.ts index 4366406ec3..8d156e6f71 100644 --- a/packages/backend/src/server/api/endpoints/admin/emoji/add.ts +++ b/packages/backend/src/server/api/endpoints/admin/emoji/add.ts @@ -1,8 +1,8 @@ -import define from "../../../define.js"; +import define from "@/server/api/define.js"; import { Emojis, DriveFiles } from "@/models/index.js"; import { genId } from "@/misc/gen-id.js"; import { insertModerationLog } from "@/services/insert-moderation-log.js"; -import { ApiError } from "../../../error.js"; +import { ApiError } from "@/server/api/error.js"; import rndstr from "rndstr"; import { publishBroadcastStream } from "@/services/stream.js"; import { db } from "@/db/postgre.js"; diff --git a/packages/backend/src/server/api/endpoints/admin/emoji/copy.ts b/packages/backend/src/server/api/endpoints/admin/emoji/copy.ts index c90e606335..29b1d82125 100644 --- a/packages/backend/src/server/api/endpoints/admin/emoji/copy.ts +++ b/packages/backend/src/server/api/endpoints/admin/emoji/copy.ts @@ -1,7 +1,7 @@ -import define from "../../../define.js"; +import define from "@/server/api/define.js"; import { Emojis } from "@/models/index.js"; import { genId } from "@/misc/gen-id.js"; -import { ApiError } from "../../../error.js"; +import { ApiError } from "@/server/api/error.js"; import type { DriveFile } from "@/models/entities/drive-file.js"; import { uploadFromUrl } from "@/services/drive/upload-from-url.js"; import { publishBroadcastStream } from "@/services/stream.js"; diff --git a/packages/backend/src/server/api/endpoints/admin/emoji/delete-bulk.ts b/packages/backend/src/server/api/endpoints/admin/emoji/delete-bulk.ts index 585af231f6..a5c4c8bcc5 100644 --- a/packages/backend/src/server/api/endpoints/admin/emoji/delete-bulk.ts +++ b/packages/backend/src/server/api/endpoints/admin/emoji/delete-bulk.ts @@ -1,8 +1,7 @@ -import define from "../../../define.js"; +import define from "@/server/api/define.js"; import { Emojis } from "@/models/index.js"; import { In } from "typeorm"; import { insertModerationLog } from "@/services/insert-moderation-log.js"; -import { ApiError } from "../../../error.js"; import { db } from "@/db/postgre.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/admin/emoji/delete.ts b/packages/backend/src/server/api/endpoints/admin/emoji/delete.ts index 761c7c3776..726f90396b 100644 --- a/packages/backend/src/server/api/endpoints/admin/emoji/delete.ts +++ b/packages/backend/src/server/api/endpoints/admin/emoji/delete.ts @@ -1,7 +1,7 @@ -import define from "../../../define.js"; +import define from "@/server/api/define.js"; import { Emojis } from "@/models/index.js"; import { insertModerationLog } from "@/services/insert-moderation-log.js"; -import { ApiError } from "../../../error.js"; +import { ApiError } from "@/server/api/error.js"; import { db } from "@/db/postgre.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/admin/emoji/import-zip.ts b/packages/backend/src/server/api/endpoints/admin/emoji/import-zip.ts index 9eba9dfd54..4b49e45dd9 100644 --- a/packages/backend/src/server/api/endpoints/admin/emoji/import-zip.ts +++ b/packages/backend/src/server/api/endpoints/admin/emoji/import-zip.ts @@ -1,4 +1,4 @@ -import define from "../../../define.js"; +import define from "@/server/api/define.js"; import { createImportCustomEmojisJob } from "@/queue/index.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/admin/emoji/list-remote.ts b/packages/backend/src/server/api/endpoints/admin/emoji/list-remote.ts index 6252e7e929..c6246c48c7 100644 --- a/packages/backend/src/server/api/endpoints/admin/emoji/list-remote.ts +++ b/packages/backend/src/server/api/endpoints/admin/emoji/list-remote.ts @@ -1,7 +1,7 @@ -import define from "../../../define.js"; +import define from "@/server/api/define.js"; import { Emojis } from "@/models/index.js"; import { toPuny } from "@/misc/convert-host.js"; -import { makePaginationQuery } from "../../../common/make-pagination-query.js"; +import { makePaginationQuery } from "@/server/api/common/make-pagination-query.js"; import { sqlLikeEscape } from "@/misc/sql-like-escape.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/admin/emoji/list.ts b/packages/backend/src/server/api/endpoints/admin/emoji/list.ts index f8269588ca..12de0b1817 100644 --- a/packages/backend/src/server/api/endpoints/admin/emoji/list.ts +++ b/packages/backend/src/server/api/endpoints/admin/emoji/list.ts @@ -1,4 +1,4 @@ -import define from "../../../define.js"; +import define from "@/server/api/define.js"; import { Emojis } from "@/models/index.js"; import { makePaginationQuery } from "../../../common/make-pagination-query.js"; import type { Emoji } from "@/models/entities/emoji.js"; diff --git a/packages/backend/src/server/api/endpoints/admin/emoji/remove-aliases-bulk.ts b/packages/backend/src/server/api/endpoints/admin/emoji/remove-aliases-bulk.ts index 4e57fa3dda..49d31805f0 100644 --- a/packages/backend/src/server/api/endpoints/admin/emoji/remove-aliases-bulk.ts +++ b/packages/backend/src/server/api/endpoints/admin/emoji/remove-aliases-bulk.ts @@ -1,7 +1,6 @@ -import define from "../../../define.js"; +import define from "@/server/api/define.js"; import { Emojis } from "@/models/index.js"; import { In } from "typeorm"; -import { ApiError } from "../../../error.js"; import { db } from "@/db/postgre.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/admin/emoji/set-aliases-bulk.ts b/packages/backend/src/server/api/endpoints/admin/emoji/set-aliases-bulk.ts index 1197f60779..72d7fab804 100644 --- a/packages/backend/src/server/api/endpoints/admin/emoji/set-aliases-bulk.ts +++ b/packages/backend/src/server/api/endpoints/admin/emoji/set-aliases-bulk.ts @@ -1,7 +1,6 @@ -import define from "../../../define.js"; +import define from "@/server/api/define.js"; import { Emojis } from "@/models/index.js"; import { In } from "typeorm"; -import { ApiError } from "../../../error.js"; import { db } from "@/db/postgre.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/admin/emoji/set-category-bulk.ts b/packages/backend/src/server/api/endpoints/admin/emoji/set-category-bulk.ts index 17881a4454..89e68aa4c1 100644 --- a/packages/backend/src/server/api/endpoints/admin/emoji/set-category-bulk.ts +++ b/packages/backend/src/server/api/endpoints/admin/emoji/set-category-bulk.ts @@ -1,7 +1,6 @@ -import define from "../../../define.js"; +import define from "@/server/api/define.js"; import { Emojis } from "@/models/index.js"; import { In } from "typeorm"; -import { ApiError } from "../../../error.js"; import { db } from "@/db/postgre.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/admin/emoji/set-license-bulk.ts b/packages/backend/src/server/api/endpoints/admin/emoji/set-license-bulk.ts index c98ca03fae..e4500e02a2 100644 --- a/packages/backend/src/server/api/endpoints/admin/emoji/set-license-bulk.ts +++ b/packages/backend/src/server/api/endpoints/admin/emoji/set-license-bulk.ts @@ -1,7 +1,6 @@ -import define from "../../../define.js"; +import define from "@/server/api/define.js"; import { Emojis } from "@/models/index.js"; import { In } from "typeorm"; -import { ApiError } from "../../../error.js"; import { db } from "@/db/postgre.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/admin/emoji/update.ts b/packages/backend/src/server/api/endpoints/admin/emoji/update.ts index 9e2e854760..6fedf86204 100644 --- a/packages/backend/src/server/api/endpoints/admin/emoji/update.ts +++ b/packages/backend/src/server/api/endpoints/admin/emoji/update.ts @@ -1,6 +1,6 @@ -import define from "../../../define.js"; +import define from "@/server/api/define.js"; import { Emojis } from "@/models/index.js"; -import { ApiError } from "../../../error.js"; +import { ApiError } from "@/server/api/error.js"; import { db } from "@/db/postgre.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/admin/federation/delete-all-files.ts b/packages/backend/src/server/api/endpoints/admin/federation/delete-all-files.ts index 534f226c28..d1a7fb6957 100644 --- a/packages/backend/src/server/api/endpoints/admin/federation/delete-all-files.ts +++ b/packages/backend/src/server/api/endpoints/admin/federation/delete-all-files.ts @@ -1,4 +1,4 @@ -import define from "../../../define.js"; +import define from "@/server/api/define.js"; import { deleteFile } from "@/services/drive/delete-file.js"; import { DriveFiles } from "@/models/index.js"; diff --git a/packages/backend/src/server/api/endpoints/admin/federation/refresh-remote-instance-metadata.ts b/packages/backend/src/server/api/endpoints/admin/federation/refresh-remote-instance-metadata.ts index 9c7165593c..bf71cd2503 100644 --- a/packages/backend/src/server/api/endpoints/admin/federation/refresh-remote-instance-metadata.ts +++ b/packages/backend/src/server/api/endpoints/admin/federation/refresh-remote-instance-metadata.ts @@ -1,4 +1,4 @@ -import define from "../../../define.js"; +import define from "@/server/api/define.js"; import { Instances } from "@/models/index.js"; import { toPuny } from "@/misc/convert-host.js"; import { fetchInstanceMetadata } from "@/services/fetch-instance-metadata.js"; diff --git a/packages/backend/src/server/api/endpoints/admin/federation/remove-all-following.ts b/packages/backend/src/server/api/endpoints/admin/federation/remove-all-following.ts index a1ccf11af0..a2ce44bd5d 100644 --- a/packages/backend/src/server/api/endpoints/admin/federation/remove-all-following.ts +++ b/packages/backend/src/server/api/endpoints/admin/federation/remove-all-following.ts @@ -1,4 +1,4 @@ -import define from "../../../define.js"; +import define from "@/server/api/define.js"; import deleteFollowing from "@/services/following/delete.js"; import { Followings, Users } from "@/models/index.js"; diff --git a/packages/backend/src/server/api/endpoints/admin/federation/update-instance.ts b/packages/backend/src/server/api/endpoints/admin/federation/update-instance.ts index 016989b541..653d187c2d 100644 --- a/packages/backend/src/server/api/endpoints/admin/federation/update-instance.ts +++ b/packages/backend/src/server/api/endpoints/admin/federation/update-instance.ts @@ -1,4 +1,4 @@ -import define from "../../../define.js"; +import define from "@/server/api/define.js"; import { Instances } from "@/models/index.js"; import { toPuny } from "@/misc/convert-host.js"; diff --git a/packages/backend/src/server/api/endpoints/admin/get-index-stats.ts b/packages/backend/src/server/api/endpoints/admin/get-index-stats.ts index f39a369ecb..98f1f024bc 100644 --- a/packages/backend/src/server/api/endpoints/admin/get-index-stats.ts +++ b/packages/backend/src/server/api/endpoints/admin/get-index-stats.ts @@ -1,4 +1,4 @@ -import define from "../../define.js"; +import define from "@/server/api/define.js"; import { db } from "@/db/postgre.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/admin/get-table-stats.ts b/packages/backend/src/server/api/endpoints/admin/get-table-stats.ts index 25d07f327a..13c893f4b9 100644 --- a/packages/backend/src/server/api/endpoints/admin/get-table-stats.ts +++ b/packages/backend/src/server/api/endpoints/admin/get-table-stats.ts @@ -1,5 +1,5 @@ import { db } from "@/db/postgre.js"; -import define from "../../define.js"; +import define from "@/server/api/define.js"; export const meta = { requireCredential: true, diff --git a/packages/backend/src/server/api/endpoints/admin/get-user-ips.ts b/packages/backend/src/server/api/endpoints/admin/get-user-ips.ts index da76ae624e..1b394ebb85 100644 --- a/packages/backend/src/server/api/endpoints/admin/get-user-ips.ts +++ b/packages/backend/src/server/api/endpoints/admin/get-user-ips.ts @@ -1,5 +1,5 @@ import { UserIps } from "@/models/index.js"; -import define from "../../define.js"; +import define from "@/server/api/define.js"; export const meta = { tags: ["admin"], diff --git a/packages/backend/src/server/api/endpoints/admin/invite.ts b/packages/backend/src/server/api/endpoints/admin/invite.ts index b8bdb38b46..ebc523d418 100644 --- a/packages/backend/src/server/api/endpoints/admin/invite.ts +++ b/packages/backend/src/server/api/endpoints/admin/invite.ts @@ -1,5 +1,5 @@ import rndstr from "rndstr"; -import define from "../../define.js"; +import define from "@/server/api/define.js"; import { RegistrationTickets } from "@/models/index.js"; import { genId } from "@/misc/gen-id.js"; diff --git a/packages/backend/src/server/api/endpoints/admin/meta.ts b/packages/backend/src/server/api/endpoints/admin/meta.ts index 2a0a7cfbb8..37625a0c6f 100644 --- a/packages/backend/src/server/api/endpoints/admin/meta.ts +++ b/packages/backend/src/server/api/endpoints/admin/meta.ts @@ -1,8 +1,7 @@ import config from "@/config/index.js"; import { fetchMeta } from "@/misc/fetch-meta.js"; import { MAX_NOTE_TEXT_LENGTH, MAX_CAPTION_TEXT_LENGTH } from "@/const.js"; -import define from "../../define.js"; -import { Exp } from "@tensorflow/tfjs"; +import define from "@/server/api/define.js"; export const meta = { tags: ["meta"], diff --git a/packages/backend/src/server/api/endpoints/admin/moderators/add.ts b/packages/backend/src/server/api/endpoints/admin/moderators/add.ts index 478f2661b6..c8b53088cd 100644 --- a/packages/backend/src/server/api/endpoints/admin/moderators/add.ts +++ b/packages/backend/src/server/api/endpoints/admin/moderators/add.ts @@ -1,4 +1,4 @@ -import define from "../../../define.js"; +import define from "@/server/api/define.js"; import { Users } from "@/models/index.js"; import { publishInternalEvent } from "@/services/stream.js"; diff --git a/packages/backend/src/server/api/endpoints/admin/moderators/remove.ts b/packages/backend/src/server/api/endpoints/admin/moderators/remove.ts index a43cc0cbe1..e2af1ca374 100644 --- a/packages/backend/src/server/api/endpoints/admin/moderators/remove.ts +++ b/packages/backend/src/server/api/endpoints/admin/moderators/remove.ts @@ -1,4 +1,4 @@ -import define from "../../../define.js"; +import define from "@/server/api/define.js"; import { Users } from "@/models/index.js"; import { publishInternalEvent } from "@/services/stream.js"; diff --git a/packages/backend/src/server/api/endpoints/admin/promo/create.ts b/packages/backend/src/server/api/endpoints/admin/promo/create.ts index 00244a777a..55038fc89b 100644 --- a/packages/backend/src/server/api/endpoints/admin/promo/create.ts +++ b/packages/backend/src/server/api/endpoints/admin/promo/create.ts @@ -1,6 +1,6 @@ -import define from "../../../define.js"; -import { ApiError } from "../../../error.js"; -import { getNote } from "../../../common/getters.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; +import { getNote } from "@/server/api/common/getters.js"; import { PromoNotes } from "@/models/index.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/admin/queue/clear.ts b/packages/backend/src/server/api/endpoints/admin/queue/clear.ts index 9b828bb241..9895f34b40 100644 --- a/packages/backend/src/server/api/endpoints/admin/queue/clear.ts +++ b/packages/backend/src/server/api/endpoints/admin/queue/clear.ts @@ -1,4 +1,4 @@ -import define from "../../../define.js"; +import define from "@/server/api/define.js"; import { destroy } from "@/queue/index.js"; import { insertModerationLog } from "@/services/insert-moderation-log.js"; diff --git a/packages/backend/src/server/api/endpoints/admin/queue/deliver-delayed.ts b/packages/backend/src/server/api/endpoints/admin/queue/deliver-delayed.ts index 15fdfb0250..ea8c505695 100644 --- a/packages/backend/src/server/api/endpoints/admin/queue/deliver-delayed.ts +++ b/packages/backend/src/server/api/endpoints/admin/queue/deliver-delayed.ts @@ -1,6 +1,6 @@ import { deliverQueue } from "@/queue/queues.js"; import { URL } from "node:url"; -import define from "../../../define.js"; +import define from "@/server/api/define.js"; export const meta = { tags: ["admin"], diff --git a/packages/backend/src/server/api/endpoints/admin/queue/inbox-delayed.ts b/packages/backend/src/server/api/endpoints/admin/queue/inbox-delayed.ts index 1890bd4345..d4f44e3072 100644 --- a/packages/backend/src/server/api/endpoints/admin/queue/inbox-delayed.ts +++ b/packages/backend/src/server/api/endpoints/admin/queue/inbox-delayed.ts @@ -1,5 +1,5 @@ import { URL } from "node:url"; -import define from "../../../define.js"; +import define from "@/server/api/define.js"; import { inboxQueue } from "@/queue/queues.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/admin/queue/stats.ts b/packages/backend/src/server/api/endpoints/admin/queue/stats.ts index 4a437c3d12..f51c1e6d46 100644 --- a/packages/backend/src/server/api/endpoints/admin/queue/stats.ts +++ b/packages/backend/src/server/api/endpoints/admin/queue/stats.ts @@ -5,7 +5,7 @@ import { objectStorageQueue, backgroundQueue, } from "@/queue/queues.js"; -import define from "../../../define.js"; +import define from "@/server/api/define.js"; export const meta = { tags: ["admin"], diff --git a/packages/backend/src/server/api/endpoints/admin/relays/add.ts b/packages/backend/src/server/api/endpoints/admin/relays/add.ts index bb56216a74..ac0084860c 100644 --- a/packages/backend/src/server/api/endpoints/admin/relays/add.ts +++ b/packages/backend/src/server/api/endpoints/admin/relays/add.ts @@ -1,7 +1,7 @@ import { URL } from "node:url"; -import define from "../../../define.js"; +import define from "@/server/api/define.js"; import { addRelay } from "@/services/relay.js"; -import { ApiError } from "../../../error.js"; +import { ApiError } from "@/server/api/error.js"; export const meta = { tags: ["admin"], diff --git a/packages/backend/src/server/api/endpoints/admin/relays/list.ts b/packages/backend/src/server/api/endpoints/admin/relays/list.ts index 4c294ba9b2..5c3b7a9225 100644 --- a/packages/backend/src/server/api/endpoints/admin/relays/list.ts +++ b/packages/backend/src/server/api/endpoints/admin/relays/list.ts @@ -1,4 +1,4 @@ -import define from "../../../define.js"; +import define from "@/server/api/define.js"; import { listRelay } from "@/services/relay.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/admin/relays/remove.ts b/packages/backend/src/server/api/endpoints/admin/relays/remove.ts index 1b3d90628b..19a9dfa393 100644 --- a/packages/backend/src/server/api/endpoints/admin/relays/remove.ts +++ b/packages/backend/src/server/api/endpoints/admin/relays/remove.ts @@ -1,4 +1,4 @@ -import define from "../../../define.js"; +import define from "@/server/api/define.js"; import { removeRelay } from "@/services/relay.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/admin/reset-password.ts b/packages/backend/src/server/api/endpoints/admin/reset-password.ts index cbe6735ce5..5fbed130e6 100644 --- a/packages/backend/src/server/api/endpoints/admin/reset-password.ts +++ b/packages/backend/src/server/api/endpoints/admin/reset-password.ts @@ -1,4 +1,4 @@ -import define from "../../define.js"; +import define from "@/server/api/define.js"; // import bcrypt from "bcryptjs"; import rndstr from "rndstr"; import { Users, UserProfiles } from "@/models/index.js"; diff --git a/packages/backend/src/server/api/endpoints/admin/resolve-abuse-user-report.ts b/packages/backend/src/server/api/endpoints/admin/resolve-abuse-user-report.ts index c876a21984..a94687cf40 100644 --- a/packages/backend/src/server/api/endpoints/admin/resolve-abuse-user-report.ts +++ b/packages/backend/src/server/api/endpoints/admin/resolve-abuse-user-report.ts @@ -1,4 +1,4 @@ -import define from "../../define.js"; +import define from "@/server/api/define.js"; import { AbuseUserReports, Users } from "@/models/index.js"; import { getInstanceActor } from "@/services/instance-actor.js"; import { deliver } from "@/queue/index.js"; diff --git a/packages/backend/src/server/api/endpoints/admin/search/index-all.ts b/packages/backend/src/server/api/endpoints/admin/search/index-all.ts index 135b48eccd..531428849b 100644 --- a/packages/backend/src/server/api/endpoints/admin/search/index-all.ts +++ b/packages/backend/src/server/api/endpoints/admin/search/index-all.ts @@ -1,4 +1,4 @@ -import define from "../../../define.js"; +import define from "@/server/api/define.js"; import { createIndexAllNotesJob } from "@/queue/index.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/admin/send-email.ts b/packages/backend/src/server/api/endpoints/admin/send-email.ts index 1676f68907..1b43d90c8b 100644 --- a/packages/backend/src/server/api/endpoints/admin/send-email.ts +++ b/packages/backend/src/server/api/endpoints/admin/send-email.ts @@ -1,4 +1,4 @@ -import define from "../../define.js"; +import define from "@/server/api/define.js"; import { sendEmail } from "@/services/send-email.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/admin/send-mod-mail.ts b/packages/backend/src/server/api/endpoints/admin/send-mod-mail.ts index a36dca2f73..5dcbaf2e8d 100644 --- a/packages/backend/src/server/api/endpoints/admin/send-mod-mail.ts +++ b/packages/backend/src/server/api/endpoints/admin/send-mod-mail.ts @@ -1,7 +1,7 @@ import sanitizeHtml from "sanitize-html"; -import define from "../../define.js"; +import define from "@/server/api/define.js"; import { Users, UserProfiles } from "@/models/index.js"; -import { ApiError } from "../../error.js"; +import { ApiError } from "@/server/api/error.js"; import { sendEmail } from "@/services/send-email.js"; import { createNotification } from "@/services/create-notification.js"; diff --git a/packages/backend/src/server/api/endpoints/admin/server-info.ts b/packages/backend/src/server/api/endpoints/admin/server-info.ts index 8998032cc9..ff46919694 100644 --- a/packages/backend/src/server/api/endpoints/admin/server-info.ts +++ b/packages/backend/src/server/api/endpoints/admin/server-info.ts @@ -1,7 +1,7 @@ import * as os from "node:os"; import si from "systeminformation"; -import define from "../../define.js"; -import { redisClient } from "../../../../db/redis.js"; +import define from "@/server/api/define.js"; +import { redisClient } from "@/db/redis.js"; import { db } from "@/db/postgre.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/admin/show-moderation-logs.ts b/packages/backend/src/server/api/endpoints/admin/show-moderation-logs.ts index df7e8979ca..adceda4162 100644 --- a/packages/backend/src/server/api/endpoints/admin/show-moderation-logs.ts +++ b/packages/backend/src/server/api/endpoints/admin/show-moderation-logs.ts @@ -1,6 +1,6 @@ -import define from "../../define.js"; +import define from "@/server/api/define.js"; import { ModerationLogs } from "@/models/index.js"; -import { makePaginationQuery } from "../../common/make-pagination-query.js"; +import { makePaginationQuery } from "@/server/api/common/make-pagination-query.js"; export const meta = { tags: ["admin"], diff --git a/packages/backend/src/server/api/endpoints/admin/show-user.ts b/packages/backend/src/server/api/endpoints/admin/show-user.ts index cbc86a5c17..f3a74c313b 100644 --- a/packages/backend/src/server/api/endpoints/admin/show-user.ts +++ b/packages/backend/src/server/api/endpoints/admin/show-user.ts @@ -1,5 +1,5 @@ import { Signins, UserProfiles, Users } from "@/models/index.js"; -import define from "../../define.js"; +import define from "@/server/api/define.js"; export const meta = { tags: ["admin"], diff --git a/packages/backend/src/server/api/endpoints/admin/show-users.ts b/packages/backend/src/server/api/endpoints/admin/show-users.ts index b777bd26d9..1e6ebeda93 100644 --- a/packages/backend/src/server/api/endpoints/admin/show-users.ts +++ b/packages/backend/src/server/api/endpoints/admin/show-users.ts @@ -1,5 +1,5 @@ import { Users } from "@/models/index.js"; -import define from "../../define.js"; +import define from "@/server/api/define.js"; import { sqlLikeEscape } from "@/misc/sql-like-escape.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/admin/silence-user.ts b/packages/backend/src/server/api/endpoints/admin/silence-user.ts index a61823297b..8d9dcac681 100644 --- a/packages/backend/src/server/api/endpoints/admin/silence-user.ts +++ b/packages/backend/src/server/api/endpoints/admin/silence-user.ts @@ -1,4 +1,4 @@ -import define from "../../define.js"; +import define from "@/server/api/define.js"; import { Users } from "@/models/index.js"; import { insertModerationLog } from "@/services/insert-moderation-log.js"; import { publishInternalEvent } from "@/services/stream.js"; diff --git a/packages/backend/src/server/api/endpoints/admin/suspend-user.ts b/packages/backend/src/server/api/endpoints/admin/suspend-user.ts index 984bc0789e..c6d6f47bc6 100644 --- a/packages/backend/src/server/api/endpoints/admin/suspend-user.ts +++ b/packages/backend/src/server/api/endpoints/admin/suspend-user.ts @@ -1,4 +1,4 @@ -import define from "../../define.js"; +import define from "@/server/api/define.js"; import deleteFollowing from "@/services/following/delete.js"; import { Users, Followings, Notifications } from "@/models/index.js"; import type { User } from "@/models/entities/user.js"; diff --git a/packages/backend/src/server/api/endpoints/admin/unsilence-user.ts b/packages/backend/src/server/api/endpoints/admin/unsilence-user.ts index 6a01b8e8d3..6592bf443c 100644 --- a/packages/backend/src/server/api/endpoints/admin/unsilence-user.ts +++ b/packages/backend/src/server/api/endpoints/admin/unsilence-user.ts @@ -1,4 +1,4 @@ -import define from "../../define.js"; +import define from "@/server/api/define.js"; import { Users } from "@/models/index.js"; import { insertModerationLog } from "@/services/insert-moderation-log.js"; import { publishInternalEvent } from "@/services/stream.js"; diff --git a/packages/backend/src/server/api/endpoints/admin/unsuspend-user.ts b/packages/backend/src/server/api/endpoints/admin/unsuspend-user.ts index e51d5851c2..3289fb570c 100644 --- a/packages/backend/src/server/api/endpoints/admin/unsuspend-user.ts +++ b/packages/backend/src/server/api/endpoints/admin/unsuspend-user.ts @@ -1,4 +1,4 @@ -import define from "../../define.js"; +import define from "@/server/api/define.js"; import { Users } from "@/models/index.js"; import { insertModerationLog } from "@/services/insert-moderation-log.js"; import { doPostUnsuspend } from "@/services/unsuspend-user.js"; diff --git a/packages/backend/src/server/api/endpoints/admin/update-meta.ts b/packages/backend/src/server/api/endpoints/admin/update-meta.ts index 00a472ed3f..70b3d2709e 100644 --- a/packages/backend/src/server/api/endpoints/admin/update-meta.ts +++ b/packages/backend/src/server/api/endpoints/admin/update-meta.ts @@ -1,7 +1,7 @@ import { Meta } from "@/models/entities/meta.js"; import { insertModerationLog } from "@/services/insert-moderation-log.js"; import { db } from "@/db/postgre.js"; -import define from "../../define.js"; +import define from "@/server/api/define.js"; export const meta = { tags: ["admin"], diff --git a/packages/backend/src/server/api/endpoints/admin/update-user-note.ts b/packages/backend/src/server/api/endpoints/admin/update-user-note.ts index 04870d1c1c..d1a4a60439 100644 --- a/packages/backend/src/server/api/endpoints/admin/update-user-note.ts +++ b/packages/backend/src/server/api/endpoints/admin/update-user-note.ts @@ -1,5 +1,5 @@ import { UserProfiles, Users } from "@/models/index.js"; -import define from "../../define.js"; +import define from "@/server/api/define.js"; export const meta = { tags: ["admin"], diff --git a/packages/backend/src/server/api/endpoints/admin/vacuum.ts b/packages/backend/src/server/api/endpoints/admin/vacuum.ts index 559b310e46..d5b086bb4b 100644 --- a/packages/backend/src/server/api/endpoints/admin/vacuum.ts +++ b/packages/backend/src/server/api/endpoints/admin/vacuum.ts @@ -1,4 +1,4 @@ -import define from "../../define.js"; +import define from "@/server/api/define.js"; import { insertModerationLog } from "@/services/insert-moderation-log.js"; import { db } from "@/db/postgre.js"; diff --git a/packages/backend/src/server/api/endpoints/announcements.ts b/packages/backend/src/server/api/endpoints/announcements.ts index 1bab61ba2c..504eb30e23 100644 --- a/packages/backend/src/server/api/endpoints/announcements.ts +++ b/packages/backend/src/server/api/endpoints/announcements.ts @@ -1,6 +1,6 @@ import { Announcements, AnnouncementReads } from "@/models/index.js"; -import define from "../define.js"; -import { makePaginationQuery } from "../common/make-pagination-query.js"; +import define from "@/server/api/define.js"; +import { makePaginationQuery } from "@/server/api/common/make-pagination-query.js"; export const meta = { tags: ["meta"], diff --git a/packages/backend/src/server/api/endpoints/antennas/create.ts b/packages/backend/src/server/api/endpoints/antennas/create.ts index ed16450120..46df3aa813 100644 --- a/packages/backend/src/server/api/endpoints/antennas/create.ts +++ b/packages/backend/src/server/api/endpoints/antennas/create.ts @@ -1,7 +1,7 @@ -import define from "../../define.js"; +import define from "@/server/api/define.js"; import { genId } from "@/misc/gen-id.js"; import { Antennas, UserLists, UserGroupJoinings } from "@/models/index.js"; -import { ApiError } from "../../error.js"; +import { ApiError } from "@/server/api/error.js"; import { publishInternalEvent } from "@/services/stream.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/antennas/delete.ts b/packages/backend/src/server/api/endpoints/antennas/delete.ts index a6cf79011a..e5a372f193 100644 --- a/packages/backend/src/server/api/endpoints/antennas/delete.ts +++ b/packages/backend/src/server/api/endpoints/antennas/delete.ts @@ -1,5 +1,5 @@ -import define from "../../define.js"; -import { ApiError } from "../../error.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; import { Antennas } from "@/models/index.js"; import { publishInternalEvent } from "@/services/stream.js"; diff --git a/packages/backend/src/server/api/endpoints/antennas/list.ts b/packages/backend/src/server/api/endpoints/antennas/list.ts index 929b761d4f..2726ecc8f7 100644 --- a/packages/backend/src/server/api/endpoints/antennas/list.ts +++ b/packages/backend/src/server/api/endpoints/antennas/list.ts @@ -1,4 +1,4 @@ -import define from "../../define.js"; +import define from "@/server/api/define.js"; import { Antennas } from "@/models/index.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/antennas/markread.ts b/packages/backend/src/server/api/endpoints/antennas/markread.ts index db8e683e49..bb5b5b77fe 100644 --- a/packages/backend/src/server/api/endpoints/antennas/markread.ts +++ b/packages/backend/src/server/api/endpoints/antennas/markread.ts @@ -1,6 +1,5 @@ -import define from "../../define.js"; +import define from "@/server/api/define.js"; import { Antennas } from "@/models/index.js"; -import { FindOptionsWhere } from "typeorm"; export const meta = { tags: ["antennas", "account"], diff --git a/packages/backend/src/server/api/endpoints/antennas/notes.ts b/packages/backend/src/server/api/endpoints/antennas/notes.ts index 149f98ea9b..1512cb9281 100644 --- a/packages/backend/src/server/api/endpoints/antennas/notes.ts +++ b/packages/backend/src/server/api/endpoints/antennas/notes.ts @@ -1,13 +1,13 @@ -import define from "../../define.js"; +import define from "@/server/api/define.js"; import readNote from "@/services/note/read.js"; import { Antennas, Notes } from "@/models/index.js"; import { redisClient } from "@/db/redis.js"; -import { genId, getTimestamp } from "@/misc/gen-id.js"; -import { makePaginationQuery } from "../../common/make-pagination-query.js"; -import { generateVisibilityQuery } from "../../common/generate-visibility-query.js"; -import { generateMutedUserQuery } from "../../common/generate-muted-user-query.js"; -import { ApiError } from "../../error.js"; -import { generateBlockedUserQuery } from "../../common/generate-block-query.js"; +import { getTimestamp } from "@/misc/gen-id.js"; +import { makePaginationQuery } from "@/server/api/common/make-pagination-query.js"; +import { generateVisibilityQuery } from "@/server/api/common/generate-visibility-query.js"; +import { generateMutedUserQuery } from "@/server/api/common/generate-muted-user-query.js"; +import { ApiError } from "@/server/api/error.js"; +import { generateBlockedUserQuery } from "@/server/api/common/generate-block-query.js"; export const meta = { tags: ["antennas", "account", "notes"], diff --git a/packages/backend/src/server/api/endpoints/antennas/show.ts b/packages/backend/src/server/api/endpoints/antennas/show.ts index 350d739216..3700052f5a 100644 --- a/packages/backend/src/server/api/endpoints/antennas/show.ts +++ b/packages/backend/src/server/api/endpoints/antennas/show.ts @@ -1,5 +1,5 @@ -import define from "../../define.js"; -import { ApiError } from "../../error.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; import { Antennas } from "@/models/index.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/antennas/update.ts b/packages/backend/src/server/api/endpoints/antennas/update.ts index f491c0b638..9a71a8f9ff 100644 --- a/packages/backend/src/server/api/endpoints/antennas/update.ts +++ b/packages/backend/src/server/api/endpoints/antennas/update.ts @@ -1,5 +1,5 @@ -import define from "../../define.js"; -import { ApiError } from "../../error.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; import { Antennas, UserLists, UserGroupJoinings } from "@/models/index.js"; import { publishInternalEvent } from "@/services/stream.js"; diff --git a/packages/backend/src/server/api/endpoints/ap/get.ts b/packages/backend/src/server/api/endpoints/ap/get.ts index f0db67a343..5159ce3b4a 100644 --- a/packages/backend/src/server/api/endpoints/ap/get.ts +++ b/packages/backend/src/server/api/endpoints/ap/get.ts @@ -1,4 +1,4 @@ -import define from "../../define.js"; +import define from "@/server/api/define.js"; import Resolver from "@/remote/activitypub/resolver.js"; import { HOUR } from "@/const.js"; diff --git a/packages/backend/src/server/api/endpoints/ap/show.ts b/packages/backend/src/server/api/endpoints/ap/show.ts index c25f0a8018..50eb7e9c6c 100644 --- a/packages/backend/src/server/api/endpoints/ap/show.ts +++ b/packages/backend/src/server/api/endpoints/ap/show.ts @@ -1,9 +1,9 @@ -import define from "../../define.js"; +import define from "@/server/api/define.js"; import { createPerson } from "@/remote/activitypub/models/person.js"; import { createNote } from "@/remote/activitypub/models/note.js"; import DbResolver from "@/remote/activitypub/db-resolver.js"; import Resolver from "@/remote/activitypub/resolver.js"; -import { ApiError } from "../../error.js"; +import { ApiError } from "@/server/api/error.js"; import { extractDbHost } from "@/misc/convert-host.js"; import { Users, Notes } from "@/models/index.js"; import type { Note } from "@/models/entities/note.js"; diff --git a/packages/backend/src/server/api/endpoints/app/create.ts b/packages/backend/src/server/api/endpoints/app/create.ts index 013c5a10b9..e32edf1293 100644 --- a/packages/backend/src/server/api/endpoints/app/create.ts +++ b/packages/backend/src/server/api/endpoints/app/create.ts @@ -1,4 +1,4 @@ -import define from "../../define.js"; +import define from "@/server/api/define.js"; import { Apps } from "@/models/index.js"; import { genId } from "@/misc/gen-id.js"; import { unique } from "@/prelude/array.js"; diff --git a/packages/backend/src/server/api/endpoints/app/show.ts b/packages/backend/src/server/api/endpoints/app/show.ts index 60949512e0..d6f38428c1 100644 --- a/packages/backend/src/server/api/endpoints/app/show.ts +++ b/packages/backend/src/server/api/endpoints/app/show.ts @@ -1,5 +1,5 @@ -import define from "../../define.js"; -import { ApiError } from "../../error.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; import { Apps } from "@/models/index.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/auth/accept.ts b/packages/backend/src/server/api/endpoints/auth/accept.ts index 8e6ad6527a..088de7863b 100644 --- a/packages/backend/src/server/api/endpoints/auth/accept.ts +++ b/packages/backend/src/server/api/endpoints/auth/accept.ts @@ -1,6 +1,6 @@ import * as crypto from "node:crypto"; -import define from "../../define.js"; -import { ApiError } from "../../error.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; import { AuthSessions, AccessTokens, Apps } from "@/models/index.js"; import { genId } from "@/misc/gen-id.js"; import { secureRndstr } from "@/misc/secure-rndstr.js"; diff --git a/packages/backend/src/server/api/endpoints/auth/session/generate.ts b/packages/backend/src/server/api/endpoints/auth/session/generate.ts index 1defb94006..bd17211044 100644 --- a/packages/backend/src/server/api/endpoints/auth/session/generate.ts +++ b/packages/backend/src/server/api/endpoints/auth/session/generate.ts @@ -1,7 +1,7 @@ import { v4 as uuid } from "uuid"; import config from "@/config/index.js"; -import define from "../../../define.js"; -import { ApiError } from "../../../error.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; import { Apps, AuthSessions } from "@/models/index.js"; import { genId } from "@/misc/gen-id.js"; diff --git a/packages/backend/src/server/api/endpoints/auth/session/show.ts b/packages/backend/src/server/api/endpoints/auth/session/show.ts index 01a5fe5dc7..70c6d54cd2 100644 --- a/packages/backend/src/server/api/endpoints/auth/session/show.ts +++ b/packages/backend/src/server/api/endpoints/auth/session/show.ts @@ -1,5 +1,5 @@ -import define from "../../../define.js"; -import { ApiError } from "../../../error.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; import { AuthSessions } from "@/models/index.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/auth/session/userkey.ts b/packages/backend/src/server/api/endpoints/auth/session/userkey.ts index 0e97bf414e..394681516b 100644 --- a/packages/backend/src/server/api/endpoints/auth/session/userkey.ts +++ b/packages/backend/src/server/api/endpoints/auth/session/userkey.ts @@ -1,5 +1,5 @@ -import define from "../../../define.js"; -import { ApiError } from "../../../error.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; import { Apps, AuthSessions, AccessTokens, Users } from "@/models/index.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/blocking/create.ts b/packages/backend/src/server/api/endpoints/blocking/create.ts index f00a2923d5..50154dd6cc 100644 --- a/packages/backend/src/server/api/endpoints/blocking/create.ts +++ b/packages/backend/src/server/api/endpoints/blocking/create.ts @@ -1,7 +1,7 @@ import create from "@/services/blocking/create.js"; -import define from "../../define.js"; -import { ApiError } from "../../error.js"; -import { getUser } from "../../common/getters.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; +import { getUser } from "@/server/api/common/getters.js"; import { Blockings, NoteWatchings, Users } from "@/models/index.js"; import { HOUR } from "@/const.js"; diff --git a/packages/backend/src/server/api/endpoints/blocking/delete.ts b/packages/backend/src/server/api/endpoints/blocking/delete.ts index 037d5af22c..addf4bbd19 100644 --- a/packages/backend/src/server/api/endpoints/blocking/delete.ts +++ b/packages/backend/src/server/api/endpoints/blocking/delete.ts @@ -1,7 +1,7 @@ import deleteBlocking from "@/services/blocking/delete.js"; -import define from "../../define.js"; -import { ApiError } from "../../error.js"; -import { getUser } from "../../common/getters.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; +import { getUser } from "@/server/api/common/getters.js"; import { Blockings, Users } from "@/models/index.js"; import { HOUR } from "@/const.js"; diff --git a/packages/backend/src/server/api/endpoints/blocking/list.ts b/packages/backend/src/server/api/endpoints/blocking/list.ts index 83fca7b42c..6f51a6458d 100644 --- a/packages/backend/src/server/api/endpoints/blocking/list.ts +++ b/packages/backend/src/server/api/endpoints/blocking/list.ts @@ -1,6 +1,6 @@ -import define from "../../define.js"; +import define from "@/server/api/define.js"; import { Blockings } from "@/models/index.js"; -import { makePaginationQuery } from "../../common/make-pagination-query.js"; +import { makePaginationQuery } from "@/server/api/common/make-pagination-query.js"; export const meta = { tags: ["account"], diff --git a/packages/backend/src/server/api/endpoints/channels/create.ts b/packages/backend/src/server/api/endpoints/channels/create.ts index 26a3448b2b..177492ed29 100644 --- a/packages/backend/src/server/api/endpoints/channels/create.ts +++ b/packages/backend/src/server/api/endpoints/channels/create.ts @@ -1,5 +1,5 @@ -import define from "../../define.js"; -import { ApiError } from "../../error.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; import { Channels, DriveFiles } from "@/models/index.js"; import type { Channel } from "@/models/entities/channel.js"; import { genId } from "@/misc/gen-id.js"; diff --git a/packages/backend/src/server/api/endpoints/channels/featured.ts b/packages/backend/src/server/api/endpoints/channels/featured.ts index 06e0e850fd..e0575af262 100644 --- a/packages/backend/src/server/api/endpoints/channels/featured.ts +++ b/packages/backend/src/server/api/endpoints/channels/featured.ts @@ -1,4 +1,4 @@ -import define from "../../define.js"; +import define from "@/server/api/define.js"; import { Channels } from "@/models/index.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/channels/follow.ts b/packages/backend/src/server/api/endpoints/channels/follow.ts index de0554383e..878339827a 100644 --- a/packages/backend/src/server/api/endpoints/channels/follow.ts +++ b/packages/backend/src/server/api/endpoints/channels/follow.ts @@ -1,5 +1,5 @@ -import define from "../../define.js"; -import { ApiError } from "../../error.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; import { Channels, ChannelFollowings } from "@/models/index.js"; import { genId } from "@/misc/gen-id.js"; import { publishUserEvent } from "@/services/stream.js"; diff --git a/packages/backend/src/server/api/endpoints/channels/followed.ts b/packages/backend/src/server/api/endpoints/channels/followed.ts index 993a211f7e..94374f6be0 100644 --- a/packages/backend/src/server/api/endpoints/channels/followed.ts +++ b/packages/backend/src/server/api/endpoints/channels/followed.ts @@ -1,4 +1,4 @@ -import define from "../../define.js"; +import define from "@/server/api/define.js"; import { Channels, ChannelFollowings } from "@/models/index.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/channels/owned.ts b/packages/backend/src/server/api/endpoints/channels/owned.ts index 78d9e80ccf..23607b024c 100644 --- a/packages/backend/src/server/api/endpoints/channels/owned.ts +++ b/packages/backend/src/server/api/endpoints/channels/owned.ts @@ -1,6 +1,6 @@ -import define from "../../define.js"; +import define from "@/server/api/define.js"; import { Channels } from "@/models/index.js"; -import { makePaginationQuery } from "../../common/make-pagination-query.js"; +import { makePaginationQuery } from "@/server/api/common/make-pagination-query.js"; export const meta = { tags: ["channels", "account"], diff --git a/packages/backend/src/server/api/endpoints/channels/search.ts b/packages/backend/src/server/api/endpoints/channels/search.ts index b21fa76206..b2fab701c5 100644 --- a/packages/backend/src/server/api/endpoints/channels/search.ts +++ b/packages/backend/src/server/api/endpoints/channels/search.ts @@ -1,9 +1,7 @@ -import define from "../../define.js"; +import define from "@/server/api/define.js"; import { Brackets } from "typeorm"; -import { Endpoint } from "@/server/api/endpoint-base.js"; import { makePaginationQuery } from "@/server/api/common/make-pagination-query.js"; import { Channels } from "@/models/index.js"; -import { DI } from "@/di-symbols.js"; import { sqlLikeEscape } from "@/misc/sql-like-escape.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/channels/show.ts b/packages/backend/src/server/api/endpoints/channels/show.ts index e4ca756634..c5c1b65773 100644 --- a/packages/backend/src/server/api/endpoints/channels/show.ts +++ b/packages/backend/src/server/api/endpoints/channels/show.ts @@ -1,5 +1,5 @@ -import define from "../../define.js"; -import { ApiError } from "../../error.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; import { Channels } from "@/models/index.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/channels/timeline.ts b/packages/backend/src/server/api/endpoints/channels/timeline.ts index b5d5325234..f061acab02 100644 --- a/packages/backend/src/server/api/endpoints/channels/timeline.ts +++ b/packages/backend/src/server/api/endpoints/channels/timeline.ts @@ -1,7 +1,7 @@ -import define from "../../define.js"; -import { ApiError } from "../../error.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; import { Notes, Channels } from "@/models/index.js"; -import { makePaginationQuery } from "../../common/make-pagination-query.js"; +import { makePaginationQuery } from "@/server/api/common/make-pagination-query.js"; import { activeUsersChart } from "@/services/chart/index.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/channels/unfollow.ts b/packages/backend/src/server/api/endpoints/channels/unfollow.ts index 654a4fbba5..3371000394 100644 --- a/packages/backend/src/server/api/endpoints/channels/unfollow.ts +++ b/packages/backend/src/server/api/endpoints/channels/unfollow.ts @@ -1,5 +1,5 @@ -import define from "../../define.js"; -import { ApiError } from "../../error.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; import { Channels, ChannelFollowings } from "@/models/index.js"; import { publishUserEvent } from "@/services/stream.js"; diff --git a/packages/backend/src/server/api/endpoints/channels/update.ts b/packages/backend/src/server/api/endpoints/channels/update.ts index d9f6f7644c..0de7a837a1 100644 --- a/packages/backend/src/server/api/endpoints/channels/update.ts +++ b/packages/backend/src/server/api/endpoints/channels/update.ts @@ -1,5 +1,5 @@ -import define from "../../define.js"; -import { ApiError } from "../../error.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; import { Channels, DriveFiles } from "@/models/index.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/charts/active-users.ts b/packages/backend/src/server/api/endpoints/charts/active-users.ts index 3817a32ca9..d5c3c4eb83 100644 --- a/packages/backend/src/server/api/endpoints/charts/active-users.ts +++ b/packages/backend/src/server/api/endpoints/charts/active-users.ts @@ -1,6 +1,6 @@ import { getJsonSchema } from "@/services/chart/core.js"; import { activeUsersChart } from "@/services/chart/index.js"; -import define from "../../define.js"; +import define from "@/server/api/define.js"; export const meta = { tags: ["charts", "users"], diff --git a/packages/backend/src/server/api/endpoints/charts/ap-request.ts b/packages/backend/src/server/api/endpoints/charts/ap-request.ts index 9e9013ce53..bbf72030a4 100644 --- a/packages/backend/src/server/api/endpoints/charts/ap-request.ts +++ b/packages/backend/src/server/api/endpoints/charts/ap-request.ts @@ -1,6 +1,6 @@ import { getJsonSchema } from "@/services/chart/core.js"; import { apRequestChart } from "@/services/chart/index.js"; -import define from "../../define.js"; +import define from "@/server/api/define.js"; export const meta = { tags: ["charts"], diff --git a/packages/backend/src/server/api/endpoints/charts/drive.ts b/packages/backend/src/server/api/endpoints/charts/drive.ts index 03ac4c0473..0a5354743c 100644 --- a/packages/backend/src/server/api/endpoints/charts/drive.ts +++ b/packages/backend/src/server/api/endpoints/charts/drive.ts @@ -1,6 +1,6 @@ import { getJsonSchema } from "@/services/chart/core.js"; import { driveChart } from "@/services/chart/index.js"; -import define from "../../define.js"; +import define from "@/server/api/define.js"; export const meta = { tags: ["charts", "drive"], diff --git a/packages/backend/src/server/api/endpoints/charts/federation.ts b/packages/backend/src/server/api/endpoints/charts/federation.ts index 5862aad56e..f9c75d5ecb 100644 --- a/packages/backend/src/server/api/endpoints/charts/federation.ts +++ b/packages/backend/src/server/api/endpoints/charts/federation.ts @@ -1,6 +1,6 @@ import { getJsonSchema } from "@/services/chart/core.js"; import { federationChart } from "@/services/chart/index.js"; -import define from "../../define.js"; +import define from "@/server/api/define.js"; export const meta = { tags: ["charts"], diff --git a/packages/backend/src/server/api/endpoints/charts/hashtag.ts b/packages/backend/src/server/api/endpoints/charts/hashtag.ts index 0af1e35ea9..bbd1b70b07 100644 --- a/packages/backend/src/server/api/endpoints/charts/hashtag.ts +++ b/packages/backend/src/server/api/endpoints/charts/hashtag.ts @@ -1,6 +1,6 @@ import { getJsonSchema } from "@/services/chart/core.js"; import { hashtagChart } from "@/services/chart/index.js"; -import define from "../../define.js"; +import define from "@/server/api/define.js"; export const meta = { tags: ["charts", "hashtags"], diff --git a/packages/backend/src/server/api/endpoints/charts/instance.ts b/packages/backend/src/server/api/endpoints/charts/instance.ts index 11a1dbce1b..4d746ec0b5 100644 --- a/packages/backend/src/server/api/endpoints/charts/instance.ts +++ b/packages/backend/src/server/api/endpoints/charts/instance.ts @@ -1,6 +1,6 @@ import { getJsonSchema } from "@/services/chart/core.js"; import { instanceChart } from "@/services/chart/index.js"; -import define from "../../define.js"; +import define from "@/server/api/define.js"; export const meta = { tags: ["charts"], diff --git a/packages/backend/src/server/api/endpoints/charts/notes.ts b/packages/backend/src/server/api/endpoints/charts/notes.ts index 27e69a4c9b..b2a1b93fd9 100644 --- a/packages/backend/src/server/api/endpoints/charts/notes.ts +++ b/packages/backend/src/server/api/endpoints/charts/notes.ts @@ -1,6 +1,6 @@ import { getJsonSchema } from "@/services/chart/core.js"; import { notesChart } from "@/services/chart/index.js"; -import define from "../../define.js"; +import define from "@/server/api/define.js"; export const meta = { tags: ["charts", "notes"], diff --git a/packages/backend/src/server/api/endpoints/charts/user/drive.ts b/packages/backend/src/server/api/endpoints/charts/user/drive.ts index 178ba453c6..c2745c860c 100644 --- a/packages/backend/src/server/api/endpoints/charts/user/drive.ts +++ b/packages/backend/src/server/api/endpoints/charts/user/drive.ts @@ -1,6 +1,6 @@ import { getJsonSchema } from "@/services/chart/core.js"; import { perUserDriveChart } from "@/services/chart/index.js"; -import define from "../../../define.js"; +import define from "@/server/api/define.js"; export const meta = { tags: ["charts", "drive", "users"], diff --git a/packages/backend/src/server/api/endpoints/charts/user/following.ts b/packages/backend/src/server/api/endpoints/charts/user/following.ts index 6a0c22df11..8d8177c300 100644 --- a/packages/backend/src/server/api/endpoints/charts/user/following.ts +++ b/packages/backend/src/server/api/endpoints/charts/user/following.ts @@ -1,4 +1,4 @@ -import define from "../../../define.js"; +import define from "@/server/api/define.js"; import { getJsonSchema } from "@/services/chart/core.js"; import { perUserFollowingChart } from "@/services/chart/index.js"; diff --git a/packages/backend/src/server/api/endpoints/charts/user/notes.ts b/packages/backend/src/server/api/endpoints/charts/user/notes.ts index d788076962..4a398d4dd6 100644 --- a/packages/backend/src/server/api/endpoints/charts/user/notes.ts +++ b/packages/backend/src/server/api/endpoints/charts/user/notes.ts @@ -1,6 +1,6 @@ import { getJsonSchema } from "@/services/chart/core.js"; import { perUserNotesChart } from "@/services/chart/index.js"; -import define from "../../../define.js"; +import define from "@/server/api/define.js"; export const meta = { tags: ["charts", "users", "notes"], diff --git a/packages/backend/src/server/api/endpoints/charts/user/reactions.ts b/packages/backend/src/server/api/endpoints/charts/user/reactions.ts index 5b0048c50e..fc75d40baf 100644 --- a/packages/backend/src/server/api/endpoints/charts/user/reactions.ts +++ b/packages/backend/src/server/api/endpoints/charts/user/reactions.ts @@ -1,6 +1,6 @@ import { getJsonSchema } from "@/services/chart/core.js"; import { perUserReactionsChart } from "@/services/chart/index.js"; -import define from "../../../define.js"; +import define from "@/server/api/define.js"; export const meta = { tags: ["charts", "users", "reactions"], diff --git a/packages/backend/src/server/api/endpoints/charts/users.ts b/packages/backend/src/server/api/endpoints/charts/users.ts index 8973f013b7..0dc5f3580a 100644 --- a/packages/backend/src/server/api/endpoints/charts/users.ts +++ b/packages/backend/src/server/api/endpoints/charts/users.ts @@ -1,6 +1,6 @@ import { getJsonSchema } from "@/services/chart/core.js"; import { usersChart } from "@/services/chart/index.js"; -import define from "../../define.js"; +import define from "@/server/api/define.js"; export const meta = { tags: ["charts", "users"], diff --git a/packages/backend/src/server/api/endpoints/clips/add-note.ts b/packages/backend/src/server/api/endpoints/clips/add-note.ts index 416af6faa2..887c8af083 100644 --- a/packages/backend/src/server/api/endpoints/clips/add-note.ts +++ b/packages/backend/src/server/api/endpoints/clips/add-note.ts @@ -1,8 +1,8 @@ -import define from "../../define.js"; +import define from "@/server/api/define.js"; import { ClipNotes, Clips } from "@/models/index.js"; -import { ApiError } from "../../error.js"; +import { ApiError } from "@/server/api/error.js"; import { genId } from "@/misc/gen-id.js"; -import { getNote } from "../../common/getters.js"; +import { getNote } from "@/server/api/common/getters.js"; export const meta = { tags: ["account", "notes", "clips"], diff --git a/packages/backend/src/server/api/endpoints/clips/create.ts b/packages/backend/src/server/api/endpoints/clips/create.ts index 918e9462a4..df03b87b04 100644 --- a/packages/backend/src/server/api/endpoints/clips/create.ts +++ b/packages/backend/src/server/api/endpoints/clips/create.ts @@ -1,4 +1,4 @@ -import define from "../../define.js"; +import define from "@/server/api/define.js"; import { genId } from "@/misc/gen-id.js"; import { Clips } from "@/models/index.js"; diff --git a/packages/backend/src/server/api/endpoints/clips/delete.ts b/packages/backend/src/server/api/endpoints/clips/delete.ts index 8f2489dddd..02d95b315e 100644 --- a/packages/backend/src/server/api/endpoints/clips/delete.ts +++ b/packages/backend/src/server/api/endpoints/clips/delete.ts @@ -1,5 +1,5 @@ -import define from "../../define.js"; -import { ApiError } from "../../error.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; import { Clips } from "@/models/index.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/clips/list.ts b/packages/backend/src/server/api/endpoints/clips/list.ts index d1625ee036..d276224366 100644 --- a/packages/backend/src/server/api/endpoints/clips/list.ts +++ b/packages/backend/src/server/api/endpoints/clips/list.ts @@ -1,4 +1,4 @@ -import define from "../../define.js"; +import define from "@/server/api/define.js"; import { Clips } from "@/models/index.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/clips/notes.ts b/packages/backend/src/server/api/endpoints/clips/notes.ts index c641d9ba9f..13d8310e62 100644 --- a/packages/backend/src/server/api/endpoints/clips/notes.ts +++ b/packages/backend/src/server/api/endpoints/clips/notes.ts @@ -1,10 +1,10 @@ -import define from "../../define.js"; +import define from "@/server/api/define.js"; import { ClipNotes, Clips, Notes } from "@/models/index.js"; -import { makePaginationQuery } from "../../common/make-pagination-query.js"; -import { generateVisibilityQuery } from "../../common/generate-visibility-query.js"; -import { generateMutedUserQuery } from "../../common/generate-muted-user-query.js"; -import { ApiError } from "../../error.js"; -import { generateBlockedUserQuery } from "../../common/generate-block-query.js"; +import { makePaginationQuery } from "@/server/api/common/make-pagination-query.js"; +import { generateVisibilityQuery } from "@/server/api/common/generate-visibility-query.js"; +import { generateMutedUserQuery } from "@/server/api/common/generate-muted-user-query.js"; +import { ApiError } from "@/server/api/error.js"; +import { generateBlockedUserQuery } from "@/server/api/common/generate-block-query.js"; export const meta = { tags: ["account", "notes", "clips"], diff --git a/packages/backend/src/server/api/endpoints/clips/remove-note.ts b/packages/backend/src/server/api/endpoints/clips/remove-note.ts index 2cc19aca94..c081a87abd 100644 --- a/packages/backend/src/server/api/endpoints/clips/remove-note.ts +++ b/packages/backend/src/server/api/endpoints/clips/remove-note.ts @@ -1,7 +1,7 @@ -import define from "../../define.js"; +import define from "@/server/api/define.js"; import { ClipNotes, Clips } from "@/models/index.js"; -import { ApiError } from "../../error.js"; -import { getNote } from "../../common/getters.js"; +import { ApiError } from "@/server/api/error.js"; +import { getNote } from "@/server/api/common/getters.js"; export const meta = { tags: ["account", "notes", "clips"], diff --git a/packages/backend/src/server/api/endpoints/clips/show.ts b/packages/backend/src/server/api/endpoints/clips/show.ts index 14709b5040..8218a4fb75 100644 --- a/packages/backend/src/server/api/endpoints/clips/show.ts +++ b/packages/backend/src/server/api/endpoints/clips/show.ts @@ -1,5 +1,5 @@ -import define from "../../define.js"; -import { ApiError } from "../../error.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; import { Clips } from "@/models/index.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/clips/update.ts b/packages/backend/src/server/api/endpoints/clips/update.ts index e78f36e455..fc88548b95 100644 --- a/packages/backend/src/server/api/endpoints/clips/update.ts +++ b/packages/backend/src/server/api/endpoints/clips/update.ts @@ -1,5 +1,5 @@ -import define from "../../define.js"; -import { ApiError } from "../../error.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; import { Clips } from "@/models/index.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/compatibility/custom-emojis.ts b/packages/backend/src/server/api/endpoints/compatibility/custom-emojis.ts index 62e0836e85..f6c5573af7 100644 --- a/packages/backend/src/server/api/endpoints/compatibility/custom-emojis.ts +++ b/packages/backend/src/server/api/endpoints/compatibility/custom-emojis.ts @@ -2,7 +2,7 @@ import { Emojis } from "@/models/index.js"; import type { Emoji } from "@/models/entities/emoji.js"; import { IsNull, In } from "typeorm"; import { FILE_TYPE_BROWSERSAFE } from "@/const.js"; -import define from "../../define.js"; +import define from "@/server/api/define.js"; export const meta = { requireCredential: false, diff --git a/packages/backend/src/server/api/endpoints/compatibility/peers.ts b/packages/backend/src/server/api/endpoints/compatibility/peers.ts index 30f6e0e937..df81d2b0d9 100644 --- a/packages/backend/src/server/api/endpoints/compatibility/peers.ts +++ b/packages/backend/src/server/api/endpoints/compatibility/peers.ts @@ -1,5 +1,5 @@ import { Instances } from "@/models/index.js"; -import define from "../../define.js"; +import define from "@/server/api/define.js"; export const meta = { tags: ["meta"], diff --git a/packages/backend/src/server/api/endpoints/custom-motd.ts b/packages/backend/src/server/api/endpoints/custom-motd.ts index 098a676a57..d61b31fed6 100644 --- a/packages/backend/src/server/api/endpoints/custom-motd.ts +++ b/packages/backend/src/server/api/endpoints/custom-motd.ts @@ -1,6 +1,6 @@ // import { IsNull } from 'typeorm'; import { fetchMeta } from "@/misc/fetch-meta.js"; -import define from "../define.js"; +import define from "@/server/api/define.js"; export const meta = { tags: ["meta"], diff --git a/packages/backend/src/server/api/endpoints/custom-splash-icons.ts b/packages/backend/src/server/api/endpoints/custom-splash-icons.ts index c4833a4eef..f63a1b9600 100644 --- a/packages/backend/src/server/api/endpoints/custom-splash-icons.ts +++ b/packages/backend/src/server/api/endpoints/custom-splash-icons.ts @@ -1,6 +1,6 @@ // import { IsNull } from 'typeorm'; import { fetchMeta } from "@/misc/fetch-meta.js"; -import define from "../define.js"; +import define from "@/server/api/define.js"; export const meta = { tags: ["meta"], diff --git a/packages/backend/src/server/api/endpoints/drive.ts b/packages/backend/src/server/api/endpoints/drive.ts index ce98b53a6b..164e7b8f93 100644 --- a/packages/backend/src/server/api/endpoints/drive.ts +++ b/packages/backend/src/server/api/endpoints/drive.ts @@ -1,6 +1,6 @@ import { fetchMeta } from "@/misc/fetch-meta.js"; import { DriveFiles } from "@/models/index.js"; -import define from "../define.js"; +import define from "@/server/api/define.js"; export const meta = { tags: ["drive", "account"], diff --git a/packages/backend/src/server/api/endpoints/drive/files.ts b/packages/backend/src/server/api/endpoints/drive/files.ts index c749e49038..d5dae8767e 100644 --- a/packages/backend/src/server/api/endpoints/drive/files.ts +++ b/packages/backend/src/server/api/endpoints/drive/files.ts @@ -1,6 +1,6 @@ -import define from "../../define.js"; +import define from "@/server/api/define.js"; import { DriveFiles } from "@/models/index.js"; -import { makePaginationQuery } from "../../common/make-pagination-query.js"; +import { makePaginationQuery } from "@/server/api/common/make-pagination-query.js"; export const meta = { tags: ["drive"], diff --git a/packages/backend/src/server/api/endpoints/drive/files/attached-notes.ts b/packages/backend/src/server/api/endpoints/drive/files/attached-notes.ts index 9267da5856..5f821fa72a 100644 --- a/packages/backend/src/server/api/endpoints/drive/files/attached-notes.ts +++ b/packages/backend/src/server/api/endpoints/drive/files/attached-notes.ts @@ -1,5 +1,5 @@ -import define from "../../../define.js"; -import { ApiError } from "../../../error.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; import { DriveFiles, Notes } from "@/models/index.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/drive/files/caption-image.ts b/packages/backend/src/server/api/endpoints/drive/files/caption-image.ts index 30c8e3de86..8b23e324d1 100644 --- a/packages/backend/src/server/api/endpoints/drive/files/caption-image.ts +++ b/packages/backend/src/server/api/endpoints/drive/files/caption-image.ts @@ -1,4 +1,4 @@ -import define from "../../../define.js"; +import define from "@/server/api/define.js"; import { createWorker } from "tesseract.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/drive/files/check-existence.ts b/packages/backend/src/server/api/endpoints/drive/files/check-existence.ts index e26da30eb5..2ce9fa4700 100644 --- a/packages/backend/src/server/api/endpoints/drive/files/check-existence.ts +++ b/packages/backend/src/server/api/endpoints/drive/files/check-existence.ts @@ -1,4 +1,4 @@ -import define from "../../../define.js"; +import define from "@/server/api/define.js"; import { DriveFiles } from "@/models/index.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/drive/files/create.ts b/packages/backend/src/server/api/endpoints/drive/files/create.ts index 51b9ea4c36..54ca5f8d1b 100644 --- a/packages/backend/src/server/api/endpoints/drive/files/create.ts +++ b/packages/backend/src/server/api/endpoints/drive/files/create.ts @@ -4,9 +4,9 @@ import { DB_MAX_IMAGE_COMMENT_LENGTH } from "@/misc/hard-limits.js"; import { IdentifiableError } from "@/misc/identifiable-error.js"; import { fetchMeta } from "@/misc/fetch-meta.js"; import { MINUTE } from "@/const.js"; -import define from "../../../define.js"; -import { apiLogger } from "../../../logger.js"; -import { ApiError } from "../../../error.js"; +import define from "@/server/api/define.js"; +import { apiLogger } from "@/server/api/logger.js"; +import { ApiError } from "@/server/api/error.js"; export const meta = { tags: ["drive"], diff --git a/packages/backend/src/server/api/endpoints/drive/files/delete.ts b/packages/backend/src/server/api/endpoints/drive/files/delete.ts index 4e8b4156f3..062b69b9c5 100644 --- a/packages/backend/src/server/api/endpoints/drive/files/delete.ts +++ b/packages/backend/src/server/api/endpoints/drive/files/delete.ts @@ -1,8 +1,8 @@ import { deleteFile } from "@/services/drive/delete-file.js"; import { publishDriveStream } from "@/services/stream.js"; -import define from "../../../define.js"; -import { ApiError } from "../../../error.js"; -import { DriveFiles, Users } from "@/models/index.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; +import { DriveFiles } from "@/models/index.js"; export const meta = { tags: ["drive"], diff --git a/packages/backend/src/server/api/endpoints/drive/files/find-by-hash.ts b/packages/backend/src/server/api/endpoints/drive/files/find-by-hash.ts index ce14f4e09e..eb6881f5be 100644 --- a/packages/backend/src/server/api/endpoints/drive/files/find-by-hash.ts +++ b/packages/backend/src/server/api/endpoints/drive/files/find-by-hash.ts @@ -1,5 +1,5 @@ import { DriveFiles } from "@/models/index.js"; -import define from "../../../define.js"; +import define from "@/server/api/define.js"; export const meta = { tags: ["drive"], diff --git a/packages/backend/src/server/api/endpoints/drive/files/find.ts b/packages/backend/src/server/api/endpoints/drive/files/find.ts index c2ad95126f..5a243de89b 100644 --- a/packages/backend/src/server/api/endpoints/drive/files/find.ts +++ b/packages/backend/src/server/api/endpoints/drive/files/find.ts @@ -1,4 +1,4 @@ -import define from "../../../define.js"; +import define from "@/server/api/define.js"; import { DriveFiles } from "@/models/index.js"; import { IsNull } from "typeorm"; diff --git a/packages/backend/src/server/api/endpoints/drive/files/show.ts b/packages/backend/src/server/api/endpoints/drive/files/show.ts index 291e3f56bb..455eb76b35 100644 --- a/packages/backend/src/server/api/endpoints/drive/files/show.ts +++ b/packages/backend/src/server/api/endpoints/drive/files/show.ts @@ -1,7 +1,7 @@ import type { DriveFile } from "@/models/entities/drive-file.js"; -import { DriveFiles, Users } from "@/models/index.js"; -import define from "../../../define.js"; -import { ApiError } from "../../../error.js"; +import { DriveFiles } from "@/models/index.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; export const meta = { tags: ["drive"], diff --git a/packages/backend/src/server/api/endpoints/drive/files/update.ts b/packages/backend/src/server/api/endpoints/drive/files/update.ts index e833fddb58..bde81e007e 100644 --- a/packages/backend/src/server/api/endpoints/drive/files/update.ts +++ b/packages/backend/src/server/api/endpoints/drive/files/update.ts @@ -1,8 +1,8 @@ import { publishDriveStream } from "@/services/stream.js"; import { DriveFiles, DriveFolders, Users } from "@/models/index.js"; import { DB_MAX_IMAGE_COMMENT_LENGTH } from "@/misc/hard-limits.js"; -import define from "../../../define.js"; -import { ApiError } from "../../../error.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; export const meta = { tags: ["drive"], diff --git a/packages/backend/src/server/api/endpoints/drive/files/upload-from-url.ts b/packages/backend/src/server/api/endpoints/drive/files/upload-from-url.ts index 7bb47dbef5..cdfcb03089 100644 --- a/packages/backend/src/server/api/endpoints/drive/files/upload-from-url.ts +++ b/packages/backend/src/server/api/endpoints/drive/files/upload-from-url.ts @@ -1,5 +1,5 @@ import { uploadFromUrl } from "@/services/drive/upload-from-url.js"; -import define from "../../../define.js"; +import define from "@/server/api/define.js"; import { DriveFiles } from "@/models/index.js"; import { publishMainStream } from "@/services/stream.js"; import { HOUR } from "@/const.js"; diff --git a/packages/backend/src/server/api/endpoints/drive/folders.ts b/packages/backend/src/server/api/endpoints/drive/folders.ts index ed0d38844b..d02b4fac66 100644 --- a/packages/backend/src/server/api/endpoints/drive/folders.ts +++ b/packages/backend/src/server/api/endpoints/drive/folders.ts @@ -1,6 +1,6 @@ -import define from "../../define.js"; +import define from "@/server/api/define.js"; import { DriveFolders } from "@/models/index.js"; -import { makePaginationQuery } from "../../common/make-pagination-query.js"; +import { makePaginationQuery } from "@/server/api/common/make-pagination-query.js"; export const meta = { tags: ["drive"], diff --git a/packages/backend/src/server/api/endpoints/drive/folders/create.ts b/packages/backend/src/server/api/endpoints/drive/folders/create.ts index d50f5f2815..554e61ec97 100644 --- a/packages/backend/src/server/api/endpoints/drive/folders/create.ts +++ b/packages/backend/src/server/api/endpoints/drive/folders/create.ts @@ -1,6 +1,6 @@ import { publishDriveStream } from "@/services/stream.js"; -import define from "../../../define.js"; -import { ApiError } from "../../../error.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; import { DriveFolders } from "@/models/index.js"; import { genId } from "@/misc/gen-id.js"; diff --git a/packages/backend/src/server/api/endpoints/drive/folders/delete.ts b/packages/backend/src/server/api/endpoints/drive/folders/delete.ts index 98895a7320..1954b43361 100644 --- a/packages/backend/src/server/api/endpoints/drive/folders/delete.ts +++ b/packages/backend/src/server/api/endpoints/drive/folders/delete.ts @@ -1,6 +1,6 @@ -import define from "../../../define.js"; +import define from "@/server/api/define.js"; import { publishDriveStream } from "@/services/stream.js"; -import { ApiError } from "../../../error.js"; +import { ApiError } from "@/server/api/error.js"; import { DriveFolders, DriveFiles } from "@/models/index.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/drive/folders/find.ts b/packages/backend/src/server/api/endpoints/drive/folders/find.ts index 45451fb90b..d29015e785 100644 --- a/packages/backend/src/server/api/endpoints/drive/folders/find.ts +++ b/packages/backend/src/server/api/endpoints/drive/folders/find.ts @@ -1,4 +1,4 @@ -import define from "../../../define.js"; +import define from "@/server/api/define.js"; import { DriveFolders } from "@/models/index.js"; import { IsNull } from "typeorm"; diff --git a/packages/backend/src/server/api/endpoints/drive/folders/show.ts b/packages/backend/src/server/api/endpoints/drive/folders/show.ts index 6a72a22777..611724ae44 100644 --- a/packages/backend/src/server/api/endpoints/drive/folders/show.ts +++ b/packages/backend/src/server/api/endpoints/drive/folders/show.ts @@ -1,5 +1,5 @@ -import define from "../../../define.js"; -import { ApiError } from "../../../error.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; import { DriveFolders } from "@/models/index.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/drive/folders/update.ts b/packages/backend/src/server/api/endpoints/drive/folders/update.ts index 13673e9f2e..5bd880da84 100644 --- a/packages/backend/src/server/api/endpoints/drive/folders/update.ts +++ b/packages/backend/src/server/api/endpoints/drive/folders/update.ts @@ -1,6 +1,6 @@ import { publishDriveStream } from "@/services/stream.js"; -import define from "../../../define.js"; -import { ApiError } from "../../../error.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; import { DriveFolders } from "@/models/index.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/drive/stream.ts b/packages/backend/src/server/api/endpoints/drive/stream.ts index 0c9654ca23..cbd7860175 100644 --- a/packages/backend/src/server/api/endpoints/drive/stream.ts +++ b/packages/backend/src/server/api/endpoints/drive/stream.ts @@ -1,6 +1,6 @@ -import define from "../../define.js"; +import define from "@/server/api/define.js"; import { DriveFiles } from "@/models/index.js"; -import { makePaginationQuery } from "../../common/make-pagination-query.js"; +import { makePaginationQuery } from "@/server/api/common/make-pagination-query.js"; export const meta = { tags: ["drive"], diff --git a/packages/backend/src/server/api/endpoints/email-address/available.ts b/packages/backend/src/server/api/endpoints/email-address/available.ts index dc3c5e4b8e..eb1d833bd6 100644 --- a/packages/backend/src/server/api/endpoints/email-address/available.ts +++ b/packages/backend/src/server/api/endpoints/email-address/available.ts @@ -1,4 +1,4 @@ -import define from "../../define.js"; +import define from "@/server/api/define.js"; import { validateEmailForAccount } from "@/services/validate-email-for-account.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/emoji.ts b/packages/backend/src/server/api/endpoints/emoji.ts index f5a5be4ec5..2675ba7bdc 100644 --- a/packages/backend/src/server/api/endpoints/emoji.ts +++ b/packages/backend/src/server/api/endpoints/emoji.ts @@ -1,7 +1,7 @@ import { IsNull } from "typeorm"; import { Emojis } from "@/models/index.js"; -import define from "../define.js"; -import { ApiError } from "../error.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; export const meta = { tags: ["meta"], diff --git a/packages/backend/src/server/api/endpoints/endpoint.ts b/packages/backend/src/server/api/endpoints/endpoint.ts index ad0ce45623..7dd24f7b7a 100644 --- a/packages/backend/src/server/api/endpoints/endpoint.ts +++ b/packages/backend/src/server/api/endpoints/endpoint.ts @@ -1,5 +1,5 @@ -import define from "../define.js"; -import endpoints from "../endpoints.js"; +import define from "@/server/api/define.js"; +import endpoints from "@/server/api/endpoints.js"; export const meta = { requireCredential: false, diff --git a/packages/backend/src/server/api/endpoints/endpoints.ts b/packages/backend/src/server/api/endpoints/endpoints.ts index c5844f8437..3064fa07ed 100644 --- a/packages/backend/src/server/api/endpoints/endpoints.ts +++ b/packages/backend/src/server/api/endpoints/endpoints.ts @@ -1,5 +1,5 @@ -import define from "../define.js"; -import endpoints from "../endpoints.js"; +import define from "@/server/api/define.js"; +import endpoints from "@/server/api/endpoints.js"; export const meta = { requireCredential: false, diff --git a/packages/backend/src/server/api/endpoints/export-custom-emojis.ts b/packages/backend/src/server/api/endpoints/export-custom-emojis.ts index f4fc43c173..ca013314e1 100644 --- a/packages/backend/src/server/api/endpoints/export-custom-emojis.ts +++ b/packages/backend/src/server/api/endpoints/export-custom-emojis.ts @@ -1,5 +1,5 @@ import { createExportCustomEmojisJob } from "@/queue/index.js"; -import define from "../define.js"; +import define from "@/server/api/define.js"; import { HOUR } from "@/const.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/federation/followers.ts b/packages/backend/src/server/api/endpoints/federation/followers.ts index 4c6d83abdb..2a88d27ae5 100644 --- a/packages/backend/src/server/api/endpoints/federation/followers.ts +++ b/packages/backend/src/server/api/endpoints/federation/followers.ts @@ -1,6 +1,6 @@ -import define from "../../define.js"; +import define from "@/server/api/define.js"; import { Followings } from "@/models/index.js"; -import { makePaginationQuery } from "../../common/make-pagination-query.js"; +import { makePaginationQuery } from "@/server/api/common/make-pagination-query.js"; export const meta = { tags: ["federation"], diff --git a/packages/backend/src/server/api/endpoints/federation/following.ts b/packages/backend/src/server/api/endpoints/federation/following.ts index 88b168600b..c13ee8b199 100644 --- a/packages/backend/src/server/api/endpoints/federation/following.ts +++ b/packages/backend/src/server/api/endpoints/federation/following.ts @@ -1,6 +1,6 @@ -import define from "../../define.js"; +import define from "@/server/api/define.js"; import { Followings } from "@/models/index.js"; -import { makePaginationQuery } from "../../common/make-pagination-query.js"; +import { makePaginationQuery } from "@/server/api/common/make-pagination-query.js"; export const meta = { tags: ["federation"], diff --git a/packages/backend/src/server/api/endpoints/federation/instances.ts b/packages/backend/src/server/api/endpoints/federation/instances.ts index fa1a415312..27a6dabb49 100644 --- a/packages/backend/src/server/api/endpoints/federation/instances.ts +++ b/packages/backend/src/server/api/endpoints/federation/instances.ts @@ -1,5 +1,4 @@ -import config from "@/config/index.js"; -import define from "../../define.js"; +import define from "@/server/api/define.js"; import { Instances } from "@/models/index.js"; import { fetchMeta } from "@/misc/fetch-meta.js"; import { sqlLikeEscape } from "@/misc/sql-like-escape.js"; diff --git a/packages/backend/src/server/api/endpoints/federation/show-instance.ts b/packages/backend/src/server/api/endpoints/federation/show-instance.ts index 633bb57073..c4a6304d05 100644 --- a/packages/backend/src/server/api/endpoints/federation/show-instance.ts +++ b/packages/backend/src/server/api/endpoints/federation/show-instance.ts @@ -1,4 +1,4 @@ -import define from "../../define.js"; +import define from "@/server/api/define.js"; import { Instances } from "@/models/index.js"; import { toPuny } from "@/misc/convert-host.js"; diff --git a/packages/backend/src/server/api/endpoints/federation/stats.ts b/packages/backend/src/server/api/endpoints/federation/stats.ts index ede7a56c27..6702eeff5f 100644 --- a/packages/backend/src/server/api/endpoints/federation/stats.ts +++ b/packages/backend/src/server/api/endpoints/federation/stats.ts @@ -1,7 +1,7 @@ import { IsNull, MoreThan, Not } from "typeorm"; import { Followings, Instances } from "@/models/index.js"; import { awaitAll } from "@/prelude/await-all.js"; -import define from "../../define.js"; +import define from "@/server/api/define.js"; export const meta = { tags: ["federation"], diff --git a/packages/backend/src/server/api/endpoints/federation/update-remote-user.ts b/packages/backend/src/server/api/endpoints/federation/update-remote-user.ts index f4c3f6d18c..e8ada9e622 100644 --- a/packages/backend/src/server/api/endpoints/federation/update-remote-user.ts +++ b/packages/backend/src/server/api/endpoints/federation/update-remote-user.ts @@ -1,5 +1,5 @@ -import define from "../../define.js"; -import { getRemoteUser } from "../../common/getters.js"; +import define from "@/server/api/define.js"; +import { getRemoteUser } from "@/server/api/common/getters.js"; import { updatePerson } from "@/remote/activitypub/models/person.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/federation/users.ts b/packages/backend/src/server/api/endpoints/federation/users.ts index ded0a26c5f..4e925a29e2 100644 --- a/packages/backend/src/server/api/endpoints/federation/users.ts +++ b/packages/backend/src/server/api/endpoints/federation/users.ts @@ -1,6 +1,6 @@ -import define from "../../define.js"; +import define from "@/server/api/define.js"; import { Users } from "@/models/index.js"; -import { makePaginationQuery } from "../../common/make-pagination-query.js"; +import { makePaginationQuery } from "@/server/api/common/make-pagination-query.js"; export const meta = { tags: ["federation"], diff --git a/packages/backend/src/server/api/endpoints/fetch-rss.ts b/packages/backend/src/server/api/endpoints/fetch-rss.ts index b73d7262c9..bda3c455d1 100644 --- a/packages/backend/src/server/api/endpoints/fetch-rss.ts +++ b/packages/backend/src/server/api/endpoints/fetch-rss.ts @@ -1,7 +1,7 @@ import Parser from "rss-parser"; import { getResponse } from "@/misc/fetch.js"; import config from "@/config/index.js"; -import define from "../define.js"; +import define from "@/server/api/define.js"; const rssParser = new Parser(); diff --git a/packages/backend/src/server/api/endpoints/following/create.ts b/packages/backend/src/server/api/endpoints/following/create.ts index 48ae6ae7af..f6e341ad73 100644 --- a/packages/backend/src/server/api/endpoints/following/create.ts +++ b/packages/backend/src/server/api/endpoints/following/create.ts @@ -1,7 +1,7 @@ import create from "@/services/following/create.js"; -import define from "../../define.js"; -import { ApiError } from "../../error.js"; -import { getUser } from "../../common/getters.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; +import { getUser } from "@/server/api/common/getters.js"; import { Followings, Users } from "@/models/index.js"; import { IdentifiableError } from "@/misc/identifiable-error.js"; import { HOUR } from "@/const.js"; diff --git a/packages/backend/src/server/api/endpoints/following/delete.ts b/packages/backend/src/server/api/endpoints/following/delete.ts index cbc6097f4d..3ef031eb20 100644 --- a/packages/backend/src/server/api/endpoints/following/delete.ts +++ b/packages/backend/src/server/api/endpoints/following/delete.ts @@ -1,7 +1,7 @@ import deleteFollowing from "@/services/following/delete.js"; -import define from "../../define.js"; -import { ApiError } from "../../error.js"; -import { getUser } from "../../common/getters.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; +import { getUser } from "@/server/api/common/getters.js"; import { Followings, Users } from "@/models/index.js"; import { HOUR } from "@/const.js"; diff --git a/packages/backend/src/server/api/endpoints/following/invalidate.ts b/packages/backend/src/server/api/endpoints/following/invalidate.ts index 01ccc2761b..7559062c0f 100644 --- a/packages/backend/src/server/api/endpoints/following/invalidate.ts +++ b/packages/backend/src/server/api/endpoints/following/invalidate.ts @@ -1,7 +1,7 @@ import deleteFollowing from "@/services/following/delete.js"; -import define from "../../define.js"; -import { ApiError } from "../../error.js"; -import { getUser } from "../../common/getters.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; +import { getUser } from "@/server/api/common/getters.js"; import { Followings, Users } from "@/models/index.js"; import { HOUR } from "@/const.js"; diff --git a/packages/backend/src/server/api/endpoints/following/requests/accept.ts b/packages/backend/src/server/api/endpoints/following/requests/accept.ts index a4fc052367..cb6b010726 100644 --- a/packages/backend/src/server/api/endpoints/following/requests/accept.ts +++ b/packages/backend/src/server/api/endpoints/following/requests/accept.ts @@ -1,7 +1,7 @@ import acceptFollowRequest from "@/services/following/requests/accept.js"; -import define from "../../../define.js"; -import { ApiError } from "../../../error.js"; -import { getUser } from "../../../common/getters.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; +import { getUser } from "@/server/api/common/getters.js"; export const meta = { tags: ["following", "account"], diff --git a/packages/backend/src/server/api/endpoints/following/requests/cancel.ts b/packages/backend/src/server/api/endpoints/following/requests/cancel.ts index f309e32999..7acb0f948b 100644 --- a/packages/backend/src/server/api/endpoints/following/requests/cancel.ts +++ b/packages/backend/src/server/api/endpoints/following/requests/cancel.ts @@ -1,7 +1,7 @@ import cancelFollowRequest from "@/services/following/requests/cancel.js"; -import define from "../../../define.js"; -import { ApiError } from "../../../error.js"; -import { getUser } from "../../../common/getters.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; +import { getUser } from "@/server/api/common/getters.js"; import { Users } from "@/models/index.js"; import { IdentifiableError } from "@/misc/identifiable-error.js"; diff --git a/packages/backend/src/server/api/endpoints/following/requests/list.ts b/packages/backend/src/server/api/endpoints/following/requests/list.ts index 6ba23de585..97f52d4ac2 100644 --- a/packages/backend/src/server/api/endpoints/following/requests/list.ts +++ b/packages/backend/src/server/api/endpoints/following/requests/list.ts @@ -1,4 +1,4 @@ -import define from "../../../define.js"; +import define from "@/server/api/define.js"; import { FollowRequests } from "@/models/index.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/following/requests/reject.ts b/packages/backend/src/server/api/endpoints/following/requests/reject.ts index fedc0db487..37e7bc0abc 100644 --- a/packages/backend/src/server/api/endpoints/following/requests/reject.ts +++ b/packages/backend/src/server/api/endpoints/following/requests/reject.ts @@ -1,7 +1,7 @@ import { rejectFollowRequest } from "@/services/following/reject.js"; -import define from "../../../define.js"; -import { ApiError } from "../../../error.js"; -import { getUser } from "../../../common/getters.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; +import { getUser } from "@/server/api/common/getters.js"; export const meta = { tags: ["following", "account"], diff --git a/packages/backend/src/server/api/endpoints/gallery/featured.ts b/packages/backend/src/server/api/endpoints/gallery/featured.ts index d478e8e3bf..e20e4ab20b 100644 --- a/packages/backend/src/server/api/endpoints/gallery/featured.ts +++ b/packages/backend/src/server/api/endpoints/gallery/featured.ts @@ -1,4 +1,4 @@ -import define from "../../define.js"; +import define from "@/server/api/define.js"; import { GalleryPosts } from "@/models/index.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/gallery/popular.ts b/packages/backend/src/server/api/endpoints/gallery/popular.ts index 5eef68d971..805307e459 100644 --- a/packages/backend/src/server/api/endpoints/gallery/popular.ts +++ b/packages/backend/src/server/api/endpoints/gallery/popular.ts @@ -1,4 +1,4 @@ -import define from "../../define.js"; +import define from "@/server/api/define.js"; import { GalleryPosts } from "@/models/index.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/gallery/posts.ts b/packages/backend/src/server/api/endpoints/gallery/posts.ts index f97c161aff..0dd02b930d 100644 --- a/packages/backend/src/server/api/endpoints/gallery/posts.ts +++ b/packages/backend/src/server/api/endpoints/gallery/posts.ts @@ -1,5 +1,5 @@ -import define from "../../define.js"; -import { makePaginationQuery } from "../../common/make-pagination-query.js"; +import define from "@/server/api/define.js"; +import { makePaginationQuery } from "@/server/api/common/make-pagination-query.js"; import { GalleryPosts } from "@/models/index.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/gallery/posts/create.ts b/packages/backend/src/server/api/endpoints/gallery/posts/create.ts index f3b3768e28..a74f2165c2 100644 --- a/packages/backend/src/server/api/endpoints/gallery/posts/create.ts +++ b/packages/backend/src/server/api/endpoints/gallery/posts/create.ts @@ -1,8 +1,7 @@ -import define from "../../../define.js"; +import define from "@/server/api/define.js"; import { DriveFiles, GalleryPosts } from "@/models/index.js"; -import { genId } from "../../../../../misc/gen-id.js"; +import { genId } from "@/server/api/../../misc/gen-id.js"; import { GalleryPost } from "@/models/entities/gallery-post.js"; -import { ApiError } from "../../../error.js"; import type { DriveFile } from "@/models/entities/drive-file.js"; import { HOUR } from "@/const.js"; diff --git a/packages/backend/src/server/api/endpoints/gallery/posts/delete.ts b/packages/backend/src/server/api/endpoints/gallery/posts/delete.ts index 9fd9a50099..360ca8c5ad 100644 --- a/packages/backend/src/server/api/endpoints/gallery/posts/delete.ts +++ b/packages/backend/src/server/api/endpoints/gallery/posts/delete.ts @@ -1,5 +1,5 @@ -import define from "../../../define.js"; -import { ApiError } from "../../../error.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; import { GalleryPosts } from "@/models/index.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/gallery/posts/like.ts b/packages/backend/src/server/api/endpoints/gallery/posts/like.ts index 2506e40aaa..f5ccc5bc68 100644 --- a/packages/backend/src/server/api/endpoints/gallery/posts/like.ts +++ b/packages/backend/src/server/api/endpoints/gallery/posts/like.ts @@ -1,5 +1,5 @@ -import define from "../../../define.js"; -import { ApiError } from "../../../error.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; import { GalleryPosts, GalleryLikes } from "@/models/index.js"; import { genId } from "@/misc/gen-id.js"; diff --git a/packages/backend/src/server/api/endpoints/gallery/posts/show.ts b/packages/backend/src/server/api/endpoints/gallery/posts/show.ts index 87e272f018..7e172da45e 100644 --- a/packages/backend/src/server/api/endpoints/gallery/posts/show.ts +++ b/packages/backend/src/server/api/endpoints/gallery/posts/show.ts @@ -1,5 +1,5 @@ -import define from "../../../define.js"; -import { ApiError } from "../../../error.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; import { GalleryPosts } from "@/models/index.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/gallery/posts/unlike.ts b/packages/backend/src/server/api/endpoints/gallery/posts/unlike.ts index 03bc299b94..f37456a626 100644 --- a/packages/backend/src/server/api/endpoints/gallery/posts/unlike.ts +++ b/packages/backend/src/server/api/endpoints/gallery/posts/unlike.ts @@ -1,5 +1,5 @@ -import define from "../../../define.js"; -import { ApiError } from "../../../error.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; import { GalleryPosts, GalleryLikes } from "@/models/index.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/gallery/posts/update.ts b/packages/backend/src/server/api/endpoints/gallery/posts/update.ts index 64e204172e..16c629706c 100644 --- a/packages/backend/src/server/api/endpoints/gallery/posts/update.ts +++ b/packages/backend/src/server/api/endpoints/gallery/posts/update.ts @@ -1,7 +1,5 @@ -import define from "../../../define.js"; +import define from "@/server/api/define.js"; import { DriveFiles, GalleryPosts } from "@/models/index.js"; -import { GalleryPost } from "@/models/entities/gallery-post.js"; -import { ApiError } from "../../../error.js"; import type { DriveFile } from "@/models/entities/drive-file.js"; import { HOUR } from "@/const.js"; diff --git a/packages/backend/src/server/api/endpoints/get-online-users-count.ts b/packages/backend/src/server/api/endpoints/get-online-users-count.ts index 805674a5b7..633e75335a 100644 --- a/packages/backend/src/server/api/endpoints/get-online-users-count.ts +++ b/packages/backend/src/server/api/endpoints/get-online-users-count.ts @@ -1,7 +1,7 @@ import { MoreThan } from "typeorm"; import { USER_ONLINE_THRESHOLD } from "@/const.js"; import { Users } from "@/models/index.js"; -import define from "../define.js"; +import define from "@/server/api/define.js"; export const meta = { tags: ["meta"], diff --git a/packages/backend/src/server/api/endpoints/get-sounds.ts b/packages/backend/src/server/api/endpoints/get-sounds.ts index f7edd38609..4fd1498bd8 100644 --- a/packages/backend/src/server/api/endpoints/get-sounds.ts +++ b/packages/backend/src/server/api/endpoints/get-sounds.ts @@ -1,5 +1,5 @@ import { readdir } from "fs/promises"; -import define from "../define.js"; +import define from "@/server/api/define.js"; export const meta = { tags: ["meta"], diff --git a/packages/backend/src/server/api/endpoints/hashtags/list.ts b/packages/backend/src/server/api/endpoints/hashtags/list.ts index df99a1e5a6..6e8016f64b 100644 --- a/packages/backend/src/server/api/endpoints/hashtags/list.ts +++ b/packages/backend/src/server/api/endpoints/hashtags/list.ts @@ -1,4 +1,4 @@ -import define from "../../define.js"; +import define from "@/server/api/define.js"; import { Hashtags } from "@/models/index.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/hashtags/search.ts b/packages/backend/src/server/api/endpoints/hashtags/search.ts index cde586af0c..1dc1fb4922 100644 --- a/packages/backend/src/server/api/endpoints/hashtags/search.ts +++ b/packages/backend/src/server/api/endpoints/hashtags/search.ts @@ -1,4 +1,4 @@ -import define from "../../define.js"; +import define from "@/server/api/define.js"; import { Hashtags } from "@/models/index.js"; import { sqlLikeEscape } from "@/misc/sql-like-escape.js"; diff --git a/packages/backend/src/server/api/endpoints/hashtags/show.ts b/packages/backend/src/server/api/endpoints/hashtags/show.ts index 8cf90e4505..09849dbd36 100644 --- a/packages/backend/src/server/api/endpoints/hashtags/show.ts +++ b/packages/backend/src/server/api/endpoints/hashtags/show.ts @@ -1,5 +1,5 @@ -import define from "../../define.js"; -import { ApiError } from "../../error.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; import { Hashtags } from "@/models/index.js"; import { normalizeForSearch } from "@/misc/normalize-for-search.js"; diff --git a/packages/backend/src/server/api/endpoints/hashtags/trend.ts b/packages/backend/src/server/api/endpoints/hashtags/trend.ts index e2a8345112..fe8bba95fd 100644 --- a/packages/backend/src/server/api/endpoints/hashtags/trend.ts +++ b/packages/backend/src/server/api/endpoints/hashtags/trend.ts @@ -1,5 +1,5 @@ import { Brackets } from "typeorm"; -import define from "../../define.js"; +import define from "@/server/api/define.js"; import { fetchMeta } from "@/misc/fetch-meta.js"; import { Notes } from "@/models/index.js"; import type { Note } from "@/models/entities/note.js"; diff --git a/packages/backend/src/server/api/endpoints/hashtags/users.ts b/packages/backend/src/server/api/endpoints/hashtags/users.ts index 532c663070..ccb70a0596 100644 --- a/packages/backend/src/server/api/endpoints/hashtags/users.ts +++ b/packages/backend/src/server/api/endpoints/hashtags/users.ts @@ -1,4 +1,4 @@ -import define from "../../define.js"; +import define from "@/server/api/define.js"; import { Users } from "@/models/index.js"; import { normalizeForSearch } from "@/misc/normalize-for-search.js"; diff --git a/packages/backend/src/server/api/endpoints/i.ts b/packages/backend/src/server/api/endpoints/i.ts index 39543442c5..69eabf4d24 100644 --- a/packages/backend/src/server/api/endpoints/i.ts +++ b/packages/backend/src/server/api/endpoints/i.ts @@ -1,5 +1,5 @@ import { Users } from "@/models/index.js"; -import define from "../define.js"; +import define from "@/server/api/define.js"; export const meta = { tags: ["account"], diff --git a/packages/backend/src/server/api/endpoints/i/2fa/done.ts b/packages/backend/src/server/api/endpoints/i/2fa/done.ts index 05d57d2821..c1a7b16a84 100644 --- a/packages/backend/src/server/api/endpoints/i/2fa/done.ts +++ b/packages/backend/src/server/api/endpoints/i/2fa/done.ts @@ -1,6 +1,6 @@ import { publishMainStream } from "@/services/stream.js"; import * as OTPAuth from "otpauth"; -import define from "../../../define.js"; +import define from "@/server/api/define.js"; import { Users, UserProfiles } from "@/models/index.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/i/2fa/key-done.ts b/packages/backend/src/server/api/endpoints/i/2fa/key-done.ts index 9ea437b037..b8104e318f 100644 --- a/packages/backend/src/server/api/endpoints/i/2fa/key-done.ts +++ b/packages/backend/src/server/api/endpoints/i/2fa/key-done.ts @@ -1,5 +1,5 @@ import { decode } from "cbor-x"; -import define from "../../../define.js"; +import define from "@/server/api/define.js"; import { UserProfiles, UserSecurityKeys, @@ -7,7 +7,7 @@ import { Users, } from "@/models/index.js"; import config from "@/config/index.js"; -import { procedures, hash } from "../../../2fa.js"; +import { procedures, hash } from "@/server/api/2fa.js"; import { publishMainStream } from "@/services/stream.js"; import { comparePassword } from "@/misc/password.js"; diff --git a/packages/backend/src/server/api/endpoints/i/2fa/password-less.ts b/packages/backend/src/server/api/endpoints/i/2fa/password-less.ts index b9f3426804..8125f817a0 100644 --- a/packages/backend/src/server/api/endpoints/i/2fa/password-less.ts +++ b/packages/backend/src/server/api/endpoints/i/2fa/password-less.ts @@ -1,7 +1,7 @@ -import define from "../../../define.js"; +import define from "@/server/api/define.js"; import { Users, UserProfiles, UserSecurityKeys } from "@/models/index.js"; import { publishMainStream } from "@/services/stream.js"; -import { ApiError } from "../../../error.js"; +import { ApiError } from "@/server/api/error.js"; export const meta = { requireCredential: true, diff --git a/packages/backend/src/server/api/endpoints/i/2fa/register-key.ts b/packages/backend/src/server/api/endpoints/i/2fa/register-key.ts index a10dc9b256..8080c9390f 100644 --- a/packages/backend/src/server/api/endpoints/i/2fa/register-key.ts +++ b/packages/backend/src/server/api/endpoints/i/2fa/register-key.ts @@ -1,9 +1,9 @@ -import define from "../../../define.js"; +import define from "@/server/api/define.js"; import { UserProfiles, AttestationChallenges } from "@/models/index.js"; import { promisify } from "node:util"; import * as crypto from "node:crypto"; import { genId } from "@/misc/gen-id.js"; -import { hash } from "../../../2fa.js"; +import { hash } from "@/server/api/2fa.js"; import { comparePassword } from "@/misc/password.js"; const randomBytes = promisify(crypto.randomBytes); diff --git a/packages/backend/src/server/api/endpoints/i/2fa/register.ts b/packages/backend/src/server/api/endpoints/i/2fa/register.ts index cf391ca2fd..52e1df39f4 100644 --- a/packages/backend/src/server/api/endpoints/i/2fa/register.ts +++ b/packages/backend/src/server/api/endpoints/i/2fa/register.ts @@ -2,7 +2,7 @@ import * as OTPAuth from "otpauth"; import * as QRCode from "qrcode"; import config from "@/config/index.js"; import { UserProfiles } from "@/models/index.js"; -import define from "../../../define.js"; +import define from "@/server/api/define.js"; import { comparePassword } from "@/misc/password.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/i/2fa/remove-key.ts b/packages/backend/src/server/api/endpoints/i/2fa/remove-key.ts index d91c8f214b..b3bc5bdfac 100644 --- a/packages/backend/src/server/api/endpoints/i/2fa/remove-key.ts +++ b/packages/backend/src/server/api/endpoints/i/2fa/remove-key.ts @@ -1,5 +1,5 @@ import { comparePassword } from "@/misc/password.js"; -import define from "../../../define.js"; +import define from "@/server/api/define.js"; import { UserProfiles, UserSecurityKeys, Users } from "@/models/index.js"; import { publishMainStream } from "@/services/stream.js"; diff --git a/packages/backend/src/server/api/endpoints/i/2fa/unregister.ts b/packages/backend/src/server/api/endpoints/i/2fa/unregister.ts index 54f1422d4c..c4e78eecb5 100644 --- a/packages/backend/src/server/api/endpoints/i/2fa/unregister.ts +++ b/packages/backend/src/server/api/endpoints/i/2fa/unregister.ts @@ -1,5 +1,5 @@ import { publishMainStream } from "@/services/stream.js"; -import define from "../../../define.js"; +import define from "@/server/api/define.js"; import { Users, UserProfiles } from "@/models/index.js"; import { comparePassword } from "@/misc/password.js"; diff --git a/packages/backend/src/server/api/endpoints/i/2fa/update-key.ts b/packages/backend/src/server/api/endpoints/i/2fa/update-key.ts index 7587ec780e..d77ecc88e8 100644 --- a/packages/backend/src/server/api/endpoints/i/2fa/update-key.ts +++ b/packages/backend/src/server/api/endpoints/i/2fa/update-key.ts @@ -1,7 +1,7 @@ import { publishMainStream } from "@/services/stream.js"; -import define from "../../../define.js"; +import define from "@/server/api/define.js"; import { Users, UserSecurityKeys } from "@/models/index.js"; -import { ApiError } from "../../../error.js"; +import { ApiError } from "@/server/api/error.js"; export const meta = { requireCredential: true, diff --git a/packages/backend/src/server/api/endpoints/i/apps.ts b/packages/backend/src/server/api/endpoints/i/apps.ts index b951601949..7e7574ec91 100644 --- a/packages/backend/src/server/api/endpoints/i/apps.ts +++ b/packages/backend/src/server/api/endpoints/i/apps.ts @@ -1,4 +1,4 @@ -import define from "../../define.js"; +import define from "@/server/api/define.js"; import { AccessTokens } from "@/models/index.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/i/authorized-apps.ts b/packages/backend/src/server/api/endpoints/i/authorized-apps.ts index f759b23037..ad66fe1fd3 100644 --- a/packages/backend/src/server/api/endpoints/i/authorized-apps.ts +++ b/packages/backend/src/server/api/endpoints/i/authorized-apps.ts @@ -1,4 +1,4 @@ -import define from "../../define.js"; +import define from "@/server/api/define.js"; import { AccessTokens, Apps } from "@/models/index.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/i/change-password.ts b/packages/backend/src/server/api/endpoints/i/change-password.ts index 8bbb3ad93a..b0dc8bba60 100644 --- a/packages/backend/src/server/api/endpoints/i/change-password.ts +++ b/packages/backend/src/server/api/endpoints/i/change-password.ts @@ -1,4 +1,4 @@ -import define from "../../define.js"; +import define from "@/server/api/define.js"; import { UserProfiles } from "@/models/index.js"; import { hashPassword, comparePassword } from "@/misc/password.js"; diff --git a/packages/backend/src/server/api/endpoints/i/delete-account.ts b/packages/backend/src/server/api/endpoints/i/delete-account.ts index 781abe0b38..606cde82e1 100644 --- a/packages/backend/src/server/api/endpoints/i/delete-account.ts +++ b/packages/backend/src/server/api/endpoints/i/delete-account.ts @@ -1,6 +1,6 @@ import { UserProfiles, Users } from "@/models/index.js"; import { deleteAccount } from "@/services/delete-account.js"; -import define from "../../define.js"; +import define from "@/server/api/define.js"; import { comparePassword } from "@/misc/password.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/i/export-blocking.ts b/packages/backend/src/server/api/endpoints/i/export-blocking.ts index 4517ad5fab..30e74ab2f5 100644 --- a/packages/backend/src/server/api/endpoints/i/export-blocking.ts +++ b/packages/backend/src/server/api/endpoints/i/export-blocking.ts @@ -1,4 +1,4 @@ -import define from "../../define.js"; +import define from "@/server/api/define.js"; import { createExportBlockingJob } from "@/queue/index.js"; import { HOUR } from "@/const.js"; diff --git a/packages/backend/src/server/api/endpoints/i/export-following.ts b/packages/backend/src/server/api/endpoints/i/export-following.ts index a228de8f17..07d2997a18 100644 --- a/packages/backend/src/server/api/endpoints/i/export-following.ts +++ b/packages/backend/src/server/api/endpoints/i/export-following.ts @@ -1,4 +1,4 @@ -import define from "../../define.js"; +import define from "@/server/api/define.js"; import { createExportFollowingJob } from "@/queue/index.js"; import { HOUR } from "@/const.js"; diff --git a/packages/backend/src/server/api/endpoints/i/export-mute.ts b/packages/backend/src/server/api/endpoints/i/export-mute.ts index 7bddc434d4..7d22a073e6 100644 --- a/packages/backend/src/server/api/endpoints/i/export-mute.ts +++ b/packages/backend/src/server/api/endpoints/i/export-mute.ts @@ -1,4 +1,4 @@ -import define from "../../define.js"; +import define from "@/server/api/define.js"; import { createExportMuteJob } from "@/queue/index.js"; import { HOUR } from "@/const.js"; diff --git a/packages/backend/src/server/api/endpoints/i/export-notes.ts b/packages/backend/src/server/api/endpoints/i/export-notes.ts index 48506ed6d9..f167bb83cb 100644 --- a/packages/backend/src/server/api/endpoints/i/export-notes.ts +++ b/packages/backend/src/server/api/endpoints/i/export-notes.ts @@ -1,4 +1,4 @@ -import define from "../../define.js"; +import define from "@/server/api/define.js"; import { createExportNotesJob } from "@/queue/index.js"; import { DAY } from "@/const.js"; diff --git a/packages/backend/src/server/api/endpoints/i/export-user-lists.ts b/packages/backend/src/server/api/endpoints/i/export-user-lists.ts index a71b1730b4..b68d889dcd 100644 --- a/packages/backend/src/server/api/endpoints/i/export-user-lists.ts +++ b/packages/backend/src/server/api/endpoints/i/export-user-lists.ts @@ -1,4 +1,4 @@ -import define from "../../define.js"; +import define from "@/server/api/define.js"; import { createExportUserListsJob } from "@/queue/index.js"; import { MINUTE } from "@/const.js"; diff --git a/packages/backend/src/server/api/endpoints/i/favorites.ts b/packages/backend/src/server/api/endpoints/i/favorites.ts index f0dbd2de6b..f0961ea236 100644 --- a/packages/backend/src/server/api/endpoints/i/favorites.ts +++ b/packages/backend/src/server/api/endpoints/i/favorites.ts @@ -1,6 +1,6 @@ -import define from "../../define.js"; +import define from "@/server/api/define.js"; import { NoteFavorites } from "@/models/index.js"; -import { makePaginationQuery } from "../../common/make-pagination-query.js"; +import { makePaginationQuery } from "@/server/api/common/make-pagination-query.js"; export const meta = { tags: ["account", "notes", "favorites"], diff --git a/packages/backend/src/server/api/endpoints/i/gallery/likes.ts b/packages/backend/src/server/api/endpoints/i/gallery/likes.ts index d71ee3e5a1..80c90e684d 100644 --- a/packages/backend/src/server/api/endpoints/i/gallery/likes.ts +++ b/packages/backend/src/server/api/endpoints/i/gallery/likes.ts @@ -1,6 +1,6 @@ -import define from "../../../define.js"; +import define from "@/server/api/define.js"; import { GalleryLikes } from "@/models/index.js"; -import { makePaginationQuery } from "../../../common/make-pagination-query.js"; +import { makePaginationQuery } from "@/server/api/common/make-pagination-query.js"; export const meta = { tags: ["account", "gallery"], diff --git a/packages/backend/src/server/api/endpoints/i/gallery/posts.ts b/packages/backend/src/server/api/endpoints/i/gallery/posts.ts index e471731ae7..054784842d 100644 --- a/packages/backend/src/server/api/endpoints/i/gallery/posts.ts +++ b/packages/backend/src/server/api/endpoints/i/gallery/posts.ts @@ -1,6 +1,6 @@ import { GalleryPosts } from "@/models/index.js"; -import define from "../../../define.js"; -import { makePaginationQuery } from "../../../common/make-pagination-query.js"; +import define from "@/server/api/define.js"; +import { makePaginationQuery } from "@/server/api/common/make-pagination-query.js"; export const meta = { tags: ["account", "gallery"], diff --git a/packages/backend/src/server/api/endpoints/i/get-word-muted-notes-count.ts b/packages/backend/src/server/api/endpoints/i/get-word-muted-notes-count.ts index bd58f9257a..39cc45e822 100644 --- a/packages/backend/src/server/api/endpoints/i/get-word-muted-notes-count.ts +++ b/packages/backend/src/server/api/endpoints/i/get-word-muted-notes-count.ts @@ -1,4 +1,4 @@ -import define from "../../define.js"; +import define from "@/server/api/define.js"; import { MutedNotes } from "@/models/index.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/i/import-blocking.ts b/packages/backend/src/server/api/endpoints/i/import-blocking.ts index e4f1da60cc..58314aced3 100644 --- a/packages/backend/src/server/api/endpoints/i/import-blocking.ts +++ b/packages/backend/src/server/api/endpoints/i/import-blocking.ts @@ -1,6 +1,6 @@ -import define from "../../define.js"; +import define from "@/server/api/define.js"; import { createImportBlockingJob } from "@/queue/index.js"; -import { ApiError } from "../../error.js"; +import { ApiError } from "@/server/api/error.js"; import { DriveFiles } from "@/models/index.js"; import { HOUR } from "@/const.js"; diff --git a/packages/backend/src/server/api/endpoints/i/import-following.ts b/packages/backend/src/server/api/endpoints/i/import-following.ts index 1a6c9b565d..b7c475698c 100644 --- a/packages/backend/src/server/api/endpoints/i/import-following.ts +++ b/packages/backend/src/server/api/endpoints/i/import-following.ts @@ -1,6 +1,6 @@ -import define from "../../define.js"; +import define from "@/server/api/define.js"; import { createImportFollowingJob } from "@/queue/index.js"; -import { ApiError } from "../../error.js"; +import { ApiError } from "@/server/api/error.js"; import { DriveFiles } from "@/models/index.js"; import { HOUR } from "@/const.js"; diff --git a/packages/backend/src/server/api/endpoints/i/import-muting.ts b/packages/backend/src/server/api/endpoints/i/import-muting.ts index 20d240e739..494fb0d420 100644 --- a/packages/backend/src/server/api/endpoints/i/import-muting.ts +++ b/packages/backend/src/server/api/endpoints/i/import-muting.ts @@ -1,6 +1,6 @@ -import define from "../../define.js"; +import define from "@/server/api/define.js"; import { createImportMutingJob } from "@/queue/index.js"; -import { ApiError } from "../../error.js"; +import { ApiError } from "@/server/api/error.js"; import { DriveFiles } from "@/models/index.js"; import { HOUR } from "@/const.js"; diff --git a/packages/backend/src/server/api/endpoints/i/import-posts.ts b/packages/backend/src/server/api/endpoints/i/import-posts.ts index 3adba0514e..b8b52be98f 100644 --- a/packages/backend/src/server/api/endpoints/i/import-posts.ts +++ b/packages/backend/src/server/api/endpoints/i/import-posts.ts @@ -1,6 +1,6 @@ -import define from "../../define.js"; +import define from "@/server/api/define.js"; import { createImportPostsJob } from "@/queue/index.js"; -import { ApiError } from "../../error.js"; +import { ApiError } from "@/server/api/error.js"; import { DriveFiles } from "@/models/index.js"; import { DAY } from "@/const.js"; import { fetchMeta } from "@/misc/fetch-meta.js"; diff --git a/packages/backend/src/server/api/endpoints/i/import-user-lists.ts b/packages/backend/src/server/api/endpoints/i/import-user-lists.ts index 03b1dffbbb..ed82a96054 100644 --- a/packages/backend/src/server/api/endpoints/i/import-user-lists.ts +++ b/packages/backend/src/server/api/endpoints/i/import-user-lists.ts @@ -1,6 +1,6 @@ -import define from "../../define.js"; +import define from "@/server/api/define.js"; import { createImportUserListsJob } from "@/queue/index.js"; -import { ApiError } from "../../error.js"; +import { ApiError } from "@/server/api/error.js"; import { DriveFiles } from "@/models/index.js"; import { HOUR } from "@/const.js"; diff --git a/packages/backend/src/server/api/endpoints/i/known-as.ts b/packages/backend/src/server/api/endpoints/i/known-as.ts index 384cbd7c34..39bf6fff83 100644 --- a/packages/backend/src/server/api/endpoints/i/known-as.ts +++ b/packages/backend/src/server/api/endpoints/i/known-as.ts @@ -5,9 +5,9 @@ import acceptAllFollowRequests from "@/services/following/requests/accept-all.js import { publishToFollowers } from "@/services/i/update.js"; import { publishMainStream } from "@/services/stream.js"; import { DAY } from "@/const.js"; -import { apiLogger } from "../../logger.js"; -import define from "../../define.js"; -import { ApiError } from "../../error.js"; +import { apiLogger } from "@/server/api/logger.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; import { parse } from "@/misc/acct.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/i/move.ts b/packages/backend/src/server/api/endpoints/i/move.ts index 2c064e1d66..c6d1205f98 100644 --- a/packages/backend/src/server/api/endpoints/i/move.ts +++ b/packages/backend/src/server/api/endpoints/i/move.ts @@ -3,9 +3,9 @@ import { resolveUser } from "@/remote/resolve-user.js"; import { DAY } from "@/const.js"; import DeliverManager from "@/remote/activitypub/deliver-manager.js"; import { renderActivity } from "@/remote/activitypub/renderer/index.js"; -import define from "../../define.js"; -import { ApiError } from "../../error.js"; -import { apiLogger } from "../../logger.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; +import { apiLogger } from "@/server/api/logger.js"; import deleteFollowing from "@/services/following/delete.js"; import create from "@/services/following/create.js"; import { getUser } from "@/server/api/common/getters.js"; diff --git a/packages/backend/src/server/api/endpoints/i/notifications.ts b/packages/backend/src/server/api/endpoints/i/notifications.ts index 6e1aabef7d..b07247dd83 100644 --- a/packages/backend/src/server/api/endpoints/i/notifications.ts +++ b/packages/backend/src/server/api/endpoints/i/notifications.ts @@ -8,9 +8,9 @@ import { } from "@/models/index.js"; import { notificationTypes } from "@/types.js"; import read from "@/services/note/read.js"; -import { readNotification } from "../../common/read-notification.js"; -import define from "../../define.js"; -import { makePaginationQuery } from "../../common/make-pagination-query.js"; +import { readNotification } from "@/server/api/common/read-notification.js"; +import define from "@/server/api/define.js"; +import { makePaginationQuery } from "@/server/api/common/make-pagination-query.js"; export const meta = { tags: ["account", "notifications"], diff --git a/packages/backend/src/server/api/endpoints/i/page-likes.ts b/packages/backend/src/server/api/endpoints/i/page-likes.ts index 1be783a061..289d072670 100644 --- a/packages/backend/src/server/api/endpoints/i/page-likes.ts +++ b/packages/backend/src/server/api/endpoints/i/page-likes.ts @@ -1,6 +1,6 @@ import { PageLikes } from "@/models/index.js"; -import define from "../../define.js"; -import { makePaginationQuery } from "../../common/make-pagination-query.js"; +import define from "@/server/api/define.js"; +import { makePaginationQuery } from "@/server/api/common/make-pagination-query.js"; export const meta = { tags: ["account", "pages"], diff --git a/packages/backend/src/server/api/endpoints/i/pages.ts b/packages/backend/src/server/api/endpoints/i/pages.ts index 78b72e3bce..1177d2e664 100644 --- a/packages/backend/src/server/api/endpoints/i/pages.ts +++ b/packages/backend/src/server/api/endpoints/i/pages.ts @@ -1,6 +1,6 @@ import { Pages } from "@/models/index.js"; -import define from "../../define.js"; -import { makePaginationQuery } from "../../common/make-pagination-query.js"; +import define from "@/server/api/define.js"; +import { makePaginationQuery } from "@/server/api/common/make-pagination-query.js"; export const meta = { tags: ["account", "pages"], diff --git a/packages/backend/src/server/api/endpoints/i/pin.ts b/packages/backend/src/server/api/endpoints/i/pin.ts index 7520705265..4291541ea2 100644 --- a/packages/backend/src/server/api/endpoints/i/pin.ts +++ b/packages/backend/src/server/api/endpoints/i/pin.ts @@ -1,6 +1,6 @@ import { addPinned } from "@/services/i/pin.js"; -import define from "../../define.js"; -import { ApiError } from "../../error.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; import { Users } from "@/models/index.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/i/read-all-messaging-messages.ts b/packages/backend/src/server/api/endpoints/i/read-all-messaging-messages.ts index 0333677275..505c424edb 100644 --- a/packages/backend/src/server/api/endpoints/i/read-all-messaging-messages.ts +++ b/packages/backend/src/server/api/endpoints/i/read-all-messaging-messages.ts @@ -1,5 +1,5 @@ import { publishMainStream } from "@/services/stream.js"; -import define from "../../define.js"; +import define from "@/server/api/define.js"; import { MessagingMessages, UserGroupJoinings } from "@/models/index.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/i/read-all-unread-notes.ts b/packages/backend/src/server/api/endpoints/i/read-all-unread-notes.ts index 8a8857c83c..6f70e55a1a 100644 --- a/packages/backend/src/server/api/endpoints/i/read-all-unread-notes.ts +++ b/packages/backend/src/server/api/endpoints/i/read-all-unread-notes.ts @@ -1,5 +1,5 @@ import { publishMainStream } from "@/services/stream.js"; -import define from "../../define.js"; +import define from "@/server/api/define.js"; import { NoteUnreads } from "@/models/index.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/i/read-announcement.ts b/packages/backend/src/server/api/endpoints/i/read-announcement.ts index d0dfa66579..a59d15b994 100644 --- a/packages/backend/src/server/api/endpoints/i/read-announcement.ts +++ b/packages/backend/src/server/api/endpoints/i/read-announcement.ts @@ -1,5 +1,5 @@ -import define from "../../define.js"; -import { ApiError } from "../../error.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; import { genId } from "@/misc/gen-id.js"; import { AnnouncementReads, Announcements, Users } from "@/models/index.js"; import { publishMainStream } from "@/services/stream.js"; diff --git a/packages/backend/src/server/api/endpoints/i/regenerate-token.ts b/packages/backend/src/server/api/endpoints/i/regenerate-token.ts index b5b34c0902..c1b4325adb 100644 --- a/packages/backend/src/server/api/endpoints/i/regenerate-token.ts +++ b/packages/backend/src/server/api/endpoints/i/regenerate-token.ts @@ -3,8 +3,8 @@ import { publishMainStream, publishUserEvent, } from "@/services/stream.js"; -import generateUserToken from "../../common/generate-native-user-token.js"; -import define from "../../define.js"; +import generateUserToken from "@/server/api/common/generate-native-user-token.js"; +import define from "@/server/api/define.js"; import { Users, UserProfiles } from "@/models/index.js"; import { comparePassword } from "@/misc/password.js"; diff --git a/packages/backend/src/server/api/endpoints/i/registry/get-all.ts b/packages/backend/src/server/api/endpoints/i/registry/get-all.ts index ee9fe7e9d5..c267bb144e 100644 --- a/packages/backend/src/server/api/endpoints/i/registry/get-all.ts +++ b/packages/backend/src/server/api/endpoints/i/registry/get-all.ts @@ -1,4 +1,4 @@ -import define from "../../../define.js"; +import define from "@/server/api/define.js"; import { RegistryItems } from "@/models/index.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/i/registry/get-detail.ts b/packages/backend/src/server/api/endpoints/i/registry/get-detail.ts index 85900bd74d..57db3c7144 100644 --- a/packages/backend/src/server/api/endpoints/i/registry/get-detail.ts +++ b/packages/backend/src/server/api/endpoints/i/registry/get-detail.ts @@ -1,6 +1,6 @@ -import define from "../../../define.js"; +import define from "@/server/api/define.js"; import { RegistryItems } from "@/models/index.js"; -import { ApiError } from "../../../error.js"; +import { ApiError } from "@/server/api/error.js"; export const meta = { requireCredential: true, diff --git a/packages/backend/src/server/api/endpoints/i/registry/get-unsecure.ts b/packages/backend/src/server/api/endpoints/i/registry/get-unsecure.ts index a9bcf69351..ac37beea54 100644 --- a/packages/backend/src/server/api/endpoints/i/registry/get-unsecure.ts +++ b/packages/backend/src/server/api/endpoints/i/registry/get-unsecure.ts @@ -1,5 +1,5 @@ -import { ApiError } from "../../../error.js"; -import define from "../../../define.js"; +import { ApiError } from "@/server/api/error.js"; +import define from "@/server/api/define.js"; import { RegistryItems } from "@/models/index.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/i/registry/get.ts b/packages/backend/src/server/api/endpoints/i/registry/get.ts index b143b7228a..d25047e009 100644 --- a/packages/backend/src/server/api/endpoints/i/registry/get.ts +++ b/packages/backend/src/server/api/endpoints/i/registry/get.ts @@ -1,6 +1,6 @@ -import define from "../../../define.js"; +import define from "@/server/api/define.js"; import { RegistryItems } from "@/models/index.js"; -import { ApiError } from "../../../error.js"; +import { ApiError } from "@/server/api/error.js"; export const meta = { requireCredential: true, diff --git a/packages/backend/src/server/api/endpoints/i/registry/keys-with-type.ts b/packages/backend/src/server/api/endpoints/i/registry/keys-with-type.ts index 23698dc53a..f691552bce 100644 --- a/packages/backend/src/server/api/endpoints/i/registry/keys-with-type.ts +++ b/packages/backend/src/server/api/endpoints/i/registry/keys-with-type.ts @@ -1,4 +1,4 @@ -import define from "../../../define.js"; +import define from "@/server/api/define.js"; import { RegistryItems } from "@/models/index.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/i/registry/keys.ts b/packages/backend/src/server/api/endpoints/i/registry/keys.ts index ad7d08c5af..186e744bd1 100644 --- a/packages/backend/src/server/api/endpoints/i/registry/keys.ts +++ b/packages/backend/src/server/api/endpoints/i/registry/keys.ts @@ -1,4 +1,4 @@ -import define from "../../../define.js"; +import define from "@/server/api/define.js"; import { RegistryItems } from "@/models/index.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/i/registry/remove.ts b/packages/backend/src/server/api/endpoints/i/registry/remove.ts index d3793b0e20..aa459952ee 100644 --- a/packages/backend/src/server/api/endpoints/i/registry/remove.ts +++ b/packages/backend/src/server/api/endpoints/i/registry/remove.ts @@ -1,6 +1,6 @@ -import define from "../../../define.js"; +import define from "@/server/api/define.js"; import { RegistryItems } from "@/models/index.js"; -import { ApiError } from "../../../error.js"; +import { ApiError } from "@/server/api/error.js"; export const meta = { requireCredential: true, diff --git a/packages/backend/src/server/api/endpoints/i/registry/scopes.ts b/packages/backend/src/server/api/endpoints/i/registry/scopes.ts index 3d66359c1d..e235ef67f0 100644 --- a/packages/backend/src/server/api/endpoints/i/registry/scopes.ts +++ b/packages/backend/src/server/api/endpoints/i/registry/scopes.ts @@ -1,4 +1,4 @@ -import define from "../../../define.js"; +import define from "@/server/api/define.js"; import { RegistryItems } from "@/models/index.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/i/registry/set.ts b/packages/backend/src/server/api/endpoints/i/registry/set.ts index 7f9eebd5e0..7a1f8ab5f7 100644 --- a/packages/backend/src/server/api/endpoints/i/registry/set.ts +++ b/packages/backend/src/server/api/endpoints/i/registry/set.ts @@ -1,5 +1,5 @@ import { publishMainStream } from "@/services/stream.js"; -import define from "../../../define.js"; +import define from "@/server/api/define.js"; import { RegistryItems } from "@/models/index.js"; import { genId } from "@/misc/gen-id.js"; diff --git a/packages/backend/src/server/api/endpoints/i/revoke-token.ts b/packages/backend/src/server/api/endpoints/i/revoke-token.ts index 3a410fa0e5..f3e8116944 100644 --- a/packages/backend/src/server/api/endpoints/i/revoke-token.ts +++ b/packages/backend/src/server/api/endpoints/i/revoke-token.ts @@ -1,4 +1,4 @@ -import define from "../../define.js"; +import define from "@/server/api/define.js"; import { AccessTokens } from "@/models/index.js"; import { publishUserEvent } from "@/services/stream.js"; diff --git a/packages/backend/src/server/api/endpoints/i/signin-history.ts b/packages/backend/src/server/api/endpoints/i/signin-history.ts index 288b750b7b..14d303089e 100644 --- a/packages/backend/src/server/api/endpoints/i/signin-history.ts +++ b/packages/backend/src/server/api/endpoints/i/signin-history.ts @@ -1,6 +1,6 @@ -import define from "../../define.js"; +import define from "@/server/api/define.js"; import { Signins } from "@/models/index.js"; -import { makePaginationQuery } from "../../common/make-pagination-query.js"; +import { makePaginationQuery } from "@/server/api/common/make-pagination-query.js"; export const meta = { requireCredential: true, diff --git a/packages/backend/src/server/api/endpoints/i/unpin.ts b/packages/backend/src/server/api/endpoints/i/unpin.ts index c248eb34e5..9aee1dfea8 100644 --- a/packages/backend/src/server/api/endpoints/i/unpin.ts +++ b/packages/backend/src/server/api/endpoints/i/unpin.ts @@ -1,6 +1,6 @@ import { removePinned } from "@/services/i/pin.js"; -import define from "../../define.js"; -import { ApiError } from "../../error.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; import { Users } from "@/models/index.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/i/update-email.ts b/packages/backend/src/server/api/endpoints/i/update-email.ts index 94ad6b3c72..a48252ed1a 100644 --- a/packages/backend/src/server/api/endpoints/i/update-email.ts +++ b/packages/backend/src/server/api/endpoints/i/update-email.ts @@ -1,10 +1,10 @@ import { publishMainStream } from "@/services/stream.js"; -import define from "../../define.js"; +import define from "@/server/api/define.js"; import rndstr from "rndstr"; import config from "@/config/index.js"; import { Users, UserProfiles } from "@/models/index.js"; import { sendEmail } from "@/services/send-email.js"; -import { ApiError } from "../../error.js"; +import { ApiError } from "@/server/api/error.js"; import { validateEmailForAccount } from "@/services/validate-email-for-account.js"; import { HOUR } from "@/const.js"; import { comparePassword } from "@/misc/password.js"; diff --git a/packages/backend/src/server/api/endpoints/i/update.ts b/packages/backend/src/server/api/endpoints/i/update.ts index 0037839b5c..082108383e 100644 --- a/packages/backend/src/server/api/endpoints/i/update.ts +++ b/packages/backend/src/server/api/endpoints/i/update.ts @@ -13,9 +13,8 @@ import { notificationTypes } from "@/types.js"; import { normalizeForSearch } from "@/misc/normalize-for-search.js"; import { langmap } from "@/misc/langmap.js"; import { verifyLink } from "@/services/fetch-rel-me.js"; -import { ApiError } from "../../error.js"; -import config from "@/config/index.js"; -import define from "../../define.js"; +import { ApiError } from "@/server/api/error.js"; +import define from "@/server/api/define.js"; export const meta = { tags: ["account"], diff --git a/packages/backend/src/server/api/endpoints/i/user-group-invites.ts b/packages/backend/src/server/api/endpoints/i/user-group-invites.ts index d0c6caf0e2..99e8209a37 100644 --- a/packages/backend/src/server/api/endpoints/i/user-group-invites.ts +++ b/packages/backend/src/server/api/endpoints/i/user-group-invites.ts @@ -1,6 +1,6 @@ -import define from "../../define.js"; +import define from "@/server/api/define.js"; import { UserGroupInvitations } from "@/models/index.js"; -import { makePaginationQuery } from "../../common/make-pagination-query.js"; +import { makePaginationQuery } from "@/server/api/common/make-pagination-query.js"; export const meta = { tags: ["account", "groups"], diff --git a/packages/backend/src/server/api/endpoints/i/webhooks/create.ts b/packages/backend/src/server/api/endpoints/i/webhooks/create.ts index 2b0f1781ea..ee38b76372 100644 --- a/packages/backend/src/server/api/endpoints/i/webhooks/create.ts +++ b/packages/backend/src/server/api/endpoints/i/webhooks/create.ts @@ -1,4 +1,4 @@ -import define from "../../../define.js"; +import define from "@/server/api/define.js"; import { genId } from "@/misc/gen-id.js"; import { Webhooks } from "@/models/index.js"; import { publishInternalEvent } from "@/services/stream.js"; diff --git a/packages/backend/src/server/api/endpoints/i/webhooks/delete.ts b/packages/backend/src/server/api/endpoints/i/webhooks/delete.ts index 4a2c3d83be..a92ed179d0 100644 --- a/packages/backend/src/server/api/endpoints/i/webhooks/delete.ts +++ b/packages/backend/src/server/api/endpoints/i/webhooks/delete.ts @@ -1,5 +1,5 @@ -import define from "../../../define.js"; -import { ApiError } from "../../../error.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; import { Webhooks } from "@/models/index.js"; import { publishInternalEvent } from "@/services/stream.js"; diff --git a/packages/backend/src/server/api/endpoints/i/webhooks/list.ts b/packages/backend/src/server/api/endpoints/i/webhooks/list.ts index 3afead5996..f937e560c5 100644 --- a/packages/backend/src/server/api/endpoints/i/webhooks/list.ts +++ b/packages/backend/src/server/api/endpoints/i/webhooks/list.ts @@ -1,4 +1,4 @@ -import define from "../../../define.js"; +import define from "@/server/api/define.js"; import { Webhooks } from "@/models/index.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/i/webhooks/show.ts b/packages/backend/src/server/api/endpoints/i/webhooks/show.ts index 96c0457475..b24850f5e5 100644 --- a/packages/backend/src/server/api/endpoints/i/webhooks/show.ts +++ b/packages/backend/src/server/api/endpoints/i/webhooks/show.ts @@ -1,5 +1,5 @@ -import define from "../../../define.js"; -import { ApiError } from "../../../error.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; import { Webhooks } from "@/models/index.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/i/webhooks/update.ts b/packages/backend/src/server/api/endpoints/i/webhooks/update.ts index 161d705e12..4a211b915f 100644 --- a/packages/backend/src/server/api/endpoints/i/webhooks/update.ts +++ b/packages/backend/src/server/api/endpoints/i/webhooks/update.ts @@ -1,5 +1,5 @@ -import define from "../../../define.js"; -import { ApiError } from "../../../error.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; import { Webhooks } from "@/models/index.js"; import { publishInternalEvent } from "@/services/stream.js"; import { webhookEventTypes } from "@/models/entities/webhook.js"; diff --git a/packages/backend/src/server/api/endpoints/latest-version.ts b/packages/backend/src/server/api/endpoints/latest-version.ts index 4d07406d1e..a5c00e7a4c 100644 --- a/packages/backend/src/server/api/endpoints/latest-version.ts +++ b/packages/backend/src/server/api/endpoints/latest-version.ts @@ -1,4 +1,4 @@ -import define from "../define.js"; +import define from "@/server/api/define.js"; export const meta = { tags: ["meta"], diff --git a/packages/backend/src/server/api/endpoints/messaging/history.ts b/packages/backend/src/server/api/endpoints/messaging/history.ts index 7d1df69850..25418a17a6 100644 --- a/packages/backend/src/server/api/endpoints/messaging/history.ts +++ b/packages/backend/src/server/api/endpoints/messaging/history.ts @@ -5,7 +5,7 @@ import { Mutings, UserGroupJoinings, } from "@/models/index.js"; -import define from "../../define.js"; +import define from "@/server/api/define.js"; export const meta = { tags: ["messaging"], diff --git a/packages/backend/src/server/api/endpoints/messaging/messages.ts b/packages/backend/src/server/api/endpoints/messaging/messages.ts index 17f626b69e..01f7028673 100644 --- a/packages/backend/src/server/api/endpoints/messaging/messages.ts +++ b/packages/backend/src/server/api/endpoints/messaging/messages.ts @@ -1,19 +1,19 @@ -import define from "../../define.js"; -import { ApiError } from "../../error.js"; -import { getUser } from "../../common/getters.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; +import { getUser } from "@/server/api/common/getters.js"; import { MessagingMessages, UserGroups, UserGroupJoinings, Users, } from "@/models/index.js"; -import { makePaginationQuery } from "../../common/make-pagination-query.js"; +import { makePaginationQuery } from "@/server/api/common/make-pagination-query.js"; import { Brackets } from "typeorm"; import { readUserMessagingMessage, readGroupMessagingMessage, deliverReadActivity, -} from "../../common/read-messaging-message.js"; +} from "@/server/api/common/read-messaging-message.js"; export const meta = { tags: ["messaging"], diff --git a/packages/backend/src/server/api/endpoints/messaging/messages/create.ts b/packages/backend/src/server/api/endpoints/messaging/messages/create.ts index 4ffbb0699f..6fd38eff79 100644 --- a/packages/backend/src/server/api/endpoints/messaging/messages/create.ts +++ b/packages/backend/src/server/api/endpoints/messaging/messages/create.ts @@ -1,8 +1,7 @@ -import define from "../../../define.js"; -import { ApiError } from "../../../error.js"; -import { getUser } from "../../../common/getters.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; +import { getUser } from "@/server/api/common/getters.js"; import { - MessagingMessages, DriveFiles, UserGroups, UserGroupJoinings, diff --git a/packages/backend/src/server/api/endpoints/messaging/messages/delete.ts b/packages/backend/src/server/api/endpoints/messaging/messages/delete.ts index 42ff050d16..76691dd34d 100644 --- a/packages/backend/src/server/api/endpoints/messaging/messages/delete.ts +++ b/packages/backend/src/server/api/endpoints/messaging/messages/delete.ts @@ -1,5 +1,5 @@ -import define from "../../../define.js"; -import { ApiError } from "../../../error.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; import { MessagingMessages } from "@/models/index.js"; import { deleteMessage } from "@/services/messages/delete.js"; import { SECOND, HOUR } from "@/const.js"; diff --git a/packages/backend/src/server/api/endpoints/messaging/messages/read.ts b/packages/backend/src/server/api/endpoints/messaging/messages/read.ts index 0ef013b799..5aa50155ca 100644 --- a/packages/backend/src/server/api/endpoints/messaging/messages/read.ts +++ b/packages/backend/src/server/api/endpoints/messaging/messages/read.ts @@ -1,10 +1,10 @@ -import define from "../../../define.js"; -import { ApiError } from "../../../error.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; import { MessagingMessages } from "@/models/index.js"; import { readUserMessagingMessage, readGroupMessagingMessage, -} from "../../../common/read-messaging-message.js"; +} from "@/server/api/common/read-messaging-message.js"; export const meta = { tags: ["messaging"], diff --git a/packages/backend/src/server/api/endpoints/meta.ts b/packages/backend/src/server/api/endpoints/meta.ts index 8c521fcff9..03cf0fb631 100644 --- a/packages/backend/src/server/api/endpoints/meta.ts +++ b/packages/backend/src/server/api/endpoints/meta.ts @@ -4,7 +4,7 @@ import config from "@/config/index.js"; import { fetchMeta } from "@/misc/fetch-meta.js"; import { Ads, Emojis, Users } from "@/models/index.js"; import { MAX_NOTE_TEXT_LENGTH, MAX_CAPTION_TEXT_LENGTH } from "@/const.js"; -import define from "../define.js"; +import define from "@/server/api/define.js"; export const meta = { tags: ["meta"], diff --git a/packages/backend/src/server/api/endpoints/miauth/gen-token.ts b/packages/backend/src/server/api/endpoints/miauth/gen-token.ts index 0525d79a7e..bca09d3f07 100644 --- a/packages/backend/src/server/api/endpoints/miauth/gen-token.ts +++ b/packages/backend/src/server/api/endpoints/miauth/gen-token.ts @@ -1,4 +1,4 @@ -import define from "../../define.js"; +import define from "@/server/api/define.js"; import { AccessTokens } from "@/models/index.js"; import { genId } from "@/misc/gen-id.js"; import { secureRndstr } from "@/misc/secure-rndstr.js"; diff --git a/packages/backend/src/server/api/endpoints/mute/create.ts b/packages/backend/src/server/api/endpoints/mute/create.ts index 7b2f109053..2eb935198e 100644 --- a/packages/backend/src/server/api/endpoints/mute/create.ts +++ b/packages/backend/src/server/api/endpoints/mute/create.ts @@ -1,6 +1,6 @@ -import define from "../../define.js"; -import { ApiError } from "../../error.js"; -import { getUser } from "../../common/getters.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; +import { getUser } from "@/server/api/common/getters.js"; import { genId } from "@/misc/gen-id.js"; import { Mutings, NoteWatchings } from "@/models/index.js"; import type { Muting } from "@/models/entities/muting.js"; diff --git a/packages/backend/src/server/api/endpoints/mute/delete.ts b/packages/backend/src/server/api/endpoints/mute/delete.ts index cd00c1a8ab..8058e9a612 100644 --- a/packages/backend/src/server/api/endpoints/mute/delete.ts +++ b/packages/backend/src/server/api/endpoints/mute/delete.ts @@ -1,6 +1,6 @@ -import define from "../../define.js"; -import { ApiError } from "../../error.js"; -import { getUser } from "../../common/getters.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; +import { getUser } from "@/server/api/common/getters.js"; import { Mutings } from "@/models/index.js"; import { publishUserEvent } from "@/services/stream.js"; diff --git a/packages/backend/src/server/api/endpoints/mute/list.ts b/packages/backend/src/server/api/endpoints/mute/list.ts index 7bbe29a4c8..9619457cd7 100644 --- a/packages/backend/src/server/api/endpoints/mute/list.ts +++ b/packages/backend/src/server/api/endpoints/mute/list.ts @@ -1,5 +1,5 @@ -import define from "../../define.js"; -import { makePaginationQuery } from "../../common/make-pagination-query.js"; +import define from "@/server/api/define.js"; +import { makePaginationQuery } from "@/server/api/common/make-pagination-query.js"; import { Mutings } from "@/models/index.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/my/apps.ts b/packages/backend/src/server/api/endpoints/my/apps.ts index 8a097c8a04..bc75b38e58 100644 --- a/packages/backend/src/server/api/endpoints/my/apps.ts +++ b/packages/backend/src/server/api/endpoints/my/apps.ts @@ -1,4 +1,4 @@ -import define from "../../define.js"; +import define from "@/server/api/define.js"; import { Apps } from "@/models/index.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/notes.ts b/packages/backend/src/server/api/endpoints/notes.ts index 9787740ab0..6e2d3b4f3b 100644 --- a/packages/backend/src/server/api/endpoints/notes.ts +++ b/packages/backend/src/server/api/endpoints/notes.ts @@ -1,6 +1,6 @@ import { Notes } from "@/models/index.js"; -import define from "../define.js"; -import { makePaginationQuery } from "../common/make-pagination-query.js"; +import define from "@/server/api/define.js"; +import { makePaginationQuery } from "@/server/api/common/make-pagination-query.js"; export const meta = { tags: ["notes"], diff --git a/packages/backend/src/server/api/endpoints/notes/children.ts b/packages/backend/src/server/api/endpoints/notes/children.ts index a35b17a022..d76771c34c 100644 --- a/packages/backend/src/server/api/endpoints/notes/children.ts +++ b/packages/backend/src/server/api/endpoints/notes/children.ts @@ -1,9 +1,9 @@ import { Notes } from "@/models/index.js"; -import define from "../../define.js"; -import { makePaginationQuery } from "../../common/make-pagination-query.js"; -import { generateVisibilityQuery } from "../../common/generate-visibility-query.js"; -import { generateMutedUserQuery } from "../../common/generate-muted-user-query.js"; -import { generateBlockedUserQuery } from "../../common/generate-block-query.js"; +import define from "@/server/api/define.js"; +import { makePaginationQuery } from "@/server/api/common/make-pagination-query.js"; +import { generateVisibilityQuery } from "@/server/api/common/generate-visibility-query.js"; +import { generateMutedUserQuery } from "@/server/api/common/generate-muted-user-query.js"; +import { generateBlockedUserQuery } from "@/server/api/common/generate-block-query.js"; export const meta = { tags: ["notes"], diff --git a/packages/backend/src/server/api/endpoints/notes/clips.ts b/packages/backend/src/server/api/endpoints/notes/clips.ts index 34b035add2..430ed02ec6 100644 --- a/packages/backend/src/server/api/endpoints/notes/clips.ts +++ b/packages/backend/src/server/api/endpoints/notes/clips.ts @@ -1,8 +1,8 @@ import { In } from "typeorm"; import { ClipNotes, Clips } from "@/models/index.js"; -import define from "../../define.js"; -import { getNote } from "../../common/getters.js"; -import { ApiError } from "../../error.js"; +import define from "@/server/api/define.js"; +import { getNote } from "@/server/api/common/getters.js"; +import { ApiError } from "@/server/api/error.js"; export const meta = { tags: ["clips", "notes"], diff --git a/packages/backend/src/server/api/endpoints/notes/conversation.ts b/packages/backend/src/server/api/endpoints/notes/conversation.ts index c74da2ec71..9939740874 100644 --- a/packages/backend/src/server/api/endpoints/notes/conversation.ts +++ b/packages/backend/src/server/api/endpoints/notes/conversation.ts @@ -1,8 +1,8 @@ import type { Note } from "@/models/entities/note.js"; import { Notes } from "@/models/index.js"; -import define from "../../define.js"; -import { ApiError } from "../../error.js"; -import { getNote } from "../../common/getters.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; +import { getNote } from "@/server/api/common/getters.js"; export const meta = { tags: ["notes"], diff --git a/packages/backend/src/server/api/endpoints/notes/create.ts b/packages/backend/src/server/api/endpoints/notes/create.ts index 150356811d..0465d09ec4 100644 --- a/packages/backend/src/server/api/endpoints/notes/create.ts +++ b/packages/backend/src/server/api/endpoints/notes/create.ts @@ -12,11 +12,11 @@ import type { DriveFile } from "@/models/entities/drive-file.js"; import type { Note } from "@/models/entities/note.js"; import type { Channel } from "@/models/entities/channel.js"; import { MAX_NOTE_TEXT_LENGTH } from "@/const.js"; -import { noteVisibilities } from "../../../../types.js"; -import { ApiError } from "../../error.js"; -import define from "../../define.js"; +import { noteVisibilities } from "@/types.js"; +import { ApiError } from "@/server/api/error.js"; +import define from "@/server/api/define.js"; import { HOUR } from "@/const.js"; -import { getNote } from "../../common/getters.js"; +import { getNote } from "@/server/api/common/getters.js"; export const meta = { tags: ["notes"], diff --git a/packages/backend/src/server/api/endpoints/notes/delete.ts b/packages/backend/src/server/api/endpoints/notes/delete.ts index 5fc79db7d1..54aad1ebad 100644 --- a/packages/backend/src/server/api/endpoints/notes/delete.ts +++ b/packages/backend/src/server/api/endpoints/notes/delete.ts @@ -1,8 +1,8 @@ import deleteNote from "@/services/note/delete.js"; import { Users } from "@/models/index.js"; -import define from "../../define.js"; -import { getNote } from "../../common/getters.js"; -import { ApiError } from "../../error.js"; +import define from "@/server/api/define.js"; +import { getNote } from "@/server/api/common/getters.js"; +import { ApiError } from "@/server/api/error.js"; import { SECOND, HOUR } from "@/const.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/notes/edit.ts b/packages/backend/src/server/api/endpoints/notes/edit.ts index e6d39c5249..a0869e4104 100644 --- a/packages/backend/src/server/api/endpoints/notes/edit.ts +++ b/packages/backend/src/server/api/endpoints/notes/edit.ts @@ -1,5 +1,5 @@ import { In } from "typeorm"; -import create, { index } from "@/services/note/create.js"; +import { index } from "@/services/note/create.js"; import type { IRemoteUser, User } from "@/models/entities/user.js"; import { Users, @@ -15,11 +15,11 @@ import type { DriveFile } from "@/models/entities/drive-file.js"; import type { IMentionedRemoteUsers, Note } from "@/models/entities/note.js"; import type { Channel } from "@/models/entities/channel.js"; import { MAX_NOTE_TEXT_LENGTH } from "@/const.js"; -import { noteVisibilities } from "../../../../types.js"; -import { ApiError } from "../../error.js"; -import define from "../../define.js"; +import { noteVisibilities } from "@/types.js"; +import { ApiError } from "@/server/api/error.js"; +import define from "@/server/api/define.js"; import { HOUR } from "@/const.js"; -import { getNote } from "../../common/getters.js"; +import { getNote } from "@/server/api/common/getters.js"; import { Poll } from "@/models/entities/poll.js"; import * as mfm from "mfm-js"; import { concat } from "@/prelude/array.js"; @@ -34,7 +34,6 @@ import renderNote from "@/remote/activitypub/renderer/note.js"; import renderUpdate from "@/remote/activitypub/renderer/update.js"; import { deliverToRelays } from "@/services/relay.js"; // import { deliverQuestionUpdate } from "@/services/note/polls/update.js"; -import { fetchMeta } from "@/misc/fetch-meta.js"; import { langmap } from "@/misc/langmap.js"; import detectLanguage from "@/misc/detect-language.js"; diff --git a/packages/backend/src/server/api/endpoints/notes/favorites/create.ts b/packages/backend/src/server/api/endpoints/notes/favorites/create.ts index 64862a3733..8b2c7ad3a4 100644 --- a/packages/backend/src/server/api/endpoints/notes/favorites/create.ts +++ b/packages/backend/src/server/api/endpoints/notes/favorites/create.ts @@ -1,8 +1,8 @@ import { NoteFavorites } from "@/models/index.js"; import { genId } from "@/misc/gen-id.js"; -import define from "../../../define.js"; -import { ApiError } from "../../../error.js"; -import { getNote } from "../../../common/getters.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; +import { getNote } from "@/server/api/common/getters.js"; export const meta = { tags: ["notes", "favorites"], diff --git a/packages/backend/src/server/api/endpoints/notes/favorites/delete.ts b/packages/backend/src/server/api/endpoints/notes/favorites/delete.ts index e05d04a969..018ef91bca 100644 --- a/packages/backend/src/server/api/endpoints/notes/favorites/delete.ts +++ b/packages/backend/src/server/api/endpoints/notes/favorites/delete.ts @@ -1,7 +1,7 @@ import { NoteFavorites } from "@/models/index.js"; -import define from "../../../define.js"; -import { ApiError } from "../../../error.js"; -import { getNote } from "../../../common/getters.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; +import { getNote } from "@/server/api/common/getters.js"; export const meta = { tags: ["notes", "favorites"], diff --git a/packages/backend/src/server/api/endpoints/notes/featured.ts b/packages/backend/src/server/api/endpoints/notes/featured.ts index 47c1e13812..4f90145ec3 100644 --- a/packages/backend/src/server/api/endpoints/notes/featured.ts +++ b/packages/backend/src/server/api/endpoints/notes/featured.ts @@ -1,7 +1,7 @@ import { Notes } from "@/models/index.js"; -import define from "../../define.js"; -import { generateMutedUserQuery } from "../../common/generate-muted-user-query.js"; -import { generateBlockedUserQuery } from "../../common/generate-block-query.js"; +import define from "@/server/api/define.js"; +import { generateMutedUserQuery } from "@/server/api/common/generate-muted-user-query.js"; +import { generateBlockedUserQuery } from "@/server/api/common/generate-block-query.js"; export const meta = { tags: ["notes"], diff --git a/packages/backend/src/server/api/endpoints/notes/global-timeline.ts b/packages/backend/src/server/api/endpoints/notes/global-timeline.ts index 0a365a6dfd..fee660ddb2 100644 --- a/packages/backend/src/server/api/endpoints/notes/global-timeline.ts +++ b/packages/backend/src/server/api/endpoints/notes/global-timeline.ts @@ -1,14 +1,14 @@ import { fetchMeta } from "@/misc/fetch-meta.js"; import { Notes } from "@/models/index.js"; import { activeUsersChart } from "@/services/chart/index.js"; -import define from "../../define.js"; -import { ApiError } from "../../error.js"; -import { makePaginationQuery } from "../../common/make-pagination-query.js"; -import { generateMutedUserQuery } from "../../common/generate-muted-user-query.js"; -import { generateRepliesQuery } from "../../common/generate-replies-query.js"; -import { generateMutedNoteQuery } from "../../common/generate-muted-note-query.js"; -import { generateBlockedUserQuery } from "../../common/generate-block-query.js"; -import { generateMutedUserRenotesQueryForNotes } from "../../common/generated-muted-renote-query.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; +import { makePaginationQuery } from "@/server/api/common/make-pagination-query.js"; +import { generateMutedUserQuery } from "@/server/api/common/generate-muted-user-query.js"; +import { generateRepliesQuery } from "@/server/api/common/generate-replies-query.js"; +import { generateMutedNoteQuery } from "@/server/api/common/generate-muted-note-query.js"; +import { generateBlockedUserQuery } from "@/server/api/common/generate-block-query.js"; +import { generateMutedUserRenotesQueryForNotes } from "@/server/api/common/generated-muted-renote-query.js"; export const meta = { tags: ["notes"], diff --git a/packages/backend/src/server/api/endpoints/notes/hybrid-timeline.ts b/packages/backend/src/server/api/endpoints/notes/hybrid-timeline.ts index 4e32b0ab29..c573a0c865 100644 --- a/packages/backend/src/server/api/endpoints/notes/hybrid-timeline.ts +++ b/packages/backend/src/server/api/endpoints/notes/hybrid-timeline.ts @@ -2,16 +2,16 @@ import { Brackets } from "typeorm"; import { fetchMeta } from "@/misc/fetch-meta.js"; import { Followings, Notes } from "@/models/index.js"; import { activeUsersChart } from "@/services/chart/index.js"; -import define from "../../define.js"; -import { ApiError } from "../../error.js"; -import { makePaginationQuery } from "../../common/make-pagination-query.js"; -import { generateVisibilityQuery } from "../../common/generate-visibility-query.js"; -import { generateMutedUserQuery } from "../../common/generate-muted-user-query.js"; -import { generateRepliesQuery } from "../../common/generate-replies-query.js"; -import { generateMutedNoteQuery } from "../../common/generate-muted-note-query.js"; -import { generateChannelQuery } from "../../common/generate-channel-query.js"; -import { generateBlockedUserQuery } from "../../common/generate-block-query.js"; -import { generateMutedUserRenotesQueryForNotes } from "../../common/generated-muted-renote-query.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; +import { makePaginationQuery } from "@/server/api/common/make-pagination-query.js"; +import { generateVisibilityQuery } from "@/server/api/common/generate-visibility-query.js"; +import { generateMutedUserQuery } from "@/server/api/common/generate-muted-user-query.js"; +import { generateRepliesQuery } from "@/server/api/common/generate-replies-query.js"; +import { generateMutedNoteQuery } from "@/server/api/common/generate-muted-note-query.js"; +import { generateChannelQuery } from "@/server/api/common/generate-channel-query.js"; +import { generateBlockedUserQuery } from "@/server/api/common/generate-block-query.js"; +import { generateMutedUserRenotesQueryForNotes } from "@/server/api/common/generated-muted-renote-query.js"; export const meta = { tags: ["notes"], diff --git a/packages/backend/src/server/api/endpoints/notes/local-timeline.ts b/packages/backend/src/server/api/endpoints/notes/local-timeline.ts index 82e93e371f..c89b8f8710 100644 --- a/packages/backend/src/server/api/endpoints/notes/local-timeline.ts +++ b/packages/backend/src/server/api/endpoints/notes/local-timeline.ts @@ -1,17 +1,17 @@ import { Brackets } from "typeorm"; import { fetchMeta } from "@/misc/fetch-meta.js"; -import { Notes, Users } from "@/models/index.js"; +import { Notes } from "@/models/index.js"; import { activeUsersChart } from "@/services/chart/index.js"; -import define from "../../define.js"; -import { ApiError } from "../../error.js"; -import { generateMutedUserQuery } from "../../common/generate-muted-user-query.js"; -import { makePaginationQuery } from "../../common/make-pagination-query.js"; -import { generateVisibilityQuery } from "../../common/generate-visibility-query.js"; -import { generateRepliesQuery } from "../../common/generate-replies-query.js"; -import { generateMutedNoteQuery } from "../../common/generate-muted-note-query.js"; -import { generateChannelQuery } from "../../common/generate-channel-query.js"; -import { generateBlockedUserQuery } from "../../common/generate-block-query.js"; -import { generateMutedUserRenotesQueryForNotes } from "../../common/generated-muted-renote-query.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; +import { generateMutedUserQuery } from "@/server/api/common/generate-muted-user-query.js"; +import { makePaginationQuery } from "@/server/api/common/make-pagination-query.js"; +import { generateVisibilityQuery } from "@/server/api/common/generate-visibility-query.js"; +import { generateRepliesQuery } from "@/server/api/common/generate-replies-query.js"; +import { generateMutedNoteQuery } from "@/server/api/common/generate-muted-note-query.js"; +import { generateChannelQuery } from "@/server/api/common/generate-channel-query.js"; +import { generateBlockedUserQuery } from "@/server/api/common/generate-block-query.js"; +import { generateMutedUserRenotesQueryForNotes } from "@/server/api/common/generated-muted-renote-query.js"; export const meta = { tags: ["notes"], diff --git a/packages/backend/src/server/api/endpoints/notes/mentions.ts b/packages/backend/src/server/api/endpoints/notes/mentions.ts index 68688b504c..44ee90938b 100644 --- a/packages/backend/src/server/api/endpoints/notes/mentions.ts +++ b/packages/backend/src/server/api/endpoints/notes/mentions.ts @@ -1,12 +1,12 @@ import { Brackets } from "typeorm"; import read from "@/services/note/read.js"; import { Notes, Followings } from "@/models/index.js"; -import define from "../../define.js"; -import { generateVisibilityQuery } from "../../common/generate-visibility-query.js"; -import { generateMutedUserQuery } from "../../common/generate-muted-user-query.js"; -import { makePaginationQuery } from "../../common/make-pagination-query.js"; -import { generateBlockedUserQuery } from "../../common/generate-block-query.js"; -import { generateMutedNoteThreadQuery } from "../../common/generate-muted-note-thread-query.js"; +import define from "@/server/api/define.js"; +import { generateVisibilityQuery } from "@/server/api/common/generate-visibility-query.js"; +import { generateMutedUserQuery } from "@/server/api/common/generate-muted-user-query.js"; +import { makePaginationQuery } from "@/server/api/common/make-pagination-query.js"; +import { generateBlockedUserQuery } from "@/server/api/common/generate-block-query.js"; +import { generateMutedNoteThreadQuery } from "@/server/api/common/generate-muted-note-thread-query.js"; export const meta = { tags: ["notes"], diff --git a/packages/backend/src/server/api/endpoints/notes/polls/recommendation.ts b/packages/backend/src/server/api/endpoints/notes/polls/recommendation.ts index fcd24db992..ca0d0f03dd 100644 --- a/packages/backend/src/server/api/endpoints/notes/polls/recommendation.ts +++ b/packages/backend/src/server/api/endpoints/notes/polls/recommendation.ts @@ -1,6 +1,6 @@ import { Brackets, In } from "typeorm"; import { Polls, Mutings, Notes, PollVotes } from "@/models/index.js"; -import define from "../../../define.js"; +import define from "@/server/api/define.js"; export const meta = { tags: ["notes"], diff --git a/packages/backend/src/server/api/endpoints/notes/polls/vote.ts b/packages/backend/src/server/api/endpoints/notes/polls/vote.ts index 40535d3401..1680eca640 100644 --- a/packages/backend/src/server/api/endpoints/notes/polls/vote.ts +++ b/packages/backend/src/server/api/endpoints/notes/polls/vote.ts @@ -13,9 +13,9 @@ import { } from "@/models/index.js"; import type { IRemoteUser } from "@/models/entities/user.js"; import { genId } from "@/misc/gen-id.js"; -import { getNote } from "../../../common/getters.js"; -import { ApiError } from "../../../error.js"; -import define from "../../../define.js"; +import { getNote } from "@/server/api/common/getters.js"; +import { ApiError } from "@/server/api/error.js"; +import define from "@/server/api/define.js"; export const meta = { tags: ["notes"], diff --git a/packages/backend/src/server/api/endpoints/notes/reactions.ts b/packages/backend/src/server/api/endpoints/notes/reactions.ts index 3c8af119ab..386a3a08df 100644 --- a/packages/backend/src/server/api/endpoints/notes/reactions.ts +++ b/packages/backend/src/server/api/endpoints/notes/reactions.ts @@ -1,10 +1,9 @@ import type { FindOptionsWhere } from "typeorm"; -import { DeepPartial } from "typeorm"; import { NoteReactions } from "@/models/index.js"; import type { NoteReaction } from "@/models/entities/note-reaction.js"; -import define from "../../define.js"; -import { ApiError } from "../../error.js"; -import { getNote } from "../../common/getters.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; +import { getNote } from "@/server/api/common/getters.js"; export const meta = { tags: ["notes", "reactions"], diff --git a/packages/backend/src/server/api/endpoints/notes/reactions/create.ts b/packages/backend/src/server/api/endpoints/notes/reactions/create.ts index 2c8671070f..c49a957da1 100644 --- a/packages/backend/src/server/api/endpoints/notes/reactions/create.ts +++ b/packages/backend/src/server/api/endpoints/notes/reactions/create.ts @@ -1,7 +1,7 @@ import createReaction from "@/services/note/reaction/create.js"; -import define from "../../../define.js"; -import { getNote } from "../../../common/getters.js"; -import { ApiError } from "../../../error.js"; +import define from "@/server/api/define.js"; +import { getNote } from "@/server/api/common/getters.js"; +import { ApiError } from "@/server/api/error.js"; export const meta = { tags: ["reactions", "notes"], diff --git a/packages/backend/src/server/api/endpoints/notes/reactions/delete.ts b/packages/backend/src/server/api/endpoints/notes/reactions/delete.ts index 59096c4c88..f135bd7ffa 100644 --- a/packages/backend/src/server/api/endpoints/notes/reactions/delete.ts +++ b/packages/backend/src/server/api/endpoints/notes/reactions/delete.ts @@ -1,7 +1,7 @@ import deleteReaction from "@/services/note/reaction/delete.js"; -import define from "../../../define.js"; -import { getNote } from "../../../common/getters.js"; -import { ApiError } from "../../../error.js"; +import define from "@/server/api/define.js"; +import { getNote } from "@/server/api/common/getters.js"; +import { ApiError } from "@/server/api/error.js"; import { SECOND, HOUR } from "@/const.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/notes/recommended-timeline.ts b/packages/backend/src/server/api/endpoints/notes/recommended-timeline.ts index d3b5cbff50..53ac1288a8 100644 --- a/packages/backend/src/server/api/endpoints/notes/recommended-timeline.ts +++ b/packages/backend/src/server/api/endpoints/notes/recommended-timeline.ts @@ -2,16 +2,16 @@ import { Brackets } from "typeorm"; import { fetchMeta } from "@/misc/fetch-meta.js"; import { Notes } from "@/models/index.js"; import { activeUsersChart } from "@/services/chart/index.js"; -import define from "../../define.js"; -import { ApiError } from "../../error.js"; -import { generateMutedUserQuery } from "../../common/generate-muted-user-query.js"; -import { makePaginationQuery } from "../../common/make-pagination-query.js"; -import { generateVisibilityQuery } from "../../common/generate-visibility-query.js"; -import { generateRepliesQuery } from "../../common/generate-replies-query.js"; -import { generateMutedNoteQuery } from "../../common/generate-muted-note-query.js"; -import { generateChannelQuery } from "../../common/generate-channel-query.js"; -import { generateBlockedUserQuery } from "../../common/generate-block-query.js"; -import { generateMutedUserRenotesQueryForNotes } from "../../common/generated-muted-renote-query.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; +import { generateMutedUserQuery } from "@/server/api/common/generate-muted-user-query.js"; +import { makePaginationQuery } from "@/server/api/common/make-pagination-query.js"; +import { generateVisibilityQuery } from "@/server/api/common/generate-visibility-query.js"; +import { generateRepliesQuery } from "@/server/api/common/generate-replies-query.js"; +import { generateMutedNoteQuery } from "@/server/api/common/generate-muted-note-query.js"; +import { generateChannelQuery } from "@/server/api/common/generate-channel-query.js"; +import { generateBlockedUserQuery } from "@/server/api/common/generate-block-query.js"; +import { generateMutedUserRenotesQueryForNotes } from "@/server/api/common/generated-muted-renote-query.js"; export const meta = { tags: ["notes"], diff --git a/packages/backend/src/server/api/endpoints/notes/renotes.ts b/packages/backend/src/server/api/endpoints/notes/renotes.ts index df801c7fc4..683004ebe8 100644 --- a/packages/backend/src/server/api/endpoints/notes/renotes.ts +++ b/packages/backend/src/server/api/endpoints/notes/renotes.ts @@ -1,11 +1,11 @@ import { Notes } from "@/models/index.js"; -import define from "../../define.js"; -import { getNote } from "../../common/getters.js"; -import { ApiError } from "../../error.js"; -import { generateVisibilityQuery } from "../../common/generate-visibility-query.js"; -import { generateMutedUserQuery } from "../../common/generate-muted-user-query.js"; -import { makePaginationQuery } from "../../common/make-pagination-query.js"; -import { generateBlockedUserQuery } from "../../common/generate-block-query.js"; +import define from "@/server/api/define.js"; +import { getNote } from "@/server/api/common/getters.js"; +import { ApiError } from "@/server/api/error.js"; +import { generateVisibilityQuery } from "@/server/api/common/generate-visibility-query.js"; +import { generateMutedUserQuery } from "@/server/api/common/generate-muted-user-query.js"; +import { makePaginationQuery } from "@/server/api/common/make-pagination-query.js"; +import { generateBlockedUserQuery } from "@/server/api/common/generate-block-query.js"; export const meta = { tags: ["notes"], diff --git a/packages/backend/src/server/api/endpoints/notes/replies.ts b/packages/backend/src/server/api/endpoints/notes/replies.ts index 5ea4d479c5..e4341ebce0 100644 --- a/packages/backend/src/server/api/endpoints/notes/replies.ts +++ b/packages/backend/src/server/api/endpoints/notes/replies.ts @@ -1,9 +1,9 @@ import { Notes } from "@/models/index.js"; -import define from "../../define.js"; -import { makePaginationQuery } from "../../common/make-pagination-query.js"; -import { generateVisibilityQuery } from "../../common/generate-visibility-query.js"; -import { generateMutedUserQuery } from "../../common/generate-muted-user-query.js"; -import { generateBlockedUserQuery } from "../../common/generate-block-query.js"; +import define from "@/server/api/define.js"; +import { makePaginationQuery } from "@/server/api/common/make-pagination-query.js"; +import { generateVisibilityQuery } from "@/server/api/common/generate-visibility-query.js"; +import { generateMutedUserQuery } from "@/server/api/common/generate-muted-user-query.js"; +import { generateBlockedUserQuery } from "@/server/api/common/generate-block-query.js"; export const meta = { tags: ["notes"], diff --git a/packages/backend/src/server/api/endpoints/notes/search-by-tag.ts b/packages/backend/src/server/api/endpoints/notes/search-by-tag.ts index f988acaa51..e87725e342 100644 --- a/packages/backend/src/server/api/endpoints/notes/search-by-tag.ts +++ b/packages/backend/src/server/api/endpoints/notes/search-by-tag.ts @@ -2,11 +2,11 @@ import { Brackets } from "typeorm"; import { Notes } from "@/models/index.js"; import { safeForSql } from "@/misc/safe-for-sql.js"; import { normalizeForSearch } from "@/misc/normalize-for-search.js"; -import define from "../../define.js"; -import { makePaginationQuery } from "../../common/make-pagination-query.js"; -import { generateMutedUserQuery } from "../../common/generate-muted-user-query.js"; -import { generateVisibilityQuery } from "../../common/generate-visibility-query.js"; -import { generateBlockedUserQuery } from "../../common/generate-block-query.js"; +import define from "@/server/api/define.js"; +import { makePaginationQuery } from "@/server/api/common/make-pagination-query.js"; +import { generateMutedUserQuery } from "@/server/api/common/generate-muted-user-query.js"; +import { generateVisibilityQuery } from "@/server/api/common/generate-visibility-query.js"; +import { generateBlockedUserQuery } from "@/server/api/common/generate-block-query.js"; export const meta = { tags: ["notes", "hashtags"], diff --git a/packages/backend/src/server/api/endpoints/notes/search.ts b/packages/backend/src/server/api/endpoints/notes/search.ts index 8143c8bf03..4ddcf11abf 100644 --- a/packages/backend/src/server/api/endpoints/notes/search.ts +++ b/packages/backend/src/server/api/endpoints/notes/search.ts @@ -5,11 +5,11 @@ import config from "@/config/index.js"; import es from "@/db/elasticsearch.js"; import sonic from "@/db/sonic.js"; import meilisearch, { MeilisearchNote } from "@/db/meilisearch.js"; -import define from "../../define.js"; -import { makePaginationQuery } from "../../common/make-pagination-query.js"; -import { generateVisibilityQuery } from "../../common/generate-visibility-query.js"; -import { generateMutedUserQuery } from "../../common/generate-muted-user-query.js"; -import { generateBlockedUserQuery } from "../../common/generate-block-query.js"; +import define from "@/server/api/define.js"; +import { makePaginationQuery } from "@/server/api/common/make-pagination-query.js"; +import { generateVisibilityQuery } from "@/server/api/common/generate-visibility-query.js"; +import { generateMutedUserQuery } from "@/server/api/common/generate-muted-user-query.js"; +import { generateBlockedUserQuery } from "@/server/api/common/generate-block-query.js"; import { sqlLikeEscape } from "@/misc/sql-like-escape.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/notes/show.ts b/packages/backend/src/server/api/endpoints/notes/show.ts index 8c5f91c5c1..1319e47d93 100644 --- a/packages/backend/src/server/api/endpoints/notes/show.ts +++ b/packages/backend/src/server/api/endpoints/notes/show.ts @@ -1,7 +1,7 @@ import { Notes } from "@/models/index.js"; -import define from "../../define.js"; -import { getNote } from "../../common/getters.js"; -import { ApiError } from "../../error.js"; +import define from "@/server/api/define.js"; +import { getNote } from "@/server/api/common/getters.js"; +import { ApiError } from "@/server/api/error.js"; export const meta = { tags: ["notes"], diff --git a/packages/backend/src/server/api/endpoints/notes/state.ts b/packages/backend/src/server/api/endpoints/notes/state.ts index 630b2a8007..b14e6842d1 100644 --- a/packages/backend/src/server/api/endpoints/notes/state.ts +++ b/packages/backend/src/server/api/endpoints/notes/state.ts @@ -1,11 +1,10 @@ import { NoteFavorites, - Notes, NoteThreadMutings, NoteWatchings, } from "@/models/index.js"; -import { getNote } from "../../common/getters.js"; -import define from "../../define.js"; +import { getNote } from "@/server/api/common/getters.js"; +import define from "@/server/api/define.js"; export const meta = { tags: ["notes"], diff --git a/packages/backend/src/server/api/endpoints/notes/thread-muting/create.ts b/packages/backend/src/server/api/endpoints/notes/thread-muting/create.ts index e4803cc291..7c40a45923 100644 --- a/packages/backend/src/server/api/endpoints/notes/thread-muting/create.ts +++ b/packages/backend/src/server/api/endpoints/notes/thread-muting/create.ts @@ -1,9 +1,9 @@ import { Notes, NoteThreadMutings } from "@/models/index.js"; import { genId } from "@/misc/gen-id.js"; import readNote from "@/services/note/read.js"; -import define from "../../../define.js"; -import { getNote } from "../../../common/getters.js"; -import { ApiError } from "../../../error.js"; +import define from "@/server/api/define.js"; +import { getNote } from "@/server/api/common/getters.js"; +import { ApiError } from "@/server/api/error.js"; export const meta = { tags: ["notes"], diff --git a/packages/backend/src/server/api/endpoints/notes/thread-muting/delete.ts b/packages/backend/src/server/api/endpoints/notes/thread-muting/delete.ts index c06fd59ba5..62766bedc6 100644 --- a/packages/backend/src/server/api/endpoints/notes/thread-muting/delete.ts +++ b/packages/backend/src/server/api/endpoints/notes/thread-muting/delete.ts @@ -1,7 +1,7 @@ import { NoteThreadMutings } from "@/models/index.js"; -import define from "../../../define.js"; -import { getNote } from "../../../common/getters.js"; -import { ApiError } from "../../../error.js"; +import define from "@/server/api/define.js"; +import { getNote } from "@/server/api/common/getters.js"; +import { ApiError } from "@/server/api/error.js"; export const meta = { tags: ["notes"], diff --git a/packages/backend/src/server/api/endpoints/notes/timeline.ts b/packages/backend/src/server/api/endpoints/notes/timeline.ts index 56243977f8..0f8da62e2d 100644 --- a/packages/backend/src/server/api/endpoints/notes/timeline.ts +++ b/packages/backend/src/server/api/endpoints/notes/timeline.ts @@ -1,16 +1,16 @@ import { Brackets } from "typeorm"; import { Notes, Followings } from "@/models/index.js"; import { activeUsersChart } from "@/services/chart/index.js"; -import define from "../../define.js"; -import { makePaginationQuery } from "../../common/make-pagination-query.js"; -import { generateVisibilityQuery } from "../../common/generate-visibility-query.js"; -import { generateMutedUserQuery } from "../../common/generate-muted-user-query.js"; -import { generateRepliesQuery } from "../../common/generate-replies-query.js"; -import { generateMutedNoteQuery } from "../../common/generate-muted-note-query.js"; -import { generateChannelQuery } from "../../common/generate-channel-query.js"; -import { generateBlockedUserQuery } from "../../common/generate-block-query.js"; -import { generateMutedUserRenotesQueryForNotes } from "../../common/generated-muted-renote-query.js"; -import { ApiError } from "../../error.js"; +import define from "@/server/api/define.js"; +import { makePaginationQuery } from "@/server/api/common/make-pagination-query.js"; +import { generateVisibilityQuery } from "@/server/api/common/generate-visibility-query.js"; +import { generateMutedUserQuery } from "@/server/api/common/generate-muted-user-query.js"; +import { generateRepliesQuery } from "@/server/api/common/generate-replies-query.js"; +import { generateMutedNoteQuery } from "@/server/api/common/generate-muted-note-query.js"; +import { generateChannelQuery } from "@/server/api/common/generate-channel-query.js"; +import { generateBlockedUserQuery } from "@/server/api/common/generate-block-query.js"; +import { generateMutedUserRenotesQueryForNotes } from "@/server/api/common/generated-muted-renote-query.js"; +import { ApiError } from "@/server/api/error.js"; export const meta = { tags: ["notes"], diff --git a/packages/backend/src/server/api/endpoints/notes/translate.ts b/packages/backend/src/server/api/endpoints/notes/translate.ts index d46a819344..d1de399936 100644 --- a/packages/backend/src/server/api/endpoints/notes/translate.ts +++ b/packages/backend/src/server/api/endpoints/notes/translate.ts @@ -4,9 +4,9 @@ import config from "@/config/index.js"; import { Converter } from "opencc-js"; import { getAgentByUrl } from "@/misc/fetch.js"; import { fetchMeta } from "@/misc/fetch-meta.js"; -import { ApiError } from "../../error.js"; -import { getNote } from "../../common/getters.js"; -import define from "../../define.js"; +import { ApiError } from "@/server/api/error.js"; +import { getNote } from "@/server/api/common/getters.js"; +import define from "@/server/api/define.js"; export const meta = { tags: ["notes"], diff --git a/packages/backend/src/server/api/endpoints/notes/unrenote.ts b/packages/backend/src/server/api/endpoints/notes/unrenote.ts index a30a19f190..4a3966123e 100644 --- a/packages/backend/src/server/api/endpoints/notes/unrenote.ts +++ b/packages/backend/src/server/api/endpoints/notes/unrenote.ts @@ -1,8 +1,8 @@ import deleteNote from "@/services/note/delete.js"; import { Notes, Users } from "@/models/index.js"; -import define from "../../define.js"; -import { getNote } from "../../common/getters.js"; -import { ApiError } from "../../error.js"; +import define from "@/server/api/define.js"; +import { getNote } from "@/server/api/common/getters.js"; +import { ApiError } from "@/server/api/error.js"; import { SECOND, HOUR } from "@/const.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/notes/user-list-timeline.ts b/packages/backend/src/server/api/endpoints/notes/user-list-timeline.ts index 5c3fc55bef..3a87ed647c 100644 --- a/packages/backend/src/server/api/endpoints/notes/user-list-timeline.ts +++ b/packages/backend/src/server/api/endpoints/notes/user-list-timeline.ts @@ -1,10 +1,10 @@ import { Brackets } from "typeorm"; import { UserLists, UserListJoinings, Notes } from "@/models/index.js"; import { activeUsersChart } from "@/services/chart/index.js"; -import define from "../../define.js"; -import { ApiError } from "../../error.js"; -import { makePaginationQuery } from "../../common/make-pagination-query.js"; -import { generateVisibilityQuery } from "../../common/generate-visibility-query.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; +import { makePaginationQuery } from "@/server/api/common/make-pagination-query.js"; +import { generateVisibilityQuery } from "@/server/api/common/generate-visibility-query.js"; export const meta = { tags: ["notes", "lists"], diff --git a/packages/backend/src/server/api/endpoints/notes/watching/create.ts b/packages/backend/src/server/api/endpoints/notes/watching/create.ts index f8921099a1..ec13f5aa2a 100644 --- a/packages/backend/src/server/api/endpoints/notes/watching/create.ts +++ b/packages/backend/src/server/api/endpoints/notes/watching/create.ts @@ -1,7 +1,7 @@ import watch from "@/services/note/watch.js"; -import define from "../../../define.js"; -import { getNote } from "../../../common/getters.js"; -import { ApiError } from "../../../error.js"; +import define from "@/server/api/define.js"; +import { getNote } from "@/server/api/common/getters.js"; +import { ApiError } from "@/server/api/error.js"; export const meta = { tags: ["notes"], diff --git a/packages/backend/src/server/api/endpoints/notes/watching/delete.ts b/packages/backend/src/server/api/endpoints/notes/watching/delete.ts index b441ad74b9..18994fa80c 100644 --- a/packages/backend/src/server/api/endpoints/notes/watching/delete.ts +++ b/packages/backend/src/server/api/endpoints/notes/watching/delete.ts @@ -1,7 +1,7 @@ import unwatch from "@/services/note/unwatch.js"; -import define from "../../../define.js"; -import { getNote } from "../../../common/getters.js"; -import { ApiError } from "../../../error.js"; +import define from "@/server/api/define.js"; +import { getNote } from "@/server/api/common/getters.js"; +import { ApiError } from "@/server/api/error.js"; export const meta = { tags: ["notes"], diff --git a/packages/backend/src/server/api/endpoints/notifications/create.ts b/packages/backend/src/server/api/endpoints/notifications/create.ts index bc5723369c..2077cceba4 100644 --- a/packages/backend/src/server/api/endpoints/notifications/create.ts +++ b/packages/backend/src/server/api/endpoints/notifications/create.ts @@ -1,5 +1,5 @@ import { createNotification } from "@/services/create-notification.js"; -import define from "../../define.js"; +import define from "@/server/api/define.js"; export const meta = { tags: ["notifications"], diff --git a/packages/backend/src/server/api/endpoints/notifications/mark-all-as-read.ts b/packages/backend/src/server/api/endpoints/notifications/mark-all-as-read.ts index e0888ad752..568036380a 100644 --- a/packages/backend/src/server/api/endpoints/notifications/mark-all-as-read.ts +++ b/packages/backend/src/server/api/endpoints/notifications/mark-all-as-read.ts @@ -1,7 +1,7 @@ import { publishMainStream } from "@/services/stream.js"; import { pushNotification } from "@/services/push-notification.js"; import { Notifications } from "@/models/index.js"; -import define from "../../define.js"; +import define from "@/server/api/define.js"; export const meta = { tags: ["notifications", "account"], diff --git a/packages/backend/src/server/api/endpoints/notifications/read.ts b/packages/backend/src/server/api/endpoints/notifications/read.ts index 9efb2fcc0b..358ca062fe 100644 --- a/packages/backend/src/server/api/endpoints/notifications/read.ts +++ b/packages/backend/src/server/api/endpoints/notifications/read.ts @@ -1,5 +1,5 @@ -import define from "../../define.js"; -import { readNotification } from "../../common/read-notification.js"; +import define from "@/server/api/define.js"; +import { readNotification } from "@/server/api/common/read-notification.js"; export const meta = { tags: ["notifications", "account"], diff --git a/packages/backend/src/server/api/endpoints/page-push.ts b/packages/backend/src/server/api/endpoints/page-push.ts index a0f1e912fc..1f87372d61 100644 --- a/packages/backend/src/server/api/endpoints/page-push.ts +++ b/packages/backend/src/server/api/endpoints/page-push.ts @@ -1,7 +1,7 @@ import { publishMainStream } from "@/services/stream.js"; import { Users, Pages } from "@/models/index.js"; -import define from "../define.js"; -import { ApiError } from "../error.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; export const meta = { requireCredential: true, diff --git a/packages/backend/src/server/api/endpoints/pages/create.ts b/packages/backend/src/server/api/endpoints/pages/create.ts index 716d3265cc..ea0f8ba83e 100644 --- a/packages/backend/src/server/api/endpoints/pages/create.ts +++ b/packages/backend/src/server/api/endpoints/pages/create.ts @@ -1,8 +1,8 @@ import { Pages, DriveFiles } from "@/models/index.js"; import { genId } from "@/misc/gen-id.js"; import { Page } from "@/models/entities/page.js"; -import define from "../../define.js"; -import { ApiError } from "../../error.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; import { HOUR } from "@/const.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/pages/delete.ts b/packages/backend/src/server/api/endpoints/pages/delete.ts index 98b035f7c7..85688d9b4f 100644 --- a/packages/backend/src/server/api/endpoints/pages/delete.ts +++ b/packages/backend/src/server/api/endpoints/pages/delete.ts @@ -1,6 +1,6 @@ import { Pages } from "@/models/index.js"; -import define from "../../define.js"; -import { ApiError } from "../../error.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; export const meta = { tags: ["pages"], diff --git a/packages/backend/src/server/api/endpoints/pages/featured.ts b/packages/backend/src/server/api/endpoints/pages/featured.ts index a763465897..c3ff1f57f8 100644 --- a/packages/backend/src/server/api/endpoints/pages/featured.ts +++ b/packages/backend/src/server/api/endpoints/pages/featured.ts @@ -1,5 +1,5 @@ import { Pages } from "@/models/index.js"; -import define from "../../define.js"; +import define from "@/server/api/define.js"; export const meta = { tags: ["pages"], diff --git a/packages/backend/src/server/api/endpoints/pages/like.ts b/packages/backend/src/server/api/endpoints/pages/like.ts index 03482c9616..ab64b9b93e 100644 --- a/packages/backend/src/server/api/endpoints/pages/like.ts +++ b/packages/backend/src/server/api/endpoints/pages/like.ts @@ -1,7 +1,7 @@ import { Pages, PageLikes } from "@/models/index.js"; import { genId } from "@/misc/gen-id.js"; -import define from "../../define.js"; -import { ApiError } from "../../error.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; export const meta = { tags: ["pages"], diff --git a/packages/backend/src/server/api/endpoints/pages/show.ts b/packages/backend/src/server/api/endpoints/pages/show.ts index a25eb30b6d..ac347cf139 100644 --- a/packages/backend/src/server/api/endpoints/pages/show.ts +++ b/packages/backend/src/server/api/endpoints/pages/show.ts @@ -1,8 +1,8 @@ import { IsNull } from "typeorm"; import { Pages, Users } from "@/models/index.js"; import type { Page } from "@/models/entities/page.js"; -import define from "../../define.js"; -import { ApiError } from "../../error.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; export const meta = { tags: ["pages"], diff --git a/packages/backend/src/server/api/endpoints/pages/unlike.ts b/packages/backend/src/server/api/endpoints/pages/unlike.ts index e607d7a546..428f984582 100644 --- a/packages/backend/src/server/api/endpoints/pages/unlike.ts +++ b/packages/backend/src/server/api/endpoints/pages/unlike.ts @@ -1,6 +1,6 @@ import { Pages, PageLikes } from "@/models/index.js"; -import define from "../../define.js"; -import { ApiError } from "../../error.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; export const meta = { tags: ["pages"], diff --git a/packages/backend/src/server/api/endpoints/pages/update.ts b/packages/backend/src/server/api/endpoints/pages/update.ts index 65e1b3b2d2..5f434d02e1 100644 --- a/packages/backend/src/server/api/endpoints/pages/update.ts +++ b/packages/backend/src/server/api/endpoints/pages/update.ts @@ -1,7 +1,7 @@ import { Not } from "typeorm"; import { Pages, DriveFiles } from "@/models/index.js"; -import define from "../../define.js"; -import { ApiError } from "../../error.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; import { HOUR } from "@/const.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/patrons.ts b/packages/backend/src/server/api/endpoints/patrons.ts index d4793e1b94..12a41742b0 100644 --- a/packages/backend/src/server/api/endpoints/patrons.ts +++ b/packages/backend/src/server/api/endpoints/patrons.ts @@ -1,4 +1,4 @@ -import define from "../define.js"; +import define from "@/server/api/define.js"; import { redisClient } from "@/db/redis.js"; import * as fs from "node:fs"; import { fileURLToPath } from "node:url"; diff --git a/packages/backend/src/server/api/endpoints/ping.ts b/packages/backend/src/server/api/endpoints/ping.ts index c1f7e110bc..7b45edad13 100644 --- a/packages/backend/src/server/api/endpoints/ping.ts +++ b/packages/backend/src/server/api/endpoints/ping.ts @@ -1,4 +1,4 @@ -import define from "../define.js"; +import define from "@/server/api/define.js"; export const meta = { requireCredential: false, diff --git a/packages/backend/src/server/api/endpoints/pinned-users.ts b/packages/backend/src/server/api/endpoints/pinned-users.ts index 22020068ce..b327378700 100644 --- a/packages/backend/src/server/api/endpoints/pinned-users.ts +++ b/packages/backend/src/server/api/endpoints/pinned-users.ts @@ -3,7 +3,7 @@ import { Users } from "@/models/index.js"; import { fetchMeta } from "@/misc/fetch-meta.js"; import * as Acct from "@/misc/acct.js"; import type { User } from "@/models/entities/user.js"; -import define from "../define.js"; +import define from "@/server/api/define.js"; export const meta = { tags: ["users"], diff --git a/packages/backend/src/server/api/endpoints/promo/read.ts b/packages/backend/src/server/api/endpoints/promo/read.ts index 5310382a43..4b41467906 100644 --- a/packages/backend/src/server/api/endpoints/promo/read.ts +++ b/packages/backend/src/server/api/endpoints/promo/read.ts @@ -1,8 +1,8 @@ import { PromoReads } from "@/models/index.js"; import { genId } from "@/misc/gen-id.js"; -import define from "../../define.js"; -import { ApiError } from "../../error.js"; -import { getNote } from "../../common/getters.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; +import { getNote } from "@/server/api/common/getters.js"; export const meta = { tags: ["notes"], diff --git a/packages/backend/src/server/api/endpoints/recommended-instances.ts b/packages/backend/src/server/api/endpoints/recommended-instances.ts index 8407afb1d3..b235678428 100644 --- a/packages/backend/src/server/api/endpoints/recommended-instances.ts +++ b/packages/backend/src/server/api/endpoints/recommended-instances.ts @@ -1,6 +1,6 @@ // import { IsNull } from 'typeorm'; import { fetchMeta } from "@/misc/fetch-meta.js"; -import define from "../define.js"; +import define from "@/server/api/define.js"; export const meta = { tags: ["meta"], diff --git a/packages/backend/src/server/api/endpoints/release.ts b/packages/backend/src/server/api/endpoints/release.ts index bce1bc082c..1314e90365 100644 --- a/packages/backend/src/server/api/endpoints/release.ts +++ b/packages/backend/src/server/api/endpoints/release.ts @@ -1,4 +1,4 @@ -import define from "../define.js"; +import define from "@/server/api/define.js"; export const meta = { tags: ["meta"], diff --git a/packages/backend/src/server/api/endpoints/renote-mute/create.ts b/packages/backend/src/server/api/endpoints/renote-mute/create.ts index f09f197c01..afe23f38da 100644 --- a/packages/backend/src/server/api/endpoints/renote-mute/create.ts +++ b/packages/backend/src/server/api/endpoints/renote-mute/create.ts @@ -1,9 +1,9 @@ import { genId } from "@/misc/gen-id.js"; import { RenoteMutings } from "@/models/index.js"; import { RenoteMuting } from "@/models/entities/renote-muting.js"; -import define from "../../define.js"; -import { ApiError } from "../../error.js"; -import { getUser } from "../../common/getters.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; +import { getUser } from "@/server/api/common/getters.js"; export const meta = { tags: ["account"], diff --git a/packages/backend/src/server/api/endpoints/renote-mute/delete.ts b/packages/backend/src/server/api/endpoints/renote-mute/delete.ts index 7a898141c3..6a824881b0 100644 --- a/packages/backend/src/server/api/endpoints/renote-mute/delete.ts +++ b/packages/backend/src/server/api/endpoints/renote-mute/delete.ts @@ -1,7 +1,7 @@ import { RenoteMutings } from "@/models/index.js"; -import define from "../../define.js"; -import { ApiError } from "../../error.js"; -import { getUser } from "../../common/getters.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; +import { getUser } from "@/server/api/common/getters.js"; export const meta = { tags: ["account"], diff --git a/packages/backend/src/server/api/endpoints/renote-mute/list.ts b/packages/backend/src/server/api/endpoints/renote-mute/list.ts index 9149dd9753..b19452714d 100644 --- a/packages/backend/src/server/api/endpoints/renote-mute/list.ts +++ b/packages/backend/src/server/api/endpoints/renote-mute/list.ts @@ -1,6 +1,6 @@ import { RenoteMutings } from "@/models/index.js"; -import define from "../../define.js"; -import { makePaginationQuery } from "../../common/make-pagination-query.js"; +import define from "@/server/api/define.js"; +import { makePaginationQuery } from "@/server/api/common/make-pagination-query.js"; export const meta = { tags: ["account"], diff --git a/packages/backend/src/server/api/endpoints/request-reset-password.ts b/packages/backend/src/server/api/endpoints/request-reset-password.ts index bac564c1d6..3c78058af2 100644 --- a/packages/backend/src/server/api/endpoints/request-reset-password.ts +++ b/packages/backend/src/server/api/endpoints/request-reset-password.ts @@ -1,12 +1,10 @@ import rndstr from "rndstr"; import { IsNull } from "typeorm"; -import { publishMainStream } from "@/services/stream.js"; import config from "@/config/index.js"; import { Users, UserProfiles, PasswordResetRequests } from "@/models/index.js"; import { sendEmail } from "@/services/send-email.js"; import { genId } from "@/misc/gen-id.js"; -import { ApiError } from "../error.js"; -import define from "../define.js"; +import define from "@/server/api/define.js"; import { HOUR } from "@/const.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/reset-db.ts b/packages/backend/src/server/api/endpoints/reset-db.ts index c64db7bca8..daba09b8e5 100644 --- a/packages/backend/src/server/api/endpoints/reset-db.ts +++ b/packages/backend/src/server/api/endpoints/reset-db.ts @@ -1,6 +1,5 @@ import { resetDb } from "@/db/postgre.js"; -import define from "../define.js"; -import { ApiError } from "../error.js"; +import define from "@/server/api/define.js"; export const meta = { tags: ["non-productive"], diff --git a/packages/backend/src/server/api/endpoints/reset-password.ts b/packages/backend/src/server/api/endpoints/reset-password.ts index f695ae41f1..ff5c8d987f 100644 --- a/packages/backend/src/server/api/endpoints/reset-password.ts +++ b/packages/backend/src/server/api/endpoints/reset-password.ts @@ -1,7 +1,5 @@ -import { publishMainStream } from "@/services/stream.js"; -import { Users, UserProfiles, PasswordResetRequests } from "@/models/index.js"; -import define from "../define.js"; -import { ApiError } from "../error.js"; +import { UserProfiles, PasswordResetRequests } from "@/models/index.js"; +import define from "@/server/api/define.js"; import { hashPassword } from "@/misc/password.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/server-info.ts b/packages/backend/src/server/api/endpoints/server-info.ts index 87132758fe..ff3bfcd100 100644 --- a/packages/backend/src/server/api/endpoints/server-info.ts +++ b/packages/backend/src/server/api/endpoints/server-info.ts @@ -1,6 +1,6 @@ import * as os from "node:os"; import si from "systeminformation"; -import define from "../define.js"; +import define from "@/server/api/define.js"; import meilisearch from "@/db/meilisearch.js"; import { fetchMeta } from "@/misc/fetch-meta.js"; diff --git a/packages/backend/src/server/api/endpoints/stats.ts b/packages/backend/src/server/api/endpoints/stats.ts index 97889c42ed..e50305c692 100644 --- a/packages/backend/src/server/api/endpoints/stats.ts +++ b/packages/backend/src/server/api/endpoints/stats.ts @@ -1,7 +1,6 @@ import { Instances, NoteReactions, Notes, Users } from "@/models/index.js"; -import define from "../define.js"; +import define from "@/server/api/define.js"; import { driveChart, notesChart, usersChart } from "@/services/chart/index.js"; -import { IsNull } from "typeorm"; export const meta = { requireCredential: false, diff --git a/packages/backend/src/server/api/endpoints/sw/register.ts b/packages/backend/src/server/api/endpoints/sw/register.ts index 6268ae26d7..ee6b3bbf45 100644 --- a/packages/backend/src/server/api/endpoints/sw/register.ts +++ b/packages/backend/src/server/api/endpoints/sw/register.ts @@ -1,7 +1,7 @@ import { fetchMeta } from "@/misc/fetch-meta.js"; import { genId } from "@/misc/gen-id.js"; import { SwSubscriptions } from "@/models/index.js"; -import define from "../../define.js"; +import define from "@/server/api/define.js"; export const meta = { tags: ["account"], diff --git a/packages/backend/src/server/api/endpoints/sw/show-registration.ts b/packages/backend/src/server/api/endpoints/sw/show-registration.ts index 3ccb7de948..412179244d 100644 --- a/packages/backend/src/server/api/endpoints/sw/show-registration.ts +++ b/packages/backend/src/server/api/endpoints/sw/show-registration.ts @@ -1,5 +1,5 @@ import { SwSubscriptions } from "@/models/index.js"; -import define from "../../define.js"; +import define from "@/server/api/define.js"; export const meta = { tags: ["account"], diff --git a/packages/backend/src/server/api/endpoints/sw/unregister.ts b/packages/backend/src/server/api/endpoints/sw/unregister.ts index e2a40f51cb..d8a49cbeac 100644 --- a/packages/backend/src/server/api/endpoints/sw/unregister.ts +++ b/packages/backend/src/server/api/endpoints/sw/unregister.ts @@ -1,5 +1,5 @@ import { SwSubscriptions } from "@/models/index.js"; -import define from "../../define.js"; +import define from "@/server/api/define.js"; export const meta = { tags: ["account"], diff --git a/packages/backend/src/server/api/endpoints/sw/update-registration.ts b/packages/backend/src/server/api/endpoints/sw/update-registration.ts index 5ba53ee8a7..ece1c8449e 100644 --- a/packages/backend/src/server/api/endpoints/sw/update-registration.ts +++ b/packages/backend/src/server/api/endpoints/sw/update-registration.ts @@ -1,5 +1,5 @@ import { SwSubscriptions } from "@/models/index.js"; -import define from "../../define.js"; +import define from "@/server/api/define.js"; export const meta = { tags: ["account"], diff --git a/packages/backend/src/server/api/endpoints/test.ts b/packages/backend/src/server/api/endpoints/test.ts index 2c43c61152..f5041cfbff 100644 --- a/packages/backend/src/server/api/endpoints/test.ts +++ b/packages/backend/src/server/api/endpoints/test.ts @@ -1,4 +1,4 @@ -import define from "../define.js"; +import define from "@/server/api/define.js"; export const meta = { tags: ["non-productive"], diff --git a/packages/backend/src/server/api/endpoints/username/available.ts b/packages/backend/src/server/api/endpoints/username/available.ts index 6fa09ba369..cd634a798a 100644 --- a/packages/backend/src/server/api/endpoints/username/available.ts +++ b/packages/backend/src/server/api/endpoints/username/available.ts @@ -1,7 +1,7 @@ import { IsNull } from "typeorm"; import { Users, UsedUsernames } from "@/models/index.js"; import config from "@/config/index.js"; -import define from "../../define.js"; +import define from "@/server/api/define.js"; export const meta = { tags: ["users"], diff --git a/packages/backend/src/server/api/endpoints/users.ts b/packages/backend/src/server/api/endpoints/users.ts index f0a8670902..20371fce9f 100644 --- a/packages/backend/src/server/api/endpoints/users.ts +++ b/packages/backend/src/server/api/endpoints/users.ts @@ -1,7 +1,7 @@ import { Users } from "@/models/index.js"; -import define from "../define.js"; -import { generateMutedUserQueryForUsers } from "../common/generate-muted-user-query.js"; -import { generateBlockQueryForUsers } from "../common/generate-block-query.js"; +import define from "@/server/api/define.js"; +import { generateMutedUserQueryForUsers } from "@/server/api/common/generate-muted-user-query.js"; +import { generateBlockQueryForUsers } from "@/server/api/common/generate-block-query.js"; export const meta = { tags: ["users"], diff --git a/packages/backend/src/server/api/endpoints/users/clips.ts b/packages/backend/src/server/api/endpoints/users/clips.ts index 0dc90b8f99..132e190bb6 100644 --- a/packages/backend/src/server/api/endpoints/users/clips.ts +++ b/packages/backend/src/server/api/endpoints/users/clips.ts @@ -1,6 +1,6 @@ import { Clips } from "@/models/index.js"; -import define from "../../define.js"; -import { makePaginationQuery } from "../../common/make-pagination-query.js"; +import define from "@/server/api/define.js"; +import { makePaginationQuery } from "@/server/api/common/make-pagination-query.js"; export const meta = { tags: ["users", "clips"], diff --git a/packages/backend/src/server/api/endpoints/users/followers.ts b/packages/backend/src/server/api/endpoints/users/followers.ts index 31719bad32..f57983d4b9 100644 --- a/packages/backend/src/server/api/endpoints/users/followers.ts +++ b/packages/backend/src/server/api/endpoints/users/followers.ts @@ -1,9 +1,9 @@ import { IsNull } from "typeorm"; import { Users, Followings, UserProfiles } from "@/models/index.js"; import { toPunyNullable } from "@/misc/convert-host.js"; -import define from "../../define.js"; -import { ApiError } from "../../error.js"; -import { makePaginationQuery } from "../../common/make-pagination-query.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; +import { makePaginationQuery } from "@/server/api/common/make-pagination-query.js"; export const meta = { tags: ["users"], diff --git a/packages/backend/src/server/api/endpoints/users/following.ts b/packages/backend/src/server/api/endpoints/users/following.ts index 1c1da0e117..84eb7cccc5 100644 --- a/packages/backend/src/server/api/endpoints/users/following.ts +++ b/packages/backend/src/server/api/endpoints/users/following.ts @@ -1,9 +1,9 @@ import { IsNull } from "typeorm"; import { Users, Followings, UserProfiles } from "@/models/index.js"; import { toPunyNullable } from "@/misc/convert-host.js"; -import define from "../../define.js"; -import { ApiError } from "../../error.js"; -import { makePaginationQuery } from "../../common/make-pagination-query.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; +import { makePaginationQuery } from "@/server/api/common/make-pagination-query.js"; export const meta = { tags: ["users"], diff --git a/packages/backend/src/server/api/endpoints/users/gallery/posts.ts b/packages/backend/src/server/api/endpoints/users/gallery/posts.ts index 5d64fb4727..e2edbee86a 100644 --- a/packages/backend/src/server/api/endpoints/users/gallery/posts.ts +++ b/packages/backend/src/server/api/endpoints/users/gallery/posts.ts @@ -1,6 +1,6 @@ -import define from "../../../define.js"; +import define from "@/server/api/define.js"; import { GalleryPosts } from "@/models/index.js"; -import { makePaginationQuery } from "../../../common/make-pagination-query.js"; +import { makePaginationQuery } from "@/server/api/common/make-pagination-query.js"; export const meta = { tags: ["users", "gallery"], diff --git a/packages/backend/src/server/api/endpoints/users/get-frequently-replied-users.ts b/packages/backend/src/server/api/endpoints/users/get-frequently-replied-users.ts index 9722804c8d..0694bd6632 100644 --- a/packages/backend/src/server/api/endpoints/users/get-frequently-replied-users.ts +++ b/packages/backend/src/server/api/endpoints/users/get-frequently-replied-users.ts @@ -1,9 +1,9 @@ import { Not, In, IsNull } from "typeorm"; import { maximum } from "@/prelude/array.js"; import { Notes, Users } from "@/models/index.js"; -import define from "../../define.js"; -import { ApiError } from "../../error.js"; -import { getUser } from "../../common/getters.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; +import { getUser } from "@/server/api/common/getters.js"; export const meta = { tags: ["users"], diff --git a/packages/backend/src/server/api/endpoints/users/groups/create.ts b/packages/backend/src/server/api/endpoints/users/groups/create.ts index 76bd78c49f..1cfb223013 100644 --- a/packages/backend/src/server/api/endpoints/users/groups/create.ts +++ b/packages/backend/src/server/api/endpoints/users/groups/create.ts @@ -2,7 +2,7 @@ import { UserGroups, UserGroupJoinings } from "@/models/index.js"; import { genId } from "@/misc/gen-id.js"; import type { UserGroup } from "@/models/entities/user-group.js"; import type { UserGroupJoining } from "@/models/entities/user-group-joining.js"; -import define from "../../../define.js"; +import define from "@/server/api/define.js"; export const meta = { tags: ["groups"], diff --git a/packages/backend/src/server/api/endpoints/users/groups/delete.ts b/packages/backend/src/server/api/endpoints/users/groups/delete.ts index 81c15ad38e..93bf594f51 100644 --- a/packages/backend/src/server/api/endpoints/users/groups/delete.ts +++ b/packages/backend/src/server/api/endpoints/users/groups/delete.ts @@ -1,6 +1,6 @@ import { UserGroups } from "@/models/index.js"; -import define from "../../../define.js"; -import { ApiError } from "../../../error.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; export const meta = { tags: ["groups"], diff --git a/packages/backend/src/server/api/endpoints/users/groups/invitations/accept.ts b/packages/backend/src/server/api/endpoints/users/groups/invitations/accept.ts index 5cb3a7bad3..a483ccd184 100644 --- a/packages/backend/src/server/api/endpoints/users/groups/invitations/accept.ts +++ b/packages/backend/src/server/api/endpoints/users/groups/invitations/accept.ts @@ -1,8 +1,8 @@ import { UserGroupJoinings, UserGroupInvitations } from "@/models/index.js"; import { genId } from "@/misc/gen-id.js"; import type { UserGroupJoining } from "@/models/entities/user-group-joining.js"; -import { ApiError } from "../../../../error.js"; -import define from "../../../../define.js"; +import { ApiError } from "@/server/api/error.js"; +import define from "@/server/api/define.js"; export const meta = { tags: ["groups", "users"], diff --git a/packages/backend/src/server/api/endpoints/users/groups/invitations/reject.ts b/packages/backend/src/server/api/endpoints/users/groups/invitations/reject.ts index c04ebed23b..9d4e51cca9 100644 --- a/packages/backend/src/server/api/endpoints/users/groups/invitations/reject.ts +++ b/packages/backend/src/server/api/endpoints/users/groups/invitations/reject.ts @@ -1,6 +1,6 @@ import { UserGroupInvitations } from "@/models/index.js"; -import define from "../../../../define.js"; -import { ApiError } from "../../../../error.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; export const meta = { tags: ["groups", "users"], diff --git a/packages/backend/src/server/api/endpoints/users/groups/invite.ts b/packages/backend/src/server/api/endpoints/users/groups/invite.ts index 10cc215861..8a1e6b31ed 100644 --- a/packages/backend/src/server/api/endpoints/users/groups/invite.ts +++ b/packages/backend/src/server/api/endpoints/users/groups/invite.ts @@ -6,9 +6,9 @@ import { import { genId } from "@/misc/gen-id.js"; import type { UserGroupInvitation } from "@/models/entities/user-group-invitation.js"; import { createNotification } from "@/services/create-notification.js"; -import { getUser } from "../../../common/getters.js"; -import { ApiError } from "../../../error.js"; -import define from "../../../define.js"; +import { getUser } from "@/server/api/common/getters.js"; +import { ApiError } from "@/server/api/error.js"; +import define from "@/server/api/define.js"; export const meta = { tags: ["groups", "users"], diff --git a/packages/backend/src/server/api/endpoints/users/groups/joined.ts b/packages/backend/src/server/api/endpoints/users/groups/joined.ts index 8422cf586d..5d50b5e33c 100644 --- a/packages/backend/src/server/api/endpoints/users/groups/joined.ts +++ b/packages/backend/src/server/api/endpoints/users/groups/joined.ts @@ -1,6 +1,6 @@ import { Not, In } from "typeorm"; import { UserGroups, UserGroupJoinings } from "@/models/index.js"; -import define from "../../../define.js"; +import define from "@/server/api/define.js"; export const meta = { tags: ["groups", "account"], diff --git a/packages/backend/src/server/api/endpoints/users/groups/leave.ts b/packages/backend/src/server/api/endpoints/users/groups/leave.ts index fac0a47fc5..8165b1d988 100644 --- a/packages/backend/src/server/api/endpoints/users/groups/leave.ts +++ b/packages/backend/src/server/api/endpoints/users/groups/leave.ts @@ -1,6 +1,6 @@ import { UserGroups, UserGroupJoinings } from "@/models/index.js"; -import define from "../../../define.js"; -import { ApiError } from "../../../error.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; export const meta = { tags: ["groups", "users"], diff --git a/packages/backend/src/server/api/endpoints/users/groups/owned.ts b/packages/backend/src/server/api/endpoints/users/groups/owned.ts index d86185ff02..293897c16d 100644 --- a/packages/backend/src/server/api/endpoints/users/groups/owned.ts +++ b/packages/backend/src/server/api/endpoints/users/groups/owned.ts @@ -1,5 +1,5 @@ import { UserGroups } from "@/models/index.js"; -import define from "../../../define.js"; +import define from "@/server/api/define.js"; export const meta = { tags: ["groups", "account"], diff --git a/packages/backend/src/server/api/endpoints/users/groups/pull.ts b/packages/backend/src/server/api/endpoints/users/groups/pull.ts index ce294b8c86..5e7f91d70a 100644 --- a/packages/backend/src/server/api/endpoints/users/groups/pull.ts +++ b/packages/backend/src/server/api/endpoints/users/groups/pull.ts @@ -1,7 +1,7 @@ import { UserGroups, UserGroupJoinings } from "@/models/index.js"; -import define from "../../../define.js"; -import { ApiError } from "../../../error.js"; -import { getUser } from "../../../common/getters.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; +import { getUser } from "@/server/api/common/getters.js"; export const meta = { tags: ["groups", "users"], diff --git a/packages/backend/src/server/api/endpoints/users/groups/show.ts b/packages/backend/src/server/api/endpoints/users/groups/show.ts index 46f4410c84..0cd5a92331 100644 --- a/packages/backend/src/server/api/endpoints/users/groups/show.ts +++ b/packages/backend/src/server/api/endpoints/users/groups/show.ts @@ -1,6 +1,6 @@ import { UserGroups, UserGroupJoinings } from "@/models/index.js"; -import define from "../../../define.js"; -import { ApiError } from "../../../error.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; export const meta = { tags: ["groups", "account"], diff --git a/packages/backend/src/server/api/endpoints/users/groups/transfer.ts b/packages/backend/src/server/api/endpoints/users/groups/transfer.ts index 0322441574..b58ea57b7f 100644 --- a/packages/backend/src/server/api/endpoints/users/groups/transfer.ts +++ b/packages/backend/src/server/api/endpoints/users/groups/transfer.ts @@ -1,7 +1,7 @@ import { UserGroups, UserGroupJoinings } from "@/models/index.js"; -import define from "../../../define.js"; -import { ApiError } from "../../../error.js"; -import { getUser } from "../../../common/getters.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; +import { getUser } from "@/server/api/common/getters.js"; export const meta = { tags: ["groups", "users"], diff --git a/packages/backend/src/server/api/endpoints/users/groups/update.ts b/packages/backend/src/server/api/endpoints/users/groups/update.ts index fa720c9c45..77e63c6dc9 100644 --- a/packages/backend/src/server/api/endpoints/users/groups/update.ts +++ b/packages/backend/src/server/api/endpoints/users/groups/update.ts @@ -1,6 +1,6 @@ import { UserGroups } from "@/models/index.js"; -import define from "../../../define.js"; -import { ApiError } from "../../../error.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; export const meta = { tags: ["groups"], diff --git a/packages/backend/src/server/api/endpoints/users/lists/create.ts b/packages/backend/src/server/api/endpoints/users/lists/create.ts index 6bbbf603e5..c23e8f6f53 100644 --- a/packages/backend/src/server/api/endpoints/users/lists/create.ts +++ b/packages/backend/src/server/api/endpoints/users/lists/create.ts @@ -1,7 +1,7 @@ import { UserLists } from "@/models/index.js"; import { genId } from "@/misc/gen-id.js"; import type { UserList } from "@/models/entities/user-list.js"; -import define from "../../../define.js"; +import define from "@/server/api/define.js"; export const meta = { tags: ["lists"], diff --git a/packages/backend/src/server/api/endpoints/users/lists/delete-all.ts b/packages/backend/src/server/api/endpoints/users/lists/delete-all.ts index 49c4cf6f63..49ab4f1023 100644 --- a/packages/backend/src/server/api/endpoints/users/lists/delete-all.ts +++ b/packages/backend/src/server/api/endpoints/users/lists/delete-all.ts @@ -1,6 +1,6 @@ import { UserLists } from "@/models/index.js"; -import define from "../../../define.js"; -import { ApiError } from "../../../error.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; export const meta = { tags: ["lists"], diff --git a/packages/backend/src/server/api/endpoints/users/lists/delete.ts b/packages/backend/src/server/api/endpoints/users/lists/delete.ts index 4566295676..e1df681354 100644 --- a/packages/backend/src/server/api/endpoints/users/lists/delete.ts +++ b/packages/backend/src/server/api/endpoints/users/lists/delete.ts @@ -1,6 +1,6 @@ import { UserLists } from "@/models/index.js"; -import define from "../../../define.js"; -import { ApiError } from "../../../error.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; export const meta = { tags: ["lists"], diff --git a/packages/backend/src/server/api/endpoints/users/lists/list.ts b/packages/backend/src/server/api/endpoints/users/lists/list.ts index 5d590ee0ec..2a731b70d3 100644 --- a/packages/backend/src/server/api/endpoints/users/lists/list.ts +++ b/packages/backend/src/server/api/endpoints/users/lists/list.ts @@ -1,5 +1,5 @@ import { UserLists } from "@/models/index.js"; -import define from "../../../define.js"; +import define from "@/server/api/define.js"; export const meta = { tags: ["lists", "account"], diff --git a/packages/backend/src/server/api/endpoints/users/lists/pull.ts b/packages/backend/src/server/api/endpoints/users/lists/pull.ts index 07fae20675..ffca5b205a 100644 --- a/packages/backend/src/server/api/endpoints/users/lists/pull.ts +++ b/packages/backend/src/server/api/endpoints/users/lists/pull.ts @@ -1,8 +1,8 @@ import { publishUserListStream } from "@/services/stream.js"; import { UserLists, UserListJoinings, Users } from "@/models/index.js"; -import define from "../../../define.js"; -import { ApiError } from "../../../error.js"; -import { getUser } from "../../../common/getters.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; +import { getUser } from "@/server/api/common/getters.js"; export const meta = { tags: ["lists", "users"], diff --git a/packages/backend/src/server/api/endpoints/users/lists/push.ts b/packages/backend/src/server/api/endpoints/users/lists/push.ts index 899754aafb..8dd4442d00 100644 --- a/packages/backend/src/server/api/endpoints/users/lists/push.ts +++ b/packages/backend/src/server/api/endpoints/users/lists/push.ts @@ -1,8 +1,8 @@ import { pushUserToUserList } from "@/services/user-list/push.js"; import { UserLists, UserListJoinings, Blockings } from "@/models/index.js"; -import define from "../../../define.js"; -import { ApiError } from "../../../error.js"; -import { getUser } from "../../../common/getters.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; +import { getUser } from "@/server/api/common/getters.js"; export const meta = { tags: ["lists", "users"], diff --git a/packages/backend/src/server/api/endpoints/users/lists/show.ts b/packages/backend/src/server/api/endpoints/users/lists/show.ts index cb4893b0e4..ca90fec38c 100644 --- a/packages/backend/src/server/api/endpoints/users/lists/show.ts +++ b/packages/backend/src/server/api/endpoints/users/lists/show.ts @@ -1,6 +1,6 @@ import { UserLists } from "@/models/index.js"; -import define from "../../../define.js"; -import { ApiError } from "../../../error.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; export const meta = { tags: ["lists", "account"], diff --git a/packages/backend/src/server/api/endpoints/users/lists/update.ts b/packages/backend/src/server/api/endpoints/users/lists/update.ts index 0ac788fd37..e331ce33c3 100644 --- a/packages/backend/src/server/api/endpoints/users/lists/update.ts +++ b/packages/backend/src/server/api/endpoints/users/lists/update.ts @@ -1,6 +1,6 @@ import { UserLists } from "@/models/index.js"; -import define from "../../../define.js"; -import { ApiError } from "../../../error.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; export const meta = { tags: ["lists"], diff --git a/packages/backend/src/server/api/endpoints/users/notes.ts b/packages/backend/src/server/api/endpoints/users/notes.ts index 724cfc9af1..1485dfa6c5 100644 --- a/packages/backend/src/server/api/endpoints/users/notes.ts +++ b/packages/backend/src/server/api/endpoints/users/notes.ts @@ -1,12 +1,12 @@ import { Brackets } from "typeorm"; import { Notes } from "@/models/index.js"; -import define from "../../define.js"; -import { ApiError } from "../../error.js"; -import { getUser } from "../../common/getters.js"; -import { makePaginationQuery } from "../../common/make-pagination-query.js"; -import { generateVisibilityQuery } from "../../common/generate-visibility-query.js"; -import { generateMutedUserQuery } from "../../common/generate-muted-user-query.js"; -import { generateBlockedUserQuery } from "../../common/generate-block-query.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; +import { getUser } from "@/server/api/common/getters.js"; +import { makePaginationQuery } from "@/server/api/common/make-pagination-query.js"; +import { generateVisibilityQuery } from "@/server/api/common/generate-visibility-query.js"; +import { generateMutedUserQuery } from "@/server/api/common/generate-muted-user-query.js"; +import { generateBlockedUserQuery } from "@/server/api/common/generate-block-query.js"; export const meta = { tags: ["users", "notes"], diff --git a/packages/backend/src/server/api/endpoints/users/pages.ts b/packages/backend/src/server/api/endpoints/users/pages.ts index c08258b19d..1af50e78a9 100644 --- a/packages/backend/src/server/api/endpoints/users/pages.ts +++ b/packages/backend/src/server/api/endpoints/users/pages.ts @@ -1,6 +1,6 @@ import { Pages } from "@/models/index.js"; -import define from "../../define.js"; -import { makePaginationQuery } from "../../common/make-pagination-query.js"; +import define from "@/server/api/define.js"; +import { makePaginationQuery } from "@/server/api/common/make-pagination-query.js"; export const meta = { tags: ["users", "pages"], diff --git a/packages/backend/src/server/api/endpoints/users/reactions.ts b/packages/backend/src/server/api/endpoints/users/reactions.ts index 6b6d32e8ad..3c0e33b2f6 100644 --- a/packages/backend/src/server/api/endpoints/users/reactions.ts +++ b/packages/backend/src/server/api/endpoints/users/reactions.ts @@ -1,8 +1,8 @@ import { NoteReactions, UserProfiles } from "@/models/index.js"; -import define from "../../define.js"; -import { makePaginationQuery } from "../../common/make-pagination-query.js"; -import { generateVisibilityQuery } from "../../common/generate-visibility-query.js"; -import { ApiError } from "../../error.js"; +import define from "@/server/api/define.js"; +import { makePaginationQuery } from "@/server/api/common/make-pagination-query.js"; +import { generateVisibilityQuery } from "@/server/api/common/generate-visibility-query.js"; +import { ApiError } from "@/server/api/error.js"; export const meta = { tags: ["users", "reactions"], diff --git a/packages/backend/src/server/api/endpoints/users/recommendation.ts b/packages/backend/src/server/api/endpoints/users/recommendation.ts index 615cca7856..4ea0d618ed 100644 --- a/packages/backend/src/server/api/endpoints/users/recommendation.ts +++ b/packages/backend/src/server/api/endpoints/users/recommendation.ts @@ -1,10 +1,10 @@ import { Users, Followings } from "@/models/index.js"; -import define from "../../define.js"; -import { generateMutedUserQueryForUsers } from "../../common/generate-muted-user-query.js"; +import define from "@/server/api/define.js"; +import { generateMutedUserQueryForUsers } from "@/server/api/common/generate-muted-user-query.js"; import { generateBlockedUserQuery, generateBlockQueryForUsers, -} from "../../common/generate-block-query.js"; +} from "@/server/api/common/generate-block-query.js"; import { DAY } from "@/const.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/users/relation.ts b/packages/backend/src/server/api/endpoints/users/relation.ts index 5580eaea0b..61cc761162 100644 --- a/packages/backend/src/server/api/endpoints/users/relation.ts +++ b/packages/backend/src/server/api/endpoints/users/relation.ts @@ -1,5 +1,5 @@ import { Users } from "@/models/index.js"; -import define from "../../define.js"; +import define from "@/server/api/define.js"; export const meta = { tags: ["users"], diff --git a/packages/backend/src/server/api/endpoints/users/report-abuse.ts b/packages/backend/src/server/api/endpoints/users/report-abuse.ts index 1368f9e2b9..7e9ba7238c 100644 --- a/packages/backend/src/server/api/endpoints/users/report-abuse.ts +++ b/packages/backend/src/server/api/endpoints/users/report-abuse.ts @@ -5,9 +5,9 @@ import { AbuseUserReports, UserProfiles, Users } from "@/models/index.js"; import { genId } from "@/misc/gen-id.js"; import { sendEmail } from "@/services/send-email.js"; import { fetchMeta } from "@/misc/fetch-meta.js"; -import { getUser } from "../../common/getters.js"; -import { ApiError } from "../../error.js"; -import define from "../../define.js"; +import { getUser } from "@/server/api/common/getters.js"; +import { ApiError } from "@/server/api/error.js"; +import define from "@/server/api/define.js"; import { toHtml } from "@/mfm/to-html.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/users/search-by-username-and-host.ts b/packages/backend/src/server/api/endpoints/users/search-by-username-and-host.ts index f34083233f..517ef615b1 100644 --- a/packages/backend/src/server/api/endpoints/users/search-by-username-and-host.ts +++ b/packages/backend/src/server/api/endpoints/users/search-by-username-and-host.ts @@ -1,8 +1,7 @@ import { Brackets } from "typeorm"; import { Followings, Users } from "@/models/index.js"; -import { USER_ACTIVE_THRESHOLD } from "@/const.js"; import type { User } from "@/models/entities/user.js"; -import define from "../../define.js"; +import define from "@/server/api/define.js"; import { sqlLikeEscape } from "@/misc/sql-like-escape.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/users/search.ts b/packages/backend/src/server/api/endpoints/users/search.ts index 2d84d5bfeb..3aef6dc901 100644 --- a/packages/backend/src/server/api/endpoints/users/search.ts +++ b/packages/backend/src/server/api/endpoints/users/search.ts @@ -1,7 +1,7 @@ import { Brackets } from "typeorm"; import { UserProfiles, Users } from "@/models/index.js"; import type { User } from "@/models/entities/user.js"; -import define from "../../define.js"; +import define from "@/server/api/define.js"; import { sqlLikeEscape } from "@/misc/sql-like-escape.js"; export const meta = { diff --git a/packages/backend/src/server/api/endpoints/users/show.ts b/packages/backend/src/server/api/endpoints/users/show.ts index bead8df0a4..61812a0189 100644 --- a/packages/backend/src/server/api/endpoints/users/show.ts +++ b/packages/backend/src/server/api/endpoints/users/show.ts @@ -3,9 +3,9 @@ import { In, IsNull } from "typeorm"; import { resolveUser } from "@/remote/resolve-user.js"; import { Users } from "@/models/index.js"; import type { User } from "@/models/entities/user.js"; -import define from "../../define.js"; -import { apiLogger } from "../../logger.js"; -import { ApiError } from "../../error.js"; +import define from "@/server/api/define.js"; +import { apiLogger } from "@/server/api/logger.js"; +import { ApiError } from "@/server/api/error.js"; export const meta = { tags: ["users"], diff --git a/packages/backend/src/server/api/endpoints/users/stats.ts b/packages/backend/src/server/api/endpoints/users/stats.ts index 83e821f498..ed4dd3b0c1 100644 --- a/packages/backend/src/server/api/endpoints/users/stats.ts +++ b/packages/backend/src/server/api/endpoints/users/stats.ts @@ -9,8 +9,8 @@ import { Users, } from "@/models/index.js"; import { awaitAll } from "@/prelude/await-all.js"; -import define from "../../define.js"; -import { ApiError } from "../../error.js"; +import define from "@/server/api/define.js"; +import { ApiError } from "@/server/api/error.js"; export const meta = { tags: ["users"], diff --git a/packages/backend/src/server/api/index.ts b/packages/backend/src/server/api/index.ts index bf617f06fc..a5970d5843 100644 --- a/packages/backend/src/server/api/index.ts +++ b/packages/backend/src/server/api/index.ts @@ -11,9 +11,8 @@ import { apiMastodonCompatible, getClient, } from "./mastodon/ApiMastodonCompatibleService.js"; -import { Instances, AccessTokens, Users } from "@/models/index.js"; +import { AccessTokens, Users } from "@/models/index.js"; import config from "@/config/index.js"; -import fs from "fs"; import endpoints from "./endpoints.js"; import compatibility from "./compatibility.js"; import handler from "./api-handler.js"; @@ -22,11 +21,13 @@ import signin from "./private/signin.js"; import signupPending from "./private/signup-pending.js"; import verifyEmail from "./private/verify-email.js"; import { koaBody } from "koa-body"; +import { convertAttachment } from "./mastodon/converters.js"; + +// TODO?: should we avoid importing things from built directory? import { convertId, IdConvertType as IdType, -} from "../../../native-utils/built/index.js"; -import { convertAttachment } from "./mastodon/converters.js"; +} from "native-utils/built/index.js"; // re-export native rust id conversion (function and enum) export { IdType, convertId }; diff --git a/packages/backend/src/server/api/limiter.ts b/packages/backend/src/server/api/limiter.ts index 367fb3d279..f03f8754cf 100644 --- a/packages/backend/src/server/api/limiter.ts +++ b/packages/backend/src/server/api/limiter.ts @@ -1,7 +1,6 @@ import Limiter from "ratelimiter"; -import { CacheableLocalUser, User } from "@/models/entities/user.js"; import Logger from "@/services/logger.js"; -import { redisClient } from "../../db/redis.js"; +import { redisClient } from "@/db/redis.js"; import type { IEndpointMeta } from "./endpoints.js"; import { convertMilliseconds } from "@/misc/convert-milliseconds.js"; diff --git a/packages/backend/src/server/api/mastodon/ApiMastodonCompatibleService.ts b/packages/backend/src/server/api/mastodon/ApiMastodonCompatibleService.ts index 44485ac429..e029bc604e 100644 --- a/packages/backend/src/server/api/mastodon/ApiMastodonCompatibleService.ts +++ b/packages/backend/src/server/api/mastodon/ApiMastodonCompatibleService.ts @@ -13,7 +13,7 @@ import { convertAnnouncement, convertFilter, } from "./converters.js"; -import { convertId, IdType } from "../index.js"; +import { convertId, IdType } from "@/server/api/index.js"; import { Users } from "@/models/index.js"; import { IsNull } from "typeorm"; diff --git a/packages/backend/src/server/api/mastodon/converters.ts b/packages/backend/src/server/api/mastodon/converters.ts index 6469d9c97b..30506d9c51 100644 --- a/packages/backend/src/server/api/mastodon/converters.ts +++ b/packages/backend/src/server/api/mastodon/converters.ts @@ -1,5 +1,5 @@ import { Entity } from "megalodon"; -import { convertId, IdType } from "../index.js"; +import { convertId, IdType } from "@/server/api/index.js"; function simpleConvert(data: any) { // copy the object to bypass weird pass by reference bugs diff --git a/packages/backend/src/server/api/mastodon/endpoints/account.ts b/packages/backend/src/server/api/mastodon/endpoints/account.ts index 36548cd3b2..76c3af378d 100644 --- a/packages/backend/src/server/api/mastodon/endpoints/account.ts +++ b/packages/backend/src/server/api/mastodon/endpoints/account.ts @@ -1,10 +1,7 @@ -import { Users } from "@/models/index.js"; -import { resolveUser } from "@/remote/resolve-user.js"; import Router from "@koa/router"; -import { FindOptionsWhere, IsNull } from "typeorm"; import { getClient } from "../ApiMastodonCompatibleService.js"; import { argsToBools, convertTimelinesArgsId, limitToInt } from "./timeline.js"; -import { convertId, IdType } from "../../index.js"; +import { convertId, IdType } from "@/server/api/index.js"; import { convertAccount, convertFeaturedTag, diff --git a/packages/backend/src/server/api/mastodon/endpoints/auth.ts b/packages/backend/src/server/api/mastodon/endpoints/auth.ts index b55cb6388c..3c7ece920a 100644 --- a/packages/backend/src/server/api/mastodon/endpoints/auth.ts +++ b/packages/backend/src/server/api/mastodon/endpoints/auth.ts @@ -1,8 +1,5 @@ -import megalodon, { MegalodonInterface } from "megalodon"; import Router from "@koa/router"; -import { koaBody } from "koa-body"; import { getClient } from "../ApiMastodonCompatibleService.js"; -import bodyParser from "koa-bodyparser"; const readScope = [ "read:account", diff --git a/packages/backend/src/server/api/mastodon/endpoints/filter.ts b/packages/backend/src/server/api/mastodon/endpoints/filter.ts index e27b7e22ae..6524fd2f6e 100644 --- a/packages/backend/src/server/api/mastodon/endpoints/filter.ts +++ b/packages/backend/src/server/api/mastodon/endpoints/filter.ts @@ -1,7 +1,6 @@ -import megalodon, { MegalodonInterface } from "megalodon"; import Router from "@koa/router"; import { getClient } from "../ApiMastodonCompatibleService.js"; -import { IdType, convertId } from "../../index.js"; +import { IdType, convertId } from "@/server/api/index.js"; import { convertFilter } from "../converters.js"; export function apiFilterMastodon(router: Router): void { diff --git a/packages/backend/src/server/api/mastodon/endpoints/notifications.ts b/packages/backend/src/server/api/mastodon/endpoints/notifications.ts index f0a0bab984..9628eccdde 100644 --- a/packages/backend/src/server/api/mastodon/endpoints/notifications.ts +++ b/packages/backend/src/server/api/mastodon/endpoints/notifications.ts @@ -1,7 +1,5 @@ -import megalodon, { MegalodonInterface } from "megalodon"; import Router from "@koa/router"; -import { koaBody } from "koa-body"; -import { convertId, IdType } from "../../index.js"; +import { convertId, IdType } from "@/server/api/index.js"; import { getClient } from "../ApiMastodonCompatibleService.js"; import { convertTimelinesArgsId } from "./timeline.js"; import { convertNotification } from "../converters.js"; diff --git a/packages/backend/src/server/api/mastodon/endpoints/search.ts b/packages/backend/src/server/api/mastodon/endpoints/search.ts index 8a48175579..c9bbab0a4f 100644 --- a/packages/backend/src/server/api/mastodon/endpoints/search.ts +++ b/packages/backend/src/server/api/mastodon/endpoints/search.ts @@ -1,4 +1,3 @@ -import megalodon, { MegalodonInterface } from "megalodon"; import Router from "@koa/router"; import { getClient } from "../ApiMastodonCompatibleService.js"; import axios from "axios"; diff --git a/packages/backend/src/server/api/mastodon/endpoints/status.ts b/packages/backend/src/server/api/mastodon/endpoints/status.ts index bc95d77769..ac1cbe602d 100644 --- a/packages/backend/src/server/api/mastodon/endpoints/status.ts +++ b/packages/backend/src/server/api/mastodon/endpoints/status.ts @@ -1,11 +1,10 @@ import Router from "@koa/router"; import { getClient } from "../ApiMastodonCompatibleService.js"; import { emojiRegexAtStartToEnd } from "@/misc/emoji-regex.js"; -import axios from "axios"; import querystring from "node:querystring"; import qs from "qs"; import { convertTimelinesArgsId, limitToInt } from "./timeline.js"; -import { convertId, IdType } from "../../index.js"; +import { convertId, IdType } from "@/server/api/index.js"; import { convertAccount, convertAttachment, diff --git a/packages/backend/src/server/api/mastodon/endpoints/timeline.ts b/packages/backend/src/server/api/mastodon/endpoints/timeline.ts index 0a4da322d7..05741c4cef 100644 --- a/packages/backend/src/server/api/mastodon/endpoints/timeline.ts +++ b/packages/backend/src/server/api/mastodon/endpoints/timeline.ts @@ -7,7 +7,7 @@ import { convertList, convertStatus, } from "../converters.js"; -import { convertId, IdType } from "../../index.js"; +import { convertId, IdType } from "@/server/api/index.js"; export function limitToInt(q: ParsedUrlQuery) { let object: any = q; diff --git a/packages/backend/src/server/api/openapi/gen-spec.ts b/packages/backend/src/server/api/openapi/gen-spec.ts index ee14f249f0..ec8c1ca036 100644 --- a/packages/backend/src/server/api/openapi/gen-spec.ts +++ b/packages/backend/src/server/api/openapi/gen-spec.ts @@ -1,4 +1,4 @@ -import endpoints from "../endpoints.js"; +import endpoints from "@/server/api/endpoints.js"; import config from "@/config/index.js"; import { errors as basicErrors } from "./errors.js"; import { schemas, convertSchemaToOpenApiSchema } from "./schemas.js"; diff --git a/packages/backend/src/server/api/private/signin.ts b/packages/backend/src/server/api/private/signin.ts index 06d801a953..3e70d80fe2 100644 --- a/packages/backend/src/server/api/private/signin.ts +++ b/packages/backend/src/server/api/private/signin.ts @@ -1,6 +1,6 @@ import type Koa from "koa"; import * as OTPAuth from "otpauth"; -import signin from "../common/signin.js"; +import signin from "@/server/api/common/signin.js"; import config from "@/config/index.js"; import { Users, @@ -16,10 +16,10 @@ import { hashPassword, isOldAlgorithm, } from "@/misc/password.js"; -import { verifyLogin, hash } from "../2fa.js"; +import { verifyLogin, hash } from "@/server/api/2fa.js"; import { randomBytes } from "node:crypto"; import { IsNull } from "typeorm"; -import { limiter } from "../limiter.js"; +import { limiter } from "@/server/api/limiter.js"; import { getIpHash } from "@/misc/get-ip-hash.js"; export default async (ctx: Koa.Context) => { diff --git a/packages/backend/src/server/api/private/signup-pending.ts b/packages/backend/src/server/api/private/signup-pending.ts index c7fdcea221..b92fb90b37 100644 --- a/packages/backend/src/server/api/private/signup-pending.ts +++ b/packages/backend/src/server/api/private/signup-pending.ts @@ -1,7 +1,7 @@ import type Koa from "koa"; -import { Users, UserPendings, UserProfiles } from "@/models/index.js"; -import { signup } from "../common/signup.js"; -import signin from "../common/signin.js"; +import { UserPendings, UserProfiles } from "@/models/index.js"; +import { signup } from "@/server/api/common/signup.js"; +import signin from "@/server/api/common/signin.js"; export default async (ctx: Koa.Context) => { const body = ctx.request.body; diff --git a/packages/backend/src/server/api/private/signup.ts b/packages/backend/src/server/api/private/signup.ts index 440d0e3686..d60e5a1910 100644 --- a/packages/backend/src/server/api/private/signup.ts +++ b/packages/backend/src/server/api/private/signup.ts @@ -3,7 +3,7 @@ import rndstr from "rndstr"; import { fetchMeta } from "@/misc/fetch-meta.js"; import { verifyHcaptcha, verifyRecaptcha } from "@/misc/captcha.js"; import { Users, RegistrationTickets, UserPendings } from "@/models/index.js"; -import { signup } from "../common/signup.js"; +import { signup } from "@/server/api/common/signup.js"; import config from "@/config/index.js"; import { sendEmail } from "@/services/send-email.js"; import { genId } from "@/misc/gen-id.js"; diff --git a/packages/backend/src/server/api/stream/channels/messaging.ts b/packages/backend/src/server/api/stream/channels/messaging.ts index 0622bd4649..a650db8b9b 100644 --- a/packages/backend/src/server/api/stream/channels/messaging.ts +++ b/packages/backend/src/server/api/stream/channels/messaging.ts @@ -2,7 +2,7 @@ import { readUserMessagingMessage, readGroupMessagingMessage, deliverReadActivity, -} from "../../common/read-messaging-message.js"; +} from "@/server/api/common/read-messaging-message.js"; import Channel from "../channel.js"; import { UserGroupJoinings, Users, MessagingMessages } from "@/models/index.js"; import type { User, ILocalUser, IRemoteUser } from "@/models/entities/user.js"; diff --git a/packages/backend/src/server/api/stream/index.ts b/packages/backend/src/server/api/stream/index.ts index e483683151..86408a03d0 100644 --- a/packages/backend/src/server/api/stream/index.ts +++ b/packages/backend/src/server/api/stream/index.ts @@ -21,12 +21,12 @@ import { } from "@/services/stream.js"; import type { UserGroup } from "@/models/entities/user-group.js"; import type { Packed } from "@/misc/schema.js"; -import { readNotification } from "../common/read-notification.js"; +import { readNotification } from "@/server/api/common/read-notification.js"; import channels from "./channels/index.js"; import type Channel from "./channel.js"; import type { StreamEventEmitter, StreamMessages } from "./types.js"; import { Converter } from "megalodon"; -import { getClient } from "../mastodon/ApiMastodonCompatibleService.js"; +import { getClient } from "@/server/api/mastodon/ApiMastodonCompatibleService.js"; /** * Main stream connection diff --git a/packages/backend/src/server/file/byte-range-readable.ts b/packages/backend/src/server/file/byte-range-readable.ts index d80e783cca..96dcbc4a52 100644 --- a/packages/backend/src/server/file/byte-range-readable.ts +++ b/packages/backend/src/server/file/byte-range-readable.ts @@ -1,5 +1,5 @@ import { Readable, ReadableOptions } from "node:stream"; -import { Buffer, constants as BufferConstants } from "node:buffer"; +import { Buffer } from "node:buffer"; import * as fs from "node:fs"; interface ByteRange { diff --git a/packages/backend/src/server/index.ts b/packages/backend/src/server/index.ts index f26853eb8f..3a9f62f337 100644 --- a/packages/backend/src/server/index.ts +++ b/packages/backend/src/server/index.ts @@ -15,11 +15,10 @@ import * as slow from "koa-slow"; import { IsNull } from "typeorm"; import config from "@/config/index.js"; import Logger from "@/services/logger.js"; -import { UserProfiles, Users } from "@/models/index.js"; +import { Users } from "@/models/index.js"; import { fetchMeta } from "@/misc/fetch-meta.js"; import { genIdenticon } from "@/misc/gen-identicon.js"; import { createTemp } from "@/misc/create-temp.js"; -import { publishMainStream } from "@/services/stream.js"; import * as Acct from "@/misc/acct.js"; import { envOption } from "@/env.js"; import megalodon, { MegalodonInterface } from "megalodon"; diff --git a/packages/backend/src/services/blocking/create.ts b/packages/backend/src/services/blocking/create.ts index 60bd6e9431..321f5c8ea5 100644 --- a/packages/backend/src/services/blocking/create.ts +++ b/packages/backend/src/services/blocking/create.ts @@ -17,7 +17,6 @@ import { } from "@/models/index.js"; import { perUserFollowingChart } from "@/services/chart/index.js"; import { genId } from "@/misc/gen-id.js"; -import { IdentifiableError } from "@/misc/identifiable-error.js"; import { getActiveWebhooks } from "@/misc/webhook-cache.js"; import { webhookDeliver } from "@/queue/index.js"; diff --git a/packages/backend/src/services/blocking/delete.ts b/packages/backend/src/services/blocking/delete.ts index 67f1e76f0e..271883fe89 100644 --- a/packages/backend/src/services/blocking/delete.ts +++ b/packages/backend/src/services/blocking/delete.ts @@ -2,9 +2,8 @@ import { renderActivity } from "@/remote/activitypub/renderer/index.js"; import { renderBlock } from "@/remote/activitypub/renderer/block.js"; import renderUndo from "@/remote/activitypub/renderer/undo.js"; import { deliver } from "@/queue/index.js"; -import Logger from "../logger.js"; +import Logger from "@/services/logger.js"; import type { CacheableUser } from "@/models/entities/user.js"; -import { User } from "@/models/entities/user.js"; import { Blockings, Users } from "@/models/index.js"; const logger = new Logger("blocking/delete"); diff --git a/packages/backend/src/services/chart/charts/active-users.ts b/packages/backend/src/services/chart/charts/active-users.ts index 322bfd25bc..b88fc22828 100644 --- a/packages/backend/src/services/chart/charts/active-users.ts +++ b/packages/backend/src/services/chart/charts/active-users.ts @@ -1,7 +1,6 @@ import type { KVs } from "../core.js"; import Chart from "../core.js"; import type { User } from "@/models/entities/user.js"; -import { Users } from "@/models/index.js"; import { name, schema } from "./entities/active-users.js"; const week = 1000 * 60 * 60 * 24 * 7; diff --git a/packages/backend/src/services/chart/charts/drive.ts b/packages/backend/src/services/chart/charts/drive.ts index 9793ff79dc..d94c8cce71 100644 --- a/packages/backend/src/services/chart/charts/drive.ts +++ b/packages/backend/src/services/chart/charts/drive.ts @@ -1,7 +1,5 @@ import type { KVs } from "../core.js"; import Chart from "../core.js"; -import { DriveFiles } from "@/models/index.js"; -import { Not, IsNull } from "typeorm"; import type { DriveFile } from "@/models/entities/drive-file.js"; import { name, schema } from "./entities/drive.js"; diff --git a/packages/backend/src/services/create-system-user.ts b/packages/backend/src/services/create-system-user.ts index 24536090a9..0ebd1142f1 100644 --- a/packages/backend/src/services/create-system-user.ts +++ b/packages/backend/src/services/create-system-user.ts @@ -1,5 +1,5 @@ import { v4 as uuid } from "uuid"; -import generateNativeUserToken from "../server/api/common/generate-native-user-token.js"; +import generateNativeUserToken from "@/server/api/common/generate-native-user-token.js"; import { genRsaKeyPair } from "@/misc/gen-key-pair.js"; import { User } from "@/models/entities/user.js"; import { UserProfile } from "@/models/entities/user-profile.js"; diff --git a/packages/backend/src/services/delete-account.ts b/packages/backend/src/services/delete-account.ts index 927776199a..b307611cf5 100644 --- a/packages/backend/src/services/delete-account.ts +++ b/packages/backend/src/services/delete-account.ts @@ -1,7 +1,7 @@ import { Users } from "@/models/index.js"; import { createDeleteAccountJob } from "@/queue/index.js"; -import { publishUserEvent } from "./stream.js"; -import { doPostSuspend } from "./suspend-user.js"; +import { publishUserEvent } from "@/services/stream.js"; +import { doPostSuspend } from "@/services/suspend-user.js"; export async function deleteAccount(user: { id: string; diff --git a/packages/backend/src/services/drive/add-file.ts b/packages/backend/src/services/drive/add-file.ts index 6730ddff27..2f3d3c6e1e 100644 --- a/packages/backend/src/services/drive/add-file.ts +++ b/packages/backend/src/services/drive/add-file.ts @@ -2,7 +2,7 @@ import * as fs from "node:fs"; import { v4 as uuid } from "uuid"; -import type S3 from "aws-sdk/clients/s3.js"; +import type S3 from "aws-sdk/clients/s3.js"; // TODO: migrate to SDK v3 import sharp from "sharp"; import { IsNull } from "typeorm"; import { publishMainStream, publishDriveStream } from "@/services/stream.js"; @@ -13,7 +13,6 @@ import { DriveFiles, DriveFolders, Users, - Instances, UserProfiles, } from "@/models/index.js"; import { DriveFile } from "@/models/entities/drive-file.js"; diff --git a/packages/backend/src/services/drive/delete-file.ts b/packages/backend/src/services/drive/delete-file.ts index 215270df69..515c1d1c65 100644 --- a/packages/backend/src/services/drive/delete-file.ts +++ b/packages/backend/src/services/drive/delete-file.ts @@ -1,6 +1,6 @@ import type { DriveFile } from "@/models/entities/drive-file.js"; import { InternalStorage } from "./internal-storage.js"; -import { DriveFiles, Instances } from "@/models/index.js"; +import { DriveFiles } from "@/models/index.js"; import { driveChart, perUserDriveChart, diff --git a/packages/backend/src/services/drive/generate-video-thumbnail.ts b/packages/backend/src/services/drive/generate-video-thumbnail.ts index 356623e79a..0e3f0db58e 100644 --- a/packages/backend/src/services/drive/generate-video-thumbnail.ts +++ b/packages/backend/src/services/drive/generate-video-thumbnail.ts @@ -1,4 +1,3 @@ -import * as fs from "node:fs"; import { createTempDir } from "@/misc/create-temp.js"; import type { IImage } from "./image-processor.js"; import { convertToWebp } from "./image-processor.js"; diff --git a/packages/backend/src/services/drive/logger.ts b/packages/backend/src/services/drive/logger.ts index ebde2d7058..06382ddd78 100644 --- a/packages/backend/src/services/drive/logger.ts +++ b/packages/backend/src/services/drive/logger.ts @@ -1,3 +1,3 @@ -import Logger from "../logger.js"; +import Logger from "@/services/logger.js"; export const driveLogger = new Logger("drive", "blue"); diff --git a/packages/backend/src/services/drive/s3.ts b/packages/backend/src/services/drive/s3.ts index 9357be21ca..d01f89cbbf 100644 --- a/packages/backend/src/services/drive/s3.ts +++ b/packages/backend/src/services/drive/s3.ts @@ -1,5 +1,5 @@ import { URL } from "node:url"; -import S3 from "aws-sdk/clients/s3.js"; +import S3 from "aws-sdk/clients/s3.js"; // TODO: migrate to SDK v3 import type { Meta } from "@/models/entities/meta.js"; import { getAgentByUrl } from "@/misc/fetch.js"; diff --git a/packages/backend/src/services/fetch-instance-metadata.ts b/packages/backend/src/services/fetch-instance-metadata.ts index 01ad917648..a4cc33bca5 100644 --- a/packages/backend/src/services/fetch-instance-metadata.ts +++ b/packages/backend/src/services/fetch-instance-metadata.ts @@ -6,7 +6,7 @@ import { getJson, getAgentByUrl } from "@/misc/fetch.js"; import type { Instance } from "@/models/entities/instance.js"; import { Instances } from "@/models/index.js"; import { getFetchInstanceMetadataLock } from "@/misc/app-lock.js"; -import Logger from "./logger.js"; +import Logger from "@/services/logger.js"; const logger = new Logger("metadata", "cyan"); diff --git a/packages/backend/src/services/fetch-rel-me.ts b/packages/backend/src/services/fetch-rel-me.ts index 31e7a95a58..c9a37d1c88 100644 --- a/packages/backend/src/services/fetch-rel-me.ts +++ b/packages/backend/src/services/fetch-rel-me.ts @@ -1,4 +1,3 @@ -import { getHtml } from "@/misc/fetch.js"; import { Window } from "happy-dom"; import config from "@/config/index.js"; diff --git a/packages/backend/src/services/following/create.ts b/packages/backend/src/services/following/create.ts index 3a77676b38..934b235bbc 100644 --- a/packages/backend/src/services/following/create.ts +++ b/packages/backend/src/services/following/create.ts @@ -5,7 +5,7 @@ import renderAccept from "@/remote/activitypub/renderer/accept.js"; import renderReject from "@/remote/activitypub/renderer/reject.js"; import { deliver } from "@/queue/index.js"; import createFollowRequest from "./requests/create.js"; -import { registerOrFetchInstanceDoc } from "../register-or-fetch-instance-doc.js"; +import { registerOrFetchInstanceDoc } from "@/services/register-or-fetch-instance-doc.js"; import Logger from "../logger.js"; import { IdentifiableError } from "@/misc/identifiable-error.js"; import type { User } from "@/models/entities/user.js"; @@ -22,7 +22,7 @@ import { perUserFollowingChart, } from "@/services/chart/index.js"; import { genId } from "@/misc/gen-id.js"; -import { createNotification } from "../create-notification.js"; +import { createNotification } from "@/services/create-notification.js"; import { isDuplicateKeyValueError } from "@/misc/is-duplicate-key-value-error.js"; import type { Packed } from "@/misc/schema.js"; import { getActiveWebhooks } from "@/misc/webhook-cache.js"; diff --git a/packages/backend/src/services/following/delete.ts b/packages/backend/src/services/following/delete.ts index fae4bd3cec..8a07244da5 100644 --- a/packages/backend/src/services/following/delete.ts +++ b/packages/backend/src/services/following/delete.ts @@ -5,7 +5,7 @@ import renderUndo from "@/remote/activitypub/renderer/undo.js"; import renderReject from "@/remote/activitypub/renderer/reject.js"; import { deliver, webhookDeliver } from "@/queue/index.js"; import Logger from "../logger.js"; -import { registerOrFetchInstanceDoc } from "../register-or-fetch-instance-doc.js"; +import { registerOrFetchInstanceDoc } from "@/services/register-or-fetch-instance-doc.js"; import type { User } from "@/models/entities/user.js"; import { Followings, Users, Instances } from "@/models/index.js"; import { diff --git a/packages/backend/src/services/following/reject.ts b/packages/backend/src/services/following/reject.ts index 7464219bf6..3f461268dd 100644 --- a/packages/backend/src/services/following/reject.ts +++ b/packages/backend/src/services/following/reject.ts @@ -4,7 +4,6 @@ import renderReject from "@/remote/activitypub/renderer/reject.js"; import { deliver, webhookDeliver } from "@/queue/index.js"; import { publishMainStream, publishUserEvent } from "@/services/stream.js"; import type { ILocalUser, IRemoteUser } from "@/models/entities/user.js"; -import { User } from "@/models/entities/user.js"; import { Users, FollowRequests, Followings } from "@/models/index.js"; import { decrementFollowing } from "./delete.js"; import { getActiveWebhooks } from "@/misc/webhook-cache.js"; diff --git a/packages/backend/src/services/following/requests/accept.ts b/packages/backend/src/services/following/requests/accept.ts index 6aa17b09ad..1bc10f6082 100644 --- a/packages/backend/src/services/following/requests/accept.ts +++ b/packages/backend/src/services/following/requests/accept.ts @@ -5,7 +5,6 @@ import { deliver } from "@/queue/index.js"; import { publishMainStream } from "@/services/stream.js"; import { insertFollowingDoc } from "../create.js"; import type { User, CacheableUser } from "@/models/entities/user.js"; -import { ILocalUser } from "@/models/entities/user.js"; import { FollowRequests, Users } from "@/models/index.js"; import { IdentifiableError } from "@/misc/identifiable-error.js"; diff --git a/packages/backend/src/services/following/requests/cancel.ts b/packages/backend/src/services/following/requests/cancel.ts index 00daae380d..45b8ee0639 100644 --- a/packages/backend/src/services/following/requests/cancel.ts +++ b/packages/backend/src/services/following/requests/cancel.ts @@ -5,7 +5,6 @@ import { deliver } from "@/queue/index.js"; import { publishMainStream } from "@/services/stream.js"; import { IdentifiableError } from "@/misc/identifiable-error.js"; import type { User } from "@/models/entities/user.js"; -import { ILocalUser } from "@/models/entities/user.js"; import { Users, FollowRequests } from "@/models/index.js"; export default async function ( diff --git a/packages/backend/src/services/following/requests/create.ts b/packages/backend/src/services/following/requests/create.ts index 50dbd9b3be..12dfddf302 100644 --- a/packages/backend/src/services/following/requests/create.ts +++ b/packages/backend/src/services/following/requests/create.ts @@ -5,7 +5,7 @@ import { deliver } from "@/queue/index.js"; import type { User } from "@/models/entities/user.js"; import { Blockings, FollowRequests, Users } from "@/models/index.js"; import { genId } from "@/misc/gen-id.js"; -import { createNotification } from "../../create-notification.js"; +import { createNotification } from "@/services/create-notification.js"; import config from "@/config/index.js"; export default async function ( diff --git a/packages/backend/src/services/i/pin.ts b/packages/backend/src/services/i/pin.ts index ee13ce6fed..8cb1bf518e 100644 --- a/packages/backend/src/services/i/pin.ts +++ b/packages/backend/src/services/i/pin.ts @@ -9,7 +9,7 @@ import { Notes, UserNotePinings, Users } from "@/models/index.js"; import type { UserNotePining } from "@/models/entities/user-note-pining.js"; import { genId } from "@/misc/gen-id.js"; import { deliverToFollowers } from "@/remote/activitypub/deliver-manager.js"; -import { deliverToRelays } from "../relay.js"; +import { deliverToRelays } from "@/services/relay.js"; /** * 指定した投稿をピン留めします diff --git a/packages/backend/src/services/i/update.ts b/packages/backend/src/services/i/update.ts index cc950ac85a..21b03d9821 100644 --- a/packages/backend/src/services/i/update.ts +++ b/packages/backend/src/services/i/update.ts @@ -4,7 +4,7 @@ import { Users } from "@/models/index.js"; import type { User } from "@/models/entities/user.js"; import { renderPerson } from "@/remote/activitypub/renderer/person.js"; import { deliverToFollowers } from "@/remote/activitypub/deliver-manager.js"; -import { deliverToRelays } from "../relay.js"; +import { deliverToRelays } from "@/services/relay.js"; export async function publishToFollowers(userId: User["id"]) { const user = await Users.findOneBy({ id: userId }); diff --git a/packages/backend/src/services/logger.ts b/packages/backend/src/services/logger.ts index 330d275029..df4c2e3564 100644 --- a/packages/backend/src/services/logger.ts +++ b/packages/backend/src/services/logger.ts @@ -2,7 +2,7 @@ import cluster from "node:cluster"; import chalk from "chalk"; import { default as convertColor } from "color-convert"; import { format as dateFormat } from "date-fns"; -import { envOption } from "../env.js"; +import { envOption } from "@/env.js"; import config from "@/config/index.js"; import * as SyslogPro from "syslog-pro"; diff --git a/packages/backend/src/services/note/create.ts b/packages/backend/src/services/note/create.ts index cc932060b3..1a80ff2806 100644 --- a/packages/backend/src/services/note/create.ts +++ b/packages/backend/src/services/note/create.ts @@ -13,10 +13,10 @@ import renderAnnounce from "@/remote/activitypub/renderer/announce.js"; import { renderActivity } from "@/remote/activitypub/renderer/index.js"; import { resolveUser } from "@/remote/resolve-user.js"; import config from "@/config/index.js"; -import { updateHashtags } from "../update-hashtag.js"; +import { updateHashtags } from "@/services/update-hashtag.js"; import { concat } from "@/prelude/array.js"; import { insertNoteUnread } from "@/services/note/unread.js"; -import { registerOrFetchInstanceDoc } from "../register-or-fetch-instance-doc.js"; +import { registerOrFetchInstanceDoc } from "@/services/register-or-fetch-instance-doc.js"; import { extractMentions } from "@/misc/extract-mentions.js"; import { extractCustomEmojisFromMfm } from "@/misc/extract-custom-emojis-from-mfm.js"; import { extractHashtags } from "@/misc/extract-hashtags.js"; @@ -47,11 +47,11 @@ import { } from "@/services/chart/index.js"; import type { IPoll } from "@/models/entities/poll.js"; import { Poll } from "@/models/entities/poll.js"; -import { createNotification } from "../create-notification.js"; +import { createNotification } from "@/services/create-notification.js"; import { isDuplicateKeyValueError } from "@/misc/is-duplicate-key-value-error.js"; import { checkHitAntenna } from "@/misc/check-hit-antenna.js"; import { getWordHardMute } from "@/misc/check-word-mute.js"; -import { addNoteToAntenna } from "../add-note-to-antenna.js"; +import { addNoteToAntenna } from "@/services/add-note-to-antenna.js"; import { countSameRenotes } from "@/misc/count-same-renotes.js"; import { deliverToRelays, getCachedRelays } from "../relay.js"; import type { Channel } from "@/models/entities/channel.js"; diff --git a/packages/backend/src/services/note/delete.ts b/packages/backend/src/services/note/delete.ts index 90175ccdc4..8a75825809 100644 --- a/packages/backend/src/services/note/delete.ts +++ b/packages/backend/src/services/note/delete.ts @@ -19,8 +19,8 @@ import { deliverToUser, } from "@/remote/activitypub/deliver-manager.js"; import { countSameRenotes } from "@/misc/count-same-renotes.js"; -import { registerOrFetchInstanceDoc } from "../register-or-fetch-instance-doc.js"; -import { deliverToRelays } from "../relay.js"; +import { registerOrFetchInstanceDoc } from "@/services/register-or-fetch-instance-doc.js"; +import { deliverToRelays } from "@/services/relay.js"; import meilisearch from "@/db/meilisearch.js"; /** diff --git a/packages/backend/src/services/note/polls/update.ts b/packages/backend/src/services/note/polls/update.ts index e02d48d055..270b4d9bf2 100644 --- a/packages/backend/src/services/note/polls/update.ts +++ b/packages/backend/src/services/note/polls/update.ts @@ -4,7 +4,7 @@ import renderNote from "@/remote/activitypub/renderer/note.js"; import { Users, Notes } from "@/models/index.js"; import type { Note } from "@/models/entities/note.js"; import { deliverToFollowers } from "@/remote/activitypub/deliver-manager.js"; -import { deliverToRelays } from "../../relay.js"; +import { deliverToRelays } from "@/services/relay.js"; export async function deliverQuestionUpdate(noteId: Note["id"]) { const note = await Notes.findOneBy({ id: noteId }); diff --git a/packages/backend/src/services/note/polls/vote.ts b/packages/backend/src/services/note/polls/vote.ts index 582af0b17b..6ade899726 100644 --- a/packages/backend/src/services/note/polls/vote.ts +++ b/packages/backend/src/services/note/polls/vote.ts @@ -1,11 +1,10 @@ import { publishNoteStream } from "@/services/stream.js"; import type { CacheableUser } from "@/models/entities/user.js"; -import { User } from "@/models/entities/user.js"; import type { Note } from "@/models/entities/note.js"; import { PollVotes, NoteWatchings, Polls, Blockings } from "@/models/index.js"; import { Not } from "typeorm"; import { genId } from "@/misc/gen-id.js"; -import { createNotification } from "../../create-notification.js"; +import { createNotification } from "@/services/create-notification.js"; export default async function ( user: CacheableUser, diff --git a/packages/backend/src/services/note/reaction/create.ts b/packages/backend/src/services/note/reaction/create.ts index 4cf1fd0941..123356515d 100644 --- a/packages/backend/src/services/note/reaction/create.ts +++ b/packages/backend/src/services/note/reaction/create.ts @@ -16,7 +16,7 @@ import { import { IsNull, Not } from "typeorm"; import { perUserReactionsChart } from "@/services/chart/index.js"; import { genId } from "@/misc/gen-id.js"; -import { createNotification } from "../../create-notification.js"; +import { createNotification } from "@/services/create-notification.js"; import deleteReaction from "./delete.js"; import { isDuplicateKeyValueError } from "@/misc/is-duplicate-key-value-error.js"; import type { NoteReaction } from "@/models/entities/note-reaction.js"; diff --git a/packages/backend/src/services/relay.ts b/packages/backend/src/services/relay.ts index e969d783a0..fdc42616ea 100644 --- a/packages/backend/src/services/relay.ts +++ b/packages/backend/src/services/relay.ts @@ -11,7 +11,7 @@ import { Users, Relays } from "@/models/index.js"; import { genId } from "@/misc/gen-id.js"; import { Cache } from "@/misc/cache.js"; import type { Relay } from "@/models/entities/relay.js"; -import { createSystemUser } from "./create-system-user.js"; +import { createSystemUser } from "@/services/create-system-user.js"; const ACTOR_USERNAME = "relay.actor" as const; diff --git a/packages/backend/src/services/send-email-notification.ts b/packages/backend/src/services/send-email-notification.ts index 14a9754fe5..a2f422a962 100644 --- a/packages/backend/src/services/send-email-notification.ts +++ b/packages/backend/src/services/send-email-notification.ts @@ -1,8 +1,8 @@ -import { UserProfiles } from "@/models/index.js"; +// import { UserProfiles } from "@/models/index.js"; import type { User } from "@/models/entities/user.js"; -import { sendEmail } from "./send-email.js"; -import { I18n } from "@/misc/i18n.js"; -import * as Acct from "@/misc/acct.js"; +// import { sendEmail } from "./send-email.js"; +// import { I18n } from "@/misc/i18n.js"; +// import * as Acct from "@/misc/acct.js"; // TODO //const locales = await import('../../../../locales/index.js'); diff --git a/packages/backend/src/services/send-email.ts b/packages/backend/src/services/send-email.ts index 0703865881..ccc6b365d9 100644 --- a/packages/backend/src/services/send-email.ts +++ b/packages/backend/src/services/send-email.ts @@ -1,6 +1,6 @@ import * as nodemailer from "nodemailer"; import { fetchMeta } from "@/misc/fetch-meta.js"; -import Logger from "./logger.js"; +import Logger from "@/services/logger.js"; import config from "@/config/index.js"; export const logger = new Logger("email"); diff --git a/packages/backend/src/services/stream.ts b/packages/backend/src/services/stream.ts index f3846feaf1..f59674ad6a 100644 --- a/packages/backend/src/services/stream.ts +++ b/packages/backend/src/services/stream.ts @@ -1,4 +1,4 @@ -import { redisClient } from "../db/redis.js"; +import { redisClient } from "@/db/redis.js"; import type { User } from "@/models/entities/user.js"; import type { Note } from "@/models/entities/note.js"; import type { UserList } from "@/models/entities/user-list.js"; diff --git a/packages/backend/src/services/user-list/push.ts b/packages/backend/src/services/user-list/push.ts index 01bb066019..db01b0a900 100644 --- a/packages/backend/src/services/user-list/push.ts +++ b/packages/backend/src/services/user-list/push.ts @@ -5,7 +5,7 @@ import { UserListJoinings, Users } from "@/models/index.js"; import type { UserListJoining } from "@/models/entities/user-list-joining.js"; import { genId } from "@/misc/gen-id.js"; import { fetchProxyAccount } from "@/misc/fetch-proxy-account.js"; -import createFollowing from "../following/create.js"; +import createFollowing from "@/services/following/create.js"; export async function pushUserToUserList(target: User, list: UserList) { await UserListJoinings.insert({ diff --git a/packages/backend/tsconfig.json b/packages/backend/tsconfig.json index 692d7b95b7..324d7da8f9 100644 --- a/packages/backend/tsconfig.json +++ b/packages/backend/tsconfig.json @@ -10,7 +10,7 @@ "declaration": false, "sourceMap": false, "target": "es2021", - "module": "es2020", + "module": "esnext", "moduleResolution": "node", "allowSyntheticDefaultImports": true, "removeComments": false, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 32e8fd06cc..d632f174ee 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -458,6 +458,12 @@ importers: '@types/bcryptjs': specifier: 2.4.2 version: 2.4.2 + '@types/color-convert': + specifier: ^2.0.2 + version: 2.0.2 + '@types/content-disposition': + specifier: ^0.5.7 + version: 0.5.7 '@types/escape-regexp': specifier: 0.0.1 version: 0.0.1 @@ -521,6 +527,12 @@ importers: '@types/oauth': specifier: 0.9.1 version: 0.9.1 + '@types/opencc-js': + specifier: ^1.0.2 + version: 1.0.2 + '@types/pg': + specifier: ^8.10.7 + version: 8.10.7 '@types/probe-image-size': specifier: ^7.2.0 version: 7.2.0 @@ -557,6 +569,9 @@ importers: '@types/sinonjs__fake-timers': specifier: 8.1.2 version: 8.1.2 + '@types/syslog-pro': + specifier: ^1.0.2 + version: 1.0.2 '@types/tinycolor2': specifier: 1.4.3 version: 1.4.3 @@ -2667,7 +2682,7 @@ packages: dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 18.11.18 + '@types/node': 20.8.7 jest-mock: 29.7.0 dev: true @@ -3870,14 +3885,14 @@ packages: resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==} dependencies: '@types/connect': 3.4.35 - '@types/node': 18.11.18 + '@types/node': 20.8.7 /@types/cacheable-request@6.0.3: resolution: {integrity: sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==} dependencies: '@types/http-cache-semantics': 4.0.1 '@types/keyv': 3.1.4 - '@types/node': 18.11.18 + '@types/node': 20.8.7 '@types/responselike': 1.0.0 /@types/co-body@6.1.0: @@ -3887,13 +3902,23 @@ packages: '@types/qs': 6.9.7 dev: false + /@types/color-convert@2.0.2: + resolution: {integrity: sha512-KGRIgCxwcgazts4MXRCikPbIMzBpjfdgEZSy8TRHU/gtg+f9sOfHdtK8unPfxIoBtyd2aTTwINVLSNENlC8U8A==} + dependencies: + '@types/color-name': 1.1.2 + dev: true + + /@types/color-name@1.1.2: + resolution: {integrity: sha512-JWO/ZyxTKk0bLuOhAavGjnwLR73rUE7qzACnU7gMeyA/gdrSHm2xJwqNPipw2MtaZUaqQ2UG/q7pP6AQiZ8mqw==} + dev: true + /@types/connect@3.4.35: resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} dependencies: - '@types/node': 18.11.18 + '@types/node': 20.8.7 - /@types/content-disposition@0.5.5: - resolution: {integrity: sha512-v6LCdKfK6BwcqMo+wYW05rLS12S0ZO0Fl4w1h4aaZMD7bqT3gVUns6FvLJKGZHQmYn3SX55JWGpziwJRwVgutA==} + /@types/content-disposition@0.5.7: + resolution: {integrity: sha512-V9/5u21RHFR1zfdm3rQ6pJUKV+zSSVQt+yq16i1YhdivVzWgPEoKedc3GdT8aFjsqQbakdxuy3FnEdePUQOamQ==} /@types/cookies@0.7.7: resolution: {integrity: sha512-h7BcvPUogWbKCzBR2lY4oqaZbO3jXZksexYJVFvkrFeLgbZjQkU4x8pRq6eg2MHXQhY0McQdqmmsxRWlVAHooA==} @@ -3951,7 +3976,7 @@ packages: /@types/express-serve-static-core@4.17.35: resolution: {integrity: sha512-wALWQwrgiB2AWTT91CB62b6Yt0sNHpznUXeZEcnPU3DRdlDIz74x8Qg1UUYKSVFi+va5vKOLYRBI1bRKiLLKIg==} dependencies: - '@types/node': 18.11.18 + '@types/node': 20.8.7 '@types/qs': 6.9.7 '@types/range-parser': 1.2.4 '@types/send': 0.17.1 @@ -3986,7 +4011,7 @@ packages: /@types/glob-stream@8.0.0: resolution: {integrity: sha512-fxTWwdQmX9LWSHD7ZLlv3BHR992mKcVcDnT/2v+l/QZZo7TfDdyasqlSYVzOnMGWhRbrWeWkbj/mgezFjKynhw==} dependencies: - '@types/node': 20.5.8 + '@types/node': 20.8.7 '@types/picomatch': 2.3.0 '@types/streamx': 2.9.1 dev: true @@ -4085,7 +4110,7 @@ packages: /@types/keyv@3.1.4: resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} dependencies: - '@types/node': 18.11.18 + '@types/node': 20.8.7 /@types/koa-bodyparser@4.3.10: resolution: {integrity: sha512-6ae05pjhmrmGhUR8GYD5qr5p9LTEMEGfGXCsK8VaSL+totwigm8+H/7MHW7K4854CMeuwRAubT8qcc/EagaeIA==} @@ -4195,7 +4220,7 @@ packages: resolution: {integrity: sha512-Ugmxmgk/yPRW3ptBTh9VjOLwsKWJuGbymo1uGX0qdaqqL18uJiiG1ZoV0rxCOYSaDGhvEp5Ece02Amx0iwaxQQ==} dependencies: '@types/accepts': 1.3.5 - '@types/content-disposition': 0.5.5 + '@types/content-disposition': 0.5.7 '@types/cookies': 0.7.7 '@types/http-assert': 1.5.3 '@types/http-errors': 2.0.1 @@ -4262,7 +4287,7 @@ packages: /@types/node-fetch@2.6.4: resolution: {integrity: sha512-1ZX9fcN4Rvkvgv4E6PAY5WXUFWFcRWxZa3EW83UjycOB9ljJCedb2CupIP4RZMEwF/M3eTcCihbBRgwtGbg5Rg==} dependencies: - '@types/node': 20.5.8 + '@types/node': 20.8.7 form-data: 3.0.1 dev: false @@ -4281,12 +4306,12 @@ packages: /@types/node@20.5.8: resolution: {integrity: sha512-eajsR9aeljqNhK028VG0Wuw+OaY5LLxYmxeoXynIoE6jannr9/Ucd1LL0hSSoafk5LTYG+FfqsyGt81Q6Zkybw==} + dev: true /@types/node@20.8.7: resolution: {integrity: sha512-21TKHHh3eUHIi2MloeptJWALuCu5H7HQTdTrWIFReA8ad+aggoX+lRes3ex7/FtpC+sVUpFMQ+QTfYr74mruiQ==} dependencies: undici-types: 5.25.3 - dev: true /@types/nodemailer@6.4.9: resolution: {integrity: sha512-XYG8Gv+sHjaOtUpiuytahMy2mM3rectgroNbs6R3djZEKmPNiIJwe9KqOJBGzKKnNZNKvnuvmugBgpq3w/S0ig==} @@ -4315,10 +4340,22 @@ packages: resolution: {integrity: sha512-PGcyveRIpL1XIqK8eBsmRBt76eFgtzuPiSTyKHZxnGemp2yzGzWpjYKAfK3wIMiU7eH+851yEpiuP8JZerTmWg==} dev: false + /@types/opencc-js@1.0.2: + resolution: {integrity: sha512-46nm84b43jngyljQkO3rwDBRfFMyLW6jflkvHb1Q3VQGGaH3Do00jO12mQNB8ErPdxr6JyBVk1tCFb9g0l7APg==} + dev: true + /@types/parse-link-header@2.0.2: resolution: {integrity: sha512-RKU5SIF0oyM2ZI0ubw66FkM/0RJUv/r84I7vJcXkcICcfeOpd1WXfpcqkFJPaWli5z3YdxMsfWojyU5uofT6sA==} dev: true + /@types/pg@8.10.7: + resolution: {integrity: sha512-ksJqHipwYaSEHz9e1fr6H6erjoEdNNaOxwyJgPx9bNeaqOW3iWBQgVHfpwiSAoqGzchfc+ZyRLwEfeCcyYD3uQ==} + dependencies: + '@types/node': 20.8.7 + pg-protocol: 1.6.0 + pg-types: 4.0.1 + dev: true + /@types/picomatch@2.3.0: resolution: {integrity: sha512-O397rnSS9iQI4OirieAtsDqvCj4+3eY1J+EPdNTKuHuRWIfUoGyzX294o8C4KJYaLqgSrd2o60c5EqCU8Zv02g==} dev: true @@ -4372,7 +4409,7 @@ packages: /@types/responselike@1.0.0: resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==} dependencies: - '@types/node': 18.11.18 + '@types/node': 20.8.7 /@types/sanitize-html@2.9.0: resolution: {integrity: sha512-4fP/kEcKNj2u39IzrxWYuf/FnCCwwQCpif6wwY6ROUS1EPRIfWJjGkY3HIowY1EX/VbX5e86yq8AAE7UPMgATg==} @@ -4396,14 +4433,14 @@ packages: resolution: {integrity: sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==} dependencies: '@types/mime': 1.3.2 - '@types/node': 18.11.18 + '@types/node': 20.8.7 /@types/serve-static@1.15.2: resolution: {integrity: sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw==} dependencies: '@types/http-errors': 2.0.1 '@types/mime': 3.0.1 - '@types/node': 18.11.18 + '@types/node': 20.8.7 /@types/sinonjs__fake-timers@8.1.1: resolution: {integrity: sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==} @@ -4428,7 +4465,11 @@ packages: /@types/streamx@2.9.1: resolution: {integrity: sha512-9bywzhouyedmci7WCIPFwJ8zASDnxt2gaVUy52X0p0Tt085IJSAEP0L6j4SSNeDMSLzpYu6cPz0GrJZ7kPJ6Bg==} dependencies: - '@types/node': 20.5.8 + '@types/node': 20.8.7 + dev: true + + /@types/syslog-pro@1.0.2: + resolution: {integrity: sha512-wFRRgINEkchvvMi3zouVNulFsnghytbWesO79ktfs75SAMPJUDoxx0AjPWpauEGR12u1g0ky7bPzZmuWbMdYZw==} dev: true /@types/throttle-debounce@5.0.0: @@ -4523,7 +4564,7 @@ packages: resolution: {integrity: sha512-Km7XAtUIduROw7QPgvcft0lIupeG8a8rdKL8RiSyKvlE7dYY31fEn41HVuQsRFDuROA8tA4K2UVL+WdfFmErBA==} requiresBuild: true dependencies: - '@types/node': 20.5.8 + '@types/node': 20.8.7 dev: true optional: true @@ -11769,7 +11810,7 @@ packages: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 18.11.18 + '@types/node': 20.8.7 jest-mock: 29.7.0 jest-util: 29.7.0 dev: true @@ -11845,7 +11886,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 18.11.18 + '@types/node': 20.8.7 jest-util: 29.7.0 dev: true @@ -12027,7 +12068,7 @@ packages: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 18.11.18 + '@types/node': 20.8.7 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true @@ -13992,6 +14033,10 @@ packages: resolution: {integrity: sha512-Oh+8fK09mgGmAshFdH6hSVco6KZmd1tTwNFWj35OvzdmJTMZtAkbn05zar2iG3v6sDs1JLEtOiBGNb6BHwkb2w==} dev: true + /obuf@1.1.2: + resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} + dev: true + /omggif@1.0.10: resolution: {integrity: sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw==} dev: false @@ -14447,7 +14492,11 @@ packages: /pg-int8@1.0.1: resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} engines: {node: '>=4.0.0'} - dev: false + + /pg-numeric@1.0.2: + resolution: {integrity: sha512-BM/Thnrw5jm2kKLE5uJkXqqExRUY/toLHda65XgFTBTFYZyopbKjBe29Ii3RbkvlsMoFwD+tHeGaCjjv0gHlyw==} + engines: {node: '>=4'} + dev: true /pg-pool@3.6.1(pg@8.11.3): resolution: {integrity: sha512-jizsIzhkIitxCGfPRzJn1ZdcosIt3pz9Sh3V01fm1vZnbnCMgmGl5wvGGdNN2EL9Rmb0EcFoCkixH4Pu+sP9Og==} @@ -14459,7 +14508,6 @@ packages: /pg-protocol@1.6.0: resolution: {integrity: sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q==} - dev: false /pg-types@2.2.0: resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} @@ -14472,6 +14520,19 @@ packages: postgres-interval: 1.2.0 dev: false + /pg-types@4.0.1: + resolution: {integrity: sha512-hRCSDuLII9/LE3smys1hRHcu5QGcLs9ggT7I/TCs0IE+2Eesxi9+9RWAAwZ0yaGjxoWICF/YHLOEjydGujoJ+g==} + engines: {node: '>=10'} + dependencies: + pg-int8: 1.0.1 + pg-numeric: 1.0.2 + postgres-array: 3.0.2 + postgres-bytea: 3.0.0 + postgres-date: 2.0.1 + postgres-interval: 3.0.0 + postgres-range: 1.1.3 + dev: true + /pg@8.11.3: resolution: {integrity: sha512-+9iuvG8QfaaUrrph+kpF24cXkH1YOOUeArRNYIxq1viYHZagBxrTno7cecY1Fa44tJeZvaoG+Djpkc3JwehN5g==} engines: {node: '>= 8.0.0'} @@ -14881,16 +14942,33 @@ packages: engines: {node: '>=4'} dev: false + /postgres-array@3.0.2: + resolution: {integrity: sha512-6faShkdFugNQCLwucjPcY5ARoW1SlbnrZjmGl0IrrqewpvxvhSLHimCVzqeuULCbG0fQv7Dtk1yDbG3xv7Veog==} + engines: {node: '>=12'} + dev: true + /postgres-bytea@1.0.0: resolution: {integrity: sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==} engines: {node: '>=0.10.0'} dev: false + /postgres-bytea@3.0.0: + resolution: {integrity: sha512-CNd4jim9RFPkObHSjVHlVrxoVQXz7quwNFpz7RY1okNNme49+sVyiTvTRobiLV548Hx/hb1BG+iE7h9493WzFw==} + engines: {node: '>= 6'} + dependencies: + obuf: 1.1.2 + dev: true + /postgres-date@1.0.7: resolution: {integrity: sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==} engines: {node: '>=0.10.0'} dev: false + /postgres-date@2.0.1: + resolution: {integrity: sha512-YtMKdsDt5Ojv1wQRvUhnyDJNSr2dGIC96mQVKz7xufp07nfuFONzdaowrMHjlAzY6GDLd4f+LUHHAAM1h4MdUw==} + engines: {node: '>=12'} + dev: true + /postgres-interval@1.2.0: resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==} engines: {node: '>=0.10.0'} @@ -14898,6 +14976,15 @@ packages: xtend: 4.0.2 dev: false + /postgres-interval@3.0.0: + resolution: {integrity: sha512-BSNDnbyZCXSxgA+1f5UU2GmwhoI0aU5yMxRGO8CdFEcY2BQF9xm/7MqKnYoM1nJDk8nONNWDk9WeSmePFhQdlw==} + engines: {node: '>=12'} + dev: true + + /postgres-range@1.1.3: + resolution: {integrity: sha512-VdlZoocy5lCP0c/t66xAfclglEapXPCIVhqqJRncYpvbCgImF0w67aPKfbqUMr72tO2k5q0TdTZwCLjPTI6C9g==} + dev: true + /prebuild-install@7.1.1: resolution: {integrity: sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==} engines: {node: '>=10'} @@ -17630,7 +17717,6 @@ packages: /undici-types@5.25.3: resolution: {integrity: sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==} - dev: true /undici@5.23.0: resolution: {integrity: sha512-1D7w+fvRsqlQ9GscLBwcAJinqcZGHUKjbOmXdlE/v8BvEGXjeWAax+341q44EuTcHXXnfyKNbKRq4Lg7OzhMmg==} From 267d1970e23fa95f831ea3273a8814c99b65fa44 Mon Sep 17 00:00:00 2001 From: naskya <m@naskya.net> Date: Mon, 30 Oct 2023 18:26:38 +0000 Subject: [PATCH 54/74] fix icon in page.post.vue --- packages/client/src/components/page/page.post.vue | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/client/src/components/page/page.post.vue b/packages/client/src/components/page/page.post.vue index 7366d2c4a0..1910e8431e 100644 --- a/packages/client/src/components/page/page.post.vue +++ b/packages/client/src/components/page/page.post.vue @@ -44,6 +44,7 @@ export default defineComponent({ text: this.hpml.interpolate(this.block.text), posted: false, posting: false, + icon, }; }, watch: { From 70503d698f02963048c0205490b8f37e64167f4c Mon Sep 17 00:00:00 2001 From: naskya <m@naskya.net> Date: Tue, 31 Oct 2023 14:00:54 +0900 Subject: [PATCH 55/74] fix: reactions_not_public condition --- packages/backend/src/server/api/endpoints/users/reactions.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/backend/src/server/api/endpoints/users/reactions.ts b/packages/backend/src/server/api/endpoints/users/reactions.ts index 3c0e33b2f6..483a78865f 100644 --- a/packages/backend/src/server/api/endpoints/users/reactions.ts +++ b/packages/backend/src/server/api/endpoints/users/reactions.ts @@ -49,7 +49,7 @@ export const paramDef = { export default define(meta, paramDef, async (ps, me) => { const profile = await UserProfiles.findOneByOrFail({ userId: ps.userId }); - if (me.id !== ps.userId && !profile.publicReactions) { + if (!profile.publicReactions && (me == null || me.id !== ps.userId)) { throw new ApiError(meta.errors.reactionsNotPublic); } From 0fb0a1961198db4cb5a89fd44055f685bbc0a077 Mon Sep 17 00:00:00 2001 From: naskya <m@naskya.net> Date: Tue, 31 Oct 2023 10:04:51 +0000 Subject: [PATCH 56/74] fix(minor): consistent mfm parsing --- packages/client/src/components/mfm.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/client/src/components/mfm.ts b/packages/client/src/components/mfm.ts index 65ffa42108..5dbf710118 100644 --- a/packages/client/src/components/mfm.ts +++ b/packages/client/src/components/mfm.ts @@ -264,7 +264,7 @@ export default defineComponent({ : token.props.args.y ? "perspective(128px) rotateY" : "rotate"; - const degrees = parseFloat(token.props.args.deg) ?? "90"; + const degrees = parseFloat(token.props.args.deg ?? "90"); style = `transform: ${rotate}(${degrees}deg); transform-origin: center center;`; break; } From 3e3933d50a31284dcf317bd19557b1d17fdd83ab Mon Sep 17 00:00:00 2001 From: naskya <m@naskya.net> Date: Tue, 31 Oct 2023 10:21:59 +0000 Subject: [PATCH 57/74] fix: icons in MkModPlayer --- packages/client/src/components/MkModPlayer.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/client/src/components/MkModPlayer.vue b/packages/client/src/components/MkModPlayer.vue index 1129d2bb62..266f418f45 100644 --- a/packages/client/src/components/MkModPlayer.vue +++ b/packages/client/src/components/MkModPlayer.vue @@ -91,7 +91,7 @@ class="_button" @click.stop="captionPopup" > - <i class="ph-subtitles"></i> + <i :class="icon('ph-subtitles')"></i> </button> <button v-if="!hide" @@ -99,7 +99,7 @@ class="_button" @click.stop="toggleVisible()" > - <i class="ph-eye-slash"></i> + <i :class="icon('ph-eye-slash')"></i> </button> </div> </div> From 8845383fc2c69b074ff100903a6090bab5bdaea7 Mon Sep 17 00:00:00 2001 From: naskya <m@naskya.net> Date: Tue, 31 Oct 2023 20:14:11 +0900 Subject: [PATCH 58/74] chore: add missing @types packages for client --- packages/client/package.json | 4 ++++ pnpm-lock.yaml | 28 ++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/packages/client/package.json b/packages/client/package.json index 890aba4ab8..6136f23b40 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -18,14 +18,18 @@ "@rollup/plugin-json": "6.0.0", "@rollup/pluginutils": "^5.0.4", "@syuilo/aiscript": "0.11.1", + "@types/autosize": "^4.0.2", "@types/escape-regexp": "0.0.1", "@types/glob": "8.1.0", "@types/gulp": "4.0.13", "@types/gulp-rename": "2.0.2", + "@types/insert-text-at-cursor": "^0.3.1", "@types/katex": "0.16.2", "@types/matter-js": "0.19.0", + "@types/prismjs": "^1.26.2", "@types/punycode": "2.1.0", "@types/seedrandom": "3.0.5", + "@types/textarea-caret": "^3.0.2", "@types/throttle-debounce": "5.0.0", "@types/tinycolor2": "1.4.3", "@types/uuid": "9.0.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d632f174ee..043278cbb2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -668,6 +668,9 @@ importers: '@syuilo/aiscript': specifier: 0.11.1 version: 0.11.1 + '@types/autosize': + specifier: ^4.0.2 + version: 4.0.2 '@types/escape-regexp': specifier: 0.0.1 version: 0.0.1 @@ -680,18 +683,27 @@ importers: '@types/gulp-rename': specifier: 2.0.2 version: 2.0.2 + '@types/insert-text-at-cursor': + specifier: ^0.3.1 + version: 0.3.1 '@types/katex': specifier: 0.16.2 version: 0.16.2 '@types/matter-js': specifier: 0.19.0 version: 0.19.0 + '@types/prismjs': + specifier: ^1.26.2 + version: 1.26.2 '@types/punycode': specifier: 2.1.0 version: 2.1.0 '@types/seedrandom': specifier: 3.0.5 version: 3.0.5 + '@types/textarea-caret': + specifier: ^3.0.2 + version: 3.0.2 '@types/throttle-debounce': specifier: 5.0.0 version: 5.0.0 @@ -3819,6 +3831,10 @@ packages: resolution: {integrity: sha512-2+rYSaWrpdbQG3SA0LmMT6YxWLrI81AqpMlSkw3QtFc2HGDufkweQSn30Eiev7x9LL0oyFrBqk1PXOnB9IEgKg==} dev: true + /@types/autosize@4.0.2: + resolution: {integrity: sha512-wm2fxJhRH3yOJ2GsqWG2q27HcqhWXjeWPLO6o1RiNCITOASyyK0s8xtrW7xsKFCyXF5L1AI2LbElax/HlCk92w==} + dev: true + /@types/babel__core@7.20.1: resolution: {integrity: sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw==} dependencies: @@ -4053,6 +4069,10 @@ packages: /@types/http-errors@2.0.1: resolution: {integrity: sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ==} + /@types/insert-text-at-cursor@0.3.1: + resolution: {integrity: sha512-HgUgM4B0pJ68yV3xBEvfzR8Jd+Fhk3Cr4MSU6MJf3vUDEr1O073vPNdMGKJCOWaU8b9oRBgKPF0CHBu0kCre3A==} + dev: true + /@types/istanbul-lib-coverage@2.0.5: resolution: {integrity: sha512-zONci81DZYCZjiLe0r6equvZut0b+dBRPBN5kBDjsONnutYNtJMoWQ9uR2RkL1gLG9NMTzvf+29e5RFfPbeKhQ==} dev: true @@ -4360,6 +4380,10 @@ packages: resolution: {integrity: sha512-O397rnSS9iQI4OirieAtsDqvCj4+3eY1J+EPdNTKuHuRWIfUoGyzX294o8C4KJYaLqgSrd2o60c5EqCU8Zv02g==} dev: true + /@types/prismjs@1.26.2: + resolution: {integrity: sha512-/r7Cp7iUIk7gts26mHXD66geUC+2Fo26TZYjQK6Nr4LDfi6lmdRmMqM0oPwfiMhUwoBAOFe8GstKi2pf6hZvwA==} + dev: true + /@types/probe-image-size@7.2.0: resolution: {integrity: sha512-R5H3vw62gHNHrn+JGZbKejb+Z2D/6E5UNVlhCzIaBBLroMQMOFqy5Pap2gM+ZZHdqBtVU0/cx/M6to+mOJcoew==} dependencies: @@ -4472,6 +4496,10 @@ packages: resolution: {integrity: sha512-wFRRgINEkchvvMi3zouVNulFsnghytbWesO79ktfs75SAMPJUDoxx0AjPWpauEGR12u1g0ky7bPzZmuWbMdYZw==} dev: true + /@types/textarea-caret@3.0.2: + resolution: {integrity: sha512-Bda0K7o7QLHp5KEqLYxZJaCDQZ5okxo3iGVCTOfOxHQQxo7ayYUXv1UyGhzmMPucT0UbeMeCW+DCGiAdyf8cTQ==} + dev: true + /@types/throttle-debounce@5.0.0: resolution: {integrity: sha512-Pb7k35iCGFcGPECoNE4DYp3Oyf2xcTd3FbFQxXUI9hEYKUl6YX+KLf7HrBmgVcD05nl50LIH6i+80js4iYmWbw==} dev: true From 40d5ad1b2d3f3c635574de25cf9898ca68196f2b Mon Sep 17 00:00:00 2001 From: naskya <m@naskya.net> Date: Tue, 31 Oct 2023 20:19:05 +0900 Subject: [PATCH 59/74] chore: remove unused imports/variables --- packages/client/src/account.ts | 2 +- .../src/components/MkModalPageWindow.vue | 1 - .../client/src/components/MkNotePreview.vue | 2 +- .../client/src/components/MkNoteSimple.vue | 2 +- packages/client/src/components/MkNotes.vue | 2 +- .../client/src/components/MkObjectView.vue | 3 +-- .../src/components/MkPostFormAttaches.vue | 1 - .../client/src/components/MkReactionIcon.vue | 2 +- .../src/components/MkReactionTooltip.vue | 2 +- .../components/MkReactionsViewer.details.vue | 2 +- packages/client/src/components/MkSignin.vue | 4 ++-- .../client/src/components/MkSigninDialog.vue | 2 +- .../client/src/components/MkSignupDialog.vue | 2 +- packages/client/src/components/MkUserList.vue | 2 +- .../client/src/components/MkUsersTooltip.vue | 3 +-- .../src/components/MkVisibilityPicker.vue | 1 - packages/client/src/directives/focus.ts | 2 +- packages/client/src/directives/hotkey.ts | 2 +- packages/client/src/directives/ripple.ts | 3 ++- packages/client/src/directives/vibrate.ts | 2 +- packages/client/src/filters/note.ts | 4 +++- packages/client/src/filters/number.ts | 2 +- packages/client/src/init.ts | 2 +- packages/client/src/nirax.ts | 2 +- packages/client/src/pages/_empty_.vue | 2 -- packages/client/src/pages/_loading_.vue | 2 -- packages/client/src/pages/settings/drive.vue | 4 ++-- .../client/src/pages/user/index.activity.vue | 2 +- packages/client/src/router.ts | 19 +++++++++---------- packages/client/src/scripts/get-note-menu.ts | 2 +- .../client/src/scripts/get-note-summary.ts | 1 - packages/client/src/scripts/popup-position.ts | 2 -- .../client/src/scripts/use-leave-guard.ts | 6 +++--- packages/client/src/ui/_common_/common.vue | 2 +- .../src/ui/_common_/navbar-for-mobile.vue | 9 +-------- .../src/ui/_common_/statusbar-federation.vue | 4 +--- .../client/src/ui/_common_/statusbar-rss.vue | 3 +-- .../src/ui/_common_/statusbar-user-list.vue | 2 +- .../client/src/ui/_common_/statusbars.vue | 3 +-- packages/client/src/ui/_common_/sw-inject.ts | 2 -- packages/client/src/ui/deck/column-core.vue | 1 - packages/client/src/ui/deck/deck-store.ts | 1 - packages/client/src/ui/visitor.vue | 3 +-- packages/client/src/ui/visitor/a.vue | 2 +- packages/client/src/ui/visitor/kanban.vue | 2 +- packages/client/src/widgets/button.vue | 9 ++------- packages/client/src/widgets/calendar.vue | 8 ++------ packages/client/src/widgets/clock.vue | 6 +----- packages/client/src/widgets/digital-clock.vue | 2 +- .../client/src/widgets/instance-cloud.vue | 6 +----- packages/client/src/widgets/online-users.vue | 8 ++------ packages/client/src/widgets/post-form.vue | 7 +------ packages/client/src/widgets/server-info.vue | 13 ++----------- packages/client/src/widgets/slideshow.vue | 8 ++------ packages/client/src/widgets/unix-clock.vue | 6 +----- 55 files changed, 65 insertions(+), 134 deletions(-) diff --git a/packages/client/src/account.ts b/packages/client/src/account.ts index f1185e4df3..c91259d127 100644 --- a/packages/client/src/account.ts +++ b/packages/client/src/account.ts @@ -1,4 +1,4 @@ -import { defineAsyncComponent, reactive } from "vue"; +import { defineAsyncComponent } from "vue"; import type * as firefish from "firefish-js"; import { i18n } from "./i18n"; import { del, get, set } from "@/scripts/idb-proxy"; diff --git a/packages/client/src/components/MkModalPageWindow.vue b/packages/client/src/components/MkModalPageWindow.vue index bcf763e3a1..bd44379001 100644 --- a/packages/client/src/components/MkModalPageWindow.vue +++ b/packages/client/src/components/MkModalPageWindow.vue @@ -64,7 +64,6 @@ import { i18n } from "@/i18n"; import type { PageMetadata } from "@/scripts/page-metadata"; import { provideMetadataReceiver } from "@/scripts/page-metadata"; import { Router } from "@/nirax"; -import { defaultStore } from "@/store"; import icon from "@/scripts/icon"; const props = defineProps<{ diff --git a/packages/client/src/components/MkNotePreview.vue b/packages/client/src/components/MkNotePreview.vue index be007738d9..62bcc0f0c5 100644 --- a/packages/client/src/components/MkNotePreview.vue +++ b/packages/client/src/components/MkNotePreview.vue @@ -22,7 +22,7 @@ <script lang="ts" setup> import preprocess from "@/scripts/preprocess"; -const props = defineProps<{ +defineProps<{ text: string; }>(); </script> diff --git a/packages/client/src/components/MkNoteSimple.vue b/packages/client/src/components/MkNoteSimple.vue index 5f45811fc1..70ee62bf28 100644 --- a/packages/client/src/components/MkNoteSimple.vue +++ b/packages/client/src/components/MkNoteSimple.vue @@ -15,7 +15,7 @@ import type * as firefish from "firefish-js"; import XNoteHeader from "@/components/MkNoteHeader.vue"; import MkSubNoteContent from "@/components/MkSubNoteContent.vue"; -const props = defineProps<{ +defineProps<{ note: firefish.entities.Note; pinned?: boolean; }>(); diff --git a/packages/client/src/components/MkNotes.vue b/packages/client/src/components/MkNotes.vue index 267ce7463b..f64100a6fd 100644 --- a/packages/client/src/components/MkNotes.vue +++ b/packages/client/src/components/MkNotes.vue @@ -45,7 +45,7 @@ import { scroll } from "@/scripts/scroll"; const tlEl = ref<HTMLElement>(); -const props = defineProps<{ +defineProps<{ pagination: Paging; noGap?: boolean; }>(); diff --git a/packages/client/src/components/MkObjectView.vue b/packages/client/src/components/MkObjectView.vue index 74f3ed0a31..1e69ba988d 100644 --- a/packages/client/src/components/MkObjectView.vue +++ b/packages/client/src/components/MkObjectView.vue @@ -5,10 +5,9 @@ </template> <script lang="ts" setup> -import {} from "vue"; import XValue from "./MkObjectView.value.vue"; -const props = defineProps<{ +defineProps<{ value: Record<string, unknown>; }>(); </script> diff --git a/packages/client/src/components/MkPostFormAttaches.vue b/packages/client/src/components/MkPostFormAttaches.vue index 8e6e41a279..a879bd5d8b 100644 --- a/packages/client/src/components/MkPostFormAttaches.vue +++ b/packages/client/src/components/MkPostFormAttaches.vue @@ -35,7 +35,6 @@ import { VueDraggable } from "vue-draggable-plus"; import MkDriveFileThumbnail from "@/components/MkDriveFileThumbnail.vue"; import * as os from "@/os"; import { i18n } from "@/i18n"; -import { defaultStore } from "@/store"; import icon from "@/scripts/icon"; const props = defineProps({ diff --git a/packages/client/src/components/MkReactionIcon.vue b/packages/client/src/components/MkReactionIcon.vue index 89e056bab2..e9d5a198cc 100644 --- a/packages/client/src/components/MkReactionIcon.vue +++ b/packages/client/src/components/MkReactionIcon.vue @@ -9,7 +9,7 @@ </template> <script lang="ts" setup> -const props = defineProps<{ +defineProps<{ reaction: string; customEmojis?: any[]; // TODO noStyle?: boolean; diff --git a/packages/client/src/components/MkReactionTooltip.vue b/packages/client/src/components/MkReactionTooltip.vue index b83a42ee89..0e83226c94 100644 --- a/packages/client/src/components/MkReactionTooltip.vue +++ b/packages/client/src/components/MkReactionTooltip.vue @@ -21,7 +21,7 @@ import MkTooltip from "./MkTooltip.vue"; import XReactionIcon from "@/components/MkReactionIcon.vue"; -const props = defineProps<{ +defineProps<{ reaction: string; emojis: any[]; // TODO targetElement: HTMLElement; diff --git a/packages/client/src/components/MkReactionsViewer.details.vue b/packages/client/src/components/MkReactionsViewer.details.vue index a04daf0541..0d992ae431 100644 --- a/packages/client/src/components/MkReactionsViewer.details.vue +++ b/packages/client/src/components/MkReactionsViewer.details.vue @@ -32,7 +32,7 @@ import MkTooltip from "./MkTooltip.vue"; import XReactionIcon from "@/components/MkReactionIcon.vue"; -const props = defineProps<{ +defineProps<{ reaction: string; users: any[]; // TODO count: number; diff --git a/packages/client/src/components/MkSignin.vue b/packages/client/src/components/MkSignin.vue index a19d833ed6..10bcfc3bdf 100644 --- a/packages/client/src/components/MkSignin.vue +++ b/packages/client/src/components/MkSignin.vue @@ -128,12 +128,12 @@ </template> <script lang="ts" setup> -import { computed, defineAsyncComponent, ref } from "vue"; +import { defineAsyncComponent, ref } from "vue"; import { toUnicode } from "punycode/"; import MkButton from "@/components/MkButton.vue"; import MkInput from "@/components/form/input.vue"; import MkInfo from "@/components/MkInfo.vue"; -import { apiUrl, host as configHost } from "@/config"; +import { host as configHost } from "@/config"; import { byteify, hexify } from "@/scripts/2fa"; import * as os from "@/os"; import { login } from "@/account"; diff --git a/packages/client/src/components/MkSigninDialog.vue b/packages/client/src/components/MkSigninDialog.vue index cecf605945..b0fc7700e8 100644 --- a/packages/client/src/components/MkSigninDialog.vue +++ b/packages/client/src/components/MkSigninDialog.vue @@ -18,7 +18,7 @@ import MkSignin from "@/components/MkSignin.vue"; import XModalWindow from "@/components/MkModalWindow.vue"; import { i18n } from "@/i18n"; -const props = withDefaults( +withDefaults( defineProps<{ autoSet?: boolean; message?: string; diff --git a/packages/client/src/components/MkSignupDialog.vue b/packages/client/src/components/MkSignupDialog.vue index 9024d6fc59..f9829c1040 100644 --- a/packages/client/src/components/MkSignupDialog.vue +++ b/packages/client/src/components/MkSignupDialog.vue @@ -26,7 +26,7 @@ import XSignup from "@/components/MkSignup.vue"; import XModalWindow from "@/components/MkModalWindow.vue"; import { i18n } from "@/i18n"; -const props = withDefaults( +withDefaults( defineProps<{ autoSet?: boolean; }>(), diff --git a/packages/client/src/components/MkUserList.vue b/packages/client/src/components/MkUserList.vue index 8f5935ee48..92eb5df953 100644 --- a/packages/client/src/components/MkUserList.vue +++ b/packages/client/src/components/MkUserList.vue @@ -31,7 +31,7 @@ import type { Paging } from "@/components/MkPagination.vue"; import MkPagination from "@/components/MkPagination.vue"; import { i18n } from "@/i18n"; -const props = defineProps<{ +defineProps<{ pagination: Paging; noGap?: boolean; }>(); diff --git a/packages/client/src/components/MkUsersTooltip.vue b/packages/client/src/components/MkUsersTooltip.vue index dd6018cb61..25af3ac121 100644 --- a/packages/client/src/components/MkUsersTooltip.vue +++ b/packages/client/src/components/MkUsersTooltip.vue @@ -18,10 +18,9 @@ </template> <script lang="ts" setup> -import {} from "vue"; import MkTooltip from "./MkTooltip.vue"; -const props = defineProps<{ +defineProps<{ users: any[]; // TODO count: number; targetElement: HTMLElement; diff --git a/packages/client/src/components/MkVisibilityPicker.vue b/packages/client/src/components/MkVisibilityPicker.vue index 3d4d762338..a3aa2647a1 100644 --- a/packages/client/src/components/MkVisibilityPicker.vue +++ b/packages/client/src/components/MkVisibilityPicker.vue @@ -128,7 +128,6 @@ import { nextTick, ref, shallowRef, watch } from "vue"; import type * as firefish from "firefish-js"; import MkModal from "@/components/MkModal.vue"; import { i18n } from "@/i18n"; -import { defaultStore } from "@/store"; import icon from "@/scripts/icon"; const modal = shallowRef<InstanceType<typeof MkModal>>(); diff --git a/packages/client/src/directives/focus.ts b/packages/client/src/directives/focus.ts index 36b2c2d714..6ad6e485a0 100644 --- a/packages/client/src/directives/focus.ts +++ b/packages/client/src/directives/focus.ts @@ -1,3 +1,3 @@ export default { - mounted: (el) => el.focus(), + mounted: (el: HTMLElement) => el.focus(), }; diff --git a/packages/client/src/directives/hotkey.ts b/packages/client/src/directives/hotkey.ts index 9e89c271dc..9e148cc0a7 100644 --- a/packages/client/src/directives/hotkey.ts +++ b/packages/client/src/directives/hotkey.ts @@ -1,5 +1,5 @@ import type { Directive } from "vue"; -import { makeHotkey } from "../scripts/hotkey"; +import { makeHotkey } from "@/scripts/hotkey"; export default { mounted(el, binding) { diff --git a/packages/client/src/directives/ripple.ts b/packages/client/src/directives/ripple.ts index 395f1a0779..efbc5ee5aa 100644 --- a/packages/client/src/directives/ripple.ts +++ b/packages/client/src/directives/ripple.ts @@ -1,8 +1,9 @@ import Ripple from "@/components/MkRipple.vue"; import { popup } from "@/os"; +import type { Ref } from "vue"; export default { - mounted(el, binding, vn) { + mounted(el: HTMLElement, binding: Ref<boolean>) { // 明示的に false であればバインドしない if (binding.value === false) return; diff --git a/packages/client/src/directives/vibrate.ts b/packages/client/src/directives/vibrate.ts index 15ec8bc5bc..45bb6e7664 100644 --- a/packages/client/src/directives/vibrate.ts +++ b/packages/client/src/directives/vibrate.ts @@ -1,5 +1,5 @@ import type { Directive } from "vue"; -import { vibrate } from "../scripts/vibrate"; +import { vibrate } from "@/scripts/vibrate"; export default { mounted(el, binding) { diff --git a/packages/client/src/filters/note.ts b/packages/client/src/filters/note.ts index 5677f6bb0d..c3f0d6ade1 100644 --- a/packages/client/src/filters/note.ts +++ b/packages/client/src/filters/note.ts @@ -1,3 +1,5 @@ -export const notePage = (note) => { +import { entities } from "firefish-js"; + +export const notePage = (note: entities.Note) => { return `/notes/${note.id}`; }; diff --git a/packages/client/src/filters/number.ts b/packages/client/src/filters/number.ts index 35e10fcbc2..dae49a0e59 100644 --- a/packages/client/src/filters/number.ts +++ b/packages/client/src/filters/number.ts @@ -1 +1 @@ -export default (n) => (n == null ? "N/A" : n.toLocaleString()); +export default (n?: number) => (n == null ? "N/A" : n.toLocaleString()); diff --git a/packages/client/src/init.ts b/packages/client/src/init.ts index 92846d13c7..637e5aafaf 100644 --- a/packages/client/src/init.ts +++ b/packages/client/src/init.ts @@ -36,7 +36,7 @@ import { set } from "@/scripts/idb-proxy"; import widgets from "@/widgets"; import directives from "@/directives"; import components from "@/components"; -import { host, lang, ui, version } from "@/config"; +import { lang, ui, version } from "@/config"; import { applyTheme } from "@/scripts/theme"; import { isDeviceDarkmode } from "@/scripts/is-device-darkmode"; import { i18n } from "@/i18n"; diff --git a/packages/client/src/nirax.ts b/packages/client/src/nirax.ts index 43e770ec33..0ce413d393 100644 --- a/packages/client/src/nirax.ts +++ b/packages/client/src/nirax.ts @@ -2,7 +2,7 @@ import { EventEmitter } from "eventemitter3"; import type { Component, ShallowRef } from "vue"; -import { Ref, ref, shallowRef } from "vue"; +import { shallowRef } from "vue"; import { pleaseLogin } from "@/scripts/please-login"; import { safeURIDecode } from "@/scripts/safe-uri-decode"; diff --git a/packages/client/src/pages/_empty_.vue b/packages/client/src/pages/_empty_.vue index 3892edbd3d..ee9bc3ac72 100644 --- a/packages/client/src/pages/_empty_.vue +++ b/packages/client/src/pages/_empty_.vue @@ -1,5 +1,3 @@ <template> <div></div> </template> - -<script lang="ts" setup></script> diff --git a/packages/client/src/pages/_loading_.vue b/packages/client/src/pages/_loading_.vue index 832c05916c..93bb8bb2fb 100644 --- a/packages/client/src/pages/_loading_.vue +++ b/packages/client/src/pages/_loading_.vue @@ -1,5 +1,3 @@ <template> <MkLoading /> </template> - -<script lang="ts" setup></script> diff --git a/packages/client/src/pages/settings/drive.vue b/packages/client/src/pages/settings/drive.vue index bd8b46600a..a0b88e1728 100644 --- a/packages/client/src/pages/settings/drive.vue +++ b/packages/client/src/pages/settings/drive.vue @@ -92,8 +92,8 @@ const fetching = ref(true); const usage = ref<any>(null); const capacity = ref<any>(null); const uploadFolder = ref<any>(null); -const alwaysMarkNsfw = ref<boolean>($i.alwaysMarkNsfw); -const autoSensitive = ref<boolean>($i.autoSensitive); +const alwaysMarkNsfw = ref<boolean>($i != null && $i.alwaysMarkNsfw); +const autoSensitive = ref<boolean>($i != null && $i.autoSensitive); const meterStyle = computed(() => { return { diff --git a/packages/client/src/pages/user/index.activity.vue b/packages/client/src/pages/user/index.activity.vue index bfaf012a7e..e417f93bf4 100644 --- a/packages/client/src/pages/user/index.activity.vue +++ b/packages/client/src/pages/user/index.activity.vue @@ -35,7 +35,7 @@ import * as os from "@/os"; import { i18n } from "@/i18n"; import icon from "@/scripts/icon"; -const props = withDefaults( +withDefaults( defineProps<{ user: firefish.entities.User; limit?: number; diff --git a/packages/client/src/router.ts b/packages/client/src/router.ts index ea772bad5c..b2d74d6148 100644 --- a/packages/client/src/router.ts +++ b/packages/client/src/router.ts @@ -5,18 +5,17 @@ import { iAmModerator } from "@/account"; import { $i } from "@/reactiveAccount"; import MkLoading from "@/pages/_loading_.vue"; import MkError from "@/pages/_error_.vue"; -import { api } from "@/os"; -import { ui } from "@/config"; +// import { api } from "@/os"; -function getGuestTimelineStatus() { - api("meta", { - detail: false, - }).then((meta) => { - return meta.enableGuestTimeline; - }); -} +// function getGuestTimelineStatus() { +// api("meta", { +// detail: false, +// }).then((meta) => { +// return meta.enableGuestTimeline; +// }); +// } -const guestTimeline = getGuestTimelineStatus(); +// const guestTimeline = getGuestTimelineStatus(); const page = (loader: AsyncComponentLoader<any>) => defineAsyncComponent({ diff --git a/packages/client/src/scripts/get-note-menu.ts b/packages/client/src/scripts/get-note-menu.ts index 5bbb69a461..2e6b84bde0 100644 --- a/packages/client/src/scripts/get-note-menu.ts +++ b/packages/client/src/scripts/get-note-menu.ts @@ -1,5 +1,5 @@ import type { Ref } from "vue"; -import { defineAsyncComponent, inject } from "vue"; +import { defineAsyncComponent } from "vue"; import type * as firefish from "firefish-js"; import { $i } from "@/reactiveAccount"; import { i18n } from "@/i18n"; diff --git a/packages/client/src/scripts/get-note-summary.ts b/packages/client/src/scripts/get-note-summary.ts index a2ea4b4e2e..7a09c601ae 100644 --- a/packages/client/src/scripts/get-note-summary.ts +++ b/packages/client/src/scripts/get-note-summary.ts @@ -1,5 +1,4 @@ import type * as firefish from "firefish-js"; -import { i18n } from "@/i18n"; /** * 投稿を表す文字列を取得します。 diff --git a/packages/client/src/scripts/popup-position.ts b/packages/client/src/scripts/popup-position.ts index abc6cfb66f..45bcd4dbf5 100644 --- a/packages/client/src/scripts/popup-position.ts +++ b/packages/client/src/scripts/popup-position.ts @@ -1,5 +1,3 @@ -import { Ref } from "vue"; - export function calcPopupPosition( el: HTMLElement, props: { diff --git a/packages/client/src/scripts/use-leave-guard.ts b/packages/client/src/scripts/use-leave-guard.ts index 12c25651c9..07e22556df 100644 --- a/packages/client/src/scripts/use-leave-guard.ts +++ b/packages/client/src/scripts/use-leave-guard.ts @@ -1,7 +1,7 @@ import type { Ref } from "vue"; -import { inject, onUnmounted } from "vue"; -import { i18n } from "@/i18n"; -import * as os from "@/os"; +// import { inject, onUnmounted } from "vue"; +// import { i18n } from "@/i18n"; +// import * as os from "@/os"; export function useLeaveGuard(enabled: Ref<boolean>) { /* TODO diff --git a/packages/client/src/ui/_common_/common.vue b/packages/client/src/ui/_common_/common.vue index d808f303c4..dc20b6905c 100644 --- a/packages/client/src/ui/_common_/common.vue +++ b/packages/client/src/ui/_common_/common.vue @@ -19,7 +19,7 @@ <script lang="ts" setup> import { defineAsyncComponent } from "vue"; import { swInject } from "./sw-inject"; -import { pendingApiRequestsCount, popup, popups } from "@/os"; +import { popup, popups } from "@/os"; import { uploads } from "@/scripts/upload"; import * as sound from "@/scripts/sound"; import { $i } from "@/reactiveAccount"; diff --git a/packages/client/src/ui/_common_/navbar-for-mobile.vue b/packages/client/src/ui/_common_/navbar-for-mobile.vue index 98d2250ef0..2c0eed97d2 100644 --- a/packages/client/src/ui/_common_/navbar-for-mobile.vue +++ b/packages/client/src/ui/_common_/navbar-for-mobile.vue @@ -126,14 +126,7 @@ </template> <script lang="ts" setup> -import { - computed, - defineAsyncComponent, - defineComponent, - ref, - toRef, - watch, -} from "vue"; +import { computed, defineAsyncComponent, toRef } from "vue"; import * as os from "@/os"; import { navbarItemDef } from "@/navbar"; import { openAccountMenu as openAccountMenu_ } from "@/account"; diff --git a/packages/client/src/ui/_common_/statusbar-federation.vue b/packages/client/src/ui/_common_/statusbar-federation.vue index 7e16b7bbc1..f33561b193 100644 --- a/packages/client/src/ui/_common_/statusbar-federation.vue +++ b/packages/client/src/ui/_common_/statusbar-federation.vue @@ -39,13 +39,11 @@ </template> <script lang="ts" setup> -import { computed, defineAsyncComponent, ref, toRef, watch } from "vue"; +import { ref } from "vue"; import type * as firefish from "firefish-js"; import MarqueeText from "@/components/MkMarquee.vue"; import * as os from "@/os"; import { useInterval } from "@/scripts/use-interval"; -import { getNoteSummary } from "@/scripts/get-note-summary"; -import { notePage } from "@/filters/note"; import { getProxiedImageUrlNullable } from "@/scripts/media-proxy"; const props = defineProps<{ diff --git a/packages/client/src/ui/_common_/statusbar-rss.vue b/packages/client/src/ui/_common_/statusbar-rss.vue index d65418469b..1c38d681eb 100644 --- a/packages/client/src/ui/_common_/statusbar-rss.vue +++ b/packages/client/src/ui/_common_/statusbar-rss.vue @@ -27,9 +27,8 @@ </template> <script lang="ts" setup> -import { computed, defineAsyncComponent, ref, toRef, watch } from "vue"; +import { ref } from "vue"; import MarqueeText from "@/components/MkMarquee.vue"; -import * as os from "@/os"; import { useInterval } from "@/scripts/use-interval"; import { shuffle } from "@/scripts/shuffle"; diff --git a/packages/client/src/ui/_common_/statusbar-user-list.vue b/packages/client/src/ui/_common_/statusbar-user-list.vue index 6956ef9746..53dea3c2fe 100644 --- a/packages/client/src/ui/_common_/statusbar-user-list.vue +++ b/packages/client/src/ui/_common_/statusbar-user-list.vue @@ -34,7 +34,7 @@ </template> <script lang="ts" setup> -import { computed, defineAsyncComponent, ref, toRef, watch } from "vue"; +import { ref } from "vue"; import type * as firefish from "firefish-js"; import MarqueeText from "@/components/MkMarquee.vue"; import * as os from "@/os"; diff --git a/packages/client/src/ui/_common_/statusbars.vue b/packages/client/src/ui/_common_/statusbars.vue index 830f9f570b..9e093087fe 100644 --- a/packages/client/src/ui/_common_/statusbars.vue +++ b/packages/client/src/ui/_common_/statusbars.vue @@ -49,8 +49,7 @@ </template> <script lang="ts" setup> -import { computed, defineAsyncComponent, ref, toRef, watch } from "vue"; -import * as os from "@/os"; +import { defineAsyncComponent } from "vue"; import { defaultStore } from "@/store"; const XRss = defineAsyncComponent(() => import("./statusbar-rss.vue")); const XFederation = defineAsyncComponent( diff --git a/packages/client/src/ui/_common_/sw-inject.ts b/packages/client/src/ui/_common_/sw-inject.ts index f55caadc80..afc1aee8f6 100644 --- a/packages/client/src/ui/_common_/sw-inject.ts +++ b/packages/client/src/ui/_common_/sw-inject.ts @@ -1,8 +1,6 @@ -import { inject } from "vue"; import { post } from "@/os"; import { login } from "@/account"; import { $i } from "@/reactiveAccount"; -import { defaultStore } from "@/store"; import { getAccountFromId } from "@/scripts/get-account-from-id"; import { mainRouter } from "@/router"; diff --git a/packages/client/src/ui/deck/column-core.vue b/packages/client/src/ui/deck/column-core.vue index 4c3c93734f..c9d9002019 100644 --- a/packages/client/src/ui/deck/column-core.vue +++ b/packages/client/src/ui/deck/column-core.vue @@ -58,7 +58,6 @@ </template> <script lang="ts" setup> -import {} from "vue"; import XMainColumn from "./main-column.vue"; import XTlColumn from "./tl-column.vue"; import XAntennaColumn from "./antenna-column.vue"; diff --git a/packages/client/src/ui/deck/deck-store.ts b/packages/client/src/ui/deck/deck-store.ts index 31016d4c26..cbe6f4f933 100644 --- a/packages/client/src/ui/deck/deck-store.ts +++ b/packages/client/src/ui/deck/deck-store.ts @@ -2,7 +2,6 @@ import { throttle } from "throttle-debounce"; import { markRaw } from "vue"; import type { notificationTypes } from "firefish-js"; import { Storage } from "../../pizzax"; -import { i18n } from "@/i18n"; import { api } from "@/os"; import { deepClone } from "@/scripts/clone"; diff --git a/packages/client/src/ui/visitor.vue b/packages/client/src/ui/visitor.vue index 9b602b5b05..b7ad4175f3 100644 --- a/packages/client/src/ui/visitor.vue +++ b/packages/client/src/ui/visitor.vue @@ -4,11 +4,10 @@ </template> <script lang="ts"> -import { defineAsyncComponent, defineComponent } from "vue"; +import { defineComponent } from "vue"; import DesignA from "./visitor/a.vue"; import DesignB from "./visitor/b.vue"; import XCommon from "./_common_/common.vue"; -import { i18n } from "@/i18n"; export default defineComponent({ components: { diff --git a/packages/client/src/ui/visitor/a.vue b/packages/client/src/ui/visitor/a.vue index 973c474284..6006e407d1 100644 --- a/packages/client/src/ui/visitor/a.vue +++ b/packages/client/src/ui/visitor/a.vue @@ -74,7 +74,7 @@ </template> <script lang="ts"> -import { defineAsyncComponent, defineComponent } from "vue"; +import { defineComponent } from "vue"; import XHeader from "./header.vue"; import { host, instanceName } from "@/config"; import { search } from "@/scripts/search"; diff --git a/packages/client/src/ui/visitor/kanban.vue b/packages/client/src/ui/visitor/kanban.vue index f9c68c788a..c92dc9fde3 100644 --- a/packages/client/src/ui/visitor/kanban.vue +++ b/packages/client/src/ui/visitor/kanban.vue @@ -81,7 +81,7 @@ </template> <script lang="ts"> -import { defineAsyncComponent, defineComponent } from "vue"; +import { defineComponent } from "vue"; import { host, instanceName } from "@/config"; import * as os from "@/os"; import MkPagination from "@/components/MkPagination.vue"; diff --git a/packages/client/src/widgets/button.vue b/packages/client/src/widgets/button.vue index 35295d7aa8..db7876942b 100644 --- a/packages/client/src/widgets/button.vue +++ b/packages/client/src/widgets/button.vue @@ -7,14 +7,9 @@ </template> <script lang="ts" setup> -import { onMounted, onUnmounted, ref, watch } from "vue"; -import { AiScript, parse, utils } from "@syuilo/aiscript"; +import { AiScript, parse } from "@syuilo/aiscript"; import type { Widget, WidgetComponentExpose } from "./widget"; -import { - WidgetComponentEmits, - WidgetComponentProps, - useWidgetPropsManager, -} from "./widget"; +import { useWidgetPropsManager } from "./widget"; import type { GetFormResultType } from "@/scripts/form"; import * as os from "@/os"; import { createAiScriptEnv } from "@/scripts/aiscript/api"; diff --git a/packages/client/src/widgets/calendar.vue b/packages/client/src/widgets/calendar.vue index e98b5049da..b37970eb36 100644 --- a/packages/client/src/widgets/calendar.vue +++ b/packages/client/src/widgets/calendar.vue @@ -44,13 +44,9 @@ </template> <script lang="ts" setup> -import { onUnmounted, ref } from "vue"; +import { ref } from "vue"; import type { Widget, WidgetComponentExpose } from "./widget"; -import { - WidgetComponentEmits, - WidgetComponentProps, - useWidgetPropsManager, -} from "./widget"; +import { useWidgetPropsManager } from "./widget"; import type { GetFormResultType } from "@/scripts/form"; import { i18n } from "@/i18n"; import { useInterval } from "@/scripts/use-interval"; diff --git a/packages/client/src/widgets/clock.vue b/packages/client/src/widgets/clock.vue index 93926e4a2b..6cdd520d98 100644 --- a/packages/client/src/widgets/clock.vue +++ b/packages/client/src/widgets/clock.vue @@ -49,11 +49,7 @@ import { computed } from "vue"; import type { Widget, WidgetComponentExpose } from "./widget"; -import { - WidgetComponentEmits, - WidgetComponentProps, - useWidgetPropsManager, -} from "./widget"; +import { useWidgetPropsManager } from "./widget"; import type { GetFormResultType } from "@/scripts/form"; import MkContainer from "@/components/MkContainer.vue"; import MkAnalogClock from "@/components/MkAnalogClock.vue"; diff --git a/packages/client/src/widgets/digital-clock.vue b/packages/client/src/widgets/digital-clock.vue index 3d6f26db9a..b6e281d3d9 100644 --- a/packages/client/src/widgets/digital-clock.vue +++ b/packages/client/src/widgets/digital-clock.vue @@ -15,7 +15,7 @@ </template> <script lang="ts" setup> -import { computed, onUnmounted, ref, watch } from "vue"; +import { computed } from "vue"; import type { Widget, WidgetComponentExpose } from "./widget"; import { WidgetComponentEmits, diff --git a/packages/client/src/widgets/instance-cloud.vue b/packages/client/src/widgets/instance-cloud.vue index deda3c961a..c3f53dc014 100644 --- a/packages/client/src/widgets/instance-cloud.vue +++ b/packages/client/src/widgets/instance-cloud.vue @@ -22,11 +22,7 @@ <script lang="ts" setup> import { ref, shallowRef } from "vue"; -import { - WidgetComponentEmits, - WidgetComponentProps, - useWidgetPropsManager, -} from "./widget"; +import { useWidgetPropsManager } from "./widget"; import type { Widget, WidgetComponentExpose } from "./widget"; import type { GetFormResultType } from "@/scripts/form"; import MkContainer from "@/components/MkContainer.vue"; diff --git a/packages/client/src/widgets/online-users.vue b/packages/client/src/widgets/online-users.vue index 6293094e71..4a3662887e 100644 --- a/packages/client/src/widgets/online-users.vue +++ b/packages/client/src/widgets/online-users.vue @@ -20,13 +20,9 @@ </template> <script lang="ts" setup> -import { onMounted, onUnmounted, ref } from "vue"; +import { ref } from "vue"; import type { Widget, WidgetComponentExpose } from "./widget"; -import { - WidgetComponentEmits, - WidgetComponentProps, - useWidgetPropsManager, -} from "./widget"; +import { useWidgetPropsManager } from "./widget"; import type { GetFormResultType } from "@/scripts/form"; import * as os from "@/os"; import { useInterval } from "@/scripts/use-interval"; diff --git a/packages/client/src/widgets/post-form.vue b/packages/client/src/widgets/post-form.vue index e76d6ba6f1..873a67a31b 100644 --- a/packages/client/src/widgets/post-form.vue +++ b/packages/client/src/widgets/post-form.vue @@ -8,13 +8,8 @@ </template> <script lang="ts" setup> -import {} from "vue"; import type { Widget, WidgetComponentExpose } from "./widget"; -import { - WidgetComponentEmits, - WidgetComponentProps, - useWidgetPropsManager, -} from "./widget"; +import { useWidgetPropsManager } from "./widget"; import type { GetFormResultType } from "@/scripts/form"; import XPostForm from "@/components/MkPostForm.vue"; diff --git a/packages/client/src/widgets/server-info.vue b/packages/client/src/widgets/server-info.vue index 7b2b63d2a6..5ee6f31cde 100644 --- a/packages/client/src/widgets/server-info.vue +++ b/packages/client/src/widgets/server-info.vue @@ -31,11 +31,7 @@ <script lang="ts" setup> import type { Widget, WidgetComponentExpose } from "./widget"; -import { - WidgetComponentEmits, - WidgetComponentProps, - useWidgetPropsManager, -} from "./widget"; +import { useWidgetPropsManager } from "./widget"; import type { GetFormResultType } from "@/scripts/form"; import { host } from "@/config"; @@ -48,12 +44,7 @@ type WidgetProps = GetFormResultType<typeof widgetPropsDef>; const props = defineProps<{ widget?: Widget<WidgetProps> }>(); const emit = defineEmits<{ (ev: "updateProps", props: WidgetProps) }>(); -const { widgetProps, configure } = useWidgetPropsManager( - name, - widgetPropsDef, - props, - emit, -); +const { configure } = useWidgetPropsManager(name, widgetPropsDef, props, emit); defineExpose<WidgetComponentExpose>({ name, diff --git a/packages/client/src/widgets/slideshow.vue b/packages/client/src/widgets/slideshow.vue index 70601466da..6a7ec6c59d 100644 --- a/packages/client/src/widgets/slideshow.vue +++ b/packages/client/src/widgets/slideshow.vue @@ -23,13 +23,9 @@ </template> <script lang="ts" setup> -import { nextTick, onMounted, onUnmounted, reactive, ref } from "vue"; +import { onMounted, ref } from "vue"; import type { Widget, WidgetComponentExpose } from "./widget"; -import { - WidgetComponentEmits, - WidgetComponentProps, - useWidgetPropsManager, -} from "./widget"; +import { useWidgetPropsManager } from "./widget"; import type { GetFormResultType } from "@/scripts/form"; import * as os from "@/os"; import { useInterval } from "@/scripts/use-interval"; diff --git a/packages/client/src/widgets/unix-clock.vue b/packages/client/src/widgets/unix-clock.vue index 3d2a893187..ba35769347 100644 --- a/packages/client/src/widgets/unix-clock.vue +++ b/packages/client/src/widgets/unix-clock.vue @@ -19,11 +19,7 @@ <script lang="ts" setup> import { onUnmounted, ref, watch } from "vue"; import type { Widget, WidgetComponentExpose } from "./widget"; -import { - WidgetComponentEmits, - WidgetComponentProps, - useWidgetPropsManager, -} from "./widget"; +import { useWidgetPropsManager } from "./widget"; import type { GetFormResultType } from "@/scripts/form"; const name = "unixClock"; From e16f74ca756831b549414441e04809c2e1898643 Mon Sep 17 00:00:00 2001 From: Ramdziana <ramdzian@gmail.com> Date: Wed, 1 Nov 2023 15:57:45 +0000 Subject: [PATCH 60/74] chore: Translated using Weblate (Indonesian) Currently translated at 100.0% (1870 of 1870 strings) Translation: Firefish/locales Translate-URL: https://hosted.weblate.org/projects/firefish/locales/id/ --- locales/id-ID.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/locales/id-ID.yml b/locales/id-ID.yml index 3c3d068d96..22e0040ce8 100644 --- a/locales/id-ID.yml +++ b/locales/id-ID.yml @@ -148,11 +148,11 @@ cacheRemoteFiles: "Tembolokkan berkas remote" cacheRemoteFilesDescription: "Ketika pengaturan ini dinonaktifkan, berkas luar akan dimuat langsung dari server luar. Menonaktifkan ini akan mengurangi penggunaan penyimpanan, tapi dapat menyebabkan meningkatkan lalu lintas, mengingat keluku tidak akan dihasilkan." -flagAsBot: "Atur akun ini sebagai Bot" -flagAsBotDescription: "Jika akun ini dikendalikan oleh program, tetapkanlah opsi ini. +flagAsBot: "Tandai akun ini sebagai akun otomatis" +flagAsBotDescription: "Jika akun ini dikendalikan oleh program, aktifkan opsi ini. Jika diaktifkan, ini akan berfungsi sebagai tanda bagi pengembang lain untuk mencegah - interaksi berantai dengan bot lain dan menyesuaikan sistem internal Firefish untuk - memperlakukan akun ini sebagai bot." + interaksi berantai dengan akun otomatis lain dan menyesuaikan sistem internal Firefish + untuk memperlakukan akun ini sebagai akun otomatis." flagAsCat: "Atur akun ini sebagai kucing" flagAsCatDescription: "Kamu akan mendapatkan telinga kucing dan berbicara seperti seekor kucing!" @@ -2005,7 +2005,7 @@ signupsDisabled: Pendaftaran ke server ini nonaktif, tapi kamu dapat selalu mend ke server lain! Jika kamu memiliki kode undangan server ini, harap masukkan di bawah ini. enableCustomKaTeXMacro: Aktifkan makro KaTeX khusus -isBot: Akun ini bot +isBot: Akun ini akun otomatis customMOTD: MOTD khusus (pesan layar percik) recommendedInstancesDescription: Server yang direkomendasikan dipisahkan dengan garis baru untuk tampil di linimasa rekomendasi. From 944b42f126daddfb7183d736499e09af173cf3e2 Mon Sep 17 00:00:00 2001 From: Pynolo <pynolo@tarine.net> Date: Thu, 2 Nov 2023 10:49:53 +0000 Subject: [PATCH 61/74] chore: Translated using Weblate (Italian) Currently translated at 99.8% (1868 of 1870 strings) Translation: Firefish/locales Translate-URL: https://hosted.weblate.org/projects/firefish/locales/it/ --- locales/it-IT.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/locales/it-IT.yml b/locales/it-IT.yml index a4d3f5ba4a..01e529673b 100644 --- a/locales/it-IT.yml +++ b/locales/it-IT.yml @@ -147,11 +147,11 @@ cacheRemoteFiles: "Mantieni i file remoti nella cache" cacheRemoteFilesDescription: "Disabilitando questa opzione, i file remoti verranno scaricati direttamente dal loro server. L'opzione permette di risparmiare spazio ma aumenta il traffico di rete e non verranno generate anteprime." -flagAsBot: "Questo account è un bot" +flagAsBot: "Questo account è automatizzato" flagAsBotDescription: "Se l'account esegue principalmente operazioni automatiche, - attiva quest'opzione. Quando attivata, opera come un segnalatore per gli altri sviluppatori - allo scopo di prevenire catene d’interazione senza fine con altri bot, e di adeguare - i sistemi interni di Firefish perché trattino questo account come un bot." + attiva quest'opzione. Quando attivata, permette agli sviluppatori di prevenire catene + d’interazione senza fine con altri account automatizzati. Inoltre imposta Firefish + perché tratti questo account come automatizzato." flagAsCat: "Sei un gatto? 😺" flagAsCatDescription: "Ti compariranno le orecchie e parlerai come un gatto!" autoAcceptFollowed: "Accetta in automatico i follow dagli account che segui" @@ -2079,7 +2079,7 @@ noGraze: Per favore disattiva l'estenzione del browser "Graze for Mastodon", per interferisce con Firefish. silencedWarning: Vedi questa pagina perché gli utenti sono su un server che il tuo admin ha silenziato, quindi potrebbero essere spam. -isBot: Questo account è un bot +isBot: Questo account è automatizzato isLocked: Serve una approvazione per seguire questo account moveFromDescription: Questa operazione crea un alias del vecchio account in modo che tu possa migrare su questo nuovo account. Fallo PRIMA di migrare il tuo vecchio From 7fdd547e8c1302cef5b5b07de4391bf75d539b7b Mon Sep 17 00:00:00 2001 From: naskya <m@naskya.net> Date: Sun, 5 Nov 2023 22:44:24 +0000 Subject: [PATCH 62/74] chore: up pnpm version v8.10.0 has a regression --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index fb71b745c2..3d8c3c034b 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "type": "git", "url": "https://git.joinfirefish.org/firefish/firefish.git" }, - "packageManager": "pnpm@8.10.0", + "packageManager": "pnpm@8.10.2", "private": true, "scripts": { "rebuild": "pnpm run clean && pnpm run build", @@ -64,7 +64,7 @@ "gulp-replace": "1.1.4", "gulp-terser": "2.1.0", "install-peers": "^1.0.4", - "pnpm": "8.10.0", + "pnpm": "8.10.2", "start-server-and-test": "1.15.2", "typescript": "5.2.2" } From aa84c080ac7c4962607e818c9afc2618de1310a2 Mon Sep 17 00:00:00 2001 From: naskya <m@naskya.net> Date: Mon, 6 Nov 2023 10:04:44 +0900 Subject: [PATCH 63/74] chore: up lockfile --- pnpm-lock.yaml | 67 ++++++++++---------------------------------------- 1 file changed, 13 insertions(+), 54 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 043278cbb2..916eb10fdd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -85,8 +85,8 @@ importers: specifier: ^1.0.4 version: 1.0.4 pnpm: - specifier: 8.10.0 - version: 8.10.0 + specifier: 8.10.2 + version: 8.10.2 start-server-and-test: specifier: 1.15.2 version: 1.15.2 @@ -2602,7 +2602,7 @@ packages: slash: 3.0.0 dev: true - /@jest/core@29.7.0: + /@jest/core@29.7.0(ts-node@10.9.1): resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -2623,50 +2623,7 @@ packages: exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@18.11.18) - jest-haste-map: 29.7.0 - jest-message-util: 29.7.0 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-resolve-dependencies: 29.7.0 - jest-runner: 29.7.0 - jest-runtime: 29.7.0 - jest-snapshot: 29.7.0 - jest-util: 29.7.0 - jest-validate: 29.7.0 - jest-watcher: 29.7.0 - micromatch: 4.0.5 - pretty-format: 29.7.0 - slash: 3.0.0 - strip-ansi: 6.0.1 - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - - ts-node - dev: true - - /@jest/core@29.7.0(ts-node@10.9.1): - resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - '@jest/console': 29.7.0 - '@jest/reporters': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 20.8.7 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - ci-info: 3.9.0 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@20.8.7)(ts-node@10.9.1) + jest-config: 29.7.0(@types/node@18.11.18)(ts-node@10.9.1) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -7407,7 +7364,7 @@ packages: chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@18.11.18) + jest-config: 29.7.0(@types/node@18.11.18)(ts-node@10.9.1) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -9852,6 +9809,7 @@ packages: /form-data@3.0.1: resolution: {integrity: sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==} engines: {node: '>= 6'} + requiresBuild: true dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 @@ -11676,14 +11634,14 @@ packages: node-notifier: optional: true dependencies: - '@jest/core': 29.7.0 + '@jest/core': 29.7.0(ts-node@10.9.1) '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 create-jest: 29.7.0(@types/node@18.11.18) exit: 0.1.2 import-local: 3.1.0 - jest-config: 29.7.0(@types/node@18.11.18) + jest-config: 29.7.0(@types/node@18.11.18)(ts-node@10.9.1) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -11722,7 +11680,7 @@ packages: - ts-node dev: true - /jest-config@29.7.0(@types/node@18.11.18): + /jest-config@29.7.0(@types/node@18.11.18)(ts-node@10.9.1): resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -11757,6 +11715,7 @@ packages: pretty-format: 29.7.0 slash: 3.0.0 strip-json-comments: 3.1.1 + ts-node: 10.9.1(@swc/core@1.3.78)(@types/node@20.8.7)(typescript@5.2.2) transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -12121,7 +12080,7 @@ packages: node-notifier: optional: true dependencies: - '@jest/core': 29.7.0 + '@jest/core': 29.7.0(ts-node@10.9.1) '@jest/types': 29.6.3 import-local: 3.1.0 jest-cli: 29.7.0(@types/node@18.11.18) @@ -14696,8 +14655,8 @@ packages: engines: {node: '>=14.19.0'} dev: false - /pnpm@8.10.0: - resolution: {integrity: sha512-nCy4Pyts9qJdjFgwC/mRl8fvO+hM8+dm8pBUtAuDtC+Kq6b8wxSp7PJ8APfOgKdXu0xgiADnrb4tKdxccFb1vg==} + /pnpm@8.10.2: + resolution: {integrity: sha512-B4IJPVumx62UYggbwe8HdQFqS0EJ7KHh/tzqbxEBQ69fUJk9s2xCfU+oxivjkgoyJNsS2nGdJGyhndnxgEjDPA==} engines: {node: '>=16.14'} hasBin: true dev: true From c03c11c7aafad7e6e06d82bb4d54987dbc0af2d9 Mon Sep 17 00:00:00 2001 From: Minneyar <63-minneyar@users.noreply.git.joinfirefish.org> Date: Tue, 7 Nov 2023 14:01:24 +0000 Subject: [PATCH 64/74] fix: Use "iconClass" instead of "icon" in MkDialog; remove "null" in input field Co-authored-by: minneyar <speed@sakabatou.net> --- packages/client/src/components/MkDialog.vue | 84 ++++++++++++++------- 1 file changed, 56 insertions(+), 28 deletions(-) diff --git a/packages/client/src/components/MkDialog.vue b/packages/client/src/components/MkDialog.vue index 79439709ea..a940f7d010 100644 --- a/packages/client/src/components/MkDialog.vue +++ b/packages/client/src/components/MkDialog.vue @@ -115,7 +115,7 @@ v-if="input && input.type === 'paragraph'" v-model="inputValue" autofocus - :type="paragraph" + type="paragraph" :placeholder="input.placeholder || undefined" > </MkTextarea> @@ -191,7 +191,7 @@ @click=" () => { action.callback(); - modal?.close(); + modal?.close(null); } " >{{ action.text }}</MkButton @@ -318,7 +318,7 @@ const inputEl = ref<typeof MkInput>(); function done(canceled: boolean, result?) { emit("done", { canceled, result }); - modal.value?.close(); + modal.value?.close(null); } async function ok() { @@ -359,106 +359,134 @@ function formatDateToYYYYMMDD(date) { return `${year}-${month}-${day}`; } +/** + * Appends a new search parameter to the value in the input field. + * Trims any extra whitespace before and after, then adds a space at the end so a user can immediately + * begin typing a new criteria. + * @param value The value to append. + */ +function appendFilter(value: string) { + return ( + [ + typeof inputValue.value === "string" + ? inputValue.value.trim() + : inputValue.value, + value, + ] + .join(" ") + .trim() + " " + ); +} + async function openSearchFilters(ev) { await os.popupMenu( [ { - icon: `${icon("ph-user")}`, + icon: `${iconClass("ph-user")}`, text: i18n.ts._filters.fromUser, action: () => { os.selectUser().then((user) => { - inputValue.value += " from:@" + Acct.toString(user); + inputValue.value = appendFilter( + "from:@" + Acct.toString(user), + ); }); }, }, { type: "parent", text: i18n.ts._filters.withFile, - icon: `${icon("ph-paperclip")}`, + icon: `${iconClass("ph-paperclip")}`, children: [ { text: i18n.ts.image, - icon: `${icon("ph-image-square")}`, + icon: `${iconClass("ph-image-square")}`, action: () => { - inputValue.value += " has:image"; + inputValue.value = appendFilter("has:image"); }, }, { text: i18n.ts.video, - icon: `${icon("ph-video-camera")}`, + icon: `${iconClass("ph-video-camera")}`, action: () => { - inputValue.value += " has:video"; + inputValue.value = appendFilter("has:video"); }, }, { text: i18n.ts.audio, - icon: `${icon("ph-music-note")}`, + icon: `${iconClass("ph-music-note")}`, action: () => { - inputValue.value += " has:audio"; + inputValue.value = appendFilter("has:audio"); }, }, { text: i18n.ts.file, - icon: `${icon("ph-file")}`, + icon: `${iconClass("ph-file")}`, action: () => { - inputValue.value += " has:file"; + inputValue.value = appendFilter("has:file"); }, }, ], }, { - icon: `${icon("ph-link")}`, + icon: `${iconClass("ph-link")}`, text: i18n.ts._filters.fromDomain, action: () => { - inputValue.value += " domain:"; + inputValue.value = appendFilter("domain:"); }, }, { - icon: `${icon("ph-calendar-blank")}`, + icon: `${iconClass("ph-calendar-blank")}`, text: i18n.ts._filters.notesBefore, action: () => { os.inputDate({ title: i18n.ts._filters.notesBefore, }).then((res) => { if (res.canceled) return; - inputValue.value += - " before:" + formatDateToYYYYMMDD(res.result); + inputValue.value = appendFilter( + "before:" + formatDateToYYYYMMDD(res.result), + ); }); }, }, { - icon: `${icon("ph-calendar-blank")}`, + icon: `${iconClass("ph-calendar-blank")}`, text: i18n.ts._filters.notesAfter, action: () => { os.inputDate({ title: i18n.ts._filters.notesAfter, }).then((res) => { if (res.canceled) return; - inputValue.value += - " after:" + formatDateToYYYYMMDD(res.result); + inputValue.value = appendFilter( + "after:" + formatDateToYYYYMMDD(res.result), + ); }); }, }, { - icon: `${icon("ph-eye")}`, + icon: `${iconClass("ph-eye")}`, text: i18n.ts._filters.followingOnly, action: () => { - inputValue.value += " filter:following "; + inputValue.value = appendFilter("filter:following"); }, }, { - icon: `${icon("ph-users-three")}`, + icon: `${iconClass("ph-users-three")}`, text: i18n.ts._filters.followersOnly, action: () => { - inputValue.value += " filter:followers "; + inputValue.value = appendFilter("filter:followers"); }, }, ], ev.target, { noReturnFocus: true }, ); - inputEl.value.focus(); - inputEl.value.selectRange(inputValue.value.length, inputValue.value.length); // cursor at end + inputEl.value?.focus(); + if (typeof inputValue.value === "string") { + inputEl.value?.selectRange( + inputValue.value.length, + inputValue.value.length, + ); // cursor at end + } } onMounted(() => { From fbfa4cd41f6f3133f1f6f85de18b909efa9107d1 Mon Sep 17 00:00:00 2001 From: Jegler <jegler@heckin.how> Date: Tue, 7 Nov 2023 14:02:25 +0000 Subject: [PATCH 65/74] Fix build on node 21 --- packages/backend/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/backend/package.json b/packages/backend/package.json index 396cc963dd..09bb05e654 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -113,7 +113,7 @@ "qs": "6.11.2", "random-seed": "0.3.0", "ratelimiter": "3.4.1", - "re2": "1.20.3", + "re2": "1.20.5", "redis-semaphore": "5.5.0", "reflect-metadata": "0.1.13", "rename": "1.0.4", From 56bec8f1dd34c4da1120407578289c2e12c38aef Mon Sep 17 00:00:00 2001 From: Dark Shy <ponyfrost.mc@gmail.com> Date: Tue, 7 Nov 2023 09:25:29 +0000 Subject: [PATCH 66/74] chore: Translated using Weblate (Russian) Currently translated at 98.7% (1846 of 1870 strings) Translation: Firefish/locales Translate-URL: https://hosted.weblate.org/projects/firefish/locales/ru/ --- locales/ru-RU.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/locales/ru-RU.yml b/locales/ru-RU.yml index 7b9a24e2c8..cd6bf75cf2 100644 --- a/locales/ru-RU.yml +++ b/locales/ru-RU.yml @@ -2151,3 +2151,14 @@ deletePasskeysConfirm: Это действие безвозвратно удал на этом аккаунте. Продолжить? inputNotMatch: Введённые данные не совпадают addRe: Добавить "re:" в начале комментария в ответ на запись с предупреждением о содержимом +detectPostLanguage: Автоматическое определение языка и отображение кнопки перевода + для сообщений на иностранных языках +indexableDescription: Разрешить встроенной поисковой системе искать ваши публичные + записи +reactions: Реакции +indexable: Индексируемый(-ая) +languageForTranslation: Язык перевода поста +replies: Ответы +quotes: Цитаты +clickToShowPatterns: Нажмите, чтобы показать модуль шаблонов +renotes: Репосты From 7fa737e8b88f22d61ac7d8be7359d79782b79a9c Mon Sep 17 00:00:00 2001 From: cg sama <cgsama@outlook.com> Date: Fri, 10 Nov 2023 15:32:23 +0000 Subject: [PATCH 67/74] fix import notes federated initially Co-authored-by: CGsama <CGsama@outlook.com> --- packages/backend/src/services/note/create.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/backend/src/services/note/create.ts b/packages/backend/src/services/note/create.ts index 1a80ff2806..014f9ecfaa 100644 --- a/packages/backend/src/services/note/create.ts +++ b/packages/backend/src/services/note/create.ts @@ -175,7 +175,7 @@ export default async ( ) => // rome-ignore lint/suspicious/noAsyncPromiseExecutor: FIXME new Promise<Note>(async (res, rej) => { - const dontFederateInitially = data.visibility === "hidden"; + const dontFederateInitially = data.visibility?.startsWith("hidden") === true; // If you reply outside the channel, match the scope of the target. // TODO (I think it's a process that could be done on the client side, but it's server side for now.) @@ -209,7 +209,7 @@ export default async ( if (data.channel != null) data.visibility = "public"; if (data.channel != null) data.visibleUsers = []; if (data.channel != null) data.localOnly = true; - if (data.visibility.startsWith("hidden")) + if (data.visibility.startsWith("hidden") && data.visibility !== "hidden") data.visibility = data.visibility.slice(6); // enforce silent clients on server From 8ef1130330cd364233f84febbd2752e5e813eb2b Mon Sep 17 00:00:00 2001 From: nakkaa <10798675+nakkaa@users.noreply.github.com> Date: Sat, 11 Nov 2023 02:20:33 +0900 Subject: [PATCH 68/74] fix: add missing entry in manifest.json so that PWA can use it --- packages/backend/src/server/web/manifest.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/backend/src/server/web/manifest.ts b/packages/backend/src/server/web/manifest.ts index 2090a7f553..bbcf639ffe 100644 --- a/packages/backend/src/server/web/manifest.ts +++ b/packages/backend/src/server/web/manifest.ts @@ -11,6 +11,7 @@ export const manifestHandler = async (ctx: Koa.Context) => { const instance = await fetchMeta(true); res.short_name = instance.name || "Firefish"; + res.name = instance.name || "Firefish"; if (instance.themeColor) res.theme_color = instance.themeColor; for (const icon of res.icons) { icon.src = `${icon.src}?v=${config.version.replace(/[^0-9]/g, "")}`; From 31ccedf1776f5a3c19940fe53a2647b8cbb0d7d1 Mon Sep 17 00:00:00 2001 From: ThatOneCalculator <kainoa@t1c.dev> Date: Sun, 12 Nov 2023 10:46:28 -0800 Subject: [PATCH 69/74] fix: :recycle: add data.localOnly back to dontFederateInitially check ref: https://git.joinfirefish.org/firefish/firefish/-/merge_requests/10639#note_2651 --- packages/backend/src/services/note/create.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/backend/src/services/note/create.ts b/packages/backend/src/services/note/create.ts index 014f9ecfaa..63a295fb33 100644 --- a/packages/backend/src/services/note/create.ts +++ b/packages/backend/src/services/note/create.ts @@ -173,9 +173,9 @@ export default async ( data: Option, silent = false, ) => - // rome-ignore lint/suspicious/noAsyncPromiseExecutor: FIXME + // biome-ignore lint/suspicious/noAsyncPromiseExecutor: FIXME new Promise<Note>(async (res, rej) => { - const dontFederateInitially = data.visibility?.startsWith("hidden") === true; + const dontFederateInitially = data.localOnly || data.visibility?.startsWith("hidden") === true; // If you reply outside the channel, match the scope of the target. // TODO (I think it's a process that could be done on the client side, but it's server side for now.) From 845f08893f6c5071a80cabd8f9888f39a8f7d804 Mon Sep 17 00:00:00 2001 From: naskya <m@naskya.net> Date: Fri, 17 Nov 2023 05:04:05 +0900 Subject: [PATCH 70/74] fix: upgrade AiScript! There are braking changes in the AiScript syntax, so existing plugins must alse be upgraded Also, I didn't include the function that can call remote servers' API (which is present in the latest Misskey) Co-authored-by: syuilo <syuilotan@yahoo.co.jp> Co-authored-by: Sayamame-beans <61457993+Sayamame-beans@users.noreply.github.com> --- packages/backend/package.json | 1 - packages/client/package.json | 2 +- packages/client/src/components/page/page.vue | 6 +- packages/client/src/pages/scratchpad.vue | 10 ++- .../src/pages/settings/plugin.install.vue | 55 ++++++++++---- packages/client/src/plugin.ts | 73 ++++++++++++++----- packages/client/src/scripts/aiscript/api.ts | 3 + packages/client/src/scripts/hpml/evaluator.ts | 6 +- packages/client/src/widgets/aiscript.vue | 27 ++++--- packages/client/src/widgets/button.vue | 35 +++++---- pnpm-lock.yaml | 47 +++++------- 11 files changed, 164 insertions(+), 101 deletions(-) diff --git a/packages/backend/package.json b/packages/backend/package.json index e79d1c9776..2728541575 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -37,7 +37,6 @@ "@peertube/http-signature": "1.7.0", "@redocly/openapi-core": "1.0.2", "@sinonjs/fake-timers": "9.1.2", - "@syuilo/aiscript": "0.11.1", "@tensorflow/tfjs": "^4.2.0", "adm-zip": "^0.5.10", "ajv": "8.12.0", diff --git a/packages/client/package.json b/packages/client/package.json index 6136f23b40..43fc376b4f 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -17,7 +17,7 @@ "@rollup/plugin-alias": "5.0.0", "@rollup/plugin-json": "6.0.0", "@rollup/pluginutils": "^5.0.4", - "@syuilo/aiscript": "0.11.1", + "@syuilo/aiscript": "0.16.0", "@types/autosize": "^4.0.2", "@types/escape-regexp": "0.0.1", "@types/glob": "8.1.0", diff --git a/packages/client/src/components/page/page.vue b/packages/client/src/components/page/page.vue index 5edda71d07..e43af6add6 100644 --- a/packages/client/src/components/page/page.vue +++ b/packages/client/src/components/page/page.vue @@ -17,7 +17,7 @@ <script lang="ts"> import type { PropType } from "vue"; import { defineComponent, nextTick, onMounted, onUnmounted } from "vue"; -import { parse } from "@syuilo/aiscript"; +import { Parser } from "@syuilo/aiscript"; import XBlock from "./page.block.vue"; import { Hpml } from "@/scripts/hpml/evaluator"; import { url } from "@/config"; @@ -42,12 +42,14 @@ export default defineComponent({ enableAiScript: !defaultStore.state.disablePagesScript, }); + const parser = new Parser(); + onMounted(() => { nextTick(() => { if (props.page.script && hpml.aiscript) { let ast; try { - ast = parse(props.page.script); + ast = parser.parse(props.page.script); } catch (err) { console.error(err); /* os.alert({ diff --git a/packages/client/src/pages/scratchpad.vue b/packages/client/src/pages/scratchpad.vue index f6620e7268..232a1ab8c6 100644 --- a/packages/client/src/pages/scratchpad.vue +++ b/packages/client/src/pages/scratchpad.vue @@ -45,7 +45,7 @@ import "prismjs/components/prism-javascript"; import "prismjs/themes/prism-okaidia.css"; import { PrismEditor } from "vue-prism-editor"; import "vue-prism-editor/dist/prismeditor.min.css"; -import { AiScript, parse, utils } from "@syuilo/aiscript"; +import { Interpreter, Parser, utils } from "@syuilo/aiscript"; import MkContainer from "@/components/MkContainer.vue"; import MkButton from "@/components/MkButton.vue"; import { createAiScriptEnv } from "@/scripts/aiscript/api"; @@ -58,6 +58,8 @@ import icon from "@/scripts/icon"; const code = ref(""); const logs = ref<any[]>([]); +const parser = new Parser(); + const saved = localStorage.getItem("scratchpad"); if (saved) { code.value = saved; @@ -69,7 +71,7 @@ watch(code, () => { async function run() { logs.value = []; - const aiscript = new AiScript( + const aiscript = new Interpreter( createAiScriptEnv({ storageKey: "scratchpad", token: $i?.token, @@ -112,11 +114,11 @@ async function run() { let ast; try { - ast = parse(code.value); + ast = parser.parse(code.value); } catch (error) { os.alert({ type: "error", - text: "Syntax error :(", + text: `Syntax error : ${error}`, }); return; } diff --git a/packages/client/src/pages/settings/plugin.install.vue b/packages/client/src/pages/settings/plugin.install.vue index ef6c609697..59d5a95343 100644 --- a/packages/client/src/pages/settings/plugin.install.vue +++ b/packages/client/src/pages/settings/plugin.install.vue @@ -19,8 +19,7 @@ <script lang="ts" setup> import { defineAsyncComponent, nextTick, ref } from "vue"; -import { AiScript, parse } from "@syuilo/aiscript"; -import { serialize } from "@syuilo/aiscript/built/serializer"; +import { Interpreter, Parser, utils } from "@syuilo/aiscript"; import { v4 as uuid } from "uuid"; import FormTextarea from "@/components/form/textarea.vue"; import FormButton from "@/components/MkButton.vue"; @@ -30,11 +29,20 @@ import { ColdDeviceStorage } from "@/store"; import { unisonReload } from "@/scripts/unison-reload"; import { i18n } from "@/i18n"; import { definePageMetadata } from "@/scripts/page-metadata"; +import { compareVersions } from "compare-versions"; import icon from "@/scripts/icon"; -const code = ref(null); +const code = ref<string>(); -function installPlugin({ id, meta, ast, token }) { +function isSupportedVersion(version: string): boolean { + try { + return compareVersions(version, "0.12.0") >= 0; + } catch (err) { + return false; + } +} + +function installPlugin({ id, meta, src, token }) { ColdDeviceStorage.set( "plugins", ColdDeviceStorage.get("plugins").concat({ @@ -42,25 +50,46 @@ function installPlugin({ id, meta, ast, token }) { id, active: true, configData: {}, + src, token, - ast, }), ); } +const parser = new Parser(); + async function install() { - let ast; - try { - ast = parse(code.value); - } catch (err) { + if (code.value == null) return; + + const scriptVersion = utils.getLangVersion(code.value); + + if (scriptVersion == null) { os.alert({ type: "error", - text: "Syntax error :(", + text: "No language version annotation found :(", + }); + return; + } + if (!isSupportedVersion(scriptVersion)) { + os.alert({ + type: "error", + text: `aiscript version '${scriptVersion}' is not supported :(`, }); return; } - const meta = AiScript.collectMetadata(ast); + let ast; + try { + ast = parser.parse(code.value); + } catch (err) { + os.alert({ + type: "error", + text: `Syntax error : ${err}`, + }); + return; + } + + const meta = Interpreter.collectMetadata(ast); if (meta == null) { os.alert({ type: "error", @@ -83,7 +112,7 @@ async function install() { if (name == null || version == null || author == null) { os.alert({ type: "error", - text: "Required property not found :(", + text: "Required property (name, version, author) not found :(", }); return; } @@ -134,8 +163,8 @@ async function install() { permissions, config, }, + src: code.value, token, - ast: serialize(ast), }); os.success(); diff --git a/packages/client/src/plugin.ts b/packages/client/src/plugin.ts index 8e964ab3a2..44df90ff08 100644 --- a/packages/client/src/plugin.ts +++ b/packages/client/src/plugin.ts @@ -1,6 +1,4 @@ -import { AiScript, utils, values } from "@syuilo/aiscript"; -import { deserialize } from "@syuilo/aiscript/built/serializer"; -import { jsToVal } from "@syuilo/aiscript/built/interpreter/util"; +import { Interpreter, Parser, utils, values } from "@syuilo/aiscript"; import { createAiScriptEnv } from "@/scripts/aiscript/api"; import { inputText } from "@/os"; import { @@ -11,12 +9,13 @@ import { userActions, } from "@/store"; -const pluginContexts = new Map<string, AiScript>(); +const parser = new Parser(); +const pluginContexts = new Map<string, Interpreter>(); export function install(plugin) { console.info("Plugin installed:", plugin.name, `v${plugin.version}`); - const aiscript = new AiScript( + const aiscript = new Interpreter( createPluginEnv({ plugin, storageKey: `plugins:${plugin.id}`, @@ -40,15 +39,15 @@ export function install(plugin) { initPlugin({ plugin, aiscript }); - aiscript.exec(deserialize(plugin.ast)); + aiscript.exec(parser.parse(plugin.src)); } function createPluginEnv(opts) { - const config = new Map(); - for (const [k, v] of Object.entries(opts.plugin.config || {})) { + const config = new Map<string, values.Value>(); + for (const [k, v] of Object.entries(opts.plugin.config ?? {})) { config.set( k, - jsToVal( + utils.jsToVal( typeof opts.plugin.configData[k] !== "undefined" ? opts.plugin.configData[k] : v.default, @@ -114,6 +113,9 @@ function createPluginEnv(opts) { handler, }); }), + "Plugin:register_page_view_interruptor": values.FN_NATIVE(([handler]) => { + registerPageViewInterruptor({ pluginId: opts.plugin.id, handler }); + }), "Plugin:open_url": values.FN_NATIVE(([url]) => { window.open(url.value, "_blank"); }), @@ -129,10 +131,17 @@ function registerPostFormAction({ pluginId, title, handler }) { postFormActions.push({ title, handler: (form, update) => { - pluginContexts.get(pluginId).execFn(handler, [ + const pluginContext = pluginContexts.get(pluginId); + if (!pluginContext) { + return; + } + pluginContext.execFn(handler, [ utils.jsToVal(form), values.FN_NATIVE(([key, value]) => { - update(key.value, value.value); + if (!key || !value) { + return; + } + update(utils.valToJs(key), utils.valToJs(value)); }), ]); }, @@ -143,7 +152,11 @@ function registerUserAction({ pluginId, title, handler }) { userActions.push({ title, handler: (user) => { - pluginContexts.get(pluginId).execFn(handler, [utils.jsToVal(user)]); + const pluginContext = pluginContexts.get(pluginId); + if (!pluginContext) { + return; + } + pluginContext.execFn(handler, [utils.jsToVal(user)]); }, }); } @@ -152,7 +165,11 @@ function registerNoteAction({ pluginId, title, handler }) { noteActions.push({ title, handler: (note) => { - pluginContexts.get(pluginId).execFn(handler, [utils.jsToVal(note)]); + const pluginContext = pluginContexts.get(pluginId); + if (!pluginContext) { + return; + } + pluginContext.execFn(handler, [utils.jsToVal(user)]); }, }); } @@ -160,10 +177,12 @@ function registerNoteAction({ pluginId, title, handler }) { function registerNoteViewInterruptor({ pluginId, handler }) { noteViewInterruptors.push({ handler: async (note) => { + const pluginContext = pluginContexts.get(pluginId); + if (!pluginContext) { + return; + } return utils.valToJs( - await pluginContexts - .get(pluginId) - .execFn(handler, [utils.jsToVal(note)]), + await pluginContext.execFn(handler, [utils.jsToVal(note)]), ); }, }); @@ -172,10 +191,26 @@ function registerNoteViewInterruptor({ pluginId, handler }) { function registerNotePostInterruptor({ pluginId, handler }) { notePostInterruptors.push({ handler: async (note) => { + const pluginContext = pluginContexts.get(pluginId); + if (!pluginContext) { + return; + } return utils.valToJs( - await pluginContexts - .get(pluginId) - .execFn(handler, [utils.jsToVal(note)]), + await pluginContext.execFn(handler, [utils.jsToVal(note)]), + ); + }, + }); +} + +function registerPageViewInterruptor({ pluginId, handler }): void { + pageViewInterruptors.push({ + handler: async (page) => { + const pluginContext = pluginContexts.get(pluginId); + if (!pluginContext) { + return; + } + return utils.valToJs( + await pluginContext.execFn(handler, [utils.jsToVal(page)]), ); }, }); diff --git a/packages/client/src/scripts/aiscript/api.ts b/packages/client/src/scripts/aiscript/api.ts index 55b8977230..e0eed05c02 100644 --- a/packages/client/src/scripts/aiscript/api.ts +++ b/packages/client/src/scripts/aiscript/api.ts @@ -54,5 +54,8 @@ export function createAiScriptEnv(opts) { ), ); }), + "Mk:url": values.FN_NATIVE(() => { + return values.STR(window.location.href); + }), }; } diff --git a/packages/client/src/scripts/hpml/evaluator.ts b/packages/client/src/scripts/hpml/evaluator.ts index f9a08079a9..ba06a87442 100644 --- a/packages/client/src/scripts/hpml/evaluator.ts +++ b/packages/client/src/scripts/hpml/evaluator.ts @@ -1,5 +1,5 @@ import autobind from "autobind-decorator"; -import { AiScript, utils, values } from "@syuilo/aiscript"; +import { Interpreter, utils, values } from "@syuilo/aiscript"; import type { Ref } from "vue"; import { markRaw, ref, unref } from "vue"; import { collectPageVars } from "../collect-page-vars"; @@ -19,7 +19,7 @@ export class Hpml { private variables: Variable[]; private pageVars: PageVar[]; private envVars: Record<keyof typeof envVarsDef, any>; - public aiscript?: AiScript; + public aiscript?: Interpreter; public pageVarUpdatedCallback?: values.VFn; public canvases: Record<string, HTMLCanvasElement> = {}; public vars: Ref<Record<string, any>> = ref({}); @@ -40,7 +40,7 @@ export class Hpml { if (this.opts.enableAiScript) { this.aiscript = markRaw( - new AiScript( + new Interpreter( { ...createAiScriptEnv({ storageKey: `pages:${this.page.id}`, diff --git a/packages/client/src/widgets/aiscript.vue b/packages/client/src/widgets/aiscript.vue index 5b6c886b4d..0f1469a0c1 100644 --- a/packages/client/src/widgets/aiscript.vue +++ b/packages/client/src/widgets/aiscript.vue @@ -27,9 +27,13 @@ <script lang="ts" setup> import { ref } from "vue"; -import { AiScript, parse, utils } from "@syuilo/aiscript"; -import type { Widget, WidgetComponentExpose } from "./widget"; -import { useWidgetPropsManager } from "./widget"; +import { Interpreter, Parser, utils } from "@syuilo/aiscript"; +import { + useWidgetPropsManager, + WidgetComponentEmits, + WidgetComponentProps, +} from "./widget"; +import type { WidgetComponentExpose } from "./widget"; import type { GetFormResultType } from "@/scripts/form"; import * as os from "@/os"; import MkContainer from "@/components/MkContainer.vue"; @@ -55,11 +59,8 @@ const widgetPropsDef = { type WidgetProps = GetFormResultType<typeof widgetPropsDef>; -// 現時点ではvueの制限によりimportしたtypeをジェネリックに渡せない -// const props = defineProps<WidgetComponentProps<WidgetProps>>(); -// const emit = defineEmits<WidgetComponentEmits<WidgetProps>>(); -const props = defineProps<{ widget?: Widget<WidgetProps> }>(); -const emit = defineEmits<{ (ev: "updateProps", props: WidgetProps) }>(); +const props = defineProps<WidgetComponentProps<WidgetProps>>(); +const emit = defineEmits<WidgetComponentEmits<WidgetProps>>(); const { widgetProps, configure } = useWidgetPropsManager( name, @@ -76,9 +77,11 @@ const logs = ref< }[] >([]); +const parser = new Parser(); + const run = async () => { logs.value = []; - const aiscript = new AiScript( + const aiscript = new Interpreter( createAiScriptEnv({ storageKey: "widget", token: $i?.token, @@ -121,11 +124,11 @@ const run = async () => { let ast; try { - ast = parse(widgetProps.script); + ast = parser.parse(widgetProps.script); } catch (err) { os.alert({ type: "error", - text: "Syntax error :(", + text: `Syntax error : ${err}`, }); return; } @@ -134,7 +137,7 @@ const run = async () => { } catch (err) { os.alert({ type: "error", - text: err, + text: String(err), }); } }; diff --git a/packages/client/src/widgets/button.vue b/packages/client/src/widgets/button.vue index db7876942b..696049a03b 100644 --- a/packages/client/src/widgets/button.vue +++ b/packages/client/src/widgets/button.vue @@ -7,12 +7,17 @@ </template> <script lang="ts" setup> -import { AiScript, parse } from "@syuilo/aiscript"; -import type { Widget, WidgetComponentExpose } from "./widget"; -import { useWidgetPropsManager } from "./widget"; +import { onMounted, onUnmounted, ref, watch } from "vue"; +import { Interpreter, Parser } from "@syuilo/aiscript"; +import { createAiScriptEnv } from "@/scripts/aiscript/api"; +import { + useWidgetPropsManager, + WidgetComponentEmits, + WidgetComponentProps, +} from "./widget"; +import type { WidgetComponentExpose } from "./widget"; import type { GetFormResultType } from "@/scripts/form"; import * as os from "@/os"; -import { createAiScriptEnv } from "@/scripts/aiscript/api"; import { $i } from "@/reactiveAccount"; import MkButton from "@/components/MkButton.vue"; @@ -36,11 +41,8 @@ const widgetPropsDef = { type WidgetProps = GetFormResultType<typeof widgetPropsDef>; -// 現時点ではvueの制限によりimportしたtypeをジェネリックに渡せない -// const props = defineProps<WidgetComponentProps<WidgetProps>>(); -// const emit = defineEmits<WidgetComponentEmits<WidgetProps>>(); -const props = defineProps<{ widget?: Widget<WidgetProps> }>(); -const emit = defineEmits<{ (ev: "updateProps", props: WidgetProps) }>(); +const props = defineProps<WidgetComponentProps<WidgetProps>>(); +const emit = defineEmits<WidgetComponentEmits<WidgetProps>>(); const { widgetProps, configure } = useWidgetPropsManager( name, @@ -49,8 +51,10 @@ const { widgetProps, configure } = useWidgetPropsManager( emit, ); +const parser = new Parser(); + const run = async () => { - const aiscript = new AiScript( + const aiscript = new Interpreter( createAiScriptEnv({ storageKey: "widget", token: $i?.token, @@ -76,11 +80,11 @@ const run = async () => { let ast; try { - ast = parse(widgetProps.script); + ast = parser.parse(widgetProps.script); } catch (err) { os.alert({ type: "error", - text: "Syntax error :(", + text: `Syntax error: ${err}`, }); return; } @@ -89,7 +93,7 @@ const run = async () => { } catch (err) { os.alert({ type: "error", - text: err, + text: String(err), }); } }; @@ -100,8 +104,3 @@ defineExpose<WidgetComponentExpose>({ id: props.widget ? props.widget.id : null, }); </script> - -<style lang="scss" scoped> -.mkw-button { -} -</style> diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 916eb10fdd..f051466af3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -129,9 +129,6 @@ importers: '@sinonjs/fake-timers': specifier: 9.1.2 version: 9.1.2 - '@syuilo/aiscript': - specifier: 0.11.1 - version: 0.11.1 '@tensorflow/tfjs': specifier: ^4.2.0 version: 4.2.0(seedrandom@3.0.5) @@ -358,8 +355,8 @@ importers: specifier: 3.4.1 version: 3.4.1 re2: - specifier: 1.20.3 - version: 1.20.3 + specifier: 1.20.5 + version: 1.20.5 redis-semaphore: specifier: 5.5.0 version: 5.5.0(ioredis@5.3.2) @@ -666,8 +663,8 @@ importers: specifier: ^5.0.4 version: 5.0.4(rollup@3.28.1) '@syuilo/aiscript': - specifier: 0.11.1 - version: 0.11.1 + specifier: 0.16.0 + version: 0.16.0 '@types/autosize': specifier: ^4.0.2 version: 4.0.2 @@ -3417,14 +3414,13 @@ packages: dev: false optional: true - /@syuilo/aiscript@0.11.1: - resolution: {integrity: sha512-chwOIA3yLUKvOB0G611hjLArKTeOWNmTm3lHERSaDW1d+dS6do56naX6Lkwy2UpnwWC0qzeNSgg35elk6t2gZg==} + /@syuilo/aiscript@0.16.0: + resolution: {integrity: sha512-CXvoWOq6kmOSUQtKv0IEf7Ebfkk5PO1LxAgLqgRRPgssPvDvINCXu/gFNXKdapkFMkmX+Gj8qjemKR1vnUS4ZA==} dependencies: - autobind-decorator: 2.4.0 - chalk: 4.0.0 seedrandom: 3.0.5 stringz: 2.1.0 - uuid: 7.0.3 + uuid: 9.0.1 + dev: true /@szmarczak/http-timer@4.0.6: resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==} @@ -5739,6 +5735,7 @@ packages: /autobind-decorator@2.4.0: resolution: {integrity: sha512-OGYhWUO72V6DafbF8PM8rm3EPbfuyMZcJhtm5/n26IDwO18pohE4eNazLoCGhPiXOCD0gEGmrbU3849QvM8bbw==} engines: {node: '>=8.10', npm: '>=6.4.1'} + dev: true /autolinker@4.0.0: resolution: {integrity: sha512-fl5Kh6BmEEZx+IWBfEirnRUU5+cOiV0OK7PEt0RBKvJMJ8GaRseIOeDU3FKf4j3CE5HVefcjHmhYPOcaVt0bZw==} @@ -6513,13 +6510,6 @@ packages: escape-string-regexp: 1.0.5 supports-color: 5.5.0 - /chalk@4.0.0: - resolution: {integrity: sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A==} - engines: {node: '>=10'} - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - /chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} @@ -13550,8 +13540,8 @@ packages: object-assign: 4.1.1 thenify-all: 1.6.0 - /nan@2.17.0: - resolution: {integrity: sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==} + /nan@2.18.0: + resolution: {integrity: sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==} dev: false /nanoid@3.3.3: @@ -15408,12 +15398,12 @@ packages: setimmediate: 1.0.5 dev: false - /re2@1.20.3: - resolution: {integrity: sha512-g5j4YjygwGEccP9SCuDI90uPlgALLEYLotfL0K+kqL3XKB4ht7Nm1JuXfOTG96c7JozpvCUxTz1T7oTNwwMI6w==} + /re2@1.20.5: + resolution: {integrity: sha512-wZAqOjJ3m0PBgM2B8KG9dNJLwSNIAOZGiHN/c0FpKpaM1Hkg5NpKNAWSVbCXe+bb2K0xmHz6DPR4HJaQ2MejgQ==} requiresBuild: true dependencies: install-artifact-from-github: 1.3.3 - nan: 2.17.0 + nan: 2.18.0 node-gyp: 9.4.0 transitivePeerDependencies: - supports-color @@ -17881,10 +17871,6 @@ packages: hasBin: true dev: false - /uuid@7.0.3: - resolution: {integrity: sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==} - hasBin: true - /uuid@8.0.0: resolution: {integrity: sha512-jOXGuXZAWdsTH7eZLtyXMqUb9EcWMGZNbL9YcGBJl4MH4nrxHmZJhEHvyLFrkxo+28uLb/NYRcStH48fnD0Vzw==} hasBin: true @@ -17898,6 +17884,11 @@ packages: resolution: {integrity: sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==} hasBin: true + /uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + hasBin: true + dev: true + /v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} From 97bb495636209072c4f9c0ae060f37315ff89f2a Mon Sep 17 00:00:00 2001 From: naskya <m@naskya.net> Date: Fri, 17 Nov 2023 05:15:02 +0900 Subject: [PATCH 71/74] chore: upgrade dependencies (except for @swc/core and megalodon) --- package.json | 40 +- packages/backend/package.json | 168 +- packages/backend/src/server/web/index.ts | 2 +- packages/client/package.json | 76 +- packages/firefish-js/package.json | 6 +- packages/sw/package.json | 4 +- pnpm-lock.yaml | 3774 ++++++++++++---------- scripts/{clean-all.js => clean-all.mjs} | 9 +- scripts/{clean.js => clean.mjs} | 8 +- scripts/{dev.js => dev.mjs} | 18 +- 10 files changed, 2150 insertions(+), 1955 deletions(-) rename scripts/{clean-all.js => clean-all.mjs} (88%) rename scripts/{clean.js => clean.mjs} (80%) rename scripts/{dev.js => dev.mjs} (67%) diff --git a/package.json b/package.json index 3d8c3c034b..3af182e94a 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "type": "git", "url": "https://git.joinfirefish.org/firefish/firefish.git" }, - "packageManager": "pnpm@8.10.2", + "packageManager": "pnpm@8.10.5", "private": true, "scripts": { "rebuild": "pnpm run clean && pnpm run build", @@ -19,7 +19,7 @@ "migrateandstart": "pnpm run migrate && pnpm run start", "gulp": "gulp build", "watch": "pnpm run dev", - "dev": "pnpm node ./scripts/dev.js", + "dev": "pnpm node ./scripts/dev.mjs", "dev:staging": "NODE_OPTIONS=--max_old_space_size=3072 NODE_ENV=development pnpm run build && pnpm run start", "lint": "pnpm -r --parallel run lint", "debug": "pnpm run build:debug && pnpm run start", @@ -30,42 +30,42 @@ "mocha": "pnpm --filter backend run mocha", "test": "pnpm run mocha", "format": "pnpm -r --parallel run format", - "clean": "pnpm node ./scripts/clean.js", - "clean-all": "pnpm node ./scripts/clean-all.js", + "clean": "pnpm node ./scripts/clean.mjs", + "clean-all": "pnpm node ./scripts/clean-all.mjs", "cleanall": "pnpm run clean-all" }, "resolutions": { "chokidar": "^3.3.1" }, "dependencies": { - "@bull-board/api": "5.8.0", - "@bull-board/ui": "5.8.0", - "@napi-rs/cli": "^2.16.2", - "@tensorflow/tfjs": "^4.10.0", + "@bull-board/api": "5.9.1", + "@bull-board/ui": "5.9.1", + "@napi-rs/cli": "^2.16.5", + "@tensorflow/tfjs": "^4.13.0", "js-yaml": "4.1.0", "seedrandom": "^3.0.5" }, "devDependencies": { - "@biomejs/biome": "1.0.0", - "@biomejs/cli-darwin-arm64": "^1.0.0", - "@biomejs/cli-darwin-x64": "^1.0.0", - "@biomejs/cli-linux-arm64": "^1.0.0", - "@biomejs/cli-linux-x64": "^1.0.0", - "@types/gulp": "4.0.13", - "@types/gulp-rename": "2.0.2", - "@types/node": "20.5.8", + "@biomejs/biome": "1.3.3", + "@biomejs/cli-darwin-arm64": "^1.3.3", + "@biomejs/cli-darwin-x64": "^1.3.3", + "@biomejs/cli-linux-arm64": "^1.3.3", + "@biomejs/cli-linux-x64": "^1.3.3", + "@types/gulp": "4.0.17", + "@types/gulp-rename": "2.0.5", + "@types/node": "20.9.0", "add": "2.0.6", "cross-env": "7.0.3", - "cypress": "10.11.0", - "execa": "5.1.1", + "cypress": "13.5.1", + "execa": "8.0.1", "gulp": "4.0.2", "gulp-cssnano": "2.1.3", "gulp-rename": "2.0.0", "gulp-replace": "1.1.4", "gulp-terser": "2.1.0", "install-peers": "^1.0.4", - "pnpm": "8.10.2", - "start-server-and-test": "1.15.2", + "pnpm": "8.10.5", + "start-server-and-test": "2.0.3", "typescript": "5.2.2" } } diff --git a/packages/backend/package.json b/packages/backend/package.json index 2728541575..1b880121a0 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -23,36 +23,37 @@ }, "optionalDependencies": { "@swc/core-android-arm64": "1.3.11", - "@tensorflow/tfjs-node": "3.21.1" + "@tensorflow/tfjs-node": "4.13.0" }, "dependencies": { - "@bull-board/api": "5.8.0", - "@bull-board/koa": "5.8.0", - "@bull-board/ui": "5.8.0", + "@bull-board/api": "5.9.1", + "@bull-board/koa": "5.9.1", + "@bull-board/ui": "5.9.1", "@discordapp/twemoji": "14.1.2", - "@elastic/elasticsearch": "7.17.0", - "@koa/cors": "3.4.3", + "@elastic/elasticsearch": "8.10.0", + "@koa/cors": "4.0.0", "@koa/multer": "3.0.2", - "@koa/router": "9.0.1", + "@koa/router": "12.0.1", + "@ladjs/koa-views": "9.0.0", "@peertube/http-signature": "1.7.0", - "@redocly/openapi-core": "1.0.2", - "@sinonjs/fake-timers": "9.1.2", - "@tensorflow/tfjs": "^4.2.0", + "@redocly/openapi-core": "1.4.1", + "@sinonjs/fake-timers": "11.2.2", + "@tensorflow/tfjs": "^4.13.0", "adm-zip": "^0.5.10", "ajv": "8.12.0", - "archiver": "6.0.0", - "argon2": "^0.31.1", + "archiver": "6.0.1", + "argon2": "^0.31.2", "autolinker": "4.0.0", "autwh": "0.1.0", - "aws-sdk": "2.1413.0", - "axios": "^1.4.0", + "aws-sdk": "2.1498.0", + "axios": "^1.6.2", "bcryptjs": "2.4.3", "blurhash": "2.0.5", - "bull": "4.11.3", + "bull": "4.11.5", "cacheable-lookup": "TheEssem/cacheable-lookup", "cbor-x": "^1.5.4", "chalk": "5.3.0", - "chalk-template": "0.4.0", + "chalk-template": "1.1.0", "chokidar": "^3.5.3", "cli-highlight": "2.1.11", "color-convert": "2.0.1", @@ -62,19 +63,19 @@ "deep-email-validator": "0.1.21", "escape-regexp": "0.0.1", "feed": "4.2.2", - "file-type": "18.5.0", + "file-type": "18.7.0", "firefish-js": "workspace:*", "fluent-ffmpeg": "2.1.2", "got": "13.0.0", "gunzip-maybe": "^1.4.2", - "happy-dom": "^11.0.2", + "happy-dom": "^12.10.3", "hpagent": "1.2.0", "ioredis": "5.3.2", "ip-cidr": "3.1.0", "is-svg": "5.0.0", "js-yaml": "4.1.0", "json5": "2.2.3", - "jsonld": "8.2.1", + "jsonld": "8.3.1", "jsrsasign": "10.8.6", "koa": "2.14.2", "koa-body": "^6.0.1", @@ -86,33 +87,32 @@ "koa-remove-trailing-slashes": "2.0.3", "koa-send": "5.0.1", "koa-slow": "2.1.0", - "koa-views": "7.0.2", "megalodon": "workspace:*", - "meilisearch": "0.34.1", + "meilisearch": "0.35.0", "mfm-js": "0.23.3", "mime-types": "2.1.35", "msgpackr": "^1.9.9", - "multer": "1.4.4-lts.1", + "multer": "1.4.5-lts.1", "native-utils": "link:native-utils", "nested-property": "4.0.0", "node-fetch": "3.3.2", - "nodemailer": "6.9.4", + "nodemailer": "6.9.7", "nsfwjs": "2.4.2", "opencc-js": "^1.0.5", "os-utils": "0.0.14", - "otpauth": "^9.1.4", + "otpauth": "^9.2.0", "parse5": "7.1.2", "pg": "8.11.3", "private-ip": "3.0.1", "probe-image-size": "7.2.3", "promise-limit": "2.7.0", - "punycode": "2.3.0", - "pureimage": "0.4.8", + "punycode": "2.3.1", + "pureimage": "0.4.13", "qrcode": "1.5.3", "qs": "6.11.2", "random-seed": "0.3.0", "ratelimiter": "3.4.1", - "re2": "1.20.5", + "re2": "1.20.8", "redis-semaphore": "5.5.0", "reflect-metadata": "0.1.13", "rename": "1.0.4", @@ -121,87 +121,85 @@ "sanitize-html": "2.11.0", "seedrandom": "^3.0.5", "semver": "7.5.4", - "sharp": "0.32.5", + "sharp": "0.32.6", "sonic-channel": "^1.3.1", "stringz": "2.1.0", "summaly": "2.7.0", "syslog-pro": "1.0.0", - "systeminformation": "5.21.3", + "systeminformation": "5.21.17", "tar-stream": "^3.1.6", - "tesseract.js": "^4.1.1", + "tesseract.js": "^5.0.3", "tinycolor2": "1.6.0", "tinyld": "^1.3.4", "tmp": "0.2.1", "twemoji-parser": "14.0.0", "typeorm": "0.3.17", "ulid": "2.3.0", - "uuid": "9.0.0", - "web-push": "3.6.5", + "uuid": "9.0.1", + "web-push": "3.6.6", "websocket": "1.0.34", "xev": "3.0.2" }, "devDependencies": { - "@swc/cli": "^0.1.62", + "@swc/cli": "^0.1.63", "@swc/core": "1.3.78", - "@types/adm-zip": "^0.5.0", - "@types/bcryptjs": "2.4.2", - "@types/color-convert": "^2.0.2", - "@types/content-disposition": "^0.5.7", - "@types/escape-regexp": "0.0.1", - "@types/fluent-ffmpeg": "2.1.21", - "@types/js-yaml": "4.0.5", - "@types/jsonld": "1.5.9", - "@types/jsrsasign": "10.5.8", - "@types/koa": "2.13.8", - "@types/koa-bodyparser": "4.3.10", - "@types/koa-cors": "0.0.2", - "@types/koa-favicon": "2.0.21", - "@types/koa-logger": "3.1.2", - "@types/koa-mount": "4.0.2", - "@types/koa-send": "4.1.3", - "@types/koa-views": "7.0.0", - "@types/koa__cors": "3.3.0", - "@types/koa__multer": "2.0.4", - "@types/koa__router": "8.0.11", - "@types/mocha": "9.1.1", - "@types/node": "18.11.18", - "@types/node-fetch": "3.0.3", - "@types/nodemailer": "6.4.9", - "@types/oauth": "0.9.1", - "@types/opencc-js": "^1.0.2", - "@types/pg": "^8.10.7", - "@types/probe-image-size": "^7.2.0", - "@types/pug": "2.0.6", - "@types/punycode": "2.1.0", - "@types/qrcode": "1.5.1", - "@types/qs": "6.9.7", - "@types/random-seed": "0.3.3", - "@types/ratelimiter": "3.4.4", - "@types/redis": "4.0.11", - "@types/rename": "1.0.4", - "@types/sanitize-html": "2.9.0", - "@types/semver": "7.5.0", - "@types/sinonjs__fake-timers": "8.1.2", - "@types/syslog-pro": "^1.0.2", - "@types/tinycolor2": "1.4.3", - "@types/tmp": "0.2.3", - "@types/uuid": "9.0.2", - "@types/web-push": "3.3.2", - "@types/websocket": "1.0.5", - "@types/ws": "8.5.5", + "@types/adm-zip": "^0.5.4", + "@types/bcryptjs": "2.4.6", + "@types/color-convert": "^2.0.3", + "@types/content-disposition": "^0.5.8", + "@types/escape-regexp": "0.0.3", + "@types/fluent-ffmpeg": "2.1.24", + "@types/js-yaml": "4.0.9", + "@types/jsonld": "1.5.12", + "@types/jsrsasign": "10.5.12", + "@types/koa": "2.13.11", + "@types/koa-bodyparser": "4.3.12", + "@types/koa-cors": "0.0.5", + "@types/koa-favicon": "2.1.3", + "@types/koa-logger": "3.1.5", + "@types/koa-mount": "4.0.5", + "@types/koa-send": "4.1.6", + "@types/koa__cors": "4.0.3", + "@types/koa__multer": "2.0.7", + "@types/koa__router": "12.0.4", + "@types/mocha": "10.0.4", + "@types/node": "20.9.0", + "@types/node-fetch": "2.6.9", + "@types/nodemailer": "6.4.14", + "@types/oauth": "0.9.4", + "@types/opencc-js": "^1.0.3", + "@types/pg": "^8.10.9", + "@types/probe-image-size": "^7.2.3", + "@types/pug": "2.0.9", + "@types/punycode": "2.1.2", + "@types/qrcode": "1.5.5", + "@types/qs": "6.9.10", + "@types/random-seed": "0.3.5", + "@types/ratelimiter": "3.4.6", + "@types/rename": "1.0.7", + "@types/sanitize-html": "2.9.4", + "@types/semver": "7.5.5", + "@types/sinonjs__fake-timers": "8.1.5", + "@types/syslog-pro": "^1.0.3", + "@types/tinycolor2": "1.4.6", + "@types/tmp": "0.2.6", + "@types/uuid": "9.0.7", + "@types/web-push": "3.6.3", + "@types/websocket": "1.0.9", + "@types/ws": "8.5.9", "cross-env": "7.0.3", - "eslint": "^8.46.0", - "execa": "6.1.0", + "eslint": "^8.53.0", + "execa": "8.0.1", "json5-loader": "4.0.1", "mocha": "10.2.0", "pug": "3.0.2", "strict-event-emitter-types": "2.0.0", "swc-loader": "^0.2.3", - "ts-loader": "9.4.4", + "ts-loader": "9.5.1", "ts-node": "10.9.1", "tsconfig-paths": "4.2.0", - "typescript": "5.1.6", - "webpack": "^5.88.2", - "ws": "8.13.0" + "typescript": "5.2.2", + "webpack": "^5.89.0", + "ws": "8.14.2" } } diff --git a/packages/backend/src/server/web/index.ts b/packages/backend/src/server/web/index.ts index 52078515ab..3981d57667 100644 --- a/packages/backend/src/server/web/index.ts +++ b/packages/backend/src/server/web/index.ts @@ -9,7 +9,7 @@ import Koa from "koa"; import Router from "@koa/router"; import send from "koa-send"; import favicon from "koa-favicon"; -import views from "koa-views"; +import views from "@ladjs/koa-views"; import sharp from "sharp"; import { createBullBoard } from "@bull-board/api"; import { BullAdapter } from "@bull-board/api/bullAdapter.js"; diff --git a/packages/client/package.json b/packages/client/package.json index 43fc376b4f..bb78f481fb 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -11,35 +11,35 @@ }, "devDependencies": { "@discordapp/twemoji": "14.1.2", - "@eslint-sets/eslint-config-vue3": "^5.8.0", + "@eslint-sets/eslint-config-vue3": "^5.10.0", "@eslint-sets/eslint-config-vue3-ts": "^3.3.0", "@phosphor-icons/web": "^2.0.3", - "@rollup/plugin-alias": "5.0.0", - "@rollup/plugin-json": "6.0.0", - "@rollup/pluginutils": "^5.0.4", + "@rollup/plugin-alias": "5.0.1", + "@rollup/plugin-json": "6.0.1", + "@rollup/pluginutils": "^5.0.5", "@syuilo/aiscript": "0.16.0", - "@types/autosize": "^4.0.2", - "@types/escape-regexp": "0.0.1", + "@types/autosize": "^4.0.3", + "@types/escape-regexp": "0.0.3", "@types/glob": "8.1.0", - "@types/gulp": "4.0.13", - "@types/gulp-rename": "2.0.2", - "@types/insert-text-at-cursor": "^0.3.1", - "@types/katex": "0.16.2", - "@types/matter-js": "0.19.0", - "@types/prismjs": "^1.26.2", - "@types/punycode": "2.1.0", - "@types/seedrandom": "3.0.5", - "@types/textarea-caret": "^3.0.2", - "@types/throttle-debounce": "5.0.0", - "@types/tinycolor2": "1.4.3", - "@types/uuid": "9.0.3", - "@vitejs/plugin-vue": "4.3.4", - "@vue/compiler-sfc": "3.3.4", - "@vue/runtime-core": "3.3.4", + "@types/gulp": "4.0.17", + "@types/gulp-rename": "2.0.5", + "@types/insert-text-at-cursor": "^0.3.2", + "@types/katex": "0.16.6", + "@types/matter-js": "0.19.4", + "@types/prismjs": "^1.26.3", + "@types/punycode": "2.1.2", + "@types/seedrandom": "3.0.8", + "@types/textarea-caret": "^3.0.3", + "@types/throttle-debounce": "5.0.2", + "@types/tinycolor2": "1.4.6", + "@types/uuid": "9.0.7", + "@vitejs/plugin-vue": "4.5.0", + "@vue/compiler-sfc": "3.3.8", + "@vue/runtime-core": "3.3.8", "autobind-decorator": "2.4.0", "autosize": "6.0.1", "blurhash": "2.0.5", - "broadcast-channel": "5.3.0", + "broadcast-channel": "6.0.0", "browser-image-resizer": "github:misskey-dev/browser-image-resizer", "chart.js": "4.4.0", "chartjs-adapter-date-fns": "3.0.0", @@ -50,7 +50,7 @@ "compare-versions": "6.1.0", "cropperjs": "2.0.0-beta.4", "cross-env": "7.0.3", - "cypress": "10.11.0", + "cypress": "13.5.1", "date-fns": "2.30.0", "emojilib": "^3.0.11", "escape-regexp": "0.0.1", @@ -59,46 +59,46 @@ "eventemitter3": "5.0.1", "fast-blurhash": "^1.1.2", "firefish-js": "workspace:*", - "focus-trap": "^7.5.2", - "focus-trap-vue": "^4.0.2", + "focus-trap": "^7.5.4", + "focus-trap-vue": "^4.0.3", "gsap": "^3.12.2", "idb-keyval": "6.2.1", "insert-text-at-cursor": "0.3.0", "json5": "2.2.3", - "katex": "0.16.8", + "katex": "0.16.9", "libopenmpt-wasm": "github:TheEssem/libopenmpt-packaging#build", "matter-js": "0.19.0", "mfm-js": "0.23.3", - "photoswipe": "5.3.9", - "prettier": "3.0.3", + "photoswipe": "5.4.2", + "prettier": "3.1.0", "prettier-plugin-vue": "1.1.6", "prismjs": "1.29.0", - "punycode": "2.3.0", + "punycode": "2.3.1", "rndstr": "1.0.0", - "rollup": "3.28.1", + "rollup": "4.4.1", "s-age": "1.1.2", - "sass": "1.66.1", + "sass": "1.69.5", "seedrandom": "3.0.5", "strict-event-emitter-types": "2.0.0", "stringz": "2.1.0", - "swiper": "10.2.0", + "swiper": "11.0.4", "syuilo-password-strength": "0.0.1", "textarea-caret": "3.1.0", - "three": "0.156.0", + "three": "0.158.0", "throttle-debounce": "5.0.0", "tinycolor2": "1.6.0", "tinyld": "^1.3.4", - "tsc-alias": "1.8.7", + "tsc-alias": "1.8.8", "tsconfig-paths": "4.2.0", "twemoji-parser": "14.0.0", "typescript": "5.2.2", "unicode-emoji-json": "^0.4.0", - "uuid": "9.0.0", + "uuid": "9.0.1", "vanilla-tilt": "1.8.1", - "vite": "4.4.9", + "vite": "5.0.0", "vite-plugin-compression": "^0.5.1", - "vue": "3.3.4", - "vue-draggable-plus": "^0.2.6", + "vue": "3.3.8", + "vue-draggable-plus": "^0.2.7", "vue-isyourpasswordsafe": "^2.0.0", "vue-plyr": "^7.0.0", "vue-prism-editor": "2.0.0-alpha.2" diff --git a/packages/firefish-js/package.json b/packages/firefish-js/package.json index 734036d38e..549730653f 100644 --- a/packages/firefish-js/package.json +++ b/packages/firefish-js/package.json @@ -20,11 +20,11 @@ "url": "https://git.joinfirefish.org/firefish/firefish.git" }, "devDependencies": { - "@swc/cli": "^0.1.62", + "@swc/cli": "^0.1.63", "@swc/core": "1.3.78", "@swc/types": "^0.1.5", - "@types/jest": "^29.5.6", - "@types/node": "20.8.7", + "@types/jest": "^29.5.8", + "@types/node": "20.9.0", "jest": "^29.7.0", "jest-fetch-mock": "^3.0.3", "jest-websocket-mock": "^2.5.0", diff --git a/packages/sw/package.json b/packages/sw/package.json index 7c5bd14077..b86e2af800 100644 --- a/packages/sw/package.json +++ b/packages/sw/package.json @@ -9,12 +9,12 @@ "format": "pnpm biome format * --write" }, "devDependencies": { - "@swc/cli": "^0.1.62", + "@swc/cli": "^0.1.63", "@swc/core": "1.3.78", "@swc/core-android-arm64": "1.3.11", "firefish-js": "workspace:*", "idb-keyval": "^6.2.1", - "vite": "4.4.9", + "vite": "5.0.0", "vite-plugin-compression": "^0.5.1" }, "optionalDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f051466af3..a4d35b87ab 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,17 +12,17 @@ importers: .: dependencies: '@bull-board/api': - specifier: 5.8.0 - version: 5.8.0(@bull-board/ui@5.8.0) + specifier: 5.9.1 + version: 5.9.1(@bull-board/ui@5.9.1) '@bull-board/ui': - specifier: 5.8.0 - version: 5.8.0 + specifier: 5.9.1 + version: 5.9.1 '@napi-rs/cli': - specifier: ^2.16.2 - version: 2.16.2 + specifier: ^2.16.5 + version: 2.16.5 '@tensorflow/tfjs': - specifier: ^4.10.0 - version: 4.11.0(seedrandom@3.0.5) + specifier: ^4.13.0 + version: 4.13.0(seedrandom@3.0.5) js-yaml: specifier: 4.1.0 version: 4.1.0 @@ -31,29 +31,29 @@ importers: version: 3.0.5 devDependencies: '@biomejs/biome': - specifier: 1.0.0 - version: 1.0.0 + specifier: 1.3.3 + version: 1.3.3 '@biomejs/cli-darwin-arm64': - specifier: ^1.0.0 - version: 1.2.2 + specifier: ^1.3.3 + version: 1.3.3 '@biomejs/cli-darwin-x64': - specifier: ^1.0.0 - version: 1.2.2 + specifier: ^1.3.3 + version: 1.3.3 '@biomejs/cli-linux-arm64': - specifier: ^1.0.0 - version: 1.2.2 + specifier: ^1.3.3 + version: 1.3.3 '@biomejs/cli-linux-x64': - specifier: ^1.0.0 - version: 1.2.2 + specifier: ^1.3.3 + version: 1.3.3 '@types/gulp': - specifier: 4.0.13 - version: 4.0.13 + specifier: 4.0.17 + version: 4.0.17 '@types/gulp-rename': - specifier: 2.0.2 - version: 2.0.2 + specifier: 2.0.5 + version: 2.0.5 '@types/node': - specifier: 20.5.8 - version: 20.5.8 + specifier: 20.9.0 + version: 20.9.0 add: specifier: 2.0.6 version: 2.0.6 @@ -61,11 +61,11 @@ importers: specifier: 7.0.3 version: 7.0.3 cypress: - specifier: 10.11.0 - version: 10.11.0 + specifier: 13.5.1 + version: 13.5.1 execa: - specifier: 5.1.1 - version: 5.1.1 + specifier: 8.0.1 + version: 8.0.1 gulp: specifier: 4.0.2 version: 4.0.2 @@ -85,11 +85,11 @@ importers: specifier: ^1.0.4 version: 1.0.4 pnpm: - specifier: 8.10.2 - version: 8.10.2 + specifier: 8.10.5 + version: 8.10.5 start-server-and-test: - specifier: 1.15.2 - version: 1.15.2 + specifier: 2.0.3 + version: 2.0.3 typescript: specifier: 5.2.2 version: 5.2.2 @@ -97,41 +97,44 @@ importers: packages/backend: dependencies: '@bull-board/api': - specifier: 5.8.0 - version: 5.8.0(@bull-board/ui@5.8.0) + specifier: 5.9.1 + version: 5.9.1(@bull-board/ui@5.9.1) '@bull-board/koa': - specifier: 5.8.0 - version: 5.8.0(@types/koa@2.13.8)(pug@3.0.2) + specifier: 5.9.1 + version: 5.9.1(@types/koa@2.13.11)(pug@3.0.2) '@bull-board/ui': - specifier: 5.8.0 - version: 5.8.0 + specifier: 5.9.1 + version: 5.9.1 '@discordapp/twemoji': specifier: 14.1.2 version: 14.1.2 '@elastic/elasticsearch': - specifier: 7.17.0 - version: 7.17.0 + specifier: 8.10.0 + version: 8.10.0 '@koa/cors': - specifier: 3.4.3 - version: 3.4.3 + specifier: 4.0.0 + version: 4.0.0 '@koa/multer': specifier: 3.0.2 - version: 3.0.2(multer@1.4.4-lts.1) + version: 3.0.2(multer@1.4.5-lts.1) '@koa/router': - specifier: 9.0.1 - version: 9.0.1 + specifier: 12.0.1 + version: 12.0.1 + '@ladjs/koa-views': + specifier: 9.0.0 + version: 9.0.0(@babel/core@7.22.10)(@types/koa@2.13.11)(pug@3.0.2) '@peertube/http-signature': specifier: 1.7.0 version: 1.7.0 '@redocly/openapi-core': - specifier: 1.0.2 - version: 1.0.2 + specifier: 1.4.1 + version: 1.4.1 '@sinonjs/fake-timers': - specifier: 9.1.2 - version: 9.1.2 + specifier: 11.2.2 + version: 11.2.2 '@tensorflow/tfjs': - specifier: ^4.2.0 - version: 4.2.0(seedrandom@3.0.5) + specifier: ^4.13.0 + version: 4.13.0(seedrandom@3.0.5) adm-zip: specifier: ^0.5.10 version: 0.5.10 @@ -139,11 +142,11 @@ importers: specifier: 8.12.0 version: 8.12.0 archiver: - specifier: 6.0.0 - version: 6.0.0 + specifier: 6.0.1 + version: 6.0.1 argon2: - specifier: ^0.31.1 - version: 0.31.1 + specifier: ^0.31.2 + version: 0.31.2 autolinker: specifier: 4.0.0 version: 4.0.0 @@ -151,11 +154,11 @@ importers: specifier: 0.1.0 version: 0.1.0 aws-sdk: - specifier: 2.1413.0 - version: 2.1413.0 + specifier: 2.1498.0 + version: 2.1498.0 axios: - specifier: ^1.4.0 - version: 1.4.0 + specifier: ^1.6.2 + version: 1.6.2(debug@4.3.4) bcryptjs: specifier: 2.4.3 version: 2.4.3 @@ -163,8 +166,8 @@ importers: specifier: 2.0.5 version: 2.0.5 bull: - specifier: 4.11.3 - version: 4.11.3 + specifier: 4.11.5 + version: 4.11.5 cacheable-lookup: specifier: TheEssem/cacheable-lookup version: github.com/TheEssem/cacheable-lookup/dd2fb616366a3c68dcf321a57a67295967b204bf @@ -175,8 +178,8 @@ importers: specifier: 5.3.0 version: 5.3.0 chalk-template: - specifier: 0.4.0 - version: 0.4.0 + specifier: 1.1.0 + version: 1.1.0 chokidar: specifier: ^3.3.1 version: 3.3.1 @@ -205,8 +208,8 @@ importers: specifier: 4.2.2 version: 4.2.2 file-type: - specifier: 18.5.0 - version: 18.5.0 + specifier: 18.7.0 + version: 18.7.0 firefish-js: specifier: workspace:* version: link:../firefish-js @@ -220,8 +223,8 @@ importers: specifier: ^1.4.2 version: 1.4.2 happy-dom: - specifier: ^11.0.2 - version: 11.2.0 + specifier: ^12.10.3 + version: 12.10.3 hpagent: specifier: 1.2.0 version: 1.2.0 @@ -241,8 +244,8 @@ importers: specifier: 2.2.3 version: 2.2.3 jsonld: - specifier: 8.2.1 - version: 8.2.1 + specifier: 8.3.1 + version: 8.3.1 jsrsasign: specifier: 10.8.6 version: 10.8.6 @@ -276,15 +279,12 @@ importers: koa-slow: specifier: 2.1.0 version: 2.1.0 - koa-views: - specifier: 7.0.2 - version: 7.0.2(@types/koa@2.13.8)(ejs@3.1.9)(pug@3.0.2) megalodon: specifier: workspace:* version: link:../megalodon meilisearch: - specifier: 0.34.1 - version: 0.34.1 + specifier: 0.35.0 + version: 0.35.0 mfm-js: specifier: 0.23.3 version: 0.23.3 @@ -295,8 +295,8 @@ importers: specifier: ^1.9.9 version: 1.9.9 multer: - specifier: 1.4.4-lts.1 - version: 1.4.4-lts.1 + specifier: 1.4.5-lts.1 + version: 1.4.5-lts.1 native-utils: specifier: link:native-utils version: link:native-utils @@ -307,11 +307,11 @@ importers: specifier: 3.3.2 version: 3.3.2 nodemailer: - specifier: 6.9.4 - version: 6.9.4 + specifier: 6.9.7 + version: 6.9.7 nsfwjs: specifier: 2.4.2 - version: 2.4.2(@tensorflow/tfjs@4.2.0) + version: 2.4.2(@tensorflow/tfjs@4.13.0) opencc-js: specifier: ^1.0.5 version: 1.0.5 @@ -319,8 +319,8 @@ importers: specifier: 0.0.14 version: 0.0.14 otpauth: - specifier: ^9.1.4 - version: 9.1.4 + specifier: ^9.2.0 + version: 9.2.0 parse5: specifier: 7.1.2 version: 7.1.2 @@ -337,11 +337,11 @@ importers: specifier: 2.7.0 version: 2.7.0 punycode: - specifier: 2.3.0 - version: 2.3.0 + specifier: 2.3.1 + version: 2.3.1 pureimage: - specifier: 0.4.8 - version: 0.4.8 + specifier: 0.4.13 + version: 0.4.13 qrcode: specifier: 1.5.3 version: 1.5.3 @@ -355,8 +355,8 @@ importers: specifier: 3.4.1 version: 3.4.1 re2: - specifier: 1.20.5 - version: 1.20.5 + specifier: 1.20.8 + version: 1.20.8 redis-semaphore: specifier: 5.5.0 version: 5.5.0(ioredis@5.3.2) @@ -382,8 +382,8 @@ importers: specifier: 7.5.4 version: 7.5.4 sharp: - specifier: 0.32.5 - version: 0.32.5 + specifier: 0.32.6 + version: 0.32.6 sonic-channel: specifier: ^1.3.1 version: 1.3.1 @@ -397,14 +397,14 @@ importers: specifier: 1.0.0 version: 1.0.0 systeminformation: - specifier: 5.21.3 - version: 5.21.3 + specifier: 5.21.17 + version: 5.21.17 tar-stream: specifier: ^3.1.6 version: 3.1.6 tesseract.js: - specifier: ^4.1.1 - version: 4.1.1 + specifier: ^5.0.3 + version: 5.0.3 tinycolor2: specifier: 1.6.0 version: 1.6.0 @@ -424,11 +424,11 @@ importers: specifier: 2.3.0 version: 2.3.0 uuid: - specifier: 9.0.0 - version: 9.0.0 + specifier: 9.0.1 + version: 9.0.1 web-push: - specifier: 3.6.5 - version: 3.6.5 + specifier: 3.6.6 + version: 3.6.6 websocket: specifier: 1.0.34 version: 1.0.34 @@ -440,165 +440,159 @@ importers: specifier: 1.3.11 version: 1.3.11 '@tensorflow/tfjs-node': - specifier: 3.21.1 - version: 3.21.1(seedrandom@3.0.5) + specifier: 4.13.0 + version: 4.13.0(seedrandom@3.0.5) devDependencies: '@swc/cli': - specifier: ^0.1.62 - version: 0.1.62(@swc/core@1.3.78)(chokidar@3.3.1) + specifier: ^0.1.63 + version: 0.1.63(@swc/core@1.3.78)(chokidar@3.3.1) '@swc/core': specifier: 1.3.78 version: 1.3.78 '@types/adm-zip': - specifier: ^0.5.0 - version: 0.5.0 + specifier: ^0.5.4 + version: 0.5.4 '@types/bcryptjs': - specifier: 2.4.2 - version: 2.4.2 + specifier: 2.4.6 + version: 2.4.6 '@types/color-convert': - specifier: ^2.0.2 - version: 2.0.2 + specifier: ^2.0.3 + version: 2.0.3 '@types/content-disposition': - specifier: ^0.5.7 - version: 0.5.7 + specifier: ^0.5.8 + version: 0.5.8 '@types/escape-regexp': - specifier: 0.0.1 - version: 0.0.1 + specifier: 0.0.3 + version: 0.0.3 '@types/fluent-ffmpeg': - specifier: 2.1.21 - version: 2.1.21 + specifier: 2.1.24 + version: 2.1.24 '@types/js-yaml': + specifier: 4.0.9 + version: 4.0.9 + '@types/jsonld': + specifier: 1.5.12 + version: 1.5.12 + '@types/jsrsasign': + specifier: 10.5.12 + version: 10.5.12 + '@types/koa': + specifier: 2.13.11 + version: 2.13.11 + '@types/koa-bodyparser': + specifier: 4.3.12 + version: 4.3.12 + '@types/koa-cors': + specifier: 0.0.5 + version: 0.0.5 + '@types/koa-favicon': + specifier: 2.1.3 + version: 2.1.3 + '@types/koa-logger': + specifier: 3.1.5 + version: 3.1.5 + '@types/koa-mount': specifier: 4.0.5 version: 4.0.5 - '@types/jsonld': - specifier: 1.5.9 - version: 1.5.9 - '@types/jsrsasign': - specifier: 10.5.8 - version: 10.5.8 - '@types/koa': - specifier: 2.13.8 - version: 2.13.8 - '@types/koa-bodyparser': - specifier: 4.3.10 - version: 4.3.10 - '@types/koa-cors': - specifier: 0.0.2 - version: 0.0.2 - '@types/koa-favicon': - specifier: 2.0.21 - version: 2.0.21 - '@types/koa-logger': - specifier: 3.1.2 - version: 3.1.2 - '@types/koa-mount': - specifier: 4.0.2 - version: 4.0.2 '@types/koa-send': - specifier: 4.1.3 - version: 4.1.3 - '@types/koa-views': - specifier: 7.0.0 - version: 7.0.0(@types/koa@2.13.8)(pug@3.0.2) + specifier: 4.1.6 + version: 4.1.6 '@types/koa__cors': - specifier: 3.3.0 - version: 3.3.0 + specifier: 4.0.3 + version: 4.0.3 '@types/koa__multer': - specifier: 2.0.4 - version: 2.0.4 + specifier: 2.0.7 + version: 2.0.7 '@types/koa__router': - specifier: 8.0.11 - version: 8.0.11 + specifier: 12.0.4 + version: 12.0.4 '@types/mocha': - specifier: 9.1.1 - version: 9.1.1 + specifier: 10.0.4 + version: 10.0.4 '@types/node': - specifier: 18.11.18 - version: 18.11.18 + specifier: 20.9.0 + version: 20.9.0 '@types/node-fetch': - specifier: 3.0.3 - version: 3.0.3 + specifier: 2.6.9 + version: 2.6.9 '@types/nodemailer': - specifier: 6.4.9 - version: 6.4.9 + specifier: 6.4.14 + version: 6.4.14 '@types/oauth': - specifier: 0.9.1 - version: 0.9.1 + specifier: 0.9.4 + version: 0.9.4 '@types/opencc-js': - specifier: ^1.0.2 - version: 1.0.2 + specifier: ^1.0.3 + version: 1.0.3 '@types/pg': - specifier: ^8.10.7 - version: 8.10.7 + specifier: ^8.10.9 + version: 8.10.9 '@types/probe-image-size': - specifier: ^7.2.0 - version: 7.2.0 + specifier: ^7.2.3 + version: 7.2.3 '@types/pug': - specifier: 2.0.6 - version: 2.0.6 + specifier: 2.0.9 + version: 2.0.9 '@types/punycode': - specifier: 2.1.0 - version: 2.1.0 + specifier: 2.1.2 + version: 2.1.2 '@types/qrcode': - specifier: 1.5.1 - version: 1.5.1 + specifier: 1.5.5 + version: 1.5.5 '@types/qs': - specifier: 6.9.7 - version: 6.9.7 + specifier: 6.9.10 + version: 6.9.10 '@types/random-seed': - specifier: 0.3.3 - version: 0.3.3 + specifier: 0.3.5 + version: 0.3.5 '@types/ratelimiter': - specifier: 3.4.4 - version: 3.4.4 - '@types/redis': - specifier: 4.0.11 - version: 4.0.11 + specifier: 3.4.6 + version: 3.4.6 '@types/rename': - specifier: 1.0.4 - version: 1.0.4 + specifier: 1.0.7 + version: 1.0.7 '@types/sanitize-html': - specifier: 2.9.0 - version: 2.9.0 + specifier: 2.9.4 + version: 2.9.4 '@types/semver': - specifier: 7.5.0 - version: 7.5.0 + specifier: 7.5.5 + version: 7.5.5 '@types/sinonjs__fake-timers': - specifier: 8.1.2 - version: 8.1.2 + specifier: 8.1.5 + version: 8.1.5 '@types/syslog-pro': - specifier: ^1.0.2 - version: 1.0.2 + specifier: ^1.0.3 + version: 1.0.3 '@types/tinycolor2': - specifier: 1.4.3 - version: 1.4.3 + specifier: 1.4.6 + version: 1.4.6 '@types/tmp': - specifier: 0.2.3 - version: 0.2.3 + specifier: 0.2.6 + version: 0.2.6 '@types/uuid': - specifier: 9.0.2 - version: 9.0.2 + specifier: 9.0.7 + version: 9.0.7 '@types/web-push': - specifier: 3.3.2 - version: 3.3.2 + specifier: 3.6.3 + version: 3.6.3 '@types/websocket': - specifier: 1.0.5 - version: 1.0.5 + specifier: 1.0.9 + version: 1.0.9 '@types/ws': - specifier: 8.5.5 - version: 8.5.5 + specifier: 8.5.9 + version: 8.5.9 cross-env: specifier: 7.0.3 version: 7.0.3 eslint: - specifier: ^8.46.0 - version: 8.46.0 + specifier: ^8.53.0 + version: 8.53.0 execa: - specifier: 6.1.0 - version: 6.1.0 + specifier: 8.0.1 + version: 8.0.1 json5-loader: specifier: 4.0.1 - version: 4.0.1(webpack@5.88.2) + version: 4.0.1(webpack@5.89.0) mocha: specifier: 10.2.0 version: 10.2.0 @@ -610,25 +604,25 @@ importers: version: 2.0.0 swc-loader: specifier: ^0.2.3 - version: 0.2.3(@swc/core@1.3.78)(webpack@5.88.2) + version: 0.2.3(@swc/core@1.3.78)(webpack@5.89.0) ts-loader: - specifier: 9.4.4 - version: 9.4.4(typescript@5.1.6)(webpack@5.88.2) + specifier: 9.5.1 + version: 9.5.1(typescript@5.2.2)(webpack@5.89.0) ts-node: specifier: 10.9.1 - version: 10.9.1(@swc/core@1.3.78)(@types/node@18.11.18)(typescript@5.1.6) + version: 10.9.1(@swc/core@1.3.78)(@types/node@20.9.0)(typescript@5.2.2) tsconfig-paths: specifier: 4.2.0 version: 4.2.0 typescript: - specifier: 5.1.6 - version: 5.1.6 + specifier: 5.2.2 + version: 5.2.2 webpack: - specifier: ^5.88.2 - version: 5.88.2(@swc/core@1.3.78) + specifier: ^5.89.0 + version: 5.89.0(@swc/core@1.3.78) ws: - specifier: 8.13.0 - version: 8.13.0 + specifier: 8.14.2 + version: 8.14.2 packages/backend/native-utils: devDependencies: @@ -645,80 +639,80 @@ importers: specifier: 14.1.2 version: 14.1.2 '@eslint-sets/eslint-config-vue3': - specifier: ^5.8.0 - version: 5.8.0(@babel/core@7.23.2)(eslint@8.51.0)(prettier@3.0.3)(typescript@5.2.2) + specifier: ^5.10.0 + version: 5.10.0(@babel/core@7.23.2)(eslint@8.53.0)(prettier@3.1.0)(typescript@5.2.2) '@eslint-sets/eslint-config-vue3-ts': specifier: ^3.3.0 - version: 3.3.0(@babel/core@7.23.2)(eslint@8.51.0)(prettier@3.0.3)(typescript@5.2.2) + version: 3.3.0(@babel/core@7.23.2)(eslint@8.53.0)(prettier@3.1.0)(typescript@5.2.2) '@phosphor-icons/web': specifier: ^2.0.3 version: 2.0.3 '@rollup/plugin-alias': - specifier: 5.0.0 - version: 5.0.0(rollup@3.28.1) + specifier: 5.0.1 + version: 5.0.1(rollup@4.4.1) '@rollup/plugin-json': - specifier: 6.0.0 - version: 6.0.0(rollup@3.28.1) + specifier: 6.0.1 + version: 6.0.1(rollup@4.4.1) '@rollup/pluginutils': - specifier: ^5.0.4 - version: 5.0.4(rollup@3.28.1) + specifier: ^5.0.5 + version: 5.0.5(rollup@4.4.1) '@syuilo/aiscript': specifier: 0.16.0 version: 0.16.0 '@types/autosize': - specifier: ^4.0.2 - version: 4.0.2 + specifier: ^4.0.3 + version: 4.0.3 '@types/escape-regexp': - specifier: 0.0.1 - version: 0.0.1 + specifier: 0.0.3 + version: 0.0.3 '@types/glob': specifier: 8.1.0 version: 8.1.0 '@types/gulp': - specifier: 4.0.13 - version: 4.0.13 + specifier: 4.0.17 + version: 4.0.17 '@types/gulp-rename': - specifier: 2.0.2 - version: 2.0.2 + specifier: 2.0.5 + version: 2.0.5 '@types/insert-text-at-cursor': - specifier: ^0.3.1 - version: 0.3.1 + specifier: ^0.3.2 + version: 0.3.2 '@types/katex': - specifier: 0.16.2 - version: 0.16.2 + specifier: 0.16.6 + version: 0.16.6 '@types/matter-js': - specifier: 0.19.0 - version: 0.19.0 + specifier: 0.19.4 + version: 0.19.4 '@types/prismjs': - specifier: ^1.26.2 - version: 1.26.2 + specifier: ^1.26.3 + version: 1.26.3 '@types/punycode': - specifier: 2.1.0 - version: 2.1.0 + specifier: 2.1.2 + version: 2.1.2 '@types/seedrandom': - specifier: 3.0.5 - version: 3.0.5 + specifier: 3.0.8 + version: 3.0.8 '@types/textarea-caret': - specifier: ^3.0.2 - version: 3.0.2 + specifier: ^3.0.3 + version: 3.0.3 '@types/throttle-debounce': - specifier: 5.0.0 - version: 5.0.0 + specifier: 5.0.2 + version: 5.0.2 '@types/tinycolor2': - specifier: 1.4.3 - version: 1.4.3 + specifier: 1.4.6 + version: 1.4.6 '@types/uuid': - specifier: 9.0.3 - version: 9.0.3 + specifier: 9.0.7 + version: 9.0.7 '@vitejs/plugin-vue': - specifier: 4.3.4 - version: 4.3.4(vite@4.4.9)(vue@3.3.4) + specifier: 4.5.0 + version: 4.5.0(vite@5.0.0)(vue@3.3.8) '@vue/compiler-sfc': - specifier: 3.3.4 - version: 3.3.4 + specifier: 3.3.8 + version: 3.3.8 '@vue/runtime-core': - specifier: 3.3.4 - version: 3.3.4 + specifier: 3.3.8 + version: 3.3.8 autobind-decorator: specifier: 2.4.0 version: 2.4.0 @@ -729,8 +723,8 @@ importers: specifier: 2.0.5 version: 2.0.5 broadcast-channel: - specifier: 5.3.0 - version: 5.3.0 + specifier: 6.0.0 + version: 6.0.0 browser-image-resizer: specifier: github:misskey-dev/browser-image-resizer version: github.com/misskey-dev/browser-image-resizer/5a70660c2ac8aad3d436bfa67a5e7f7c8946cac4 @@ -762,8 +756,8 @@ importers: specifier: 7.0.3 version: 7.0.3 cypress: - specifier: 10.11.0 - version: 10.11.0 + specifier: 13.5.1 + version: 13.5.1 date-fns: specifier: 2.30.0 version: 2.30.0 @@ -775,10 +769,10 @@ importers: version: 0.0.1 eslint-config-prettier: specifier: 9.0.0 - version: 9.0.0(eslint@8.51.0) + version: 9.0.0(eslint@8.53.0) eslint-plugin-file-progress: specifier: ^1.3.0 - version: 1.3.0(eslint@8.51.0) + version: 1.3.0(eslint@8.53.0) eventemitter3: specifier: 5.0.1 version: 5.0.1 @@ -789,11 +783,11 @@ importers: specifier: workspace:* version: link:../firefish-js focus-trap: - specifier: ^7.5.2 - version: 7.5.2 + specifier: ^7.5.4 + version: 7.5.4 focus-trap-vue: - specifier: ^4.0.2 - version: 4.0.2(focus-trap@7.5.2)(vue@3.3.4) + specifier: ^4.0.3 + version: 4.0.3(focus-trap@7.5.4)(vue@3.3.8) gsap: specifier: ^3.12.2 version: 3.12.2 @@ -807,8 +801,8 @@ importers: specifier: 2.2.3 version: 2.2.3 katex: - specifier: 0.16.8 - version: 0.16.8 + specifier: 0.16.9 + version: 0.16.9 libopenmpt-wasm: specifier: github:TheEssem/libopenmpt-packaging#build version: github.com/TheEssem/libopenmpt-packaging/d05d151a72b638c6312227af0417aca69521172c @@ -819,11 +813,11 @@ importers: specifier: 0.23.3 version: 0.23.3 photoswipe: - specifier: 5.3.9 - version: 5.3.9 + specifier: 5.4.2 + version: 5.4.2 prettier: - specifier: 3.0.3 - version: 3.0.3 + specifier: 3.1.0 + version: 3.1.0 prettier-plugin-vue: specifier: 1.1.6 version: 1.1.6 @@ -831,20 +825,20 @@ importers: specifier: 1.29.0 version: 1.29.0 punycode: - specifier: 2.3.0 - version: 2.3.0 + specifier: 2.3.1 + version: 2.3.1 rndstr: specifier: 1.0.0 version: 1.0.0 rollup: - specifier: 3.28.1 - version: 3.28.1 + specifier: 4.4.1 + version: 4.4.1 s-age: specifier: 1.1.2 version: 1.1.2 sass: - specifier: 1.66.1 - version: 1.66.1 + specifier: 1.69.5 + version: 1.69.5 seedrandom: specifier: 3.0.5 version: 3.0.5 @@ -855,8 +849,8 @@ importers: specifier: 2.1.0 version: 2.1.0 swiper: - specifier: 10.2.0 - version: 10.2.0 + specifier: 11.0.4 + version: 11.0.4 syuilo-password-strength: specifier: 0.0.1 version: 0.0.1 @@ -864,8 +858,8 @@ importers: specifier: 3.1.0 version: 3.1.0 three: - specifier: 0.156.0 - version: 0.156.0 + specifier: 0.158.0 + version: 0.158.0 throttle-debounce: specifier: 5.0.0 version: 5.0.0 @@ -876,8 +870,8 @@ importers: specifier: ^1.3.4 version: 1.3.4 tsc-alias: - specifier: 1.8.7 - version: 1.8.7 + specifier: 1.8.8 + version: 1.8.8 tsconfig-paths: specifier: 4.2.0 version: 4.2.0 @@ -891,23 +885,23 @@ importers: specifier: ^0.4.0 version: 0.4.0 uuid: - specifier: 9.0.0 - version: 9.0.0 + specifier: 9.0.1 + version: 9.0.1 vanilla-tilt: specifier: 1.8.1 version: 1.8.1 vite: - specifier: 4.4.9 - version: 4.4.9(@types/node@20.5.8)(sass@1.66.1) + specifier: 5.0.0 + version: 5.0.0(@types/node@20.9.0)(sass@1.69.5) vite-plugin-compression: specifier: ^0.5.1 - version: 0.5.1(vite@4.4.9) + version: 0.5.1(vite@5.0.0) vue: - specifier: 3.3.4 - version: 3.3.4 + specifier: 3.3.8 + version: 3.3.8(typescript@5.2.2) vue-draggable-plus: - specifier: ^0.2.6 - version: 0.2.6(@types/sortablejs@1.15.4) + specifier: ^0.2.7 + version: 0.2.7(@types/sortablejs@1.15.4) vue-isyourpasswordsafe: specifier: ^2.0.0 version: 2.0.0 @@ -916,7 +910,7 @@ importers: version: 7.0.0 vue-prism-editor: specifier: 2.0.0-alpha.2 - version: 2.0.0-alpha.2(vue@3.3.4) + version: 2.0.0-alpha.2(vue@3.3.8) packages/firefish-js: dependencies: @@ -932,8 +926,8 @@ importers: version: 1.3.11 devDependencies: '@swc/cli': - specifier: ^0.1.62 - version: 0.1.62(@swc/core@1.3.78)(chokidar@3.3.1) + specifier: ^0.1.63 + version: 0.1.63(@swc/core@1.3.78)(chokidar@3.3.1) '@swc/core': specifier: 1.3.78 version: 1.3.78 @@ -941,14 +935,14 @@ importers: specifier: ^0.1.5 version: 0.1.5 '@types/jest': - specifier: ^29.5.6 - version: 29.5.6 + specifier: ^29.5.8 + version: 29.5.8 '@types/node': - specifier: 20.8.7 - version: 20.8.7 + specifier: 20.9.0 + version: 20.9.0 jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@20.8.7)(ts-node@10.9.1) + version: 29.7.0(@types/node@20.9.0)(ts-node@10.9.1) jest-fetch-mock: specifier: ^3.0.3 version: 3.0.3 @@ -963,7 +957,7 @@ importers: version: 29.1.1(@babel/core@7.23.2)(jest@29.7.0)(typescript@5.2.2) ts-node: specifier: 10.9.1 - version: 10.9.1(@swc/core@1.3.78)(@types/node@20.8.7)(typescript@5.2.2) + version: 10.9.1(@swc/core@1.3.78)(@types/node@20.9.0)(typescript@5.2.2) tsd: specifier: ^0.29.0 version: 0.29.0 @@ -1096,8 +1090,8 @@ importers: version: 1.3.11 devDependencies: '@swc/cli': - specifier: ^0.1.62 - version: 0.1.62(@swc/core@1.3.78)(chokidar@3.3.1) + specifier: ^0.1.63 + version: 0.1.63(@swc/core@1.3.78)(chokidar@3.3.1) '@swc/core': specifier: 1.3.78 version: 1.3.78 @@ -1108,11 +1102,11 @@ importers: specifier: ^6.2.1 version: 6.2.1 vite: - specifier: 4.4.9 - version: 4.4.9(@types/node@20.5.8)(sass@1.66.1) + specifier: 5.0.0 + version: 5.0.0(@types/node@20.9.0)(sass@1.69.5) vite-plugin-compression: specifier: ^0.5.1 - version: 0.5.1(vite@4.4.9) + version: 0.5.1(vite@5.0.0) packages: @@ -1197,7 +1191,7 @@ packages: - supports-color dev: true - /@babel/eslint-parser@7.22.10(@babel/core@7.23.2)(eslint@8.51.0): + /@babel/eslint-parser@7.22.10(@babel/core@7.23.2)(eslint@8.53.0): resolution: {integrity: sha512-0J8DNPRXQRLeR9rPaUMM3fA+RbixjnVLe/MRMYCkp3hzgsSuxCHQ8NN8xQG1wIHKJ4a1DTROTvFJdW+B5/eOsg==} engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} peerDependencies: @@ -1206,7 +1200,21 @@ packages: dependencies: '@babel/core': 7.23.2 '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 - eslint: 8.51.0 + eslint: 8.53.0 + eslint-visitor-keys: 2.1.0 + semver: 6.3.1 + dev: true + + /@babel/eslint-parser@7.23.3(@babel/core@7.23.2)(eslint@8.53.0): + resolution: {integrity: sha512-9bTuNlyx7oSstodm1cR1bECj4fkiknsDa1YniISkJemMY3DGhJNYBECbe6QD/q54mp2J8VO66jW3/7uP//iFCw==} + engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} + peerDependencies: + '@babel/core': ^7.11.0 + eslint: ^7.5.0 || ^8.0.0 + dependencies: + '@babel/core': 7.23.2 + '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 + eslint: 8.53.0 eslint-visitor-keys: 2.1.0 semver: 6.3.1 dev: true @@ -1579,6 +1587,13 @@ packages: dependencies: regenerator-runtime: 0.14.0 + /@babel/runtime@7.23.2: + resolution: {integrity: sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==} + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.14.0 + dev: true + /@babel/template@7.22.15: resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==} engines: {node: '>=6.9.0'} @@ -1652,86 +1667,50 @@ packages: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: true - /@biomejs/biome@1.0.0: - resolution: {integrity: sha512-Y5CND1QZ5pF6hc4dFw5ItDutv9KJO91ksLdBIFyvHL7LmXN0UomqyyRWryvrqq+YlA8Q58cR6sqjjQuMp9E2Ig==} + /@biomejs/biome@1.3.3: + resolution: {integrity: sha512-vTJn7RBzLWIabUuUIoEopO860YyBrbPEu4Pztfd28jRU5QD074hKZ9IQs24pFO6A2R296gaeYmN62f4u7pUruQ==} engines: {node: '>=14.*'} hasBin: true requiresBuild: true optionalDependencies: - '@biomejs/cli-darwin-arm64': 1.0.0 - '@biomejs/cli-darwin-x64': 1.0.0 - '@biomejs/cli-linux-arm64': 1.0.0 - '@biomejs/cli-linux-x64': 1.0.0 - '@biomejs/cli-win32-arm64': 1.0.0 - '@biomejs/cli-win32-x64': 1.0.0 + '@biomejs/cli-darwin-arm64': 1.3.3 + '@biomejs/cli-darwin-x64': 1.3.3 + '@biomejs/cli-linux-arm64': 1.3.3 + '@biomejs/cli-linux-x64': 1.3.3 + '@biomejs/cli-win32-arm64': 1.3.3 + '@biomejs/cli-win32-x64': 1.3.3 dev: true - /@biomejs/cli-darwin-arm64@1.0.0: - resolution: {integrity: sha512-3v7kEyxkf3D246esH+q/lDK5wWn+xLCXZpHCuc1itAmC35GkEc6S7um6C1VD3XKXLx6N0sJR/rTmjKiRGV32Ig==} - engines: {node: '>=14.*'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /@biomejs/cli-darwin-arm64@1.2.2: - resolution: {integrity: sha512-Fx1IURKhoqH6wPawtKLT6wcfMSjRRcNK8+VWau0iDOjXvNtjJpSmICbU89B7Vt/gZRwPqkfDMBkFwm6V5vFTSQ==} + /@biomejs/cli-darwin-arm64@1.3.3: + resolution: {integrity: sha512-2X87ZfbmWwe4NGukrUvnoYdI//muSgjNUCAHJ2DO+kS1sB7kDy1s6PN/IYyTJuqRcJtDuOnSpaUDE7KxR1YhtA==} engines: {node: '>=14.*'} cpu: [arm64] os: [darwin] dev: true - /@biomejs/cli-darwin-x64@1.0.0: - resolution: {integrity: sha512-uxIMt/X7TQWicjsImkqMvUUEqaFZTOJJrtEhlHl/eIaETWJmK3uAR7ihIWctpGJnN16sUgpLgwczc7FETqu/PQ==} - engines: {node: '>=14.*'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /@biomejs/cli-darwin-x64@1.2.2: - resolution: {integrity: sha512-JNaAFOI/ZisnmzvcFNd73geJxaFaN2L4YsWM6cgBeKyLY/ycl9C/PBTFfEmeB1c7f5XIIal8P2cj47kLJpN5Ig==} + /@biomejs/cli-darwin-x64@1.3.3: + resolution: {integrity: sha512-t+7DWTCbSgHOBcPsGKuwS1qh1z9zbXFK8i8ktE18yW7iF/W0zI62k44fYqYeFJKlb0Q08aqUvez3L+AQJFsn+w==} engines: {node: '>=14.*'} cpu: [x64] os: [darwin] dev: true - /@biomejs/cli-linux-arm64@1.0.0: - resolution: {integrity: sha512-kJWtu3Xr4MdHV2Yn4U+eZudAGPgv0kRCjWAyzLRewJiqE5TLPrX08imB9SU1n3+VxNO8e2JJ0tWWBHo4J+aSEg==} - engines: {node: '>=14.*'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@biomejs/cli-linux-arm64@1.2.2: - resolution: {integrity: sha512-JHXRnfhOLx8UO/Fcyn2c5pFRri0XKqRZm2wf5oH5GSfLVpckDw2X15dYGbu3nmfM/3pcAaTV46pUpjrCnaAieg==} + /@biomejs/cli-linux-arm64@1.3.3: + resolution: {integrity: sha512-D8CvXaB8lkXXBQ6B3n0MXSSZFiE60+aNHorBLimVTtKiMod8QvAP425oQFZFul5wMXZqPLGTKFjXbAi/rvnc1A==} engines: {node: '>=14.*'} cpu: [arm64] os: [linux] dev: true - /@biomejs/cli-linux-x64@1.0.0: - resolution: {integrity: sha512-FK6hYZ0Lkk39eXYx1+2ZWtLkApc0RdOpcjDVM96JbvI0bxqvNnm193BPXuxh5A/fCl6N28RNUvcKnZ5LbgZ0Yw==} - engines: {node: '>=14.*'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@biomejs/cli-linux-x64@1.2.2: - resolution: {integrity: sha512-5Zr+iM7lUKsw81p9PkXRESuH2/AhRZ6RCWkgE+FSLcxMhXy/4RDR+o2YQDsJM6cWKIzOJM05vDHTGrDq7vXE4A==} + /@biomejs/cli-linux-x64@1.3.3: + resolution: {integrity: sha512-bqB05fwJnRZwRlcm/BS/s4qPickqiXZkiU/nOYvHApfsPeqgSHgv5HWoBYuSUjgqBbX3XZJArsC5dCcVW7vAJw==} engines: {node: '>=14.*'} cpu: [x64] os: [linux] dev: true - /@biomejs/cli-win32-arm64@1.0.0: - resolution: {integrity: sha512-kE+OY2isEJHBodiLPMlybZckHkl3CQWsvXuJEvSxkoMhLbGDPEV3yZ/0lEph3BlxP3KP5vUO3hOFGaTvHFOuqQ==} + /@biomejs/cli-win32-arm64@1.3.3: + resolution: {integrity: sha512-muFOjAv1ONMfaJDlo4Ds+Qb9lkdSLM2XaxOe3AJPejSq3Vi0aRr51ZnE02BofMnL2sVsOA9cO54wibsuTcopbw==} engines: {node: '>=14.*'} cpu: [arm64] os: [win32] @@ -1739,8 +1718,8 @@ packages: dev: true optional: true - /@biomejs/cli-win32-x64@1.0.0: - resolution: {integrity: sha512-Ko6ZsbmbScPMEnh/xz4mwDSCZIUCAEjbbbnUVApgAAL2+1Hoe7Vnhh2RiwYRqy3tHrBIMDwXkSxj0vlf1G3EHg==} + /@biomejs/cli-win32-x64@1.3.3: + resolution: {integrity: sha512-PMkMhS4smmmTMflxuZUx3REFSazEL9xsGscvZO1dKWI4ET23la+KxEM4TlSpjOyO66UerqSkuUlZecn0QhD63A==} engines: {node: '>=14.*'} cpu: [x64] os: [win32] @@ -1748,26 +1727,26 @@ packages: dev: true optional: true - /@bull-board/api@5.8.0(@bull-board/ui@5.8.0): - resolution: {integrity: sha512-jHJ7Mw/CHixNgIsrbUihyYVxIdlM/lzii+ZUo7E8CFEsOCjE+Um5RDr9boYghWVHuJykkLy7b+wPvbnTwmX0SA==} + /@bull-board/api@5.9.1(@bull-board/ui@5.9.1): + resolution: {integrity: sha512-xZzPYNw9Dp46It4vvZv3tmFScmUu/UT/jWQxYK9cvbkJRXh15rsZrbbR+/phUqou0NxRQGiHoFSZ1y5D107dIA==} peerDependencies: - '@bull-board/ui': 5.8.0 + '@bull-board/ui': 5.9.1 dependencies: - '@bull-board/ui': 5.8.0 + '@bull-board/ui': 5.9.1 redis-info: 3.1.0 dev: false - /@bull-board/koa@5.8.0(@types/koa@2.13.8)(pug@3.0.2): - resolution: {integrity: sha512-r7v+PxDklRoDhhTu+h0I1LElxgfd9QUqyD6auJNMMsxDKjvCCLFwDWgzAzav0m2bG0XX5MM3dsEiFJnY8a8bYA==} + /@bull-board/koa@5.9.1(@types/koa@2.13.11)(pug@3.0.2): + resolution: {integrity: sha512-PV2b6SQYu5/QSh65+QxbNsBmCP406qXrjUIp09cG7A+/aaTpdThDju5EgXIoe9VGPPG1CZMZ4eVOR8UT5D7H5A==} dependencies: - '@bull-board/api': 5.8.0(@bull-board/ui@5.8.0) - '@bull-board/ui': 5.8.0 + '@bull-board/api': 5.9.1(@bull-board/ui@5.9.1) + '@bull-board/ui': 5.9.1 ejs: 3.1.9 koa: 2.14.2 koa-mount: 4.0.0 koa-router: 10.1.1 koa-static: 5.0.0 - koa-views: 7.0.2(@types/koa@2.13.8)(ejs@3.1.9)(pug@3.0.2) + koa-views: 7.0.2(@types/koa@2.13.11)(ejs@3.1.9)(pug@3.0.2) transitivePeerDependencies: - '@types/koa' - arc-templates @@ -1825,10 +1804,10 @@ packages: - whiskers dev: false - /@bull-board/ui@5.8.0: - resolution: {integrity: sha512-O2imjnV7KFictoy6FsrG2y5u10Z60BIuX+nghLbhdEkZL/B4B2VUM+655d9wMIpjXocXkr2DN5ELJkUXewl9wQ==} + /@bull-board/ui@5.9.1: + resolution: {integrity: sha512-lL93KVRTpLSl73KUFBw7sXOcCrqddGBbpiMKWEbViXxObIq68yFuhRrcfR7JeTSocLF5GsnqSVdSiNCZHmdNpw==} dependencies: - '@bull-board/api': 5.8.0(@bull-board/ui@5.8.0) + '@bull-board/api': 5.9.1(@bull-board/ui@5.9.1) dev: false /@cbor-extract/cbor-extract-darwin-arm64@2.1.1: @@ -1984,8 +1963,8 @@ packages: dependencies: '@jridgewell/trace-mapping': 0.3.9 - /@cypress/request@2.88.12: - resolution: {integrity: sha512-tOn+0mDZxASFM+cuAP9szGUGPI1HwWVSvdzm7V4cCsPdFTx6qMj29CwaQmRAMIEhORIUBFBsYROYJcveK4uOjA==} + /@cypress/request@3.0.1: + resolution: {integrity: sha512-TWivJlJi8ZDx2wGOw1dbLuHJKUYX7bWySw377nlnGOW3hP9/MUKIsEdXT/YngWxVdgNCHRBmFlBipE+5/2ZZlQ==} engines: {node: '>= 6'} dependencies: aws-sign2: 0.7.0 @@ -2036,29 +2015,41 @@ packages: twemoji-parser: 14.0.0 universalify: 0.1.2 - /@elastic/elasticsearch@7.17.0: - resolution: {integrity: sha512-5QLPCjd0uLmLj1lSuKSThjNpq39f6NmlTy9ROLFwG5gjyTgpwSqufDeYG/Fm43Xs05uF7WcscoO7eguI3HuuYA==} - engines: {node: '>=12'} + /@elastic/elasticsearch@8.10.0: + resolution: {integrity: sha512-RIEyqz0D18bz/dK+wJltaak+7wKaxDELxuiwOJhuMrvbrBsYDFnEoTdP/TZ0YszHBgnRPGqBDBgH/FHNgHObiQ==} + engines: {node: '>=14'} dependencies: - debug: 4.3.4(supports-color@8.1.1) - hpagent: 0.1.2 - ms: 2.1.3 - secure-json-parse: 2.7.0 + '@elastic/transport': 8.3.4 + tslib: 2.6.1 transitivePeerDependencies: - supports-color dev: false - /@es-joy/jsdoccomment@0.40.1: - resolution: {integrity: sha512-YORCdZSusAlBrFpZ77pJjc5r1bQs5caPWtAu+WWmiSo+8XaUzseapVrfAtiRFbQWnrBxxLLEwF6f6ZG/UgCQCg==} + /@elastic/transport@8.3.4: + resolution: {integrity: sha512-+0o8o74sbzu3BO7oOZiP9ycjzzdOt4QwmMEjFc1zfO7M0Fh7QX1xrpKqZbSd8vBwihXNlSq/EnMPfgD2uFEmFg==} + engines: {node: '>=14'} + dependencies: + debug: 4.3.4(supports-color@8.1.1) + hpagent: 1.2.0 + ms: 2.1.3 + secure-json-parse: 2.7.0 + tslib: 2.6.1 + undici: 5.23.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@es-joy/jsdoccomment@0.41.0: + resolution: {integrity: sha512-aKUhyn1QI5Ksbqcr3fFJj16p99QdjUxXAEuFst1Z47DRyoiMwivIH9MV/ARcJOCXVjPfjITciej8ZD2O/6qUmw==} engines: {node: '>=16'} dependencies: - comment-parser: 1.4.0 + comment-parser: 1.4.1 esquery: 1.5.0 jsdoc-type-pratt-parser: 4.0.0 dev: true - /@esbuild/android-arm64@0.18.20: - resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} + /@esbuild/android-arm64@0.19.5: + resolution: {integrity: sha512-5d1OkoJxnYQfmC+Zd8NBFjkhyCNYwM4n9ODrycTFY6Jk1IGiZ+tjVJDDSwDt77nK+tfpGP4T50iMtVi4dEGzhQ==} engines: {node: '>=12'} cpu: [arm64] os: [android] @@ -2066,8 +2057,8 @@ packages: dev: true optional: true - /@esbuild/android-arm@0.18.20: - resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} + /@esbuild/android-arm@0.19.5: + resolution: {integrity: sha512-bhvbzWFF3CwMs5tbjf3ObfGqbl/17ict2/uwOSfr3wmxDE6VdS2GqY/FuzIPe0q0bdhj65zQsvqfArI9MY6+AA==} engines: {node: '>=12'} cpu: [arm] os: [android] @@ -2075,8 +2066,8 @@ packages: dev: true optional: true - /@esbuild/android-x64@0.18.20: - resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} + /@esbuild/android-x64@0.19.5: + resolution: {integrity: sha512-9t+28jHGL7uBdkBjL90QFxe7DVA+KGqWlHCF8ChTKyaKO//VLuoBricQCgwhOjA1/qOczsw843Fy4cbs4H3DVA==} engines: {node: '>=12'} cpu: [x64] os: [android] @@ -2084,8 +2075,8 @@ packages: dev: true optional: true - /@esbuild/darwin-arm64@0.18.20: - resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} + /@esbuild/darwin-arm64@0.19.5: + resolution: {integrity: sha512-mvXGcKqqIqyKoxq26qEDPHJuBYUA5KizJncKOAf9eJQez+L9O+KfvNFu6nl7SCZ/gFb2QPaRqqmG0doSWlgkqw==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] @@ -2093,8 +2084,8 @@ packages: dev: true optional: true - /@esbuild/darwin-x64@0.18.20: - resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} + /@esbuild/darwin-x64@0.19.5: + resolution: {integrity: sha512-Ly8cn6fGLNet19s0X4unjcniX24I0RqjPv+kurpXabZYSXGM4Pwpmf85WHJN3lAgB8GSth7s5A0r856S+4DyiA==} engines: {node: '>=12'} cpu: [x64] os: [darwin] @@ -2102,8 +2093,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-arm64@0.18.20: - resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} + /@esbuild/freebsd-arm64@0.19.5: + resolution: {integrity: sha512-GGDNnPWTmWE+DMchq1W8Sd0mUkL+APvJg3b11klSGUDvRXh70JqLAO56tubmq1s2cgpVCSKYywEiKBfju8JztQ==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] @@ -2111,8 +2102,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-x64@0.18.20: - resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} + /@esbuild/freebsd-x64@0.19.5: + resolution: {integrity: sha512-1CCwDHnSSoA0HNwdfoNY0jLfJpd7ygaLAp5EHFos3VWJCRX9DMwWODf96s9TSse39Br7oOTLryRVmBoFwXbuuQ==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] @@ -2120,8 +2111,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm64@0.18.20: - resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} + /@esbuild/linux-arm64@0.19.5: + resolution: {integrity: sha512-o3vYippBmSrjjQUCEEiTZ2l+4yC0pVJD/Dl57WfPwwlvFkrxoSO7rmBZFii6kQB3Wrn/6GwJUPLU5t52eq2meA==} engines: {node: '>=12'} cpu: [arm64] os: [linux] @@ -2129,8 +2120,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm@0.18.20: - resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} + /@esbuild/linux-arm@0.19.5: + resolution: {integrity: sha512-lrWXLY/vJBzCPC51QN0HM71uWgIEpGSjSZZADQhq7DKhPcI6NH1IdzjfHkDQws2oNpJKpR13kv7/pFHBbDQDwQ==} engines: {node: '>=12'} cpu: [arm] os: [linux] @@ -2138,8 +2129,8 @@ packages: dev: true optional: true - /@esbuild/linux-ia32@0.18.20: - resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} + /@esbuild/linux-ia32@0.19.5: + resolution: {integrity: sha512-MkjHXS03AXAkNp1KKkhSKPOCYztRtK+KXDNkBa6P78F8Bw0ynknCSClO/ztGszILZtyO/lVKpa7MolbBZ6oJtQ==} engines: {node: '>=12'} cpu: [ia32] os: [linux] @@ -2147,8 +2138,8 @@ packages: dev: true optional: true - /@esbuild/linux-loong64@0.18.20: - resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} + /@esbuild/linux-loong64@0.19.5: + resolution: {integrity: sha512-42GwZMm5oYOD/JHqHska3Jg0r+XFb/fdZRX+WjADm3nLWLcIsN27YKtqxzQmGNJgu0AyXg4HtcSK9HuOk3v1Dw==} engines: {node: '>=12'} cpu: [loong64] os: [linux] @@ -2156,8 +2147,8 @@ packages: dev: true optional: true - /@esbuild/linux-mips64el@0.18.20: - resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} + /@esbuild/linux-mips64el@0.19.5: + resolution: {integrity: sha512-kcjndCSMitUuPJobWCnwQ9lLjiLZUR3QLQmlgaBfMX23UEa7ZOrtufnRds+6WZtIS9HdTXqND4yH8NLoVVIkcg==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] @@ -2165,8 +2156,8 @@ packages: dev: true optional: true - /@esbuild/linux-ppc64@0.18.20: - resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} + /@esbuild/linux-ppc64@0.19.5: + resolution: {integrity: sha512-yJAxJfHVm0ZbsiljbtFFP1BQKLc8kUF6+17tjQ78QjqjAQDnhULWiTA6u0FCDmYT1oOKS9PzZ2z0aBI+Mcyj7Q==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] @@ -2174,8 +2165,8 @@ packages: dev: true optional: true - /@esbuild/linux-riscv64@0.18.20: - resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} + /@esbuild/linux-riscv64@0.19.5: + resolution: {integrity: sha512-5u8cIR/t3gaD6ad3wNt1MNRstAZO+aNyBxu2We8X31bA8XUNyamTVQwLDA1SLoPCUehNCymhBhK3Qim1433Zag==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] @@ -2183,8 +2174,8 @@ packages: dev: true optional: true - /@esbuild/linux-s390x@0.18.20: - resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} + /@esbuild/linux-s390x@0.19.5: + resolution: {integrity: sha512-Z6JrMyEw/EmZBD/OFEFpb+gao9xJ59ATsoTNlj39jVBbXqoZm4Xntu6wVmGPB/OATi1uk/DB+yeDPv2E8PqZGw==} engines: {node: '>=12'} cpu: [s390x] os: [linux] @@ -2192,8 +2183,8 @@ packages: dev: true optional: true - /@esbuild/linux-x64@0.18.20: - resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} + /@esbuild/linux-x64@0.19.5: + resolution: {integrity: sha512-psagl+2RlK1z8zWZOmVdImisMtrUxvwereIdyJTmtmHahJTKb64pAcqoPlx6CewPdvGvUKe2Jw+0Z/0qhSbG1A==} engines: {node: '>=12'} cpu: [x64] os: [linux] @@ -2201,8 +2192,8 @@ packages: dev: true optional: true - /@esbuild/netbsd-x64@0.18.20: - resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} + /@esbuild/netbsd-x64@0.19.5: + resolution: {integrity: sha512-kL2l+xScnAy/E/3119OggX8SrWyBEcqAh8aOY1gr4gPvw76la2GlD4Ymf832UCVbmuWeTf2adkZDK+h0Z/fB4g==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] @@ -2210,8 +2201,8 @@ packages: dev: true optional: true - /@esbuild/openbsd-x64@0.18.20: - resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} + /@esbuild/openbsd-x64@0.19.5: + resolution: {integrity: sha512-sPOfhtzFufQfTBgRnE1DIJjzsXukKSvZxloZbkJDG383q0awVAq600pc1nfqBcl0ice/WN9p4qLc39WhBShRTA==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] @@ -2219,8 +2210,8 @@ packages: dev: true optional: true - /@esbuild/sunos-x64@0.18.20: - resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} + /@esbuild/sunos-x64@0.19.5: + resolution: {integrity: sha512-dGZkBXaafuKLpDSjKcB0ax0FL36YXCvJNnztjKV+6CO82tTYVDSH2lifitJ29jxRMoUhgkg9a+VA/B03WK5lcg==} engines: {node: '>=12'} cpu: [x64] os: [sunos] @@ -2228,8 +2219,8 @@ packages: dev: true optional: true - /@esbuild/win32-arm64@0.18.20: - resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} + /@esbuild/win32-arm64@0.19.5: + resolution: {integrity: sha512-dWVjD9y03ilhdRQ6Xig1NWNgfLtf2o/STKTS+eZuF90fI2BhbwD6WlaiCGKptlqXlURVB5AUOxUj09LuwKGDTg==} engines: {node: '>=12'} cpu: [arm64] os: [win32] @@ -2237,8 +2228,8 @@ packages: dev: true optional: true - /@esbuild/win32-ia32@0.18.20: - resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} + /@esbuild/win32-ia32@0.19.5: + resolution: {integrity: sha512-4liggWIA4oDgUxqpZwrDhmEfAH4d0iljanDOK7AnVU89T6CzHon/ony8C5LeOdfgx60x5cnQJFZwEydVlYx4iw==} engines: {node: '>=12'} cpu: [ia32] os: [win32] @@ -2246,8 +2237,8 @@ packages: dev: true optional: true - /@esbuild/win32-x64@0.18.20: - resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} + /@esbuild/win32-x64@0.19.5: + resolution: {integrity: sha512-czTrygUsB/jlM8qEW5MD8bgYU2Xg14lo6kBDXW6HdxKjh8M5PzETGiSHaz9MtbXBYDloHNUAUW2tMiKW4KM9Mw==} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -2262,17 +2253,17 @@ packages: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: eslint: 8.46.0 - eslint-visitor-keys: 3.4.2 + eslint-visitor-keys: 3.4.3 dev: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.51.0): + /@eslint-community/eslint-utils@4.4.0(eslint@8.53.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.51.0 - eslint-visitor-keys: 3.4.2 + eslint: 8.53.0 + eslint-visitor-keys: 3.4.3 dev: true /@eslint-community/regexpp@4.6.2: @@ -2285,29 +2276,29 @@ packages: engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true - /@eslint-sets/eslint-config-basic@3.3.0(@babel/core@7.23.2)(@typescript-eslint/parser@5.62.0)(eslint@8.51.0)(prettier@3.0.3): + /@eslint-sets/eslint-config-basic@3.3.0(@babel/core@7.23.2)(@typescript-eslint/parser@5.62.0)(eslint@8.53.0)(prettier@3.1.0): resolution: {integrity: sha512-x5YH0CvZJxn19/5ehu188XaoLQpxOGlFiIuPHCN6FyONgrmriakT/cmIIBOJg2Vi/y1bn2xbhsgVNb00J3HyTg==} peerDependencies: eslint: '>=8.0.0' prettier: '>=2.0.0' dependencies: - '@babel/eslint-parser': 7.22.10(@babel/core@7.23.2)(eslint@8.51.0) - eslint: 8.51.0 - eslint-config-prettier: 8.9.0(eslint@8.51.0) - eslint-plugin-eslint-comments: 3.2.0(eslint@8.51.0) + '@babel/eslint-parser': 7.22.10(@babel/core@7.23.2)(eslint@8.53.0) + eslint: 8.53.0 + eslint-config-prettier: 8.9.0(eslint@8.53.0) + eslint-plugin-eslint-comments: 3.2.0(eslint@8.53.0) eslint-plugin-html: 7.1.0 - eslint-plugin-import: 2.28.0(@typescript-eslint/parser@5.62.0)(eslint@8.51.0) - eslint-plugin-jsonc: 2.9.0(eslint@8.51.0) - eslint-plugin-markdown: 3.0.1(eslint@8.51.0) - eslint-plugin-n: 15.7.0(eslint@8.51.0) - eslint-plugin-prettier: 4.2.1(eslint-config-prettier@8.9.0)(eslint@8.51.0)(prettier@3.0.3) - eslint-plugin-promise: 5.2.0(eslint@8.51.0) + eslint-plugin-import: 2.28.0(@typescript-eslint/parser@5.62.0)(eslint@8.53.0) + eslint-plugin-jsonc: 2.9.0(eslint@8.53.0) + eslint-plugin-markdown: 3.0.1(eslint@8.53.0) + eslint-plugin-n: 15.7.0(eslint@8.53.0) + eslint-plugin-prettier: 4.2.1(eslint-config-prettier@8.9.0)(eslint@8.53.0)(prettier@3.1.0) + eslint-plugin-promise: 5.2.0(eslint@8.53.0) eslint-plugin-tsdoc: 0.2.17 - eslint-plugin-unicorn: 45.0.2(eslint@8.51.0) - eslint-plugin-yml: 1.8.0(eslint@8.51.0) + eslint-plugin-unicorn: 45.0.2(eslint@8.53.0) + eslint-plugin-yml: 1.8.0(eslint@8.53.0) jsonc-eslint-parser: 2.3.0 - prettier: 3.0.3 - vue-eslint-parser: 9.3.1(eslint@8.51.0) + prettier: 3.1.0 + vue-eslint-parser: 9.3.1(eslint@8.53.0) yaml-eslint-parser: 1.2.2 transitivePeerDependencies: - '@babel/core' @@ -2317,8 +2308,8 @@ packages: - supports-color dev: true - /@eslint-sets/eslint-config-basic@5.8.0(@babel/core@7.23.2)(@typescript-eslint/parser@6.3.0)(eslint@8.51.0)(prettier@3.0.3)(typescript@5.2.2): - resolution: {integrity: sha512-dWUDQY10cHPz9M6r2HvFvByOecH0dFjnihzrdRLVx8rWWMG4keeuEhURi5eSYsHCvHJz6Q3KzukiDrp7wHZoAw==} + /@eslint-sets/eslint-config-basic@5.10.0(@babel/core@7.23.2)(@typescript-eslint/parser@6.11.0)(eslint@8.53.0)(prettier@3.1.0)(typescript@5.2.2): + resolution: {integrity: sha512-zpcEpOnktX6GNvr9qbKMr13imbCmuLZDtgW79QrOlCvi4Wic6jfjH4HMz5bT+9lZgqdWCOyOyyBCoqfnqYOj/A==} peerDependencies: eslint: '>=7.4.0' prettier: '>=2' @@ -2327,24 +2318,24 @@ packages: typescript: optional: true dependencies: - '@babel/eslint-parser': 7.22.10(@babel/core@7.23.2)(eslint@8.51.0) - eslint: 8.51.0 - eslint-config-prettier: 9.0.0(eslint@8.51.0) - eslint-plugin-eslint-comments: 3.2.0(eslint@8.51.0) + '@babel/eslint-parser': 7.23.3(@babel/core@7.23.2)(eslint@8.53.0) + eslint: 8.53.0 + eslint-config-prettier: 9.0.0(eslint@8.53.0) + eslint-plugin-eslint-comments: 3.2.0(eslint@8.53.0) eslint-plugin-html: 7.1.0 - eslint-plugin-import: 2.28.0(@typescript-eslint/parser@6.3.0)(eslint@8.51.0) - eslint-plugin-jsonc: 2.9.0(eslint@8.51.0) - eslint-plugin-markdown: 3.0.1(eslint@8.51.0) - eslint-plugin-n: 16.0.1(eslint@8.51.0) - eslint-plugin-prettier: 5.0.0(eslint-config-prettier@9.0.0)(eslint@8.51.0)(prettier@3.0.3) - eslint-plugin-promise: 6.1.1(eslint@8.51.0) + eslint-plugin-import: 2.29.0(@typescript-eslint/parser@6.11.0)(eslint@8.53.0) + eslint-plugin-jsonc: 2.10.0(eslint@8.53.0) + eslint-plugin-markdown: 3.0.1(eslint@8.53.0) + eslint-plugin-n: 16.3.1(eslint@8.53.0) + eslint-plugin-prettier: 5.0.1(eslint-config-prettier@9.0.0)(eslint@8.53.0)(prettier@3.1.0) + eslint-plugin-promise: 6.1.1(eslint@8.53.0) eslint-plugin-tsdoc: 0.2.17 - eslint-plugin-unicorn: 40.1.0(eslint@8.51.0) - eslint-plugin-yml: 1.8.0(eslint@8.51.0) + eslint-plugin-unicorn: 40.1.0(eslint@8.53.0) + eslint-plugin-yml: 1.10.0(eslint@8.53.0) jsonc-eslint-parser: 2.3.0 - prettier: 3.0.3 + prettier: 3.1.0 typescript: 5.2.2 - vue-eslint-parser: 9.3.1(eslint@8.51.0) + vue-eslint-parser: 9.3.2(eslint@8.53.0) yaml-eslint-parser: 1.2.2 transitivePeerDependencies: - '@babel/core' @@ -2355,21 +2346,21 @@ packages: - supports-color dev: true - /@eslint-sets/eslint-config-ts@3.3.0(@babel/core@7.23.2)(eslint@8.51.0)(prettier@3.0.3)(typescript@5.2.2): + /@eslint-sets/eslint-config-ts@3.3.0(@babel/core@7.23.2)(eslint@8.53.0)(prettier@3.1.0)(typescript@5.2.2): resolution: {integrity: sha512-4Vj3KxYx16hmW6AyEv1mil0gVN8H3rdJt8TRWufbAj0ZN+EjwOPf3TqE7ASCYto/NpA8xWQY3NGm/og9Or/dDQ==} peerDependencies: eslint: '>=8.0.0' prettier: '>=2.0.0' typescript: '>=4.0.0' dependencies: - '@eslint-sets/eslint-config-basic': 3.3.0(@babel/core@7.23.2)(@typescript-eslint/parser@5.62.0)(eslint@8.51.0)(prettier@3.0.3) - '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.51.0)(typescript@5.2.2) - '@typescript-eslint/parser': 5.62.0(eslint@8.51.0)(typescript@5.2.2) - eslint: 8.51.0 - eslint-config-prettier: 8.9.0(eslint@8.51.0) - eslint-plugin-prettier: 4.2.1(eslint-config-prettier@8.9.0)(eslint@8.51.0)(prettier@3.0.3) + '@eslint-sets/eslint-config-basic': 3.3.0(@babel/core@7.23.2)(@typescript-eslint/parser@5.62.0)(eslint@8.53.0)(prettier@3.1.0) + '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.53.0)(typescript@5.2.2) + '@typescript-eslint/parser': 5.62.0(eslint@8.53.0)(typescript@5.2.2) + eslint: 8.53.0 + eslint-config-prettier: 8.9.0(eslint@8.53.0) + eslint-plugin-prettier: 4.2.1(eslint-config-prettier@8.9.0)(eslint@8.53.0)(prettier@3.1.0) eslint-plugin-tsdoc: 0.2.17 - prettier: 3.0.3 + prettier: 3.1.0 typescript: 5.2.2 transitivePeerDependencies: - '@babel/core' @@ -2378,8 +2369,8 @@ packages: - supports-color dev: true - /@eslint-sets/eslint-config-ts@5.8.0(@babel/core@7.23.2)(eslint@8.51.0)(prettier@3.0.3)(typescript@5.2.2): - resolution: {integrity: sha512-0tLzYHizhI0B1oh8IFmSOyDye2jIF34SnrO/YZRXVKTuv7d4QKDD9xkC+SOBB0pk+SHPJ6AU/N2xZar+CsHl3g==} + /@eslint-sets/eslint-config-ts@5.10.0(@babel/core@7.23.2)(eslint@8.53.0)(prettier@3.1.0)(typescript@5.2.2): + resolution: {integrity: sha512-SyNwxC8u3QT/h66wRihdLEEgmUx5onx34GACkOu97dHxPHgnIo3BI9Hkmott/7I60ndgt9UwoG1gb+MVnOWfSw==} peerDependencies: eslint: '>=7.4.0' prettier: '>=2' @@ -2388,14 +2379,14 @@ packages: typescript: optional: true dependencies: - '@eslint-sets/eslint-config-basic': 5.8.0(@babel/core@7.23.2)(@typescript-eslint/parser@6.3.0)(eslint@8.51.0)(prettier@3.0.3)(typescript@5.2.2) - '@typescript-eslint/eslint-plugin': 6.3.0(@typescript-eslint/parser@6.3.0)(eslint@8.51.0)(typescript@5.2.2) - '@typescript-eslint/parser': 6.3.0(eslint@8.51.0)(typescript@5.2.2) - eslint: 8.51.0 - eslint-config-prettier: 9.0.0(eslint@8.51.0) - eslint-plugin-prettier: 5.0.0(eslint-config-prettier@9.0.0)(eslint@8.51.0)(prettier@3.0.3) + '@eslint-sets/eslint-config-basic': 5.10.0(@babel/core@7.23.2)(@typescript-eslint/parser@6.11.0)(eslint@8.53.0)(prettier@3.1.0)(typescript@5.2.2) + '@typescript-eslint/eslint-plugin': 6.11.0(@typescript-eslint/parser@6.11.0)(eslint@8.53.0)(typescript@5.2.2) + '@typescript-eslint/parser': 6.11.0(eslint@8.53.0)(typescript@5.2.2) + eslint: 8.53.0 + eslint-config-prettier: 9.0.0(eslint@8.53.0) + eslint-plugin-prettier: 5.0.1(eslint-config-prettier@9.0.0)(eslint@8.53.0)(prettier@3.1.0) eslint-plugin-tsdoc: 0.2.17 - prettier: 3.0.3 + prettier: 3.1.0 typescript: 5.2.2 transitivePeerDependencies: - '@babel/core' @@ -2405,26 +2396,26 @@ packages: - supports-color dev: true - /@eslint-sets/eslint-config-vue3-ts@3.3.0(@babel/core@7.23.2)(eslint@8.51.0)(prettier@3.0.3)(typescript@5.2.2): + /@eslint-sets/eslint-config-vue3-ts@3.3.0(@babel/core@7.23.2)(eslint@8.53.0)(prettier@3.1.0)(typescript@5.2.2): resolution: {integrity: sha512-KX3VFuS5U4FYKfZ6PABQjl54BMpNapNjYYe103Nm2Zy8y9zphDCBAARbhU97XNSvzkurve7HhJcsi9gXrWlGFA==} peerDependencies: eslint: '>=8.0.0' prettier: '>=2.0.0' typescript: '>=4.0.0' dependencies: - '@eslint-sets/eslint-config-ts': 3.3.0(@babel/core@7.23.2)(eslint@8.51.0)(prettier@3.0.3)(typescript@5.2.2) - '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.51.0)(typescript@5.2.2) - '@typescript-eslint/parser': 5.62.0(eslint@8.51.0)(typescript@5.2.2) - eslint: 8.51.0 - eslint-config-prettier: 8.9.0(eslint@8.51.0) - eslint-plugin-prettier: 4.2.1(eslint-config-prettier@8.9.0)(eslint@8.51.0)(prettier@3.0.3) + '@eslint-sets/eslint-config-ts': 3.3.0(@babel/core@7.23.2)(eslint@8.53.0)(prettier@3.1.0)(typescript@5.2.2) + '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.53.0)(typescript@5.2.2) + '@typescript-eslint/parser': 5.62.0(eslint@8.53.0)(typescript@5.2.2) + eslint: 8.53.0 + eslint-config-prettier: 8.9.0(eslint@8.53.0) + eslint-plugin-prettier: 4.2.1(eslint-config-prettier@8.9.0)(eslint@8.53.0)(prettier@3.1.0) eslint-plugin-tsdoc: 0.2.17 eslint-plugin-vitest-globals: 1.4.0 - eslint-plugin-vue: 9.16.1(eslint@8.51.0) - eslint-plugin-vue-scoped-css: 2.5.0(eslint@8.51.0)(vue-eslint-parser@9.3.1) - prettier: 3.0.3 + eslint-plugin-vue: 9.16.1(eslint@8.53.0) + eslint-plugin-vue-scoped-css: 2.5.0(eslint@8.53.0)(vue-eslint-parser@9.3.1) + prettier: 3.1.0 typescript: 5.2.2 - vue-eslint-parser: 9.3.1(eslint@8.51.0) + vue-eslint-parser: 9.3.1(eslint@8.53.0) transitivePeerDependencies: - '@babel/core' - eslint-import-resolver-typescript @@ -2432,8 +2423,8 @@ packages: - supports-color dev: true - /@eslint-sets/eslint-config-vue3@5.8.0(@babel/core@7.23.2)(eslint@8.51.0)(prettier@3.0.3)(typescript@5.2.2): - resolution: {integrity: sha512-o9ijQjjAy3kfIMmfDIsjxmjob0oitdzga4JxpX+jvwmUqvjv2eKU300Up3IGhfcQFsPcYIJhBn9+Vfe+MPH9tw==} + /@eslint-sets/eslint-config-vue3@5.10.0(@babel/core@7.23.2)(eslint@8.53.0)(prettier@3.1.0)(typescript@5.2.2): + resolution: {integrity: sha512-1Ef6R6/VR5sLEZE/kEhTqkCxqhN6nS+PZ5Eq4wgRDLAqsqM71/9NSPb29BcBDOI83xPJfHqkAlqUmKInsSR3qg==} peerDependencies: eslint: '>=7.4.0' prettier: '>=2' @@ -2442,22 +2433,22 @@ packages: typescript: optional: true dependencies: - '@eslint-sets/eslint-config-basic': 5.8.0(@babel/core@7.23.2)(@typescript-eslint/parser@6.3.0)(eslint@8.51.0)(prettier@3.0.3)(typescript@5.2.2) - '@eslint-sets/eslint-config-ts': 5.8.0(@babel/core@7.23.2)(eslint@8.51.0)(prettier@3.0.3)(typescript@5.2.2) - '@typescript-eslint/eslint-plugin': 6.3.0(@typescript-eslint/parser@6.3.0)(eslint@8.51.0)(typescript@5.2.2) - '@typescript-eslint/parser': 6.3.0(eslint@8.51.0)(typescript@5.2.2) - eslint: 8.51.0 - eslint-config-prettier: 9.0.0(eslint@8.51.0) - eslint-plugin-jsdoc: 46.4.6(eslint@8.51.0) - eslint-plugin-prettier: 5.0.0(eslint-config-prettier@9.0.0)(eslint@8.51.0)(prettier@3.0.3) + '@eslint-sets/eslint-config-basic': 5.10.0(@babel/core@7.23.2)(@typescript-eslint/parser@6.11.0)(eslint@8.53.0)(prettier@3.1.0)(typescript@5.2.2) + '@eslint-sets/eslint-config-ts': 5.10.0(@babel/core@7.23.2)(eslint@8.53.0)(prettier@3.1.0)(typescript@5.2.2) + '@typescript-eslint/eslint-plugin': 6.11.0(@typescript-eslint/parser@6.11.0)(eslint@8.53.0)(typescript@5.2.2) + '@typescript-eslint/parser': 6.11.0(eslint@8.53.0)(typescript@5.2.2) + eslint: 8.53.0 + eslint-config-prettier: 9.0.0(eslint@8.53.0) + eslint-plugin-jsdoc: 46.9.0(eslint@8.53.0) + eslint-plugin-prettier: 5.0.1(eslint-config-prettier@9.0.0)(eslint@8.53.0)(prettier@3.1.0) eslint-plugin-tsdoc: 0.2.17 eslint-plugin-vitest-globals: 1.4.0 - eslint-plugin-vue: 9.16.1(eslint@8.51.0) - eslint-plugin-vue-scoped-css: 2.5.0(eslint@8.51.0)(vue-eslint-parser@9.3.1) - local-pkg: 0.4.3 - prettier: 3.0.3 + eslint-plugin-vue: 9.18.1(eslint@8.53.0) + eslint-plugin-vue-scoped-css: 2.5.1(eslint@8.53.0)(vue-eslint-parser@9.3.2) + local-pkg: 0.5.0 + prettier: 3.1.0 typescript: 5.2.2 - vue-eslint-parser: 9.3.1(eslint@8.51.0) + vue-eslint-parser: 9.3.2(eslint@8.53.0) transitivePeerDependencies: - '@babel/core' - '@types/eslint' @@ -2483,8 +2474,8 @@ packages: - supports-color dev: true - /@eslint/eslintrc@2.1.2: - resolution: {integrity: sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==} + /@eslint/eslintrc@2.1.3: + resolution: {integrity: sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 @@ -2505,8 +2496,8 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@eslint/js@8.51.0: - resolution: {integrity: sha512-HxjQ8Qn+4SI3/AFv6sOrDB+g6PpUTDwSJiQqOrnneEk8L71161srI9gjzzZvYVbzHiVg/BvcH95+cK/zfIt4pg==} + /@eslint/js@8.53.0: + resolution: {integrity: sha512-Kn7K8dx/5U6+cT1yEhpX1w4PCSg0M+XyRILPgvwcEBjerFWCwQj5sbr3/VmxqV0JGHCBCzyd6LxypEuehypY1w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true @@ -2531,11 +2522,11 @@ packages: - supports-color dev: true - /@humanwhocodes/config-array@0.11.12: - resolution: {integrity: sha512-NlGesA1usRNn6ctHCZ21M4/dKPgW9Nn1FypRdIKKgZOKzkVV4T1FlK5mBiLhHBCDmEbdQG0idrcXlbZfksJ+RA==} + /@humanwhocodes/config-array@0.11.13: + resolution: {integrity: sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==} engines: {node: '>=10.10.0'} dependencies: - '@humanwhocodes/object-schema': 2.0.0 + '@humanwhocodes/object-schema': 2.0.1 debug: 4.3.4(supports-color@8.1.1) minimatch: 3.1.2 transitivePeerDependencies: @@ -2551,8 +2542,8 @@ packages: resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} dev: true - /@humanwhocodes/object-schema@2.0.0: - resolution: {integrity: sha512-9S9QrXY2K0L4AGDcSgTi9vgiCcG8VcBv4Mp7/1hDPYoswIy6Z6KO5blYto82BT8M0MZNRWmCFLpCs3HlpYGGdw==} + /@humanwhocodes/object-schema@2.0.1: + resolution: {integrity: sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==} dev: true /@ioredis/commands@1.2.0: @@ -2592,7 +2583,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 20.8.7 + '@types/node': 20.9.0 chalk: 4.1.2 jest-message-util: 29.7.0 jest-util: 29.7.0 @@ -2613,14 +2604,14 @@ packages: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 18.11.18 + '@types/node': 20.9.0 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.8.0 exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@18.11.18)(ts-node@10.9.1) + jest-config: 29.7.0(@types/node@20.9.0)(ts-node@10.9.1) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -2648,7 +2639,7 @@ packages: dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.8.7 + '@types/node': 20.9.0 jest-mock: 29.7.0 dev: true @@ -2675,7 +2666,7 @@ packages: dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 - '@types/node': 20.8.7 + '@types/node': 20.9.0 jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -2708,7 +2699,7 @@ packages: '@jest/transform': 29.7.0 '@jest/types': 29.6.3 '@jridgewell/trace-mapping': 0.3.20 - '@types/node': 20.8.7 + '@types/node': 20.9.0 chalk: 4.1.2 collect-v8-coverage: 1.0.2 exit: 0.1.2 @@ -2796,7 +2787,7 @@ packages: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.5 '@types/istanbul-reports': 3.0.3 - '@types/node': 20.8.7 + '@types/node': 20.9.0 '@types/yargs': 17.0.29 chalk: 4.1.2 dev: true @@ -2846,31 +2837,31 @@ packages: '@jridgewell/resolve-uri': 3.1.1 '@jridgewell/sourcemap-codec': 1.4.15 - /@koa/cors@3.4.3: - resolution: {integrity: sha512-WPXQUaAeAMVaLTEFpoq3T2O1C+FstkjJnDQqy95Ck1UdILajsRhu6mhJ8H2f4NFPRBoCNN+qywTJfq/gGki5mw==} - engines: {node: '>= 8.0.0'} + /@koa/cors@4.0.0: + resolution: {integrity: sha512-Y4RrbvGTlAaa04DBoPBWJqDR5gPj32OOz827ULXfgB1F7piD1MB/zwn8JR2LAnvdILhxUbXbkXGWuNVsFuVFCQ==} + engines: {node: '>= 14.0.0'} dependencies: vary: 1.1.2 dev: false - /@koa/multer@3.0.2(multer@1.4.4-lts.1): + /@koa/multer@3.0.2(multer@1.4.5-lts.1): resolution: {integrity: sha512-Q6WfPpE06mJWyZD1fzxM6zWywaoo+zocAn2YA9QYz4RsecoASr1h/kSzG0c5seDpFVKCMZM9raEfuM7XfqbRLw==} engines: {node: '>= 8'} peerDependencies: multer: '*' dependencies: fix-esm: 1.0.1 - multer: 1.4.4-lts.1 + multer: 1.4.5-lts.1 transitivePeerDependencies: - supports-color dev: false - /@koa/router@9.0.1: - resolution: {integrity: sha512-OI+OU49CJV4px0WkIMmayBeqVXB/JS1ZMq7UoGlTZt6Y7ijK7kdeQ18+SEHHJPytmtI1y6Hf8XLrpxva3mhv5Q==} - engines: {node: '>= 8.0.0'} + /@koa/router@12.0.1: + resolution: {integrity: sha512-ribfPYfHb+Uw3b27Eiw6NPqjhIhTpVFzEWLwyc/1Xp+DCdwRRyIlAUODX+9bPARF6aQtUu1+/PHzdNvRzcs/+Q==} + engines: {node: '>= 12'} dependencies: debug: 4.3.4(supports-color@8.1.1) - http-errors: 1.8.1 + http-errors: 2.0.0 koa-compose: 4.1.0 methods: 1.1.2 path-to-regexp: 6.2.1 @@ -2882,6 +2873,229 @@ packages: resolution: {integrity: sha512-fuscdXJ9G1qb7W8VdHi+IwRqij3lBkosAm4ydQtEmbY58OzHXqQhvlxqEkoz0yssNVn38bcpRWgA9PP+OGoisw==} dev: true + /@ladjs/consolidate@1.0.3(@babel/core@7.22.10)(pug@3.0.2): + resolution: {integrity: sha512-zyUeV5nkEFz7FH88pz+moVeMMOygTx1zL5bjXGHCVX5MMpmAtFf5piaQlBDk3nClGoUs8vjYI9TKsbXldGv0VA==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.22.5 + arc-templates: ^0.5.3 + atpl: '>=0.7.6' + bracket-template: ^1.1.5 + coffee-script: ^1.12.7 + dot: ^1.1.3 + dust: ^0.3.0 + dustjs-helpers: ^1.7.4 + dustjs-linkedin: ^2.7.5 + eco: ^1.1.0-rc-3 + ect: ^0.5.9 + ejs: ^3.1.5 + haml-coffee: ^1.14.1 + hamlet: ^0.3.3 + hamljs: ^0.6.2 + handlebars: ^4.7.6 + hogan.js: ^3.0.2 + htmling: ^0.0.8 + jazz: ^0.0.18 + jqtpl: ~1.1.0 + just: ^0.1.8 + liquid-node: ^3.0.1 + liquor: ^0.0.5 + lodash: ^4.17.20 + mote: ^0.2.0 + mustache: ^4.0.1 + nunjucks: ^3.2.2 + plates: ~0.4.11 + pug: ^3.0.0 + qejs: ^3.0.5 + ractive: ^1.3.12 + react: '>=16.13.1' + react-dom: '>=16.13.1' + slm: ^2.0.0 + swig: ^1.4.2 + swig-templates: ^2.0.3 + teacup: ^2.0.0 + templayed: '>=0.2.3' + then-pug: '*' + tinyliquid: ^0.2.34 + toffee: ^0.3.6 + twig: ^1.15.2 + twing: ^5.0.2 + underscore: ^1.11.0 + vash: ^0.13.0 + velocityjs: ^2.0.1 + walrus: ^0.10.1 + whiskers: ^0.4.0 + peerDependenciesMeta: + '@babel/core': + optional: true + arc-templates: + optional: true + atpl: + optional: true + bracket-template: + optional: true + coffee-script: + optional: true + dot: + optional: true + dust: + optional: true + dustjs-helpers: + optional: true + dustjs-linkedin: + optional: true + eco: + optional: true + ect: + optional: true + ejs: + optional: true + haml-coffee: + optional: true + hamlet: + optional: true + hamljs: + optional: true + handlebars: + optional: true + hogan.js: + optional: true + htmling: + optional: true + jazz: + optional: true + jqtpl: + optional: true + just: + optional: true + liquid-node: + optional: true + liquor: + optional: true + lodash: + optional: true + mote: + optional: true + mustache: + optional: true + nunjucks: + optional: true + plates: + optional: true + pug: + optional: true + qejs: + optional: true + ractive: + optional: true + react: + optional: true + react-dom: + optional: true + slm: + optional: true + swig: + optional: true + swig-templates: + optional: true + teacup: + optional: true + templayed: + optional: true + then-pug: + optional: true + tinyliquid: + optional: true + toffee: + optional: true + twig: + optional: true + twing: + optional: true + underscore: + optional: true + vash: + optional: true + velocityjs: + optional: true + walrus: + optional: true + whiskers: + optional: true + dependencies: + '@babel/core': 7.22.10 + pug: 3.0.2 + dev: false + + /@ladjs/koa-views@9.0.0(@babel/core@7.22.10)(@types/koa@2.13.11)(pug@3.0.2): + resolution: {integrity: sha512-/nzUN3HhB7SIxrE4c2MXCLARXMwgoy7xJogyX8lNJo4VBxM6dVQ47iZWjOoHxTBKGFNAv2OTQ0rWI7HYpiv8kg==} + engines: {node: '>=14'} + peerDependencies: + '@types/koa': ^2.13.1 + peerDependenciesMeta: + '@types/koa': + optional: true + dependencies: + '@ladjs/consolidate': 1.0.3(@babel/core@7.22.10)(pug@3.0.2) + '@types/koa': 2.13.11 + debug: 4.3.4(supports-color@8.1.1) + get-paths: 0.0.7 + koa-send: 5.0.1 + mz: 2.7.0 + pretty: 2.0.0 + resolve-path: 1.4.0 + transitivePeerDependencies: + - '@babel/core' + - arc-templates + - atpl + - bracket-template + - coffee-script + - dot + - dust + - dustjs-helpers + - dustjs-linkedin + - eco + - ect + - ejs + - haml-coffee + - hamlet + - hamljs + - handlebars + - hogan.js + - htmling + - jazz + - jqtpl + - just + - liquid-node + - liquor + - lodash + - mote + - mustache + - nunjucks + - plates + - pug + - qejs + - ractive + - react + - react-dom + - slm + - supports-color + - swig + - swig-templates + - teacup + - templayed + - then-pug + - tinyliquid + - toffee + - twig + - twing + - underscore + - vash + - velocityjs + - walrus + - whiskers + dev: false + /@mapbox/node-pre-gyp@1.0.11: resolution: {integrity: sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==} hasBin: true @@ -3001,8 +3215,8 @@ packages: hasBin: true dev: true - /@napi-rs/cli@2.16.2: - resolution: {integrity: sha512-U2aZfnr0s9KkXpZlYC0l5WxWCXL7vJUNpCnWMwq3T9GG9rhYAAUM9CTZsi1Z+0iR2LcHbfq9EfMgoqnuTyUjfg==} + /@napi-rs/cli@2.16.5: + resolution: {integrity: sha512-mFEzwrg4IOLngGd2/P6yeqIWgwQNn59Z08n1rndu6kLDq1gg954NH9cM1O9Da0RJuybt46p43lqgSsnAY2mxqA==} engines: {node: '>= 10'} hasBin: true dev: false @@ -3034,6 +3248,19 @@ packages: fastq: 1.15.0 dev: true + /@npmcli/agent@2.2.0: + resolution: {integrity: sha512-2yThA1Es98orMkpSLVqlDZAMPK3jHJhifP2gnNUdk1754uZ8yI5c+ulCoVG+WlntQA6MzhrURMXjSd9Z7dJ2/Q==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + agent-base: 7.1.0 + http-proxy-agent: 7.0.0 + https-proxy-agent: 7.0.1 + lru-cache: 10.0.2 + socks-proxy-agent: 8.0.2 + transitivePeerDependencies: + - supports-color + dev: false + /@npmcli/fs@3.1.0: resolution: {integrity: sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -3061,6 +3288,7 @@ packages: /@one-ini/wasm@0.1.1: resolution: {integrity: sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==} + dev: false /@peertube/http-signature@1.7.0: resolution: {integrity: sha512-aGQIwo6/sWtyyqhVK4e1MtxYz4N1X8CNt6SOtCc+Wnczs5S5ONaLHDDR8LYaGn0MgOwvGgXyuZ5sJIfd7iyoUw==} @@ -3099,55 +3327,6 @@ packages: tslib: 2.6.1 dev: true - /@redis/bloom@1.2.0(@redis/client@1.5.8): - resolution: {integrity: sha512-HG2DFjYKbpNmVXsa0keLHp/3leGJz1mjh09f2RLGGLQZzSHpkmZWuwJbAvo3QcRY8p80m5+ZdXZdYOSBLlp7Cg==} - peerDependencies: - '@redis/client': ^1.0.0 - dependencies: - '@redis/client': 1.5.8 - dev: true - - /@redis/client@1.5.8: - resolution: {integrity: sha512-xzElwHIO6rBAqzPeVnCzgvrnBEcFL1P0w8P65VNLRkdVW8rOE58f52hdj0BDgmsdOm4f1EoXPZtH4Fh7M/qUpw==} - engines: {node: '>=14'} - dependencies: - cluster-key-slot: 1.1.2 - generic-pool: 3.9.0 - yallist: 4.0.0 - dev: true - - /@redis/graph@1.1.0(@redis/client@1.5.8): - resolution: {integrity: sha512-16yZWngxyXPd+MJxeSr0dqh2AIOi8j9yXKcKCwVaKDbH3HTuETpDVPcLujhFYVPtYrngSco31BUcSa9TH31Gqg==} - peerDependencies: - '@redis/client': ^1.0.0 - dependencies: - '@redis/client': 1.5.8 - dev: true - - /@redis/json@1.0.4(@redis/client@1.5.8): - resolution: {integrity: sha512-LUZE2Gdrhg0Rx7AN+cZkb1e6HjoSKaeeW8rYnt89Tly13GBI5eP4CwDVr+MY8BAYfCg4/N15OUrtLoona9uSgw==} - peerDependencies: - '@redis/client': ^1.0.0 - dependencies: - '@redis/client': 1.5.8 - dev: true - - /@redis/search@1.1.3(@redis/client@1.5.8): - resolution: {integrity: sha512-4Dg1JjvCevdiCBTZqjhKkGoC5/BcB7k9j99kdMnaXFXg8x4eyOIVg9487CMv7/BUVkFLZCaIh8ead9mU15DNng==} - peerDependencies: - '@redis/client': ^1.0.0 - dependencies: - '@redis/client': 1.5.8 - dev: true - - /@redis/time-series@1.0.4(@redis/client@1.5.8): - resolution: {integrity: sha512-ThUIgo2U/g7cCuZavucQTQzA9g9JbDDY2f64u3AbAoz/8vE2lt2U37LamDUVChhaDA3IRT9R6VvJwqnUfTJzng==} - peerDependencies: - '@redis/client': ^1.0.0 - dependencies: - '@redis/client': 1.5.8 - dev: true - /@redocly/ajv@8.11.0: resolution: {integrity: sha512-9GWx27t7xWhDIR02PA18nzBdLcKQRgc46xNQvjFkrYk4UOmvKhJ/dawwiX0cCOeetN5LcaaiqQbVOWYK62SGHw==} dependencies: @@ -3157,9 +3336,9 @@ packages: uri-js: 4.4.1 dev: false - /@redocly/openapi-core@1.0.2: - resolution: {integrity: sha512-53dzhmG2bsi/8rcAAgBKk9ZLMR035VHgN7oSM3+BM4UAIoNBg6lMC/ChHSf9zO+GrX5qtuWVPqHhjjMti3SAlQ==} - engines: {node: '>=12.0.0'} + /@redocly/openapi-core@1.4.1: + resolution: {integrity: sha512-oAhnG8MKocM9LuP++NGFxdniNKWSLA7hzHPQoOK92LIP/DdvXx8pEeZ68UTNxIXhKonoUcO6s86I3L0zj143zg==} + engines: {node: '>=14.19.0', npm: '>=7.0.0'} dependencies: '@redocly/ajv': 8.11.0 '@types/node': 14.18.63 @@ -3175,47 +3354,143 @@ packages: - encoding dev: false - /@rollup/plugin-alias@5.0.0(rollup@3.28.1): - resolution: {integrity: sha512-l9hY5chSCjuFRPsnRm16twWBiSApl2uYFLsepQYwtBuAxNMQ/1dJqADld40P0Jkqm65GRTLy/AC6hnpVebtLsA==} + /@rollup/plugin-alias@5.0.1(rollup@4.4.1): + resolution: {integrity: sha512-JObvbWdOHoMy9W7SU0lvGhDtWq9PllP5mjpAy+TUslZG/WzOId9u80Hsqq1vCUn9pFJ0cxpdcnAv+QzU2zFH3Q==} engines: {node: '>=14.0.0'} peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0 + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 peerDependenciesMeta: rollup: optional: true dependencies: - rollup: 3.28.1 + rollup: 4.4.1 slash: 4.0.0 dev: true - /@rollup/plugin-json@6.0.0(rollup@3.28.1): - resolution: {integrity: sha512-i/4C5Jrdr1XUarRhVu27EEwjt4GObltD7c+MkCIpO2QIbojw8MUs+CCTqOphQi3Qtg1FLmYt+l+6YeoIf51J7w==} + /@rollup/plugin-json@6.0.1(rollup@4.4.1): + resolution: {integrity: sha512-RgVfl5hWMkxN1h/uZj8FVESvPuBJ/uf6ly6GTj0GONnkfoBN5KC0MSz+PN2OLDgYXMhtG0mWpTrkiOjoxAIevw==} engines: {node: '>=14.0.0'} peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0 + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 peerDependenciesMeta: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.4(rollup@3.28.1) - rollup: 3.28.1 + '@rollup/pluginutils': 5.0.5(rollup@4.4.1) + rollup: 4.4.1 dev: true - /@rollup/pluginutils@5.0.4(rollup@3.28.1): - resolution: {integrity: sha512-0KJnIoRI8A+a1dqOYLxH8vBf8bphDmty5QvIm2hqm7oFCFYKCAZWWd2hXgMibaPsNDhI0AtpYfQZJG47pt/k4g==} + /@rollup/pluginutils@5.0.5(rollup@4.4.1): + resolution: {integrity: sha512-6aEYR910NyP73oHiJglti74iRyOwgFU4x3meH/H8OJx6Ry0j6cOVZ5X/wTvub7G7Ao6qaHBEaNsV3GLJkSsF+Q==} engines: {node: '>=14.0.0'} peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0 + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 peerDependenciesMeta: rollup: optional: true dependencies: - '@types/estree': 1.0.1 + '@types/estree': 1.0.3 estree-walker: 2.0.2 picomatch: 2.3.1 - rollup: 3.28.1 + rollup: 4.4.1 dev: true + /@rollup/rollup-android-arm-eabi@4.4.1: + resolution: {integrity: sha512-Ss4suS/sd+6xLRu+MLCkED2mUrAyqHmmvZB+zpzZ9Znn9S8wCkTQCJaQ8P8aHofnvG5L16u9MVnJjCqioPErwQ==} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-android-arm64@4.4.1: + resolution: {integrity: sha512-sRSkGTvGsARwWd7TzC8LKRf8FiPn7257vd/edzmvG4RIr9x68KBN0/Ek48CkuUJ5Pj/Dp9vKWv6PEupjKWjTYA==} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-darwin-arm64@4.4.1: + resolution: {integrity: sha512-nz0AiGrrXyaWpsmBXUGOBiRDU0wyfSXbFuF98pPvIO8O6auQsPG6riWsfQqmCCC5FNd8zKQ4JhgugRNAkBJ8mQ==} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-darwin-x64@4.4.1: + resolution: {integrity: sha512-Ogqvf4/Ve/faMaiPRvzsJEqajbqs00LO+8vtrPBVvLgdw4wBg6ZDXdkDAZO+4MLnrc8mhGV6VJAzYScZdPLtJg==} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm-gnueabihf@4.4.1: + resolution: {integrity: sha512-9zc2tqlr6HfO+hx9+wktUlWTRdje7Ub15iJqKcqg5uJZ+iKqmd2CMxlgPpXi7+bU7bjfDIuvCvnGk7wewFEhCg==} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm64-gnu@4.4.1: + resolution: {integrity: sha512-phLb1fN3rq2o1j1v+nKxXUTSJnAhzhU0hLrl7Qzb0fLpwkGMHDem+o6d+ZI8+/BlTXfMU4kVWGvy6g9k/B8L6Q==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm64-musl@4.4.1: + resolution: {integrity: sha512-M2sDtw4tf57VPSjbTAN/lz1doWUqO2CbQuX3L9K6GWIR5uw9j+ROKCvvUNBY8WUbMxwaoc8mH9HmmBKsLht7+w==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-x64-gnu@4.4.1: + resolution: {integrity: sha512-mHIlRLX+hx+30cD6c4BaBOsSqdnCE4ok7/KDvjHYAHoSuveoMMxIisZFvcLhUnyZcPBXDGZTuBoalcuh43UfQQ==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-x64-musl@4.4.1: + resolution: {integrity: sha512-tB+RZuDi3zxFx7vDrjTNGVLu2KNyzYv+UY8jz7e4TMEoAj7iEt8Qk6xVu6mo3pgjnsHj6jnq3uuRsHp97DLwOA==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-arm64-msvc@4.4.1: + resolution: {integrity: sha512-Hdn39PzOQowK/HZzYpCuZdJC91PE6EaGbTe2VCA9oq2u18evkisQfws0Smh9QQGNNRa/T7MOuGNQoLeXhhE3PQ==} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-ia32-msvc@4.4.1: + resolution: {integrity: sha512-tLpKb1Elm9fM8c5w3nl4N1eLTP4bCqTYw9tqUBxX8/hsxqHO3dxc2qPbZ9PNkdK4tg4iLEYn0pOUnVByRd2CbA==} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-x64-msvc@4.4.1: + resolution: {integrity: sha512-eAhItDX9yQtZVM3yvXS/VR3qPqcnXvnLyx1pLXl4JzyNMBNO3KC986t/iAg2zcMzpAp9JSvxB5VZGnBiNoA98w==} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@sideway/address@4.1.4: resolution: {integrity: sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==} dependencies: @@ -3243,17 +3518,10 @@ packages: engines: {node: '>=14.16'} dev: false - /@sinonjs/commons@1.8.6: - resolution: {integrity: sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==} - dependencies: - type-detect: 4.0.8 - dev: false - /@sinonjs/commons@3.0.0: resolution: {integrity: sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==} dependencies: type-detect: 4.0.8 - dev: true /@sinonjs/fake-timers@10.3.0: resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} @@ -3261,18 +3529,18 @@ packages: '@sinonjs/commons': 3.0.0 dev: true - /@sinonjs/fake-timers@9.1.2: - resolution: {integrity: sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==} + /@sinonjs/fake-timers@11.2.2: + resolution: {integrity: sha512-G2piCSxQ7oWOxwGSAyFHfPIsyeJGXYtc6mFbnFA+kRXkiEnTl8c/8jul2S329iFBnDI9HGoeWWAZvuvOkZccgw==} dependencies: - '@sinonjs/commons': 1.8.6 + '@sinonjs/commons': 3.0.0 dev: false /@sqltools/formatter@1.2.5: resolution: {integrity: sha512-Uy0+khmZqUrUGm5dmMqVlnvufZRSK0FbYzVgp0UMstm+F5+W2/jnEEQyc9vo1ZR/E5ZI/B1WjjoTqBqwJL6Krw==} dev: false - /@swc/cli@0.1.62(@swc/core@1.3.78)(chokidar@3.3.1): - resolution: {integrity: sha512-kOFLjKY3XH1DWLfXL1/B5MizeNorHR8wHKEi92S/Zi9Md/AK17KSqR8MgyRJ6C1fhKHvbBCl8wboyKAFXStkYw==} + /@swc/cli@0.1.63(@swc/core@1.3.78)(chokidar@3.3.1): + resolution: {integrity: sha512-EM9oxxHzmmsprYRbGqsS2M4M/Gr5Gkcl0ROYYIdlUyTkhOiX822EQiRCpPCwdutdnzH2GyaTN7wc6i0Y+CKd3A==} engines: {node: '>= 12.13'} hasBin: true peerDependencies: @@ -3435,131 +3703,40 @@ packages: defer-to-connect: 2.0.1 dev: false - /@tensorflow/tfjs-backend-cpu@3.21.0(@tensorflow/tfjs-core@3.21.0): - resolution: {integrity: sha512-88S21UAdzyK0CsLUrH17GPTD+26E85OP9CqmLZslaWjWUmBkeTQ5Zqyp6iK+gELnLxPx6q7JsNEeFuPv4254lQ==} - engines: {yarn: '>= 1.3.2'} - requiresBuild: true - peerDependencies: - '@tensorflow/tfjs-core': 3.21.0 - dependencies: - '@tensorflow/tfjs-core': 3.21.0 - '@types/seedrandom': 2.4.30 - seedrandom: 3.0.5 - dev: false - optional: true - - /@tensorflow/tfjs-backend-cpu@4.11.0(@tensorflow/tfjs-core@4.11.0): - resolution: {integrity: sha512-2zmGX9MuR8AwscSGOybz4fBOFgQDnj+ZCWGkLxDzbKecy9GxuilukT46xB2zU0kSq7Mf3ncfE/9eUEy6a7ZDqQ==} + /@tensorflow/tfjs-backend-cpu@4.13.0(@tensorflow/tfjs-core@4.13.0): + resolution: {integrity: sha512-k44G+2WZShxI2ejvQdsSQcicFMNWaccsf6bkI0R7dol9t9uj73yg7JkiT0U0uuJE6XwXymJgDe+KJVprg3fAgA==} engines: {yarn: '>= 1.3.2'} peerDependencies: - '@tensorflow/tfjs-core': 4.11.0 + '@tensorflow/tfjs-core': 4.13.0 dependencies: - '@tensorflow/tfjs-core': 4.11.0 + '@tensorflow/tfjs-core': 4.13.0 '@types/seedrandom': 2.4.30 seedrandom: 3.0.5 dev: false - /@tensorflow/tfjs-backend-cpu@4.2.0(@tensorflow/tfjs-core@4.2.0): - resolution: {integrity: sha512-8HWg9J69m0Ovc6w8TVhhixMOcwA3t/NPXLblOA/sgJ+/JD5gsbpLWJk4QISQyb1RnpSVzw6PX3BSMTJU7hWVOg==} + /@tensorflow/tfjs-backend-webgl@4.13.0(@tensorflow/tfjs-core@4.13.0): + resolution: {integrity: sha512-UDwn6o70GyZaVxWdGWrWYJad2tUbxqgLtGfZI19j5EmM554PVsGLd+VHOqv4XodTviawuNq/GzqSdqhqsp8f5w==} engines: {yarn: '>= 1.3.2'} peerDependencies: - '@tensorflow/tfjs-core': 4.2.0 + '@tensorflow/tfjs-core': 4.13.0 dependencies: - '@tensorflow/tfjs-core': 4.2.0 - '@types/seedrandom': 2.4.30 - seedrandom: 3.0.5 - dev: false - - /@tensorflow/tfjs-backend-webgl@3.21.0(@tensorflow/tfjs-core@3.21.0): - resolution: {integrity: sha512-N4zitIAT9IX8B8oe489qM3f3VcESxGZIZvHmVP8varOQakTvTX859aaPo1s8hK1qCy4BjSGbweooZe4U8D4kTQ==} - engines: {yarn: '>= 1.3.2'} - requiresBuild: true - peerDependencies: - '@tensorflow/tfjs-core': 3.21.0 - dependencies: - '@tensorflow/tfjs-backend-cpu': 3.21.0(@tensorflow/tfjs-core@3.21.0) - '@tensorflow/tfjs-core': 3.21.0 - '@types/offscreencanvas': 2019.3.0 - '@types/seedrandom': 2.4.30 - '@types/webgl-ext': 0.0.30 - '@types/webgl2': 0.0.6 - seedrandom: 3.0.5 - dev: false - optional: true - - /@tensorflow/tfjs-backend-webgl@4.11.0(@tensorflow/tfjs-core@4.11.0): - resolution: {integrity: sha512-sM/B65u+1T3U+Ctiq1fn5j6VmiLEZW7BpuSa3ZXDXtIS07MoZ2FTuO8BMudxEY4xGpTyoOzqTOGT9BaGO3qrWg==} - engines: {yarn: '>= 1.3.2'} - peerDependencies: - '@tensorflow/tfjs-core': 4.11.0 - dependencies: - '@tensorflow/tfjs-backend-cpu': 4.11.0(@tensorflow/tfjs-core@4.11.0) - '@tensorflow/tfjs-core': 4.11.0 + '@tensorflow/tfjs-backend-cpu': 4.13.0(@tensorflow/tfjs-core@4.13.0) + '@tensorflow/tfjs-core': 4.13.0 '@types/offscreencanvas': 2019.3.0 '@types/seedrandom': 2.4.30 seedrandom: 3.0.5 dev: false - /@tensorflow/tfjs-backend-webgl@4.2.0(@tensorflow/tfjs-core@4.2.0): - resolution: {integrity: sha512-Qvf+hD5pSh+xi48kChSGzcDKJemkc4EKfoVVjuxl4k25ZUPwuEd7zZUAtinkLu1dzgHNyvePZY8k+9rVm59HJA==} - engines: {yarn: '>= 1.3.2'} + /@tensorflow/tfjs-converter@4.13.0(@tensorflow/tfjs-core@4.13.0): + resolution: {integrity: sha512-jA2/IigBXReZHS8Bo308HG7oVzsNPnPgSYfXneRXnxUz+WfcIPkJ6zp48KERZSPja8vOO5eNG4lsUkQpbtiyyw==} peerDependencies: - '@tensorflow/tfjs-core': 4.2.0 + '@tensorflow/tfjs-core': 4.13.0 dependencies: - '@tensorflow/tfjs-backend-cpu': 4.2.0(@tensorflow/tfjs-core@4.2.0) - '@tensorflow/tfjs-core': 4.2.0 - '@types/offscreencanvas': 2019.3.0 - '@types/seedrandom': 2.4.30 - '@types/webgl-ext': 0.0.30 - seedrandom: 3.0.5 + '@tensorflow/tfjs-core': 4.13.0 dev: false - /@tensorflow/tfjs-converter@3.21.0(@tensorflow/tfjs-core@3.21.0): - resolution: {integrity: sha512-12Y4zVDq3yW+wSjSDpSv4HnpL2sDZrNiGSg8XNiDE4HQBdjdA+a+Q3sZF/8NV9y2yoBhL5L7V4mMLDdbZBd9/Q==} - requiresBuild: true - peerDependencies: - '@tensorflow/tfjs-core': 3.21.0 - dependencies: - '@tensorflow/tfjs-core': 3.21.0 - dev: false - optional: true - - /@tensorflow/tfjs-converter@4.11.0(@tensorflow/tfjs-core@4.11.0): - resolution: {integrity: sha512-j2JEVwkqh+pyin+sxUiNUG7QOIU2S0+5SzN8LFXHlR90/bPvC2qiaaSPYdGG/BYidFc27QCHD3obBXrb1EE/ow==} - peerDependencies: - '@tensorflow/tfjs-core': 4.11.0 - dependencies: - '@tensorflow/tfjs-core': 4.11.0 - dev: false - - /@tensorflow/tfjs-converter@4.2.0(@tensorflow/tfjs-core@4.2.0): - resolution: {integrity: sha512-m+E2KJM6yGQdi8ElzWpChdD/JaqhWMCi9yK70v/ndkOaCL2q2UN48nYP2T5S15vkDvMIgzAQyZfh7hxQsMuvRQ==} - peerDependencies: - '@tensorflow/tfjs-core': 4.2.0 - dependencies: - '@tensorflow/tfjs-core': 4.2.0 - dev: false - - /@tensorflow/tfjs-core@3.21.0: - resolution: {integrity: sha512-YSfsswOqWfd+M4bXIhT3hwtAb+IV8+ODwIxwdFR/7jTAPZP1wMVnSlpKnXHAN64HFOiP+Tm3HmKusEZ0+09A0w==} - engines: {yarn: '>= 1.3.2'} - requiresBuild: true - dependencies: - '@types/long': 4.0.2 - '@types/offscreencanvas': 2019.3.0 - '@types/seedrandom': 2.4.30 - '@types/webgl-ext': 0.0.30 - '@webgpu/types': 0.1.16 - long: 4.0.0 - node-fetch: 2.6.12 - seedrandom: 3.0.5 - transitivePeerDependencies: - - encoding - dev: false - optional: true - - /@tensorflow/tfjs-core@4.11.0: - resolution: {integrity: sha512-t0mCNIco8wg6aZdHWT1d6ZuKtbbdY5y871ELWLSUA1+grXDvvaroHYh5eeJexJYXeg+EQ0/hzB0G8nLsLjlyVQ==} + /@tensorflow/tfjs-core@4.13.0: + resolution: {integrity: sha512-vvz/kHakvv5Tppp2GDTUBA2/XkNmEkManbdsFEXfwVc5+rVMPEMsRFOjsKTy/TpDRd/4wsJBA99L4F7iG2tr/Q==} engines: {yarn: '>= 1.3.2'} dependencies: '@types/long': 4.0.2 @@ -3573,47 +3750,14 @@ packages: - encoding dev: false - /@tensorflow/tfjs-core@4.2.0: - resolution: {integrity: sha512-uuHkiWVC8b00ngFbHvAV7J7haRlN/9PEdeenCi0CzBjgKd7aN25wPWaoN0TSQcU+GT4FJ8mofMZ9VBYZ/s/WLg==} - engines: {yarn: '>= 1.3.2'} - dependencies: - '@types/long': 4.0.2 - '@types/offscreencanvas': 2019.7.0 - '@types/seedrandom': 2.4.30 - '@types/webgl-ext': 0.0.30 - '@webgpu/types': 0.1.21 - long: 4.0.0 - node-fetch: 2.6.12 - seedrandom: 3.0.5 - transitivePeerDependencies: - - encoding - dev: false - - /@tensorflow/tfjs-data@3.21.0(@tensorflow/tfjs-core@3.21.0)(seedrandom@3.0.5): - resolution: {integrity: sha512-eFLfw2wIcFNxnP2Iv/SnVlihehzKMumk1b5Prcx1ixk/SbkCo5u0Lt7OVOWaEOKVqvB2sT+dJcTjAh6lrCC/QA==} - requiresBuild: true + /@tensorflow/tfjs-data@4.13.0(@tensorflow/tfjs-core@4.13.0)(seedrandom@3.0.5): + resolution: {integrity: sha512-8FmvzGKBH3SJ3Y+vDTF/coFxD/FMh93YRZHxevNGE+nJcs3JK0grRbjSX3AAWb2GXtz2/o30BU0YL8bW8POuUA==} peerDependencies: - '@tensorflow/tfjs-core': 3.21.0 + '@tensorflow/tfjs-core': 4.13.0 seedrandom: ^3.0.5 dependencies: - '@tensorflow/tfjs-core': 3.21.0 - '@types/node-fetch': 2.6.4 - node-fetch: 2.6.12 - seedrandom: 3.0.5 - string_decoder: 1.3.0 - transitivePeerDependencies: - - encoding - dev: false - optional: true - - /@tensorflow/tfjs-data@4.11.0(@tensorflow/tfjs-core@4.11.0)(seedrandom@3.0.5): - resolution: {integrity: sha512-8E6CVpd7kxRFtVL7kvz6WF5jH18pNN2wEcm2yA87xq37JwcRsIPTkrmfyqCHlJZmiWn3RQbP59Sl05gbBnFo5w==} - peerDependencies: - '@tensorflow/tfjs-core': 4.11.0 - seedrandom: ^3.0.5 - dependencies: - '@tensorflow/tfjs-core': 4.11.0 - '@types/node-fetch': 2.6.4 + '@tensorflow/tfjs-core': 4.13.0 + '@types/node-fetch': 2.6.9 node-fetch: 2.6.12 seedrandom: 3.0.5 string_decoder: 1.3.0 @@ -3621,54 +3765,21 @@ packages: - encoding dev: false - /@tensorflow/tfjs-data@4.2.0(@tensorflow/tfjs-core@4.2.0)(seedrandom@3.0.5): - resolution: {integrity: sha512-11t7Q+ikseduJgkd9iSeRrtor1aA3o5PVCFhC5yYvR3JLO55ic1+4Ryo0EJfhRoismS6zBUJrpzX4K0zlLbIfw==} + /@tensorflow/tfjs-layers@4.13.0(@tensorflow/tfjs-core@4.13.0): + resolution: {integrity: sha512-YoBqtVTnE71h48+f89G6ZSYZMN+QsUMccopSxQC6XscncB6Gt1KwuWfpDc2Ld5JeubmUzKLqHdEP0jXIWxssJw==} peerDependencies: - '@tensorflow/tfjs-core': 4.2.0 - seedrandom: ^3.0.5 + '@tensorflow/tfjs-core': 4.13.0 dependencies: - '@tensorflow/tfjs-core': 4.2.0 - '@types/node-fetch': 2.6.4 - node-fetch: 2.6.12 - seedrandom: 3.0.5 - string_decoder: 1.3.0 - transitivePeerDependencies: - - encoding + '@tensorflow/tfjs-core': 4.13.0 dev: false - /@tensorflow/tfjs-layers@3.21.0(@tensorflow/tfjs-core@3.21.0): - resolution: {integrity: sha512-CMVXsraakXgnXEnqD9QbtResA7nvV7Jz20pGmjFIodcQkClgmFFhdCG5N+zlVRHEz7VKG2OyfhltZ0dBq/OAhA==} - requiresBuild: true - peerDependencies: - '@tensorflow/tfjs-core': 3.21.0 - dependencies: - '@tensorflow/tfjs-core': 3.21.0 - dev: false - optional: true - - /@tensorflow/tfjs-layers@4.11.0(@tensorflow/tfjs-core@4.11.0): - resolution: {integrity: sha512-ErVqwxjpu2YM3uJRj2o5GbBTYViUwnqOb0wKWuCVukVmGeWrUzf1X00Ky3dP4xfilfAvq+B26dg7QN4YNHeaKg==} - peerDependencies: - '@tensorflow/tfjs-core': 4.11.0 - dependencies: - '@tensorflow/tfjs-core': 4.11.0 - dev: false - - /@tensorflow/tfjs-layers@4.2.0(@tensorflow/tfjs-core@4.2.0): - resolution: {integrity: sha512-SO0KTmCFOjrW+PlP9nKYXz07XGFq6uE7am9yH2bRaRPWpEeaKT/+k0C9vFMxI/GzRwY8AK4sLe4U+jE1mhYxGw==} - peerDependencies: - '@tensorflow/tfjs-core': 4.2.0 - dependencies: - '@tensorflow/tfjs-core': 4.2.0 - dev: false - - /@tensorflow/tfjs-node@3.21.1(seedrandom@3.0.5): - resolution: {integrity: sha512-WV77fiuux6E5RR7FRD8RL3yCruhoHjZMI9yybztGLItJwco2YVjHr6h4TOjaZcIMnxu9748iV118MN2ZeLXbdQ==} + /@tensorflow/tfjs-node@4.13.0(seedrandom@3.0.5): + resolution: {integrity: sha512-lCC5wLojaH6QLGiXdicswi0rz4b+sEVuBvDUaqdV4tve1wLHl3RzSS3IxR7fYj8V9GXCCcCtOkqwdEtXVMiIXg==} engines: {node: '>=8.11.0'} requiresBuild: true dependencies: '@mapbox/node-pre-gyp': 1.0.9 - '@tensorflow/tfjs': 3.21.0(seedrandom@3.0.5) + '@tensorflow/tfjs': 4.13.0(seedrandom@3.0.5) adm-zip: 0.5.10 google-protobuf: 3.21.2 https-proxy-agent: 2.2.4 @@ -3682,38 +3793,16 @@ packages: dev: false optional: true - /@tensorflow/tfjs@3.21.0(seedrandom@3.0.5): - resolution: {integrity: sha512-khcARd3/872llL/oF4ouR40qlT71mylU66PGT8kHP/GJ5YKj44sv8lDRjU7lOVlJK7jsJFWEsNVHI3eMc/GWNQ==} - hasBin: true - requiresBuild: true - dependencies: - '@tensorflow/tfjs-backend-cpu': 3.21.0(@tensorflow/tfjs-core@3.21.0) - '@tensorflow/tfjs-backend-webgl': 3.21.0(@tensorflow/tfjs-core@3.21.0) - '@tensorflow/tfjs-converter': 3.21.0(@tensorflow/tfjs-core@3.21.0) - '@tensorflow/tfjs-core': 3.21.0 - '@tensorflow/tfjs-data': 3.21.0(@tensorflow/tfjs-core@3.21.0)(seedrandom@3.0.5) - '@tensorflow/tfjs-layers': 3.21.0(@tensorflow/tfjs-core@3.21.0) - argparse: 1.0.10 - chalk: 4.1.2 - core-js: 3.32.0 - regenerator-runtime: 0.13.11 - yargs: 16.2.0 - transitivePeerDependencies: - - encoding - - seedrandom - dev: false - optional: true - - /@tensorflow/tfjs@4.11.0(seedrandom@3.0.5): - resolution: {integrity: sha512-s6Vbz3IvMz2zNbH8/VptpRXzkwVjmuzT48esYLXJxMKtTcob4m5Srdxo7B+eJSDrWYkutXruiivaWmihFmu5rA==} + /@tensorflow/tfjs@4.13.0(seedrandom@3.0.5): + resolution: {integrity: sha512-yvjcNMt1q9CLUeOVwoNf0KyMg//fY9earGQGH91C+NcacOK4j0BJUJUqMolEJqfHIbmK2n2CIFmdvgA5epVPSA==} hasBin: true dependencies: - '@tensorflow/tfjs-backend-cpu': 4.11.0(@tensorflow/tfjs-core@4.11.0) - '@tensorflow/tfjs-backend-webgl': 4.11.0(@tensorflow/tfjs-core@4.11.0) - '@tensorflow/tfjs-converter': 4.11.0(@tensorflow/tfjs-core@4.11.0) - '@tensorflow/tfjs-core': 4.11.0 - '@tensorflow/tfjs-data': 4.11.0(@tensorflow/tfjs-core@4.11.0)(seedrandom@3.0.5) - '@tensorflow/tfjs-layers': 4.11.0(@tensorflow/tfjs-core@4.11.0) + '@tensorflow/tfjs-backend-cpu': 4.13.0(@tensorflow/tfjs-core@4.13.0) + '@tensorflow/tfjs-backend-webgl': 4.13.0(@tensorflow/tfjs-core@4.13.0) + '@tensorflow/tfjs-converter': 4.13.0(@tensorflow/tfjs-core@4.13.0) + '@tensorflow/tfjs-core': 4.13.0 + '@tensorflow/tfjs-data': 4.13.0(@tensorflow/tfjs-core@4.13.0)(seedrandom@3.0.5) + '@tensorflow/tfjs-layers': 4.13.0(@tensorflow/tfjs-core@4.13.0) argparse: 1.0.10 chalk: 4.1.2 core-js: 3.29.1 @@ -3724,34 +3813,9 @@ packages: - seedrandom dev: false - /@tensorflow/tfjs@4.2.0(seedrandom@3.0.5): - resolution: {integrity: sha512-iZmtyGC9IJkx+TpFnkgDol8BHv2BU3zJ01HyNcuvnm1w1EqoNe+1n8bwvLzI/sxHMcHTqzuu7VugMaphryxE+A==} - hasBin: true - dependencies: - '@tensorflow/tfjs-backend-cpu': 4.2.0(@tensorflow/tfjs-core@4.2.0) - '@tensorflow/tfjs-backend-webgl': 4.2.0(@tensorflow/tfjs-core@4.2.0) - '@tensorflow/tfjs-converter': 4.2.0(@tensorflow/tfjs-core@4.2.0) - '@tensorflow/tfjs-core': 4.2.0 - '@tensorflow/tfjs-data': 4.2.0(@tensorflow/tfjs-core@4.2.0)(seedrandom@3.0.5) - '@tensorflow/tfjs-layers': 4.2.0(@tensorflow/tfjs-core@4.2.0) - argparse: 1.0.10 - chalk: 4.1.2 - core-js: 3.32.0 - regenerator-runtime: 0.13.11 - yargs: 16.2.0 - transitivePeerDependencies: - - encoding - - seedrandom - dev: false - /@tokenizer/token@0.3.0: resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==} - /@tootallnate/once@2.0.0: - resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} - engines: {node: '>= 10'} - dev: false - /@tsconfig/node10@1.0.9: resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} @@ -3772,20 +3836,20 @@ packages: /@types/accepts@1.3.5: resolution: {integrity: sha512-jOdnI/3qTpHABjM5cx1Hc0sKsPoYCp+DP/GJRGtDlPd7fiV9oXGGIcjW/ZOxLIvjGz8MA+uMZI9metHlgqbgwQ==} dependencies: - '@types/node': 18.11.18 + '@types/node': 20.9.0 - /@types/adm-zip@0.5.0: - resolution: {integrity: sha512-FCJBJq9ODsQZUNURo5ILAQueuA8WJhRvuihS3ke2iI25mJlfV2LK8jG2Qj2z2AWg8U0FtWWqBHVRetceLskSaw==} + /@types/adm-zip@0.5.4: + resolution: {integrity: sha512-/pYie/76O0TTqU4L/z1XqQ5mA5QvScaP/EO3lpH7iQ6/AjioYyuvi2IAmQeimuTTnytl03e9g8YFYkGV2Bxojw==} dependencies: - '@types/node': 18.11.18 + '@types/node': 20.9.0 dev: true /@types/async-lock@1.4.0: resolution: {integrity: sha512-2+rYSaWrpdbQG3SA0LmMT6YxWLrI81AqpMlSkw3QtFc2HGDufkweQSn30Eiev7x9LL0oyFrBqk1PXOnB9IEgKg==} dev: true - /@types/autosize@4.0.2: - resolution: {integrity: sha512-wm2fxJhRH3yOJ2GsqWG2q27HcqhWXjeWPLO6o1RiNCITOASyyK0s8xtrW7xsKFCyXF5L1AI2LbElax/HlCk92w==} + /@types/autosize@4.0.3: + resolution: {integrity: sha512-o0ZyU3ePp3+KRbhHsY4ogjc+ZQWgVN5h6j8BHW5RII4cFKi6PEKK9QPAcphJVkD0dGpyFnD3VRR0WMvHVjCv9w==} dev: true /@types/babel__core@7.20.1: @@ -3846,33 +3910,33 @@ packages: '@babel/types': 7.23.0 dev: true - /@types/bcryptjs@2.4.2: - resolution: {integrity: sha512-LiMQ6EOPob/4yUL66SZzu6Yh77cbzJFYll+ZfaPiPPFswtIlA/Fs1MzdKYA7JApHU49zQTbJGX3PDmCpIdDBRQ==} + /@types/bcryptjs@2.4.6: + resolution: {integrity: sha512-9xlo6R2qDs5uixm0bcIqCeMCE6HiQsIyel9KQySStiyqNl2tnj2mP3DX1Nf56MD6KMenNNlBBsy3LJ7gUEQPXQ==} dev: true /@types/body-parser@1.19.2: resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==} dependencies: '@types/connect': 3.4.35 - '@types/node': 20.8.7 + '@types/node': 20.9.0 /@types/cacheable-request@6.0.3: resolution: {integrity: sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==} dependencies: '@types/http-cache-semantics': 4.0.1 '@types/keyv': 3.1.4 - '@types/node': 20.8.7 + '@types/node': 20.9.0 '@types/responselike': 1.0.0 /@types/co-body@6.1.0: resolution: {integrity: sha512-3e0q2jyDAnx/DSZi0z2H0yoZ2wt5yRDZ+P7ymcMObvq0ufWRT4tsajyO+Q1VwVWiv9PRR4W3YEjEzBjeZlhF+w==} dependencies: - '@types/node': 18.11.18 - '@types/qs': 6.9.7 + '@types/node': 20.9.0 + '@types/qs': 6.9.10 dev: false - /@types/color-convert@2.0.2: - resolution: {integrity: sha512-KGRIgCxwcgazts4MXRCikPbIMzBpjfdgEZSy8TRHU/gtg+f9sOfHdtK8unPfxIoBtyd2aTTwINVLSNENlC8U8A==} + /@types/color-convert@2.0.3: + resolution: {integrity: sha512-2Q6wzrNiuEvYxVQqhh7sXM2mhIhvZR/Paq4FdsQkOMgWsCIkKvSGj8Le1/XalulrmgOzPMqNa0ix+ePY4hTrfg==} dependencies: '@types/color-name': 1.1.2 dev: true @@ -3884,10 +3948,10 @@ packages: /@types/connect@3.4.35: resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} dependencies: - '@types/node': 20.8.7 + '@types/node': 20.9.0 - /@types/content-disposition@0.5.7: - resolution: {integrity: sha512-V9/5u21RHFR1zfdm3rQ6pJUKV+zSSVQt+yq16i1YhdivVzWgPEoKedc3GdT8aFjsqQbakdxuy3FnEdePUQOamQ==} + /@types/content-disposition@0.5.8: + resolution: {integrity: sha512-QVSSvno3dE0MgO76pJhmv4Qyi/j0Yk9pBp0Y7TJ2Tlj+KCgJWY6qX7nnxCOLkZ3VYRSIk1WTxCvwUSdx6CCLdg==} /@types/cookies@0.7.7: resolution: {integrity: sha512-h7BcvPUogWbKCzBR2lY4oqaZbO3jXZksexYJVFvkrFeLgbZjQkU4x8pRq6eg2MHXQhY0McQdqmmsxRWlVAHooA==} @@ -3895,7 +3959,7 @@ packages: '@types/connect': 3.4.35 '@types/express': 4.17.17 '@types/keygrip': 1.0.2 - '@types/node': 18.11.18 + '@types/node': 20.9.0 /@types/core-js@2.5.7: resolution: {integrity: sha512-EhO4Lcd2Rs2bZvQwIDMZ1qsaZk8DpdOkQCbKpK0vt7fSjJGXrCA7EPauR/BZ7eJXks1een4FX7JtlhS136fklA==} @@ -3905,15 +3969,15 @@ packages: resolution: {integrity: sha512-AmKPD8vBZzvey/jeg+YAIH/xJE3D6edOXz+YUooSCcHesGzFyzke83kj1j4d0LUR9nkSHIRklUVdcAMleuWLpg==} dev: false - /@types/escape-regexp@0.0.1: - resolution: {integrity: sha512-ogj/ZTIdeFkiuxDwawYuZSIgC6suFGgBeZPr6Xs5lHEcvIXTjXGtH+/n8f1XhZhespaUwJ5LIGRICPji972FLw==} + /@types/escape-regexp@0.0.3: + resolution: {integrity: sha512-FQMYUxaf1dVeWLUzJFSvfdDugfOpDyM13p67QfyMdagxSkBa689opkr/q9uR/VWyrWrl0jAyQaSPKxX9MpAXFw==} dev: true /@types/eslint-scope@3.7.4: resolution: {integrity: sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==} dependencies: '@types/eslint': 8.44.2 - '@types/estree': 1.0.1 + '@types/estree': 1.0.3 dev: true /@types/eslint@7.29.0: @@ -3926,12 +3990,8 @@ packages: /@types/eslint@8.44.2: resolution: {integrity: sha512-sdPRb9K6iL5XZOmBubg8yiFp5yS/JdUDQsq5e6h95km91MCYMuvp7mh1fjPEYUhvHepKpZOjnEaMBR4PxjWDzg==} dependencies: - '@types/estree': 1.0.1 - '@types/json-schema': 7.0.12 - dev: true - - /@types/estree@1.0.1: - resolution: {integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==} + '@types/estree': 1.0.3 + '@types/json-schema': 7.0.14 dev: true /@types/estree@1.0.3: @@ -3945,8 +4005,8 @@ packages: /@types/express-serve-static-core@4.17.35: resolution: {integrity: sha512-wALWQwrgiB2AWTT91CB62b6Yt0sNHpznUXeZEcnPU3DRdlDIz74x8Qg1UUYKSVFi+va5vKOLYRBI1bRKiLLKIg==} dependencies: - '@types/node': 20.8.7 - '@types/qs': 6.9.7 + '@types/node': 20.9.0 + '@types/qs': 6.9.10 '@types/range-parser': 1.2.4 '@types/send': 0.17.1 @@ -3955,13 +4015,13 @@ packages: dependencies: '@types/body-parser': 1.19.2 '@types/express-serve-static-core': 4.17.35 - '@types/qs': 6.9.7 + '@types/qs': 6.9.10 '@types/serve-static': 1.15.2 - /@types/fluent-ffmpeg@2.1.21: - resolution: {integrity: sha512-+n3dy/Tegt6n+YwGZUiGq6i8Jrnt8+MoyPiW1L6J5EWUl7GSt18a/VyReecfCsvTTNBXNMIKOMHDstiQM8nJLA==} + /@types/fluent-ffmpeg@2.1.24: + resolution: {integrity: sha512-g5oQO8Jgi2kFS3tTub7wLvfLztr1s8tdXmRd8PiL/hLMLzTIAyMR2sANkTggM/rdEDAg3d63nYRRVepwBiCw5A==} dependencies: - '@types/node': 18.11.18 + '@types/node': 20.9.0 dev: true /@types/form-data@2.5.0: @@ -3974,13 +4034,13 @@ packages: /@types/formidable@2.0.6: resolution: {integrity: sha512-L4HcrA05IgQyNYJj6kItuIkXrInJvsXTPC5B1i64FggWKKqSL+4hgt7asiSNva75AoLQjq29oPxFfU4GAQ6Z2w==} dependencies: - '@types/node': 18.11.18 + '@types/node': 20.9.0 dev: false /@types/glob-stream@8.0.0: resolution: {integrity: sha512-fxTWwdQmX9LWSHD7ZLlv3BHR992mKcVcDnT/2v+l/QZZo7TfDdyasqlSYVzOnMGWhRbrWeWkbj/mgezFjKynhw==} dependencies: - '@types/node': 20.8.7 + '@types/node': 20.9.0 '@types/picomatch': 2.3.0 '@types/streamx': 2.9.1 dev: true @@ -3989,25 +4049,26 @@ packages: resolution: {integrity: sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==} dependencies: '@types/minimatch': 5.1.2 - '@types/node': 20.8.7 + '@types/node': 20.9.0 dev: true /@types/graceful-fs@4.1.8: resolution: {integrity: sha512-NhRH7YzWq8WiNKVavKPBmtLYZHxNY19Hh+az28O/phfp68CF45pMFud+ZzJ8ewnxnC5smIdF3dqFeiSUQ5I+pw==} dependencies: - '@types/node': 20.8.7 + '@types/node': 20.9.0 dev: true - /@types/gulp-rename@2.0.2: - resolution: {integrity: sha512-CQsXqTVtAXqrPd4IbrrlJEEzRkUR3RXsyZbrVoOVqjlchDDmnyRDatAUisjpQjjCg/wjJrSiNg8T1uAbJ/7Qqg==} + /@types/gulp-rename@2.0.5: + resolution: {integrity: sha512-rD03kpi7CXZ5pTza4AtWqM3Btbte9y5yAPmqWGgHLNSMPbDCJVUGjQ2Ul6P48X7Sw9JDZlPtW6cXHntTmKeywA==} dependencies: - '@types/node': 20.5.8 + '@types/node': 20.9.0 '@types/vinyl': 2.0.7 dev: true - /@types/gulp@4.0.13: - resolution: {integrity: sha512-Ms20Q2tZ3MpThZGn4Ag6e7ifz/oQJFxsuiopqz5oHmhE6q2ohnELgafi5K/pKX/4ntlpidS61v/TXAguYsVcaA==} + /@types/gulp@4.0.17: + resolution: {integrity: sha512-+pKQynu2C/HS16kgmDlAicjtFYP8kaa86eE9P0Ae7GB5W29we/E2TIdbOWtEZD5XkpY+jr8fyqfwO6SWZecLpQ==} dependencies: + '@types/node': 20.9.0 '@types/undertaker': 1.2.8 '@types/vinyl-fs': 3.0.2 chokidar: 3.5.3 @@ -4022,8 +4083,8 @@ packages: /@types/http-errors@2.0.1: resolution: {integrity: sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ==} - /@types/insert-text-at-cursor@0.3.1: - resolution: {integrity: sha512-HgUgM4B0pJ68yV3xBEvfzR8Jd+Fhk3Cr4MSU6MJf3vUDEr1O073vPNdMGKJCOWaU8b9oRBgKPF0CHBu0kCre3A==} + /@types/insert-text-at-cursor@0.3.2: + resolution: {integrity: sha512-S80ZeMGJ1YMwF/CwvvGNCoWS0klVpJmjtyEL1kbYgYXRMPMEfNWXXnnnLQaim3FNp6tJzOhy/yeQXInfC6o1sA==} dev: true /@types/istanbul-lib-coverage@2.0.5: @@ -4049,8 +4110,15 @@ packages: pretty-format: 29.7.0 dev: true - /@types/js-yaml@4.0.5: - resolution: {integrity: sha512-FhpRzf927MNQdRZP0J5DLIdTXhjLYzeUTmLAu69mnVksLH9CJY3IuSeEgbKUki7GQZm0WqDkGzyxju2EZGD2wA==} + /@types/jest@29.5.8: + resolution: {integrity: sha512-fXEFTxMV2Co8ZF5aYFJv+YeA08RTYJfhtN5c9JSv/mFEMe+xxjufCb+PHL+bJcMs/ebPUsBu+UNTEz+ydXrR6g==} + dependencies: + expect: 29.7.0 + pretty-format: 29.7.0 + dev: true + + /@types/js-yaml@4.0.9: + resolution: {integrity: sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==} dev: true /@types/json-schema@7.0.12: @@ -4065,16 +4133,16 @@ packages: resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} dev: true - /@types/jsonld@1.5.9: - resolution: {integrity: sha512-K76ImkErPYL2wGPZpNFSKp6wE+h/APecZLJrU7UfDaGqt/f+D9Rrg1aR7VdRrQ6k5DUNRZ2vn9yACwmpOr9QcA==} + /@types/jsonld@1.5.12: + resolution: {integrity: sha512-y2EDlpPhuifmqcijoLV0zu9Pw3fd40RIZqpX4V0v7cq6vVFXjBOMhCGe2SlfTPzTZBJLZUFBidWshTYFfInvDQ==} dev: true - /@types/jsrsasign@10.5.8: - resolution: {integrity: sha512-1oZ3TbarAhKtKUpyrCIqXpbx3ZAfoSulleJs6/UzzyYty0ut+kjRX7zHLAaHwVIuw8CBjIymwW4J2LK944HoHQ==} + /@types/jsrsasign@10.5.12: + resolution: {integrity: sha512-sOA+eVnHU+FziThpMhuqs/tjFKe5gHVJKIS7g1BzhXP+e2FS8OvtzM0K3IzFxVksDOr98Gz5FJiZVxZ9uFoHhw==} dev: true - /@types/katex@0.16.2: - resolution: {integrity: sha512-dHsSjSlU/EWEEbeNADr3FtZZOAXPkFPUO457QCnoNqcZQXNqNEu/svQd0Nritvd3wNff4vvC/f4e6xgX3Llt8A==} + /@types/katex@0.16.6: + resolution: {integrity: sha512-rZYO1HInM99rAFYNwGqbYPxHZHxu2IwZYKj4bJ4oh6edVrm1UId8mmbHIZLBtG253qU6y3piag0XYe/joNnwzQ==} dev: true /@types/keygrip@1.0.2: @@ -4083,148 +4151,85 @@ packages: /@types/keyv@3.1.4: resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} dependencies: - '@types/node': 20.8.7 + '@types/node': 20.9.0 - /@types/koa-bodyparser@4.3.10: - resolution: {integrity: sha512-6ae05pjhmrmGhUR8GYD5qr5p9LTEMEGfGXCsK8VaSL+totwigm8+H/7MHW7K4854CMeuwRAubT8qcc/EagaeIA==} + /@types/koa-bodyparser@4.3.12: + resolution: {integrity: sha512-hKMmRMVP889gPIdLZmmtou/BijaU1tHPyMNmcK7FAHAdATnRcGQQy78EqTTxLH1D4FTsrxIzklAQCso9oGoebQ==} dependencies: - '@types/koa': 2.13.8 + '@types/koa': 2.13.11 dev: true /@types/koa-compose@3.2.5: resolution: {integrity: sha512-B8nG/OoE1ORZqCkBVsup/AKcvjdgoHnfi4pZMn5UwAPCbhk/96xyv284eBYW8JlQbQ7zDmnpFr68I/40mFoIBQ==} dependencies: - '@types/koa': 2.13.8 + '@types/koa': 2.13.11 - /@types/koa-cors@0.0.2: - resolution: {integrity: sha512-uNaDY26HUVO+2C6arK8ZFODs9mBjYprD8mlvkVe2bYdX9wzEeKtycVXPafXpUkePhMh4sffIMkhRDyedokG/QA==} + /@types/koa-cors@0.0.5: + resolution: {integrity: sha512-WoxZWHDhYBj2HVUgx9ZMnXRkRbs8KvF7+EOaU6I/8XPI3r/tcuj6ehfH6ZvC3OReOCEqGfQ59n+ahGJJXihRLg==} dependencies: - '@types/koa': 2.13.8 + '@types/koa': 2.13.11 dev: true - /@types/koa-favicon@2.0.21: - resolution: {integrity: sha512-paH1nheVhijx/VduoR/RCD/qTCiX+OI/6fHLi3mZae053Ts+gUBOrKtzl3pMTDbdEBqdLolfLje3PZbb6jW0jQ==} + /@types/koa-favicon@2.1.3: + resolution: {integrity: sha512-L1XAF8k1iOuh3hA/ZjEqWURm9/62a8A1x7BZR9ZCMw8nbnUBt6oZksz2rfKRCEwESqI2e6WVGlF03fs9DbQQXQ==} dependencies: - '@types/koa': 2.13.8 + '@types/koa': 2.13.11 dev: true - /@types/koa-logger@3.1.2: - resolution: {integrity: sha512-sioTA1xlKYiIgryANWPRHBkG3XGbWftw9slWADUPC+qvPIY/yRLSrhvX7zkJwMrntub5dPO0GuAoyGGf0yitfQ==} + /@types/koa-logger@3.1.5: + resolution: {integrity: sha512-N4f9GRdokJ/gLiCSvd3GGar/D74HJWzuvSJiruayCsz2e7gGkG6DQaque+kM3xo6LjyCRVUUt9HHJCSMjsXrIA==} dependencies: - '@types/koa': 2.13.8 + '@types/koa': 2.13.11 dev: true - /@types/koa-mount@4.0.2: - resolution: {integrity: sha512-XnuGwV8bzw22nv2WqOs5a8wCHR2VgSnLLLuBQPzNTmhyiAvH0O6c+994rQVbMaBuwQJKefUInkvKoKuk+21uew==} + /@types/koa-mount@4.0.5: + resolution: {integrity: sha512-pV1njJ7r94iqAFzT9D5sGSYKUHFGudCLAnmr4WFli7V5tJf5MAgRQK9leTPJ4gjvgr+hnTf86fZsKoFN358c7w==} dependencies: - '@types/koa': 2.13.8 + '@types/koa': 2.13.11 dev: true - /@types/koa-send@4.1.3: - resolution: {integrity: sha512-daaTqPZlgjIJycSTNjKpHYuKhXYP30atFc1pBcy6HHqB9+vcymDgYTguPdx9tO4HMOqNyz6bz/zqpxt5eLR+VA==} + /@types/koa-send@4.1.6: + resolution: {integrity: sha512-vgnNGoOJkx7FrF0Jl6rbK1f8bBecqAchKpXtKuXzqIEdXTDO6dsSTjr+eZ5m7ltSjH4K/E7auNJEQCAd0McUPA==} dependencies: - '@types/koa': 2.13.8 + '@types/koa': 2.13.11 dev: true - /@types/koa-views@7.0.0(@types/koa@2.13.8)(pug@3.0.2): - resolution: {integrity: sha512-AB/NB+oFHcLOZJYFv3bG5Af8YbwYCD9/zK0WcKALsbjI/FRKrcXTUTC64RebDrkyOkBm3bpCgpGndhAH/3YQ2Q==} - deprecated: This is a stub types definition. koa-views provides its own type definitions, so you do not need this installed. - dependencies: - koa-views: 7.0.2(@types/koa@2.13.8)(ejs@3.1.9)(pug@3.0.2) - transitivePeerDependencies: - - '@types/koa' - - arc-templates - - atpl - - babel-core - - bracket-template - - coffee-script - - dot - - dust - - dustjs-helpers - - dustjs-linkedin - - eco - - ect - - ejs - - haml-coffee - - hamlet - - hamljs - - handlebars - - hogan.js - - htmling - - jade - - jazz - - jqtpl - - just - - liquid-node - - liquor - - lodash - - marko - - mote - - mustache - - nunjucks - - plates - - pug - - qejs - - ractive - - razor-tmpl - - react - - react-dom - - slm - - squirrelly - - supports-color - - swig - - swig-templates - - teacup - - templayed - - then-jade - - then-pug - - tinyliquid - - toffee - - twig - - twing - - underscore - - vash - - velocityjs - - walrus - - whiskers - dev: true - - /@types/koa@2.13.8: - resolution: {integrity: sha512-Ugmxmgk/yPRW3ptBTh9VjOLwsKWJuGbymo1uGX0qdaqqL18uJiiG1ZoV0rxCOYSaDGhvEp5Ece02Amx0iwaxQQ==} + /@types/koa@2.13.11: + resolution: {integrity: sha512-0HZSGNdmLlLRvSxv0ngLSp09Hw98c+2XL3ZRYmkE6y8grqTweKEyyaj7LgxkyPUv0gQ5pNS/a7kHXo2Iwha1rA==} dependencies: '@types/accepts': 1.3.5 - '@types/content-disposition': 0.5.7 + '@types/content-disposition': 0.5.8 '@types/cookies': 0.7.7 '@types/http-assert': 1.5.3 '@types/http-errors': 2.0.1 '@types/keygrip': 1.0.2 '@types/koa-compose': 3.2.5 - '@types/node': 18.11.18 + '@types/node': 20.9.0 - /@types/koa__cors@3.3.0: - resolution: {integrity: sha512-FUN8YxcBakIs+walVe3+HcNP+Bxd0SB8BJHBWkglZ5C1XQWljlKcEFDG/dPiCIqwVCUbc5X0nYDlH62uEhdHMA==} + /@types/koa__cors@4.0.3: + resolution: {integrity: sha512-zj+1sQO/6GGRGINRXlMmoiFwHibKVcjNGdh+p2SpqHDMLyvC+ce0LMHX6UBi1rdpnPZ/+osUwWdGKF945ffrzA==} dependencies: - '@types/koa': 2.13.8 + '@types/koa': 2.13.11 dev: true - /@types/koa__multer@2.0.4: - resolution: {integrity: sha512-WRkshXhE5rpYFUbbtAjyMhdOOSdbu1XX+2AQlRNM6AZtgxd0/WXMU4lrP7e9tk5HWVTWbx8DOOsVBmfHjSGJ4w==} + /@types/koa__multer@2.0.7: + resolution: {integrity: sha512-O7hiAEpdgW1nly93jQ8TVL2nPC7Bg1HHRf1/LGNQb7ygGBjNgZWpliCm7tswNW3MjcgYbTtz0+Sca5wHne+RyA==} dependencies: - '@types/koa': 2.13.8 + '@types/koa': 2.13.11 dev: true - /@types/koa__router@8.0.11: - resolution: {integrity: sha512-WXgKWpBsbS14kzmzD9LeFapOIa678h7zvUHxDwXwSx4ETKXhXLVUAToX6jZ/U7EihM7qwyD9W/BZvB0MRu7MTQ==} + /@types/koa__router@12.0.4: + resolution: {integrity: sha512-Y7YBbSmfXZpa/m5UGGzb7XadJIRBRnwNY9cdAojZGp65Cpe5MAP3mOZE7e3bImt8dfKS4UFcR16SLH8L/z7PBw==} dependencies: - '@types/koa': 2.13.8 + '@types/koa': 2.13.11 dev: true /@types/long@4.0.2: resolution: {integrity: sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==} dev: false - /@types/matter-js@0.19.0: - resolution: {integrity: sha512-SqgYUc8j68n/R2p8rVgpxTVC6gwCby+93dd5eWqjQdpL3l3JUqxzhbEJH/X0NXv+pmoAeWheH1kPvFIgC904Bw==} + /@types/matter-js@0.19.4: + resolution: {integrity: sha512-CHKobJ2Kr9GJqr1uvoL4v3DCCgf44b0qJcOctbHtkmPBDMMN0ORnIwNS0WNFxiD0YqtySZH7IgaefGFZ0NUcMA==} dev: true /@types/mdast@3.0.12: @@ -4247,49 +4252,45 @@ packages: resolution: {integrity: sha512-Kfe/D3hxHTusnPNRbycJE1N77WHDsdS4AjUYIzlDzhDrS47NrwuL3YW4VITxwR7KCVpzwgy4Rbj829KSSQmwXQ==} dev: true - /@types/mocha@9.1.1: - resolution: {integrity: sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw==} + /@types/mocha@10.0.4: + resolution: {integrity: sha512-xKU7bUjiFTIttpWaIZ9qvgg+22O1nmbA+HRxdlR+u6TWsGfmFdXrheJoK4fFxrHNVIOBDvDNKZG+LYBpMHpX3w==} dev: true /@types/needle@3.2.0: resolution: {integrity: sha512-6XzvzEyJ2ozFNfPajFmqH9JOt0Hp+9TawaYpJT59iIP/zR0U37cfWCRwosyIeEBBZBi021Osq4jGAD3AOju5fg==} dependencies: - '@types/node': 18.11.18 + '@types/node': 20.9.0 dev: true - /@types/node-fetch@2.6.4: - resolution: {integrity: sha512-1ZX9fcN4Rvkvgv4E6PAY5WXUFWFcRWxZa3EW83UjycOB9ljJCedb2CupIP4RZMEwF/M3eTcCihbBRgwtGbg5Rg==} + /@types/node-fetch@2.6.9: + resolution: {integrity: sha512-bQVlnMLFJ2d35DkPNjEPmd9ueO/rh5EiaZt2bhqiSarPjZIuIV6bPQVqcrEyvNo+AfTrRGVazle1tl597w3gfA==} dependencies: - '@types/node': 20.8.7 - form-data: 3.0.1 - dev: false - - /@types/node-fetch@3.0.3: - resolution: {integrity: sha512-HhggYPH5N+AQe/OmN6fmhKmRRt2XuNJow+R3pQwJxOOF9GuwM7O2mheyGeIrs5MOIeNjDEdgdoyHBOrFeJBR3g==} - deprecated: This is a stub types definition. node-fetch provides its own type definitions, so you do not need this installed. - dependencies: - node-fetch: 3.3.2 - dev: true + '@types/node': 20.9.0 + form-data: 4.0.0 /@types/node@14.18.63: resolution: {integrity: sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ==} + dev: false /@types/node@18.11.18: resolution: {integrity: sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==} - - /@types/node@20.5.8: - resolution: {integrity: sha512-eajsR9aeljqNhK028VG0Wuw+OaY5LLxYmxeoXynIoE6jannr9/Ucd1LL0hSSoafk5LTYG+FfqsyGt81Q6Zkybw==} dev: true - /@types/node@20.8.7: - resolution: {integrity: sha512-21TKHHh3eUHIi2MloeptJWALuCu5H7HQTdTrWIFReA8ad+aggoX+lRes3ex7/FtpC+sVUpFMQ+QTfYr74mruiQ==} + /@types/node@18.18.9: + resolution: {integrity: sha512-0f5klcuImLnG4Qreu9hPj/rEfFq6YRc5n2mAjSsH+ec/mJL+3voBH0+8T7o8RpFjH7ovc+TRsL/c7OYIQsPTfQ==} dependencies: - undici-types: 5.25.3 + undici-types: 5.26.5 + dev: true - /@types/nodemailer@6.4.9: - resolution: {integrity: sha512-XYG8Gv+sHjaOtUpiuytahMy2mM3rectgroNbs6R3djZEKmPNiIJwe9KqOJBGzKKnNZNKvnuvmugBgpq3w/S0ig==} + /@types/node@20.9.0: + resolution: {integrity: sha512-nekiGu2NDb1BcVofVcEKMIwzlx4NjHlcjhoxxKBNLtz15Y1z7MYf549DFvkHSId02Ax6kGwWntIBPC3l/JZcmw==} dependencies: - '@types/node': 18.11.18 + undici-types: 5.26.5 + + /@types/nodemailer@6.4.14: + resolution: {integrity: sha512-fUWthHO9k9DSdPCSPRqcu6TWhYyxTBg382vlNIttSe9M7XfsT06y0f24KHXtbnijPGGRIcVvdKHTNikOI6qiHA==} + dependencies: + '@types/node': 20.9.0 dev: true /@types/normalize-package-data@2.4.3: @@ -4299,7 +4300,14 @@ packages: /@types/oauth@0.9.1: resolution: {integrity: sha512-a1iY62/a3yhZ7qH7cNUsxoI3U/0Fe9+RnuFrpTKr+0WVOzbKlSLojShCKe20aOD1Sppv+i8Zlq0pLDuTJnwS4A==} dependencies: - '@types/node': 18.11.18 + '@types/node': 20.9.0 + dev: false + + /@types/oauth@0.9.4: + resolution: {integrity: sha512-qk9orhti499fq5XxKCCEbd0OzdPZuancneyse3KtR+vgMiHRbh+mn8M4G6t64ob/Fg+GZGpa565MF/2dKWY32A==} + dependencies: + '@types/node': 20.9.0 + dev: true /@types/object-assign-deep@0.4.2: resolution: {integrity: sha512-iF6qYKjYdg/kFg3AEM/msyh1+U4zZW043d2TnCS9fwib00nc8Asj+38LgIpkO/UpfUMRgJ0m/tHATwU2F8Bfow==} @@ -4313,18 +4321,18 @@ packages: resolution: {integrity: sha512-PGcyveRIpL1XIqK8eBsmRBt76eFgtzuPiSTyKHZxnGemp2yzGzWpjYKAfK3wIMiU7eH+851yEpiuP8JZerTmWg==} dev: false - /@types/opencc-js@1.0.2: - resolution: {integrity: sha512-46nm84b43jngyljQkO3rwDBRfFMyLW6jflkvHb1Q3VQGGaH3Do00jO12mQNB8ErPdxr6JyBVk1tCFb9g0l7APg==} + /@types/opencc-js@1.0.3: + resolution: {integrity: sha512-TENp7YkI2hNlc4dplhivSHj0hU4DORCK56VY7rniaSfA5f87uD3uv+kPIRuH9h64TGv976iVFi4gEHZZtS2y8Q==} dev: true /@types/parse-link-header@2.0.2: resolution: {integrity: sha512-RKU5SIF0oyM2ZI0ubw66FkM/0RJUv/r84I7vJcXkcICcfeOpd1WXfpcqkFJPaWli5z3YdxMsfWojyU5uofT6sA==} dev: true - /@types/pg@8.10.7: - resolution: {integrity: sha512-ksJqHipwYaSEHz9e1fr6H6erjoEdNNaOxwyJgPx9bNeaqOW3iWBQgVHfpwiSAoqGzchfc+ZyRLwEfeCcyYD3uQ==} + /@types/pg@8.10.9: + resolution: {integrity: sha512-UksbANNE/f8w0wOMxVKKIrLCbEMV+oM1uKejmwXr39olg4xqcfBDbXxObJAt6XxHbDa4XTKOlUEcEltXDX+XLQ==} dependencies: - '@types/node': 20.8.7 + '@types/node': 20.9.0 pg-protocol: 1.6.0 pg-types: 4.0.1 dev: true @@ -4333,63 +4341,56 @@ packages: resolution: {integrity: sha512-O397rnSS9iQI4OirieAtsDqvCj4+3eY1J+EPdNTKuHuRWIfUoGyzX294o8C4KJYaLqgSrd2o60c5EqCU8Zv02g==} dev: true - /@types/prismjs@1.26.2: - resolution: {integrity: sha512-/r7Cp7iUIk7gts26mHXD66geUC+2Fo26TZYjQK6Nr4LDfi6lmdRmMqM0oPwfiMhUwoBAOFe8GstKi2pf6hZvwA==} + /@types/prismjs@1.26.3: + resolution: {integrity: sha512-A0D0aTXvjlqJ5ZILMz3rNfDBOx9hHxLZYv2by47Sm/pqW35zzjusrZTryatjN/Rf8Us2gZrJD+KeHbUSTux1Cw==} dev: true - /@types/probe-image-size@7.2.0: - resolution: {integrity: sha512-R5H3vw62gHNHrn+JGZbKejb+Z2D/6E5UNVlhCzIaBBLroMQMOFqy5Pap2gM+ZZHdqBtVU0/cx/M6to+mOJcoew==} + /@types/probe-image-size@7.2.3: + resolution: {integrity: sha512-6OJa/Tj7OjiahwdcfLWvrzGpXLSjLfbfjqdpth2Oy9YKI58A6Ec5YvFcqfVXOSaJPkA3W+nZx6cPheMQrdtz1w==} dependencies: '@types/needle': 3.2.0 - '@types/node': 18.11.18 + '@types/node': 20.9.0 dev: true - /@types/pug@2.0.6: - resolution: {integrity: sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg==} + /@types/pug@2.0.9: + resolution: {integrity: sha512-Yg4LkgFYvn1faISbDNWmcAC1XoDT8IoMUFspp5mnagKk+UvD2N0IWt5A7GRdMubsNWqgCLmrkf8rXkzNqb4szA==} dev: true - /@types/punycode@2.1.0: - resolution: {integrity: sha512-PG5aLpW6PJOeV2fHRslP4IOMWn+G+Uq8CfnyJ+PDS8ndCbU+soO+fB3NKCKo0p/Jh2Y4aPaiQZsrOXFdzpcA6g==} + /@types/punycode@2.1.2: + resolution: {integrity: sha512-KKQ4GjRCpswGPA6ZfvPrC+7h84bAvPkU1kFGJ3FuQOgZIEc8JmO1jcDCaxSiYcN3qzOOp9YqHq+njKEO3Q4BnA==} dev: true - /@types/qrcode@1.5.1: - resolution: {integrity: sha512-HpSN675K0PmxIDRpjMI3Mc2GiKo3dNu+X/F5SoItiaDS1lVfgC6Wac1c5lQDfKWbTJUSHWiHKzpJpBZG7k9gaA==} + /@types/qrcode@1.5.5: + resolution: {integrity: sha512-CdfBi/e3Qk+3Z/fXYShipBT13OJ2fDO2Q2w5CIP5anLTLIndQG9z6P1cnm+8zCWSpm5dnxMFd/uREtb0EXuQzg==} dependencies: - '@types/node': 18.11.18 + '@types/node': 20.9.0 dev: true - /@types/qs@6.9.7: - resolution: {integrity: sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==} + /@types/qs@6.9.10: + resolution: {integrity: sha512-3Gnx08Ns1sEoCrWssEgTSJs/rsT2vhGP+Ja9cnnk9k4ALxinORlQneLXFeFKOTJMOeZUFD1s7w+w2AphTpvzZw==} - /@types/random-seed@0.3.3: - resolution: {integrity: sha512-kHsCbIRHNXJo6EN5W8EA5b4i1hdT6jaZke5crBPLUcLqaLdZ0QBq8QVMbafHzhjFF83Cl9qlee2dChD18d/kPg==} + /@types/random-seed@0.3.5: + resolution: {integrity: sha512-CftxcDPAHgs0SLHU2dt+ZlDPJfGqLW3sZlC/ATr5vJDSe5tRLeOne7HMvCOJnFyF8e1U41wqzs3h6AMC613xtA==} dev: true /@types/range-parser@1.2.4: resolution: {integrity: sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==} - /@types/ratelimiter@3.4.4: - resolution: {integrity: sha512-GSMb93iSA8KKFDgVL2Wzs/kqrHMJcU8xhLdwI5omoACcj7K18SacklLtY1C4G02HC5drd6GygtsIaGbfxJSe0g==} + /@types/ratelimiter@3.4.6: + resolution: {integrity: sha512-Bv6WLSXPGLVsBjkizXtn+ef78R92e36/DFQo2wXPTHtp1cYXF6rCULMqf9WcZPAtyMZMvQAtIPeYMA1xAyxghw==} dev: true - /@types/redis@4.0.11: - resolution: {integrity: sha512-bI+gth8La8Wg/QCR1+V1fhrL9+LZUSWfcqpOj2Kc80ZQ4ffbdL173vQd5wovmoV9i071FU9oP2g6etLuEwb6Rg==} - deprecated: This is a stub types definition. redis provides its own type definitions, so you do not need this installed. - dependencies: - redis: 4.6.7 - dev: true - - /@types/rename@1.0.4: - resolution: {integrity: sha512-eV81+6bVv2mdCBahkMefjEUwAjKDAP3AuyhqWCWRxcRaeVdUeHUBaoq2zSz+5HNHF2jzTajMcfLvJsy4K3cbwA==} + /@types/rename@1.0.7: + resolution: {integrity: sha512-E9qapfghUGfBMi3jNhsmCKPIp3f2zvNKpaX1BDGLGJNjzpgsZ/RTx7NaNksFjGoJ+r9NvWF1NSM5vVecnNjVmw==} dev: true /@types/responselike@1.0.0: resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==} dependencies: - '@types/node': 20.8.7 + '@types/node': 20.9.0 - /@types/sanitize-html@2.9.0: - resolution: {integrity: sha512-4fP/kEcKNj2u39IzrxWYuf/FnCCwwQCpif6wwY6ROUS1EPRIfWJjGkY3HIowY1EX/VbX5e86yq8AAE7UPMgATg==} + /@types/sanitize-html@2.9.4: + resolution: {integrity: sha512-Ym4hjmAFxF/eux7nW2yDPAj2o9RYh0vP/9V5ECoHtgJ/O9nPGslUd20CMn6WatRMlFVfjMTg3lMcWq8YyO6QnA==} dependencies: htmlparser2: 8.0.2 dev: true @@ -4398,33 +4399,33 @@ packages: resolution: {integrity: sha512-AnxLHewubLVzoF/A4qdxBGHCKifw8cY32iro3DQX9TPcetE95zBeVt3jnsvtvAUf1vwzMfwzp4t/L2yqPlnjkQ==} dev: false - /@types/seedrandom@3.0.5: - resolution: {integrity: sha512-kopEpYpFQvQdYsZkZVwht/0THHmTFFYXDaqV/lM45eweJ8kcGVDgZHs0RVTolSq55UPZNmjhKc9r7UvLu/mQQg==} + /@types/seedrandom@3.0.8: + resolution: {integrity: sha512-TY1eezMU2zH2ozQoAFAQFOPpvP15g+ZgSfTZt31AUUH/Rxtnz3H+A/Sv1Snw2/amp//omibc+AEkTaA8KUeOLQ==} dev: true - /@types/semver@7.5.0: - resolution: {integrity: sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==} + /@types/semver@7.5.5: + resolution: {integrity: sha512-+d+WYC1BxJ6yVOgUgzK8gWvp5qF8ssV5r4nsDcZWKRWcDQLQ619tvWAxJQYGgBrO1MnLJC7a5GtiYsAoQ47dJg==} dev: true /@types/send@0.17.1: resolution: {integrity: sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==} dependencies: '@types/mime': 1.3.2 - '@types/node': 20.8.7 + '@types/node': 20.9.0 /@types/serve-static@1.15.2: resolution: {integrity: sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw==} dependencies: '@types/http-errors': 2.0.1 '@types/mime': 3.0.1 - '@types/node': 20.8.7 + '@types/node': 20.9.0 /@types/sinonjs__fake-timers@8.1.1: resolution: {integrity: sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==} dev: true - /@types/sinonjs__fake-timers@8.1.2: - resolution: {integrity: sha512-9GcLXF0/v3t80caGs5p2rRfkB+a8VBGLJZVih6CNFkx8IZ994wiKKLSRs9nuFwk1HevWs/1mnUmkApGrSGsShA==} + /@types/sinonjs__fake-timers@8.1.5: + resolution: {integrity: sha512-mQkU2jY8jJEF7YHjHvsQO8+3ughTL1mcnn96igfhONmR+fUPSKIkefQYpSe8bsly2Ep7oQbn/6VG5/9/0qcArQ==} dev: true /@types/sizzle@2.3.3: @@ -4442,27 +4443,27 @@ packages: /@types/streamx@2.9.1: resolution: {integrity: sha512-9bywzhouyedmci7WCIPFwJ8zASDnxt2gaVUy52X0p0Tt085IJSAEP0L6j4SSNeDMSLzpYu6cPz0GrJZ7kPJ6Bg==} dependencies: - '@types/node': 20.8.7 + '@types/node': 20.9.0 dev: true - /@types/syslog-pro@1.0.2: - resolution: {integrity: sha512-wFRRgINEkchvvMi3zouVNulFsnghytbWesO79ktfs75SAMPJUDoxx0AjPWpauEGR12u1g0ky7bPzZmuWbMdYZw==} + /@types/syslog-pro@1.0.3: + resolution: {integrity: sha512-tI558N5Io/04ya5eO5HJRIHLLJK/2Q1y4j6Fb0POVSNgRFxfJCOZHEyNrpcagdEtw9i25Diq3NXfs1qa0yyMIw==} dev: true - /@types/textarea-caret@3.0.2: - resolution: {integrity: sha512-Bda0K7o7QLHp5KEqLYxZJaCDQZ5okxo3iGVCTOfOxHQQxo7ayYUXv1UyGhzmMPucT0UbeMeCW+DCGiAdyf8cTQ==} + /@types/textarea-caret@3.0.3: + resolution: {integrity: sha512-bsA9GdXV1wQsXyDjS5+A+czz8IAR3haH5DU+KctIoXbzobRL2NOiwF/+EbB7pofAyudMytLj4ihPtbmbJT8FWw==} dev: true - /@types/throttle-debounce@5.0.0: - resolution: {integrity: sha512-Pb7k35iCGFcGPECoNE4DYp3Oyf2xcTd3FbFQxXUI9hEYKUl6YX+KLf7HrBmgVcD05nl50LIH6i+80js4iYmWbw==} + /@types/throttle-debounce@5.0.2: + resolution: {integrity: sha512-pDzSNulqooSKvSNcksnV72nk8p7gRqN8As71Sp28nov1IgmPKWbOEIwAWvBME5pPTtaXJAvG3O4oc76HlQ4kqQ==} dev: true - /@types/tinycolor2@1.4.3: - resolution: {integrity: sha512-Kf1w9NE5HEgGxCRyIcRXR/ZYtDv0V8FVPtYHwLxl0O+maGX0erE77pQlD0gpP+/KByMZ87mOA79SjifhSB3PjQ==} + /@types/tinycolor2@1.4.6: + resolution: {integrity: sha512-iEN8J0BoMnsWBqjVbWH/c0G0Hh7O21lpR2/+PrvAVgWdzL7eexIFm4JN/Wn10PTcmNdtS6U67r499mlWMXOxNw==} dev: true - /@types/tmp@0.2.3: - resolution: {integrity: sha512-dDZH/tXzwjutnuk4UacGgFRwV+JSLaXL1ikvidfJprkb7L9Nx1njcRHHmi3Dsvt7pgqqTEeucQuOrWHPFgzVHA==} + /@types/tmp@0.2.6: + resolution: {integrity: sha512-chhaNf2oKHlRkDGt+tiKE2Z5aJ6qalm7Z9rlLdBwmOiAAf09YQvvoLXjWK4HWPF1xU/fqvMgfNfpVoBscA/tKA==} dev: true /@types/undertaker-registry@1.0.1: @@ -4472,7 +4473,7 @@ packages: /@types/undertaker@1.2.8: resolution: {integrity: sha512-gW3PRqCHYpo45XFQHJBhch7L6hytPsIe0QeLujlnFsjHPnXLhJcPdN6a9368d7aIQgH2I/dUTPFBlGeSNA3qOg==} dependencies: - '@types/node': 20.5.8 + '@types/node': 20.9.0 '@types/undertaker-registry': 1.0.1 async-done: 1.3.2 dev: true @@ -4481,19 +4482,19 @@ packages: resolution: {integrity: sha512-cputDpIbFgLUaGQn6Vqg3/YsJwxUwHLO13v3i5ouxT4lat0khip9AEWxtERujXV9wxIB1EyF97BSJFt6vpdI8g==} dev: true - /@types/uuid@9.0.2: - resolution: {integrity: sha512-kNnC1GFBLuhImSnV7w4njQkUiJi0ZXUycu1rUaouPqiKlXkh77JKgdRnTAp1x5eBwcIwbtI+3otwzuIDEuDoxQ==} - dev: true - /@types/uuid@9.0.3: resolution: {integrity: sha512-taHQQH/3ZyI3zP8M/puluDEIEvtQHVYcC6y3N8ijFtAd28+Ey/G4sg1u2gB01S8MwybLOKAp9/yCMu/uR5l3Ug==} dev: true + /@types/uuid@9.0.7: + resolution: {integrity: sha512-WUtIVRUZ9i5dYXefDEAI7sh9/O7jGvHg7Df/5O/gtH3Yabe5odI3UWopVR1qbPXQtvOxWu3mM4XxlYeZtMWF4g==} + dev: true + /@types/vinyl-fs@3.0.2: resolution: {integrity: sha512-ctNcmmzbMIKooXjRkyyUCOu2Z4AyqibL+RhXoF3pb7K7j+ezItnakmpm31LymkYHSIM5ey0tjIFzTvFOTSBCGw==} dependencies: '@types/glob-stream': 8.0.0 - '@types/node': 20.5.8 + '@types/node': 20.9.0 '@types/vinyl': 2.0.7 dev: true @@ -4501,35 +4502,32 @@ packages: resolution: {integrity: sha512-4UqPv+2567NhMQuMLdKAyK4yzrfCqwaTt6bLhHEs8PFcxbHILsrxaY63n4wgE/BRLDWDQeI+WcTmkXKExh9hQg==} dependencies: '@types/expect': 1.20.4 - '@types/node': 20.5.8 + '@types/node': 20.9.0 dev: true - /@types/web-push@3.3.2: - resolution: {integrity: sha512-JxWGVL/m7mWTIg4mRYO+A6s0jPmBkr4iJr39DqJpRJAc+jrPiEe1/asmkwerzRon8ZZDxaZJpsxpv0Z18Wo9gw==} + /@types/web-push@3.6.3: + resolution: {integrity: sha512-v3oT4mMJsHeJ/rraliZ+7TbZtr5bQQuxcgD7C3/1q/zkAj29c8RE0F9lVZVu3hiQe5Z9fYcBreV7TLnfKR+4mg==} dependencies: - '@types/node': 18.11.18 + '@types/node': 20.9.0 dev: true - /@types/webgl-ext@0.0.30: - resolution: {integrity: sha512-LKVgNmBxN0BbljJrVUwkxwRYqzsAEPcZOe6S2T6ZaBDIrFp0qu4FNlpc5sM1tGbXUYFgdVQIoeLk1Y1UoblyEg==} - dev: false - - /@types/webgl2@0.0.6: - resolution: {integrity: sha512-50GQhDVTq/herLMiqSQkdtRu+d5q/cWHn4VvKJtrj4DJAjo1MNkWYa2MA41BaBO1q1HgsUjuQvEOk0QHvlnAaQ==} - requiresBuild: true - dev: false - optional: true - - /@types/websocket@1.0.5: - resolution: {integrity: sha512-NbsqiNX9CnEfC1Z0Vf4mE1SgAJ07JnRYcNex7AJ9zAVzmiGHmjKFEk7O4TJIsgv2B1sLEb6owKFZrACwdYngsQ==} + /@types/websocket@1.0.9: + resolution: {integrity: sha512-xrMBdqdKdlE+7L9Wg2PQblIkZGSgiMlEoP6UAaYKMHbbxqCJ6PV/pTZ2RcMcSSERurU2TtGbmO4lqpFOJd01ww==} dependencies: - '@types/node': 18.11.18 + '@types/node': 20.9.0 dev: true /@types/ws@8.5.5: resolution: {integrity: sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==} dependencies: - '@types/node': 18.11.18 + '@types/node': 20.9.0 + dev: false + + /@types/ws@8.5.9: + resolution: {integrity: sha512-jbdrY0a8lxfdTp/+r7Z4CkycbOFN8WX+IOchLJr3juT/xzbJ8URyTVSJ/hvNdadTgM1mnedb47n+Y31GsFnQlg==} + dependencies: + '@types/node': 20.9.0 + dev: true /@types/yargs-parser@21.0.2: resolution: {integrity: sha512-5qcvofLPbfjmBfKaLfj/+f+Sbd6pN4zl7w7VSVI5uz7m9QZTuB2aZAa2uo1wHFBNN2x6g/SoTkXmd8mQnQF2Cw==} @@ -4545,7 +4543,7 @@ packages: resolution: {integrity: sha512-Km7XAtUIduROw7QPgvcft0lIupeG8a8rdKL8RiSyKvlE7dYY31fEn41HVuQsRFDuROA8tA4K2UVL+WdfFmErBA==} requiresBuild: true dependencies: - '@types/node': 20.8.7 + '@types/node': 20.9.0 dev: true optional: true @@ -4577,7 +4575,7 @@ packages: - supports-color dev: true - /@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.51.0)(typescript@5.2.2): + /@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.53.0)(typescript@5.2.2): resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -4589,12 +4587,12 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.6.2 - '@typescript-eslint/parser': 5.62.0(eslint@8.51.0)(typescript@5.2.2) + '@typescript-eslint/parser': 5.62.0(eslint@8.53.0)(typescript@5.2.2) '@typescript-eslint/scope-manager': 5.62.0 - '@typescript-eslint/type-utils': 5.62.0(eslint@8.51.0)(typescript@5.2.2) - '@typescript-eslint/utils': 5.62.0(eslint@8.51.0)(typescript@5.2.2) + '@typescript-eslint/type-utils': 5.62.0(eslint@8.53.0)(typescript@5.2.2) + '@typescript-eslint/utils': 5.62.0(eslint@8.53.0)(typescript@5.2.2) debug: 4.3.4(supports-color@8.1.1) - eslint: 8.51.0 + eslint: 8.53.0 graphemer: 1.4.0 ignore: 5.2.4 natural-compare-lite: 1.4.0 @@ -4605,8 +4603,8 @@ packages: - supports-color dev: true - /@typescript-eslint/eslint-plugin@6.3.0(@typescript-eslint/parser@6.3.0)(eslint@8.51.0)(typescript@5.2.2): - resolution: {integrity: sha512-IZYjYZ0ifGSLZbwMqIip/nOamFiWJ9AH+T/GYNZBWkVcyNQOFGtSMoWV7RvY4poYCMZ/4lHzNl796WOSNxmk8A==} + /@typescript-eslint/eslint-plugin@6.11.0(@typescript-eslint/parser@6.11.0)(eslint@8.53.0)(typescript@5.2.2): + resolution: {integrity: sha512-uXnpZDc4VRjY4iuypDBKzW1rz9T5YBBK0snMn8MaTSNd2kMlj50LnLBABELjJiOL5YHk7ZD8hbSpI9ubzqYI0w==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha @@ -4616,18 +4614,17 @@ packages: typescript: optional: true dependencies: - '@eslint-community/regexpp': 4.6.2 - '@typescript-eslint/parser': 6.3.0(eslint@8.51.0)(typescript@5.2.2) - '@typescript-eslint/scope-manager': 6.3.0 - '@typescript-eslint/type-utils': 6.3.0(eslint@8.51.0)(typescript@5.2.2) - '@typescript-eslint/utils': 6.3.0(eslint@8.51.0)(typescript@5.2.2) - '@typescript-eslint/visitor-keys': 6.3.0 + '@eslint-community/regexpp': 4.9.1 + '@typescript-eslint/parser': 6.11.0(eslint@8.53.0)(typescript@5.2.2) + '@typescript-eslint/scope-manager': 6.11.0 + '@typescript-eslint/type-utils': 6.11.0(eslint@8.53.0)(typescript@5.2.2) + '@typescript-eslint/utils': 6.11.0(eslint@8.53.0)(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.11.0 debug: 4.3.4(supports-color@8.1.1) - eslint: 8.51.0 + eslint: 8.53.0 graphemer: 1.4.0 ignore: 5.2.4 natural-compare: 1.4.0 - natural-compare-lite: 1.4.0 semver: 7.5.4 ts-api-utils: 1.0.1(typescript@5.2.2) typescript: 5.2.2 @@ -4655,7 +4652,7 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@5.62.0(eslint@8.51.0)(typescript@5.2.2): + /@typescript-eslint/parser@5.62.0(eslint@8.53.0)(typescript@5.2.2): resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -4669,14 +4666,14 @@ packages: '@typescript-eslint/types': 5.62.0 '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.2.2) debug: 4.3.4(supports-color@8.1.1) - eslint: 8.51.0 + eslint: 8.53.0 typescript: 5.2.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser@6.3.0(eslint@8.51.0)(typescript@5.2.2): - resolution: {integrity: sha512-ibP+y2Gr6p0qsUkhs7InMdXrwldjxZw66wpcQq9/PzAroM45wdwyu81T+7RibNCh8oc0AgrsyCwJByncY0Ongg==} + /@typescript-eslint/parser@6.11.0(eslint@8.53.0)(typescript@5.2.2): + resolution: {integrity: sha512-+whEdjk+d5do5nxfxx73oanLL9ghKO3EwM9kBCkUtWMRwWuPaFv9ScuqlYfQ6pAD6ZiJhky7TZ2ZYhrMsfMxVQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -4685,12 +4682,12 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 6.3.0 - '@typescript-eslint/types': 6.3.0 - '@typescript-eslint/typescript-estree': 6.3.0(typescript@5.2.2) - '@typescript-eslint/visitor-keys': 6.3.0 + '@typescript-eslint/scope-manager': 6.11.0 + '@typescript-eslint/types': 6.11.0 + '@typescript-eslint/typescript-estree': 6.11.0(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.11.0 debug: 4.3.4(supports-color@8.1.1) - eslint: 8.51.0 + eslint: 8.53.0 typescript: 5.2.2 transitivePeerDependencies: - supports-color @@ -4704,12 +4701,12 @@ packages: '@typescript-eslint/visitor-keys': 5.62.0 dev: true - /@typescript-eslint/scope-manager@6.3.0: - resolution: {integrity: sha512-WlNFgBEuGu74ahrXzgefiz/QlVb+qg8KDTpknKwR7hMH+lQygWyx0CQFoUmMn1zDkQjTBBIn75IxtWss77iBIQ==} + /@typescript-eslint/scope-manager@6.11.0: + resolution: {integrity: sha512-0A8KoVvIURG4uhxAdjSaxy8RdRE//HztaZdG8KiHLP8WOXSk0vlF7Pvogv+vlJA5Rnjj/wDcFENvDaHb+gKd1A==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.3.0 - '@typescript-eslint/visitor-keys': 6.3.0 + '@typescript-eslint/types': 6.11.0 + '@typescript-eslint/visitor-keys': 6.11.0 dev: true /@typescript-eslint/type-utils@5.62.0(eslint@8.46.0)(typescript@4.9.4): @@ -4732,7 +4729,7 @@ packages: - supports-color dev: true - /@typescript-eslint/type-utils@5.62.0(eslint@8.51.0)(typescript@5.2.2): + /@typescript-eslint/type-utils@5.62.0(eslint@8.53.0)(typescript@5.2.2): resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -4743,17 +4740,17 @@ packages: optional: true dependencies: '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.2.2) - '@typescript-eslint/utils': 5.62.0(eslint@8.51.0)(typescript@5.2.2) + '@typescript-eslint/utils': 5.62.0(eslint@8.53.0)(typescript@5.2.2) debug: 4.3.4(supports-color@8.1.1) - eslint: 8.51.0 + eslint: 8.53.0 tsutils: 3.21.0(typescript@5.2.2) typescript: 5.2.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/type-utils@6.3.0(eslint@8.51.0)(typescript@5.2.2): - resolution: {integrity: sha512-7Oj+1ox1T2Yc8PKpBvOKWhoI/4rWFd1j7FA/rPE0lbBPXTKjdbtC+7Ev0SeBjEKkIhKWVeZSP+mR7y1Db1CdfQ==} + /@typescript-eslint/type-utils@6.11.0(eslint@8.53.0)(typescript@5.2.2): + resolution: {integrity: sha512-nA4IOXwZtqBjIoYrJcYxLRO+F9ri+leVGoJcMW1uqr4r1Hq7vW5cyWrA43lFbpRvQ9XgNrnfLpIkO3i1emDBIA==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -4762,10 +4759,10 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 6.3.0(typescript@5.2.2) - '@typescript-eslint/utils': 6.3.0(eslint@8.51.0)(typescript@5.2.2) + '@typescript-eslint/typescript-estree': 6.11.0(typescript@5.2.2) + '@typescript-eslint/utils': 6.11.0(eslint@8.53.0)(typescript@5.2.2) debug: 4.3.4(supports-color@8.1.1) - eslint: 8.51.0 + eslint: 8.53.0 ts-api-utils: 1.0.1(typescript@5.2.2) typescript: 5.2.2 transitivePeerDependencies: @@ -4777,8 +4774,8 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/types@6.3.0: - resolution: {integrity: sha512-K6TZOvfVyc7MO9j60MkRNWyFSf86IbOatTKGrpTQnzarDZPYPVy0oe3myTMq7VjhfsUAbNUW8I5s+2lZvtx1gg==} + /@typescript-eslint/types@6.11.0: + resolution: {integrity: sha512-ZbEzuD4DwEJxwPqhv3QULlRj8KYTAnNsXxmfuUXFCxZmO6CF2gM/y+ugBSAQhrqaJL3M+oe4owdWunaHM6beqA==} engines: {node: ^16.0.0 || >=18.0.0} dev: true @@ -4824,8 +4821,8 @@ packages: - supports-color dev: true - /@typescript-eslint/typescript-estree@6.3.0(typescript@5.2.2): - resolution: {integrity: sha512-Xh4NVDaC4eYKY4O3QGPuQNp5NxBAlEvNQYOqJquR2MePNxO11E5K3t5x4M4Mx53IZvtpW+mBxIT0s274fLUocg==} + /@typescript-eslint/typescript-estree@6.11.0(typescript@5.2.2): + resolution: {integrity: sha512-Aezzv1o2tWJwvZhedzvD5Yv7+Lpu1by/U1LZ5gLc4tCx8jUmuSCMioPFRjliN/6SJIvY6HpTtJIWubKuYYYesQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' @@ -4833,8 +4830,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 6.3.0 - '@typescript-eslint/visitor-keys': 6.3.0 + '@typescript-eslint/types': 6.11.0 + '@typescript-eslint/visitor-keys': 6.11.0 debug: 4.3.4(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 @@ -4853,7 +4850,7 @@ packages: dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.46.0) '@types/json-schema': 7.0.12 - '@types/semver': 7.5.0 + '@types/semver': 7.5.5 '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/types': 5.62.0 '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.4) @@ -4865,19 +4862,19 @@ packages: - typescript dev: true - /@typescript-eslint/utils@5.62.0(eslint@8.51.0)(typescript@5.2.2): + /@typescript-eslint/utils@5.62.0(eslint@8.53.0)(typescript@5.2.2): resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.51.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.53.0) '@types/json-schema': 7.0.12 - '@types/semver': 7.5.0 + '@types/semver': 7.5.5 '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/types': 5.62.0 '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.2.2) - eslint: 8.51.0 + eslint: 8.53.0 eslint-scope: 5.1.1 semver: 7.5.4 transitivePeerDependencies: @@ -4885,19 +4882,19 @@ packages: - typescript dev: true - /@typescript-eslint/utils@6.3.0(eslint@8.51.0)(typescript@5.2.2): - resolution: {integrity: sha512-hLLg3BZE07XHnpzglNBG8P/IXq/ZVXraEbgY7FM0Cnc1ehM8RMdn9mat3LubJ3KBeYXXPxV1nugWbQPjGeJk6Q==} + /@typescript-eslint/utils@6.11.0(eslint@8.53.0)(typescript@5.2.2): + resolution: {integrity: sha512-p23ibf68fxoZy605dc0dQAEoUsoiNoP3MD9WQGiHLDuTSOuqoTsa4oAy+h3KDkTcxbbfOtUjb9h3Ta0gT4ug2g==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.51.0) - '@types/json-schema': 7.0.12 - '@types/semver': 7.5.0 - '@typescript-eslint/scope-manager': 6.3.0 - '@typescript-eslint/types': 6.3.0 - '@typescript-eslint/typescript-estree': 6.3.0(typescript@5.2.2) - eslint: 8.51.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.53.0) + '@types/json-schema': 7.0.14 + '@types/semver': 7.5.5 + '@typescript-eslint/scope-manager': 6.11.0 + '@typescript-eslint/types': 6.11.0 + '@typescript-eslint/typescript-estree': 6.11.0(typescript@5.2.2) + eslint: 8.53.0 semver: 7.5.4 transitivePeerDependencies: - supports-color @@ -4912,39 +4909,43 @@ packages: eslint-visitor-keys: 3.4.2 dev: true - /@typescript-eslint/visitor-keys@6.3.0: - resolution: {integrity: sha512-kEhRRj7HnvaSjux1J9+7dBen15CdWmDnwrpyiHsFX6Qx2iW5LOBUgNefOFeh2PjWPlNwN8TOn6+4eBU3J/gupw==} + /@typescript-eslint/visitor-keys@6.11.0: + resolution: {integrity: sha512-+SUN/W7WjBr05uRxPggJPSzyB8zUpaYo2hByKasWbqr3PM8AXfZt8UHdNpBS1v9SA62qnSSMF3380SwDqqprgQ==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.3.0 - eslint-visitor-keys: 3.4.2 + '@typescript-eslint/types': 6.11.0 + eslint-visitor-keys: 3.4.3 dev: true - /@vitejs/plugin-vue@4.3.4(vite@4.4.9)(vue@3.3.4): - resolution: {integrity: sha512-ciXNIHKPriERBisHFBvnTbfKa6r9SAesOYXeGDzgegcvy9Q4xdScSHAmKbNT0M3O0S9LKhIf5/G+UYG4NnnzYw==} + /@ungap/structured-clone@1.2.0: + resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + dev: true + + /@vitejs/plugin-vue@4.5.0(vite@5.0.0)(vue@3.3.8): + resolution: {integrity: sha512-a2WSpP8X8HTEww/U00bU4mX1QpLINNuz/2KMNpLsdu3BzOpak3AGI1CJYBTXcc4SPhaD0eNRUp7IyQK405L5dQ==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: - vite: ^4.0.0 + vite: ^4.0.0 || ^5.0.0 vue: ^3.2.25 dependencies: - vite: 4.4.9(@types/node@20.5.8)(sass@1.66.1) - vue: 3.3.4 + vite: 5.0.0(@types/node@20.9.0)(sass@1.69.5) + vue: 3.3.8(typescript@5.2.2) dev: true - /@vue/compiler-core@3.3.4: - resolution: {integrity: sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==} + /@vue/compiler-core@3.3.8: + resolution: {integrity: sha512-hN/NNBUECw8SusQvDSqqcVv6gWq8L6iAktUR0UF3vGu2OhzRqcOiAno0FmBJWwxhYEXRlQJT5XnoKsVq1WZx4g==} dependencies: - '@babel/parser': 7.22.10 - '@vue/shared': 3.3.4 + '@babel/parser': 7.23.0 + '@vue/shared': 3.3.8 estree-walker: 2.0.2 source-map-js: 1.0.2 dev: true - /@vue/compiler-dom@3.3.4: - resolution: {integrity: sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w==} + /@vue/compiler-dom@3.3.8: + resolution: {integrity: sha512-+PPtv+p/nWDd0AvJu3w8HS0RIm/C6VGBIRe24b9hSyNWOAPEUosFZ5diwawwP8ip5sJ8n0Pe87TNNNHnvjs0FQ==} dependencies: - '@vue/compiler-core': 3.3.4 - '@vue/shared': 3.3.4 + '@vue/compiler-core': 3.3.8 + '@vue/shared': 3.3.8 dev: true /@vue/compiler-sfc@2.7.14: @@ -4955,71 +4956,71 @@ packages: source-map: 0.6.1 dev: true - /@vue/compiler-sfc@3.3.4: - resolution: {integrity: sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ==} + /@vue/compiler-sfc@3.3.8: + resolution: {integrity: sha512-WMzbUrlTjfYF8joyT84HfwwXo+8WPALuPxhy+BZ6R4Aafls+jDBnSz8PDz60uFhuqFbl3HxRfxvDzrUf3THwpA==} dependencies: - '@babel/parser': 7.22.10 - '@vue/compiler-core': 3.3.4 - '@vue/compiler-dom': 3.3.4 - '@vue/compiler-ssr': 3.3.4 - '@vue/reactivity-transform': 3.3.4 - '@vue/shared': 3.3.4 + '@babel/parser': 7.23.0 + '@vue/compiler-core': 3.3.8 + '@vue/compiler-dom': 3.3.8 + '@vue/compiler-ssr': 3.3.8 + '@vue/reactivity-transform': 3.3.8 + '@vue/shared': 3.3.8 estree-walker: 2.0.2 - magic-string: 0.30.2 - postcss: 8.4.27 + magic-string: 0.30.5 + postcss: 8.4.31 source-map-js: 1.0.2 dev: true - /@vue/compiler-ssr@3.3.4: - resolution: {integrity: sha512-m0v6oKpup2nMSehwA6Uuu+j+wEwcy7QmwMkVNVfrV9P2qE5KshC6RwOCq8fjGS/Eak/uNb8AaWekfiXxbBB6gQ==} + /@vue/compiler-ssr@3.3.8: + resolution: {integrity: sha512-hXCqQL/15kMVDBuoBYpUnSYT8doDNwsjvm3jTefnXr+ytn294ySnT8NlsFHmTgKNjwpuFy7XVV8yTeLtNl/P6w==} dependencies: - '@vue/compiler-dom': 3.3.4 - '@vue/shared': 3.3.4 + '@vue/compiler-dom': 3.3.8 + '@vue/shared': 3.3.8 dev: true - /@vue/reactivity-transform@3.3.4: - resolution: {integrity: sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw==} + /@vue/reactivity-transform@3.3.8: + resolution: {integrity: sha512-49CvBzmZNtcHua0XJ7GdGifM8GOXoUMOX4dD40Y5DxI3R8OUhMlvf2nvgUAcPxaXiV5MQQ1Nwy09ADpnLQUqRw==} dependencies: - '@babel/parser': 7.22.10 - '@vue/compiler-core': 3.3.4 - '@vue/shared': 3.3.4 + '@babel/parser': 7.23.0 + '@vue/compiler-core': 3.3.8 + '@vue/shared': 3.3.8 estree-walker: 2.0.2 - magic-string: 0.30.2 + magic-string: 0.30.5 dev: true - /@vue/reactivity@3.3.4: - resolution: {integrity: sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ==} + /@vue/reactivity@3.3.8: + resolution: {integrity: sha512-ctLWitmFBu6mtddPyOKpHg8+5ahouoTCRtmAHZAXmolDtuZXfjL2T3OJ6DL6ezBPQB1SmMnpzjiWjCiMYmpIuw==} dependencies: - '@vue/shared': 3.3.4 + '@vue/shared': 3.3.8 dev: true - /@vue/runtime-core@3.3.4: - resolution: {integrity: sha512-R+bqxMN6pWO7zGI4OMlmvePOdP2c93GsHFM/siJI7O2nxFRzj55pLwkpCedEY+bTMgp5miZ8CxfIZo3S+gFqvA==} + /@vue/runtime-core@3.3.8: + resolution: {integrity: sha512-qurzOlb6q26KWQ/8IShHkMDOuJkQnQcTIp1sdP4I9MbCf9FJeGVRXJFr2mF+6bXh/3Zjr9TDgURXrsCr9bfjUw==} dependencies: - '@vue/reactivity': 3.3.4 - '@vue/shared': 3.3.4 + '@vue/reactivity': 3.3.8 + '@vue/shared': 3.3.8 dev: true - /@vue/runtime-dom@3.3.4: - resolution: {integrity: sha512-Aj5bTJ3u5sFsUckRghsNjVTtxZQ1OyMWCr5dZRAPijF/0Vy4xEoRCwLyHXcj4D0UFbJ4lbx3gPTgg06K/GnPnQ==} + /@vue/runtime-dom@3.3.8: + resolution: {integrity: sha512-Noy5yM5UIf9UeFoowBVgghyGGPIDPy1Qlqt0yVsUdAVbqI8eeMSsTqBtauaEoT2UFXUk5S64aWVNJN4MJ2vRdA==} dependencies: - '@vue/runtime-core': 3.3.4 - '@vue/shared': 3.3.4 + '@vue/runtime-core': 3.3.8 + '@vue/shared': 3.3.8 csstype: 3.1.2 dev: true - /@vue/server-renderer@3.3.4(vue@3.3.4): - resolution: {integrity: sha512-Q6jDDzR23ViIb67v+vM1Dqntu+HUexQcsWKhhQa4ARVzxOY2HbC7QRW/ggkDBd5BU+uM1sV6XOAP0b216o34JQ==} + /@vue/server-renderer@3.3.8(vue@3.3.8): + resolution: {integrity: sha512-zVCUw7RFskvPuNlPn/8xISbrf0zTWsTSdYTsUTN1ERGGZGVnRxM2QZ3x1OR32+vwkkCm0IW6HmJ49IsPm7ilLg==} peerDependencies: - vue: 3.3.4 + vue: 3.3.8 dependencies: - '@vue/compiler-ssr': 3.3.4 - '@vue/shared': 3.3.4 - vue: 3.3.4 + '@vue/compiler-ssr': 3.3.8 + '@vue/shared': 3.3.8 + vue: 3.3.8(typescript@5.2.2) dev: true - /@vue/shared@3.3.4: - resolution: {integrity: sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ==} + /@vue/shared@3.3.8: + resolution: {integrity: sha512-8PGwybFwM4x8pcfgqEQFy70NaQxASvOC5DJwLQfpArw1UDfUXrJkdxD3BhVTMS+0Lef/TU7YO0Jvr0jJY8T+mw==} dev: true /@webassemblyjs/ast@1.11.6: @@ -5128,16 +5129,6 @@ packages: '@xtuc/long': 4.2.2 dev: true - /@webgpu/types@0.1.16: - resolution: {integrity: sha512-9E61voMP4+Rze02jlTXud++Htpjyyk8vw5Hyw9FGRrmhHQg2GqbuOfwf5Klrb8vTxc2XWI3EfO7RUHMpxTj26A==} - requiresBuild: true - dev: false - optional: true - - /@webgpu/types@0.1.21: - resolution: {integrity: sha512-pUrWq3V5PiSGFLeLxoGqReTZmiiXwY3jRkIG5sLLKjyqNxrwm/04b4nw7LSmGWJcKk59XOM/YRTUwOzo4MMlow==} - dev: false - /@webgpu/types@0.1.30: resolution: {integrity: sha512-9AXJSmL3MzY8ZL//JjudA//q+2kBRGhLBFpkdGksWIuxrMy81nFrCzj2Am+mbh8WoU6rXmv7cY5E3rdlyru2Qg==} dev: false @@ -5152,6 +5143,12 @@ packages: /abbrev@1.1.1: resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} + dev: false + + /abbrev@2.0.0: + resolution: {integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: false /abort-controller@3.0.0: resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} @@ -5234,13 +5231,6 @@ packages: - supports-color dev: false - /agentkeepalive@4.5.0: - resolution: {integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==} - engines: {node: '>= 8.0.0'} - dependencies: - humanize-ms: 1.2.1 - dev: false - /aggregate-error@3.1.0: resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} engines: {node: '>=8'} @@ -5366,6 +5356,7 @@ packages: /any-promise@1.3.0: resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + dev: false /anymatch@2.0.0: resolution: {integrity: sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==} @@ -5407,49 +5398,29 @@ packages: resolution: {integrity: sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==} dev: true - /archiver-utils@2.1.0: - resolution: {integrity: sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==} - engines: {node: '>= 6'} + /archiver-utils@4.0.1: + resolution: {integrity: sha512-Q4Q99idbvzmgCTEAAhi32BkOyq8iVI5EwdO0PmBDSGIzzjYNdcFn7Q7k3OzbLy4kLUPXfJtG6fO2RjftXbobBg==} + engines: {node: '>= 12.0.0'} dependencies: - glob: 7.2.3 + glob: 8.1.0 graceful-fs: 4.2.11 lazystream: 1.0.1 - lodash.defaults: 4.2.0 - lodash.difference: 4.5.0 - lodash.flatten: 4.4.0 - lodash.isplainobject: 4.0.6 - lodash.union: 4.6.0 - normalize-path: 3.0.0 - readable-stream: 2.3.8 - dev: false - - /archiver-utils@3.0.4: - resolution: {integrity: sha512-KVgf4XQVrTjhyWmx6cte4RxonPLR9onExufI1jhvw/MQ4BB6IsZD5gT8Lq+u/+pRkWna/6JoHpiQioaqFP5Rzw==} - engines: {node: '>= 10'} - dependencies: - glob: 7.2.3 - graceful-fs: 4.2.11 - lazystream: 1.0.1 - lodash.defaults: 4.2.0 - lodash.difference: 4.5.0 - lodash.flatten: 4.4.0 - lodash.isplainobject: 4.0.6 - lodash.union: 4.6.0 + lodash: 4.17.21 normalize-path: 3.0.0 readable-stream: 3.6.2 dev: false - /archiver@6.0.0: - resolution: {integrity: sha512-EPGa+bYaxaMiCT8DCbEDqFz8IjeBSExrJzyUOJx2FBkFJ/OZzJuso3lMSk901M50gMqXxTQcumlGajOFlXhVhw==} + /archiver@6.0.1: + resolution: {integrity: sha512-CXGy4poOLBKptiZH//VlWdFuUC1RESbdZjGjILwBuZ73P7WkAUN0htfSfBq/7k6FRFlpu7bg4JOkj1vU9G6jcQ==} engines: {node: '>= 12.0.0'} dependencies: - archiver-utils: 3.0.4 + archiver-utils: 4.0.1 async: 3.2.4 buffer-crc32: 0.2.13 readable-stream: 3.6.2 readdir-glob: 1.1.3 - tar-stream: 2.2.0 - zip-stream: 4.1.0 + tar-stream: 3.1.6 + zip-stream: 5.0.1 dev: false /archy@1.0.0: @@ -5470,14 +5441,6 @@ packages: readable-stream: 3.6.2 dev: false - /are-we-there-yet@3.0.1: - resolution: {integrity: sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - dependencies: - delegates: 1.0.0 - readable-stream: 3.6.2 - dev: false - /arg@4.1.3: resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} @@ -5485,8 +5448,8 @@ packages: resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} dev: true - /argon2@0.31.1: - resolution: {integrity: sha512-ik2xnJrLXazya7m4Nz1XfBSRjXj8Koq8qF9PsQC8059p20ifWc9zx/hgU3ItZh/3TnwXkv0RbhvjodPkmFf0bg==} + /argon2@0.31.2: + resolution: {integrity: sha512-QSnJ8By5Mth60IEte45w9Y7v6bWcQw3YhRtJKKN8oNCxnTLDiv/AXXkDPf2srTMfxFVn3QJdVv2nhXESsUa+Yg==} engines: {node: '>=14.0.0'} requiresBuild: true dependencies: @@ -5563,6 +5526,17 @@ packages: is-string: 1.0.7 dev: true + /array-includes@3.1.7: + resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.22.1 + get-intrinsic: 1.2.1 + is-string: 1.0.7 + dev: true + /array-initial@1.1.0: resolution: {integrity: sha512-BC4Yl89vneCYfpLrs5JU2aAu9/a+xWbeKhvISg9PT7eWFB9UlRvI+rKEtk6mgxWr3dSkk9gQ8hCrdqt06NXPdw==} engines: {node: '>=0.10.0'} @@ -5613,6 +5587,17 @@ packages: get-intrinsic: 1.2.1 dev: true + /array.prototype.findlastindex@1.2.3: + resolution: {integrity: sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.22.1 + es-shim-unscopables: 1.0.0 + get-intrinsic: 1.2.1 + dev: true + /array.prototype.flat@1.3.1: resolution: {integrity: sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==} engines: {node: '>= 0.4'} @@ -5623,6 +5608,16 @@ packages: es-shim-unscopables: 1.0.0 dev: true + /array.prototype.flat@1.3.2: + resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.22.1 + es-shim-unscopables: 1.0.0 + dev: true + /array.prototype.flatmap@1.3.1: resolution: {integrity: sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==} engines: {node: '>= 0.4'} @@ -5633,6 +5628,16 @@ packages: es-shim-unscopables: 1.0.0 dev: true + /array.prototype.flatmap@1.3.2: + resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.22.1 + es-shim-unscopables: 1.0.0 + dev: true + /arraybuffer.prototype.slice@1.0.1: resolution: {integrity: sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw==} engines: {node: '>= 0.4'} @@ -5827,8 +5832,8 @@ packages: resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} engines: {node: '>= 0.4'} - /aws-sdk@2.1413.0: - resolution: {integrity: sha512-vKpjC7iRwOhgv7P0xw90mVGO//2rqVPJKyYIs7uxLzSV0JzriVD+yqktOu/Hz6/phOmAd1cMIeFgpEC9ynrppg==} + /aws-sdk@2.1498.0: + resolution: {integrity: sha512-m3yxYWrXsn9FJRcWBZZ4ySOEKxodP8KMhwoGJMALd0MLtfPUl/Yf0YuwVyTct2ZzRGMU8i7XoZYPY1fr76LD1w==} engines: {node: '>= 10.0.0'} dependencies: buffer: 4.9.2 @@ -5857,14 +5862,6 @@ packages: - debug dev: false - /axios@0.25.0(debug@4.3.4): - resolution: {integrity: sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==} - dependencies: - follow-redirects: 1.15.2(debug@4.3.4) - transitivePeerDependencies: - - debug - dev: true - /axios@1.2.2: resolution: {integrity: sha512-bz/J4gS2S3I7mpN/YZfGFTqhXTYzRho8Ay38w2otuuDR322KzFIWm/4W2K6gIwvWaws5n+mnb7D1lN9uD+QH6Q==} dependencies: @@ -5875,15 +5872,14 @@ packages: - debug dev: false - /axios@1.4.0: - resolution: {integrity: sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==} + /axios@1.6.2(debug@4.3.4): + resolution: {integrity: sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==} dependencies: follow-redirects: 1.15.2(debug@4.3.4) form-data: 4.0.0 proxy-from-env: 1.1.0 transitivePeerDependencies: - debug - dev: false /b4a@1.6.4: resolution: {integrity: sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==} @@ -6138,11 +6134,11 @@ packages: dependencies: fill-range: 7.0.1 - /broadcast-channel@5.3.0: - resolution: {integrity: sha512-0PmDYc/iUGZ4QbnCnV7u+WleygiS1bZ4oV6t4rANXYtSgEFtGhB5jimJPLOVpPtce61FVxrH8CYylfO5g7OLKw==} + /broadcast-channel@6.0.0: + resolution: {integrity: sha512-h8ki6RYXq502Eb+zAt4Kni2ahL/lulh0ip+mpnvsMSRC2biBo6AkSBfO6JFTelT+FX88VL0SDd3RKpqlPNw4ng==} dependencies: - '@babel/runtime': 7.22.10 - oblivious-set: 1.1.1 + '@babel/runtime': 7.23.2 + oblivious-set: 1.4.0 p-queue: 6.6.2 unload: 2.4.1 dev: true @@ -6239,7 +6235,7 @@ packages: resolution: {integrity: sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==} dependencies: base64-js: 1.5.1 - ieee754: 1.1.13 + ieee754: 1.2.1 isarray: 1.0.0 dev: false @@ -6275,8 +6271,8 @@ packages: semver: 7.5.4 dev: true - /bull@4.11.3: - resolution: {integrity: sha512-DhS0XtiAuejkAY08iGOdDK35eex/yGNoezlWqGJTu9FqWFF/oBjUhpsusE9SXiI4culyDbOoFs+l3ar0VXhFqQ==} + /bull@4.11.5: + resolution: {integrity: sha512-9jazyvBBYr55IRDkfJh/mJjWiq8NJUMoCC5zTuBX4JhkZvVXegnwsaIa1jr3x9xwSxGvWEhwQ9lt1jlCT5j6pQ==} engines: {node: '>=12'} dependencies: cron-parser: 4.8.1 @@ -6309,15 +6305,15 @@ packages: engines: {node: '>= 0.8'} dev: false - /cacache@17.1.3: - resolution: {integrity: sha512-jAdjGxmPxZh0IipMdR7fK/4sDSrHMLUV0+GvVUsjwyGNKHsh79kW/otg+GkbXwl6Uzvy9wsvHOX4nUoWldeZMg==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + /cacache@18.0.0: + resolution: {integrity: sha512-I7mVOPl3PUCeRub1U8YoGz2Lqv9WOBpobZ8RyWFXmReuILz+3OAyTa5oH3QPdtKZD7N0Yk00aLfzn0qvp8dZ1w==} + engines: {node: ^16.14.0 || >=18.0.0} dependencies: '@npmcli/fs': 3.1.0 fs-minipass: 3.0.2 - glob: 10.3.3 - lru-cache: 7.18.3 - minipass: 5.0.0 + glob: 10.3.10 + lru-cache: 10.0.2 + minipass: 7.0.4 minipass-collect: 1.0.2 minipass-flush: 1.0.5 minipass-pipeline: 1.2.4 @@ -6484,11 +6480,11 @@ packages: nofilter: 3.1.0 dev: true - /chalk-template@0.4.0: - resolution: {integrity: sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg==} - engines: {node: '>=12'} + /chalk-template@1.1.0: + resolution: {integrity: sha512-T2VJbcDuZQ0Tb2EWwSotMPJjgpy1/tGee1BTpUNsGZ/qgNjV2t7Mvu+d4600U564nbLesN1x2dPL+xii174Ekg==} + engines: {node: '>=14.16'} dependencies: - chalk: 4.1.2 + chalk: 5.3.0 dev: false /chalk@1.1.3: @@ -6843,6 +6839,7 @@ packages: /cluster-key-slot@1.1.2: resolution: {integrity: sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==} engines: {node: '>=0.10.0'} + dev: false /co-body@5.2.0: resolution: {integrity: sha512-sX/LQ7LqUhgyaxzbe7IqwPeTr2yfpfUIQ/dgpKo6ZI4y4lpQA0YxAomWIY+7I7rHWcG02PG+OuPREzMW/5tszQ==} @@ -6986,12 +6983,13 @@ packages: /commander@10.0.1: resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} engines: {node: '>=14'} + dev: false /commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - /commander@5.1.0: - resolution: {integrity: sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==} + /commander@6.2.1: + resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==} engines: {node: '>= 6'} dev: true @@ -7011,8 +7009,8 @@ packages: requiresBuild: true dev: true - /comment-parser@1.4.0: - resolution: {integrity: sha512-QLyTNiZ2KDOibvFPlZ6ZngVsZ/0gYnE6uTXi5aoDg8ed3AkJAz4sEje3Y8a29hQ1s6A99MZXe47fLAXQ1rTqaw==} + /comment-parser@1.4.1: + resolution: {integrity: sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==} engines: {node: '>= 12.0.0'} dev: true @@ -7033,12 +7031,12 @@ packages: resolution: {integrity: sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==} dev: true - /compress-commons@4.1.1: - resolution: {integrity: sha512-QLdDLCKNV2dtoTorqgxngQCMA+gWXkM/Nwu7FpeBhk/RdkzimqC3jueb/FDmaZeXh+uby1jkBqE3xArsLBE5wQ==} - engines: {node: '>= 10'} + /compress-commons@5.0.1: + resolution: {integrity: sha512-MPh//1cERdLtqwO3pOFLeXtpuai0Y2WCd5AhtKxznqM7WtaMYaOEMSgn45d9D10sIHSfIKE603HlOp8OPGrvag==} + engines: {node: '>= 12.0.0'} dependencies: - buffer-crc32: 0.2.13 - crc32-stream: 4.0.2 + crc-32: 1.2.2 + crc32-stream: 5.0.0 normalize-path: 3.0.0 readable-stream: 3.6.2 dev: false @@ -7076,12 +7074,14 @@ packages: extend-shallow: 2.0.1 is-whitespace: 0.3.0 kind-of: 3.2.2 + dev: false /config-chain@1.1.13: resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} dependencies: ini: 1.3.8 proto-list: 1.2.4 + dev: false /console-control-strings@1.1.0: resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} @@ -7256,6 +7256,7 @@ packages: bluebird: 3.7.2 ejs: 3.1.9 pug: 3.0.2 + dev: false /constantinople@4.0.1: resolution: {integrity: sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw==} @@ -7315,11 +7316,6 @@ packages: requiresBuild: true dev: false - /core-js@3.32.0: - resolution: {integrity: sha512-rd4rYZNlF3WuoYuRIDEmbR/ga9CeuWX9U05umAvgrrZoHY4Z++cp/xwPQMvUpBB4Ag6J8KfD80G0zwCyaSxDww==} - requiresBuild: true - dev: false - /core-js@3.33.0: resolution: {integrity: sha512-HoZr92+ZjFEKar5HS6MC776gYslNOKHt75mEBKWKnPeFDpZ6nH5OeF3S6HFT1mUAUZKrzkez05VboaX8myjSuw==} requiresBuild: true @@ -7337,9 +7333,9 @@ packages: hasBin: true dev: false - /crc32-stream@4.0.2: - resolution: {integrity: sha512-DxFZ/Hk473b/muq1VJ///PMNLj0ZMnzye9thBpmjpJKCc5eMgB95aK8zCGrGfQ90cWo561Te6HK9D+j4KPdM6w==} - engines: {node: '>= 10'} + /crc32-stream@5.0.0: + resolution: {integrity: sha512-B0EPa1UK+qnpBZpG+7FgPCu0J2ETLpXq09o9BkLkEAhdB6Z61Qo4pJ3JYu0c+Qi+/SAL7QThqnzS06pmSSyZaw==} + engines: {node: '>= 12.0.0'} dependencies: crc-32: 1.2.2 readable-stream: 3.6.2 @@ -7354,7 +7350,7 @@ packages: chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@18.11.18)(ts-node@10.9.1) + jest-config: 29.7.0(@types/node@18.11.18) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -7364,7 +7360,7 @@ packages: - ts-node dev: true - /create-jest@29.7.0(@types/node@20.8.7)(ts-node@10.9.1): + /create-jest@29.7.0(@types/node@20.9.0)(ts-node@10.9.1): resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -7373,7 +7369,7 @@ packages: chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@20.8.7)(ts-node@10.9.1) + jest-config: 29.7.0(@types/node@20.9.0)(ts-node@10.9.1) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -7537,15 +7533,15 @@ packages: uniq: 1.0.1 dev: false - /cypress@10.11.0: - resolution: {integrity: sha512-lsaE7dprw5DoXM00skni6W5ElVVLGAdRUUdZjX2dYsGjbY/QnpzWZ95Zom1mkGg0hAaO/QVTZoFVS7Jgr/GUPA==} - engines: {node: '>=12.0.0'} + /cypress@13.5.1: + resolution: {integrity: sha512-yqLViT0D/lPI8Kkm7ciF/x/DCK/H/DnogdGyiTnQgX4OVR2aM30PtK+kvklTOD1u3TuItiD9wUQAF8EYWtyZug==} + engines: {node: ^16.0.0 || ^18.0.0 || >=20.0.0} hasBin: true requiresBuild: true dependencies: - '@cypress/request': 2.88.12 + '@cypress/request': 3.0.1 '@cypress/xvfb': 1.2.4(supports-color@8.1.1) - '@types/node': 14.18.63 + '@types/node': 18.18.9 '@types/sinonjs__fake-timers': 8.1.1 '@types/sizzle': 2.3.3 arch: 2.2.0 @@ -7557,9 +7553,9 @@ packages: check-more-types: 2.24.0 cli-cursor: 3.1.0 cli-table3: 0.6.3 - commander: 5.1.0 + commander: 6.2.1 common-tags: 1.8.2 - dayjs: 1.11.9 + dayjs: 1.11.10 debug: 4.3.4(supports-color@8.1.1) enquirer: 2.4.1 eventemitter2: 6.4.7 @@ -7578,6 +7574,7 @@ packages: minimist: 1.2.8 ospath: 1.2.2 pretty-bytes: 5.6.0 + process: 0.11.10 proxy-from-env: 1.0.0 request-progress: 3.0.0 semver: 7.5.4 @@ -7606,6 +7603,7 @@ packages: /data-uri-to-buffer@4.0.1: resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} engines: {node: '>= 12'} + dev: false /date-fns@2.30.0: resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} @@ -7622,11 +7620,6 @@ packages: /dayjs@1.11.10: resolution: {integrity: sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==} - dev: false - - /dayjs@1.11.9: - resolution: {integrity: sha512-QvzAURSbQ0pKdIye2txOzNaHmxtUBXerpY0FJsFXUMKbIZeFm5ht1LS/jFsrncjnmtv8HsG0W2g6c0zUjZWmpA==} - dev: true /debug@2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} @@ -7900,6 +7893,7 @@ packages: /depd@1.1.2: resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} engines: {node: '>= 0.6'} + dev: false /depd@2.0.0: resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} @@ -8081,6 +8075,7 @@ packages: commander: 10.0.1 minimatch: 9.0.1 semver: 7.5.4 + dev: false /ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} @@ -8092,6 +8087,7 @@ packages: hasBin: true dependencies: jake: 10.8.7 + dev: false /electron-to-chromium@1.4.488: resolution: {integrity: sha512-Dv4sTjiW7t/UWGL+H8ZkgIjtUAVZDgb/PwGWvMsCT7jipzUV/u5skbLXPFKb6iV0tiddVi/bcS2/kUrczeWgIQ==} @@ -8308,34 +8304,34 @@ packages: es6-symbol: 3.1.3 dev: true - /esbuild@0.18.20: - resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} + /esbuild@0.19.5: + resolution: {integrity: sha512-bUxalY7b1g8vNhQKdB24QDmHeY4V4tw/s6Ak5z+jJX9laP5MoQseTOMemAr0gxssjNcH0MCViG8ONI2kksvfFQ==} engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: - '@esbuild/android-arm': 0.18.20 - '@esbuild/android-arm64': 0.18.20 - '@esbuild/android-x64': 0.18.20 - '@esbuild/darwin-arm64': 0.18.20 - '@esbuild/darwin-x64': 0.18.20 - '@esbuild/freebsd-arm64': 0.18.20 - '@esbuild/freebsd-x64': 0.18.20 - '@esbuild/linux-arm': 0.18.20 - '@esbuild/linux-arm64': 0.18.20 - '@esbuild/linux-ia32': 0.18.20 - '@esbuild/linux-loong64': 0.18.20 - '@esbuild/linux-mips64el': 0.18.20 - '@esbuild/linux-ppc64': 0.18.20 - '@esbuild/linux-riscv64': 0.18.20 - '@esbuild/linux-s390x': 0.18.20 - '@esbuild/linux-x64': 0.18.20 - '@esbuild/netbsd-x64': 0.18.20 - '@esbuild/openbsd-x64': 0.18.20 - '@esbuild/sunos-x64': 0.18.20 - '@esbuild/win32-arm64': 0.18.20 - '@esbuild/win32-ia32': 0.18.20 - '@esbuild/win32-x64': 0.18.20 + '@esbuild/android-arm': 0.19.5 + '@esbuild/android-arm64': 0.19.5 + '@esbuild/android-x64': 0.19.5 + '@esbuild/darwin-arm64': 0.19.5 + '@esbuild/darwin-x64': 0.19.5 + '@esbuild/freebsd-arm64': 0.19.5 + '@esbuild/freebsd-x64': 0.19.5 + '@esbuild/linux-arm': 0.19.5 + '@esbuild/linux-arm64': 0.19.5 + '@esbuild/linux-ia32': 0.19.5 + '@esbuild/linux-loong64': 0.19.5 + '@esbuild/linux-mips64el': 0.19.5 + '@esbuild/linux-ppc64': 0.19.5 + '@esbuild/linux-riscv64': 0.19.5 + '@esbuild/linux-s390x': 0.19.5 + '@esbuild/linux-x64': 0.19.5 + '@esbuild/netbsd-x64': 0.19.5 + '@esbuild/openbsd-x64': 0.19.5 + '@esbuild/sunos-x64': 0.19.5 + '@esbuild/win32-arm64': 0.19.5 + '@esbuild/win32-ia32': 0.19.5 + '@esbuild/win32-x64': 0.19.5 dev: true /escalade@3.1.1: @@ -8367,6 +8363,15 @@ packages: engines: {node: '>=12'} dev: true + /eslint-compat-utils@0.1.2(eslint@8.53.0): + resolution: {integrity: sha512-Jia4JDldWnFNIru1Ehx1H5s9/yxiRHY/TimCuUc0jNexew3cF1gI6CYZil1ociakfWO3rRqFjl1mskBblB3RYg==} + engines: {node: '>=12'} + peerDependencies: + eslint: '>=6.0.0' + dependencies: + eslint: 8.53.0 + dev: true + /eslint-config-prettier@8.9.0(eslint@8.46.0): resolution: {integrity: sha512-+sbni7NfVXnOpnRadUA8S28AUlsZt9GjgFvABIRL9Hkn8KqNzOp+7Lw4QWtrwn20KzU3wqu1QoOj2m+7rKRqkA==} hasBin: true @@ -8376,22 +8381,22 @@ packages: eslint: 8.46.0 dev: true - /eslint-config-prettier@8.9.0(eslint@8.51.0): + /eslint-config-prettier@8.9.0(eslint@8.53.0): resolution: {integrity: sha512-+sbni7NfVXnOpnRadUA8S28AUlsZt9GjgFvABIRL9Hkn8KqNzOp+7Lw4QWtrwn20KzU3wqu1QoOj2m+7rKRqkA==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 8.51.0 + eslint: 8.53.0 dev: true - /eslint-config-prettier@9.0.0(eslint@8.51.0): + /eslint-config-prettier@9.0.0(eslint@8.53.0): resolution: {integrity: sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 8.51.0 + eslint: 8.53.0 dev: true /eslint-config-standard@16.0.3(eslint-plugin-import@2.28.0)(eslint-plugin-node@11.1.0)(eslint-plugin-promise@6.1.1)(eslint@8.46.0): @@ -8461,7 +8466,7 @@ packages: - supports-color dev: true - /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint@8.51.0): + /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint@8.53.0): resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -8482,15 +8487,15 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.62.0(eslint@8.51.0)(typescript@5.2.2) + '@typescript-eslint/parser': 5.62.0(eslint@8.53.0)(typescript@5.2.2) debug: 3.2.7(supports-color@8.1.1) - eslint: 8.51.0 + eslint: 8.53.0 eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color dev: true - /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.3.0)(eslint-import-resolver-node@0.3.9)(eslint@8.51.0): + /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.11.0)(eslint-import-resolver-node@0.3.9)(eslint@8.53.0): resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -8511,23 +8516,23 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 6.3.0(eslint@8.51.0)(typescript@5.2.2) + '@typescript-eslint/parser': 6.11.0(eslint@8.53.0)(typescript@5.2.2) debug: 3.2.7(supports-color@8.1.1) - eslint: 8.51.0 + eslint: 8.53.0 eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-es-x@7.2.0(eslint@8.51.0): + /eslint-plugin-es-x@7.2.0(eslint@8.53.0): resolution: {integrity: sha512-9dvv5CcvNjSJPqnS5uZkqb3xmbeqRLnvXKK7iI5+oK/yTusyc46zbBZKENGsOfojm/mKfszyZb+wNqNPAPeGXA==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: eslint: '>=8' dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.51.0) - '@eslint-community/regexpp': 4.6.2 - eslint: 8.51.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.53.0) + '@eslint-community/regexpp': 4.9.1 + eslint: 8.53.0 dev: true /eslint-plugin-es@3.0.1(eslint@8.46.0): @@ -8541,35 +8546,35 @@ packages: regexpp: 3.2.0 dev: true - /eslint-plugin-es@4.1.0(eslint@8.51.0): + /eslint-plugin-es@4.1.0(eslint@8.53.0): resolution: {integrity: sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==} engines: {node: '>=8.10.0'} peerDependencies: eslint: '>=4.19.1' dependencies: - eslint: 8.51.0 + eslint: 8.53.0 eslint-utils: 2.1.0 regexpp: 3.2.0 dev: true - /eslint-plugin-eslint-comments@3.2.0(eslint@8.51.0): + /eslint-plugin-eslint-comments@3.2.0(eslint@8.53.0): resolution: {integrity: sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==} engines: {node: '>=6.5.0'} peerDependencies: eslint: '>=4.19.1' dependencies: escape-string-regexp: 1.0.5 - eslint: 8.51.0 + eslint: 8.53.0 ignore: 5.2.4 dev: true - /eslint-plugin-file-progress@1.3.0(eslint@8.51.0): + /eslint-plugin-file-progress@1.3.0(eslint@8.53.0): resolution: {integrity: sha512-LncpnGHU26KPvCrvDC2Sl9PfjdrsG8qltgiK6BR7KybWtfqrdlsu1ax3+hyPMn5OkKBTF3Wki3oqK1MSMeOtQw==} peerDependencies: eslint: ^7.0.0 || ^8.0.0 dependencies: chalk: 4.1.2 - eslint: 8.51.0 + eslint: 8.53.0 ora: 5.4.1 dev: true @@ -8615,7 +8620,7 @@ packages: - supports-color dev: true - /eslint-plugin-import@2.28.0(@typescript-eslint/parser@5.62.0)(eslint@8.51.0): + /eslint-plugin-import@2.28.0(@typescript-eslint/parser@5.62.0)(eslint@8.53.0): resolution: {integrity: sha512-B8s/n+ZluN7sxj9eUf7/pRFERX0r5bnFA2dCaLHy2ZeaQEAz0k+ZZkFWRFHJAqxfxQDx6KLv9LeIki7cFdwW+Q==} engines: {node: '>=4'} peerDependencies: @@ -8625,16 +8630,16 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.62.0(eslint@8.51.0)(typescript@5.2.2) + '@typescript-eslint/parser': 5.62.0(eslint@8.53.0)(typescript@5.2.2) array-includes: 3.1.6 array.prototype.findlastindex: 1.2.2 array.prototype.flat: 1.3.1 array.prototype.flatmap: 1.3.1 debug: 3.2.7(supports-color@8.1.1) doctrine: 2.1.0 - eslint: 8.51.0 + eslint: 8.53.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint@8.51.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint@8.53.0) has: 1.0.3 is-core-module: 2.13.0 is-glob: 4.0.3 @@ -8651,8 +8656,8 @@ packages: - supports-color dev: true - /eslint-plugin-import@2.28.0(@typescript-eslint/parser@6.3.0)(eslint@8.51.0): - resolution: {integrity: sha512-B8s/n+ZluN7sxj9eUf7/pRFERX0r5bnFA2dCaLHy2ZeaQEAz0k+ZZkFWRFHJAqxfxQDx6KLv9LeIki7cFdwW+Q==} + /eslint-plugin-import@2.29.0(@typescript-eslint/parser@6.11.0)(eslint@8.53.0): + resolution: {integrity: sha512-QPOO5NO6Odv5lpoTkddtutccQjysJuFxoPS7fAHO+9m9udNHvTCPSAMW9zGAYj8lAIdr40I8yPCdUYrncXtrwg==} engines: {node: '>=4'} peerDependencies: '@typescript-eslint/parser': '*' @@ -8661,24 +8666,23 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 6.3.0(eslint@8.51.0)(typescript@5.2.2) - array-includes: 3.1.6 - array.prototype.findlastindex: 1.2.2 - array.prototype.flat: 1.3.1 - array.prototype.flatmap: 1.3.1 + '@typescript-eslint/parser': 6.11.0(eslint@8.53.0)(typescript@5.2.2) + array-includes: 3.1.7 + array.prototype.findlastindex: 1.2.3 + array.prototype.flat: 1.3.2 + array.prototype.flatmap: 1.3.2 debug: 3.2.7(supports-color@8.1.1) doctrine: 2.1.0 - eslint: 8.51.0 + eslint: 8.53.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.3.0)(eslint-import-resolver-node@0.3.9)(eslint@8.51.0) - has: 1.0.3 - is-core-module: 2.13.0 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.11.0)(eslint-import-resolver-node@0.3.9)(eslint@8.53.0) + hasown: 2.0.0 + is-core-module: 2.13.1 is-glob: 4.0.3 minimatch: 3.1.2 - object.fromentries: 2.0.6 - object.groupby: 1.0.0 - object.values: 1.1.6 - resolve: 1.22.4 + object.fromentries: 2.0.7 + object.groupby: 1.0.1 + object.values: 1.1.7 semver: 6.3.1 tsconfig-paths: 3.14.2 transitivePeerDependencies: @@ -8687,18 +8691,18 @@ packages: - supports-color dev: true - /eslint-plugin-jsdoc@46.4.6(eslint@8.51.0): - resolution: {integrity: sha512-z4SWYnJfOqftZI+b3RM9AtWL1vF/sLWE/LlO9yOKDof9yN2+n3zOdOJTGX/pRE/xnPsooOLG2Rq6e4d+XW3lNw==} + /eslint-plugin-jsdoc@46.9.0(eslint@8.53.0): + resolution: {integrity: sha512-UQuEtbqLNkPf5Nr/6PPRCtr9xypXY+g8y/Q7gPa0YK7eDhh0y2lWprXRnaYbW7ACgIUvpDKy9X2bZqxtGzBG9Q==} engines: {node: '>=16'} peerDependencies: eslint: ^7.0.0 || ^8.0.0 dependencies: - '@es-joy/jsdoccomment': 0.40.1 + '@es-joy/jsdoccomment': 0.41.0 are-docs-informative: 0.0.2 - comment-parser: 1.4.0 + comment-parser: 1.4.1 debug: 4.3.4(supports-color@8.1.1) escape-string-regexp: 4.0.0 - eslint: 8.51.0 + eslint: 8.53.0 esquery: 1.5.0 is-builtin-module: 3.2.1 semver: 7.5.4 @@ -8707,40 +8711,53 @@ packages: - supports-color dev: true - /eslint-plugin-jsonc@2.9.0(eslint@8.51.0): + /eslint-plugin-jsonc@2.10.0(eslint@8.53.0): + resolution: {integrity: sha512-9d//o6Jyh4s1RxC9fNSt1+MMaFN2ruFdXPG9XZcb/mR2KkfjADYiNL/hbU6W0Cyxfg3tS/XSFuhl5LgtMD8hmw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '>=6.0.0' + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.53.0) + eslint: 8.53.0 + eslint-compat-utils: 0.1.2(eslint@8.53.0) + jsonc-eslint-parser: 2.3.0 + natural-compare: 1.4.0 + dev: true + + /eslint-plugin-jsonc@2.9.0(eslint@8.53.0): resolution: {integrity: sha512-RK+LeONVukbLwT2+t7/OY54NJRccTXh/QbnXzPuTLpFMVZhPuq1C9E07+qWenGx7rrQl0kAalAWl7EmB+RjpGA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '>=6.0.0' dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.51.0) - eslint: 8.51.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.53.0) + eslint: 8.53.0 jsonc-eslint-parser: 2.3.0 natural-compare: 1.4.0 dev: true - /eslint-plugin-markdown@3.0.1(eslint@8.51.0): + /eslint-plugin-markdown@3.0.1(eslint@8.53.0): resolution: {integrity: sha512-8rqoc148DWdGdmYF6WSQFT3uQ6PO7zXYgeBpHAOAakX/zpq+NvFYbDA/H7PYzHajwtmaOzAwfxyl++x0g1/N9A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - eslint: 8.51.0 + eslint: 8.53.0 mdast-util-from-markdown: 0.8.5 transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-n@15.7.0(eslint@8.51.0): + /eslint-plugin-n@15.7.0(eslint@8.53.0): resolution: {integrity: sha512-jDex9s7D/Qial8AGVIHq4W7NswpUD5DPDL2RH8Lzd9EloWUuvUkHfv4FRLMipH5q2UtyurorBkPeNi1wVWNh3Q==} engines: {node: '>=12.22.0'} peerDependencies: eslint: '>=7.0.0' dependencies: builtins: 5.0.1 - eslint: 8.51.0 - eslint-plugin-es: 4.1.0(eslint@8.51.0) - eslint-utils: 3.0.0(eslint@8.51.0) + eslint: 8.53.0 + eslint-plugin-es: 4.1.0(eslint@8.53.0) + eslint-utils: 3.0.0(eslint@8.53.0) ignore: 5.2.4 is-core-module: 2.13.0 minimatch: 3.1.2 @@ -8748,20 +8765,22 @@ packages: semver: 7.5.4 dev: true - /eslint-plugin-n@16.0.1(eslint@8.51.0): - resolution: {integrity: sha512-CDmHegJN0OF3L5cz5tATH84RPQm9kG+Yx39wIqIwPR2C0uhBGMWfbbOtetR83PQjjidA5aXMu+LEFw1jaSwvTA==} + /eslint-plugin-n@16.3.1(eslint@8.53.0): + resolution: {integrity: sha512-w46eDIkxQ2FaTHcey7G40eD+FhTXOdKudDXPUO2n9WNcslze/i/HT2qJ3GXjHngYSGDISIgPNhwGtgoix4zeOw==} engines: {node: '>=16.0.0'} peerDependencies: eslint: '>=7.0.0' dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.51.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.53.0) builtins: 5.0.1 - eslint: 8.51.0 - eslint-plugin-es-x: 7.2.0(eslint@8.51.0) + eslint: 8.53.0 + eslint-plugin-es-x: 7.2.0(eslint@8.53.0) + get-tsconfig: 4.7.2 ignore: 5.2.4 + is-builtin-module: 3.2.1 is-core-module: 2.13.0 minimatch: 3.1.2 - resolve: 1.22.4 + resolve: 1.22.8 semver: 7.5.4 dev: true @@ -8797,7 +8816,7 @@ packages: prettier-linter-helpers: 1.0.0 dev: true - /eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.9.0)(eslint@8.51.0)(prettier@3.0.3): + /eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.9.0)(eslint@8.53.0)(prettier@3.1.0): resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} engines: {node: '>=12.0.0'} peerDependencies: @@ -8808,14 +8827,14 @@ packages: eslint-config-prettier: optional: true dependencies: - eslint: 8.51.0 - eslint-config-prettier: 8.9.0(eslint@8.51.0) - prettier: 3.0.3 + eslint: 8.53.0 + eslint-config-prettier: 8.9.0(eslint@8.53.0) + prettier: 3.1.0 prettier-linter-helpers: 1.0.0 dev: true - /eslint-plugin-prettier@5.0.0(eslint-config-prettier@9.0.0)(eslint@8.51.0)(prettier@3.0.3): - resolution: {integrity: sha512-AgaZCVuYDXHUGxj/ZGu1u8H8CYgDY3iG6w5kUFw4AzMVXzB7VvbKgYR4nATIN+OvUrghMbiDLeimVjVY5ilq3w==} + /eslint-plugin-prettier@5.0.1(eslint-config-prettier@9.0.0)(eslint@8.53.0)(prettier@3.1.0): + resolution: {integrity: sha512-m3u5RnR56asrwV/lDC4GHorlW75DsFfmUcjfCYylTUs85dBRnB7VM6xG8eCMJdeDRnppzmxZVf1GEPJvl1JmNg==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: '@types/eslint': '>=8.0.0' @@ -8828,20 +8847,20 @@ packages: eslint-config-prettier: optional: true dependencies: - eslint: 8.51.0 - eslint-config-prettier: 9.0.0(eslint@8.51.0) - prettier: 3.0.3 + eslint: 8.53.0 + eslint-config-prettier: 9.0.0(eslint@8.53.0) + prettier: 3.1.0 prettier-linter-helpers: 1.0.0 synckit: 0.8.5 dev: true - /eslint-plugin-promise@5.2.0(eslint@8.51.0): + /eslint-plugin-promise@5.2.0(eslint@8.53.0): resolution: {integrity: sha512-SftLb1pUG01QYq2A/hGAWfDRXqYD82zE7j7TopDOyNdU+7SvvoXREls/+PRTY17vUXzXnZA/zfnyKgRH6x4JJw==} engines: {node: ^10.12.0 || >=12.0.0} peerDependencies: eslint: ^7.0.0 dependencies: - eslint: 8.51.0 + eslint: 8.53.0 dev: true /eslint-plugin-promise@6.1.1(eslint@8.46.0): @@ -8853,13 +8872,13 @@ packages: eslint: 8.46.0 dev: true - /eslint-plugin-promise@6.1.1(eslint@8.51.0): + /eslint-plugin-promise@6.1.1(eslint@8.53.0): resolution: {integrity: sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 dependencies: - eslint: 8.51.0 + eslint: 8.53.0 dev: true /eslint-plugin-standard@5.0.0(eslint@8.46.0): @@ -8878,17 +8897,17 @@ packages: '@microsoft/tsdoc-config': 0.16.2 dev: true - /eslint-plugin-unicorn@40.1.0(eslint@8.51.0): + /eslint-plugin-unicorn@40.1.0(eslint@8.53.0): resolution: {integrity: sha512-y5doK2DF9Sr5AqKEHbHxjFllJ167nKDRU01HDcWyv4Tnmaoe9iNxMrBnaybZvWZUaE3OC5Unu0lNIevYamloig==} engines: {node: '>=12'} peerDependencies: eslint: '>=7.32.0' dependencies: - '@babel/helper-validator-identifier': 7.22.5 - ci-info: 3.8.0 + '@babel/helper-validator-identifier': 7.22.20 + ci-info: 3.9.0 clean-regexp: 1.0.0 - eslint: 8.51.0 - eslint-utils: 3.0.0(eslint@8.51.0) + eslint: 8.53.0 + eslint-utils: 3.0.0(eslint@8.53.0) esquery: 1.5.0 indent-string: 4.0.0 is-builtin-module: 3.2.1 @@ -8901,17 +8920,17 @@ packages: strip-indent: 3.0.0 dev: true - /eslint-plugin-unicorn@45.0.2(eslint@8.51.0): + /eslint-plugin-unicorn@45.0.2(eslint@8.53.0): resolution: {integrity: sha512-Y0WUDXRyGDMcKLiwgL3zSMpHrXI00xmdyixEGIg90gHnj0PcHY4moNv3Ppje/kDivdAy5vUeUr7z211ImPv2gw==} engines: {node: '>=14.18'} peerDependencies: eslint: '>=8.28.0' dependencies: '@babel/helper-validator-identifier': 7.22.5 - '@eslint-community/eslint-utils': 4.4.0(eslint@8.51.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.53.0) ci-info: 3.9.0 clean-regexp: 1.0.0 - eslint: 8.51.0 + eslint: 8.53.0 esquery: 1.5.0 indent-string: 4.0.0 is-builtin-module: 3.2.1 @@ -8930,52 +8949,106 @@ packages: resolution: {integrity: sha512-WE+YlK9X9s4vf5EaYRU0Scw7WItDZStm+PapFSYlg2ABNtaQ4zIG7wEqpoUB3SlfM+SgkhgmzR0TeJOO5k3/Nw==} dev: true - /eslint-plugin-vue-scoped-css@2.5.0(eslint@8.51.0)(vue-eslint-parser@9.3.1): + /eslint-plugin-vue-scoped-css@2.5.0(eslint@8.53.0)(vue-eslint-parser@9.3.1): resolution: {integrity: sha512-vR+raYNE1aQ69lS1lZGiKoz8rXFI3MWf2fxrfns/XCQ0XT5sIguhDtQS+9JmUQJClenLDEe2CQx7P+eeSdF4cA==} engines: {node: ^12.22 || ^14.17 || >=16} peerDependencies: eslint: '>=5.0.0' vue-eslint-parser: '>=7.1.0' dependencies: - eslint: 8.51.0 - eslint-utils: 3.0.0(eslint@8.51.0) + eslint: 8.53.0 + eslint-utils: 3.0.0(eslint@8.53.0) lodash: 4.17.21 postcss: 8.4.27 postcss-safe-parser: 6.0.0(postcss@8.4.27) postcss-scss: 4.0.6(postcss@8.4.27) postcss-selector-parser: 6.0.13 postcss-styl: 0.12.3 - vue-eslint-parser: 9.3.1(eslint@8.51.0) + vue-eslint-parser: 9.3.1(eslint@8.53.0) transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-vue@9.16.1(eslint@8.51.0): + /eslint-plugin-vue-scoped-css@2.5.1(eslint@8.53.0)(vue-eslint-parser@9.3.2): + resolution: {integrity: sha512-ynbeCHd0dzkUBoL1q10GNpGh/BZD0Frw8Z8txPFyuhiHN2m5ZT6gvfe2GtdEs0Rq3+NE+5yexfz0PDX/bgKuJw==} + engines: {node: ^12.22 || ^14.17 || >=16} + peerDependencies: + eslint: '>=5.0.0' + vue-eslint-parser: '>=7.1.0' + dependencies: + eslint: 8.53.0 + eslint-utils: 3.0.0(eslint@8.53.0) + lodash: 4.17.21 + postcss: 8.4.31 + postcss-safe-parser: 6.0.0(postcss@8.4.31) + postcss-scss: 4.0.6(postcss@8.4.31) + postcss-selector-parser: 6.0.13 + postcss-styl: 0.12.3 + vue-eslint-parser: 9.3.2(eslint@8.53.0) + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-plugin-vue@9.16.1(eslint@8.53.0): resolution: {integrity: sha512-2FtnTqazA6aYONfDuOZTk0QzwhAwi7Z4+uJ7+GHeGxcKapjqWlDsRWDenvyG/utyOfAS5bVRmAG3cEWiYEz2bA==} engines: {node: ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.51.0) - eslint: 8.51.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.53.0) + eslint: 8.53.0 natural-compare: 1.4.0 nth-check: 2.1.1 postcss-selector-parser: 6.0.13 semver: 7.5.4 - vue-eslint-parser: 9.3.1(eslint@8.51.0) + vue-eslint-parser: 9.3.1(eslint@8.53.0) xml-name-validator: 4.0.0 transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-yml@1.8.0(eslint@8.51.0): + /eslint-plugin-vue@9.18.1(eslint@8.53.0): + resolution: {integrity: sha512-7hZFlrEgg9NIzuVik2I9xSnJA5RsmOfueYgsUGUokEDLJ1LHtxO0Pl4duje1BriZ/jDWb+44tcIlC3yi0tdlZg==} + engines: {node: ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.53.0) + eslint: 8.53.0 + natural-compare: 1.4.0 + nth-check: 2.1.1 + postcss-selector-parser: 6.0.13 + semver: 7.5.4 + vue-eslint-parser: 9.3.2(eslint@8.53.0) + xml-name-validator: 4.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-plugin-yml@1.10.0(eslint@8.53.0): + resolution: {integrity: sha512-53SUwuNDna97lVk38hL/5++WXDuugPM9SUQ1T645R0EHMRCdBIIxGye/oOX2qO3FQ7aImxaUZJU/ju+NMUBrLQ==} + engines: {node: ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '>=6.0.0' + dependencies: + debug: 4.3.4(supports-color@8.1.1) + eslint: 8.53.0 + eslint-compat-utils: 0.1.2(eslint@8.53.0) + lodash: 4.17.21 + natural-compare: 1.4.0 + yaml-eslint-parser: 1.2.2 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-plugin-yml@1.8.0(eslint@8.53.0): resolution: {integrity: sha512-fgBiJvXD0P2IN7SARDJ2J7mx8t0bLdG6Zcig4ufOqW5hOvSiFxeUyc2g5I1uIm8AExbo26NNYCcTGZT0MXTsyg==} engines: {node: ^14.17.0 || >=16.0.0} peerDependencies: eslint: '>=6.0.0' dependencies: debug: 4.3.4(supports-color@8.1.1) - eslint: 8.51.0 + eslint: 8.53.0 lodash: 4.17.21 natural-compare: 1.4.0 yaml-eslint-parser: 1.2.2 @@ -9010,13 +9083,13 @@ packages: eslint-visitor-keys: 1.3.0 dev: true - /eslint-utils@3.0.0(eslint@8.51.0): + /eslint-utils@3.0.0(eslint@8.53.0): resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} peerDependencies: eslint: '>=5' dependencies: - eslint: 8.51.0 + eslint: 8.53.0 eslint-visitor-keys: 2.1.0 dev: true @@ -9086,18 +9159,19 @@ packages: - supports-color dev: true - /eslint@8.51.0: - resolution: {integrity: sha512-2WuxRZBrlwnXi+/vFSJyjMqrNjtJqiasMzehF0shoLaW7DzS3/9Yvrmq5JiT66+pNjiX4UBnLDiKHcWAr/OInA==} + /eslint@8.53.0: + resolution: {integrity: sha512-N4VuiPjXDUa4xVeV/GC/RV3hQW9Nw+Y463lkWaKKXKYMvmRiRDAtfpuPFLN+E1/6ZhyR8J2ig+eVREnYgUsiag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.51.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.53.0) '@eslint-community/regexpp': 4.9.1 - '@eslint/eslintrc': 2.1.2 - '@eslint/js': 8.51.0 - '@humanwhocodes/config-array': 0.11.12 + '@eslint/eslintrc': 2.1.3 + '@eslint/js': 8.53.0 + '@humanwhocodes/config-array': 0.11.13 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 + '@ungap/structured-clone': 1.2.0 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 @@ -9138,7 +9212,7 @@ packages: dependencies: acorn: 8.10.0 acorn-jsx: 5.3.2(acorn@8.10.0) - eslint-visitor-keys: 3.4.2 + eslint-visitor-keys: 3.4.3 dev: true /esprima@2.7.3: @@ -9267,21 +9341,6 @@ packages: strip-final-newline: 2.0.0 dev: true - /execa@6.1.0: - resolution: {integrity: sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - cross-spawn: 7.0.3 - get-stream: 6.0.1 - human-signals: 3.0.1 - is-stream: 3.0.0 - merge-stream: 2.0.0 - npm-run-path: 5.1.0 - onetime: 6.0.0 - signal-exit: 3.0.7 - strip-final-newline: 3.0.0 - dev: true - /execa@7.2.0: resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==} engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} @@ -9297,6 +9356,21 @@ packages: strip-final-newline: 3.0.0 dev: true + /execa@8.0.1: + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} + engines: {node: '>=16.17'} + dependencies: + cross-spawn: 7.0.3 + get-stream: 8.0.1 + human-signals: 5.0.0 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.1.0 + onetime: 6.0.0 + signal-exit: 4.1.0 + strip-final-newline: 3.0.0 + dev: true + /executable@4.1.1: resolution: {integrity: sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==} engines: {node: '>=4'} @@ -9512,6 +9586,7 @@ packages: dependencies: node-domexception: 1.0.0 web-streams-polyfill: 3.2.1 + dev: false /figures@3.2.0: resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} @@ -9544,8 +9619,8 @@ packages: token-types: 5.0.1 dev: true - /file-type@18.5.0: - resolution: {integrity: sha512-yvpl5U868+V6PqXHMmsESpg6unQ5GfnPssl4dxdJudBrr9qy7Fddt7EVX1VLlddFfe8Gj9N7goCZH22FXuSQXQ==} + /file-type@18.7.0: + resolution: {integrity: sha512-ihHtXRzXEziMrQ56VSgU7wkxh55iNchFkosu7Y9/S+tXHdKyrGjVK0ujbqNnsxzea+78MaLhN6PGmfYSAv1ACw==} engines: {node: '>=14.16'} dependencies: readable-web-to-node-stream: 3.0.2 @@ -9572,6 +9647,7 @@ packages: resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} dependencies: minimatch: 5.1.6 + dev: false /filename-reserved-regex@3.0.0: resolution: {integrity: sha512-hn4cQfU6GOT/7cFHXBqeBg2TbrMBgdD0kcjLhvSQYYwm3s4B6cjvBfb7nBALJLAXqmU5xajSa7X2NnUud/VCdw==} @@ -9728,18 +9804,18 @@ packages: readable-stream: 2.3.8 dev: true - /focus-trap-vue@4.0.2(focus-trap@7.5.2)(vue@3.3.4): - resolution: {integrity: sha512-2iQN2xKCSCzyhcD90VpueQcTIAhaCRxxo67fkz7RSqLmEd16QKjfGslCr3KxvBx0LfpVN9j0IAyKKuJKw3Intg==} + /focus-trap-vue@4.0.3(focus-trap@7.5.4)(vue@3.3.8): + resolution: {integrity: sha512-cIX5rybkCAlNZ4IHYJ3nCFIsipDDljJHHjtTO2IgYWkVYg7X9ipUVdab3HzYp88kmHgMwjcB71LYnXRRsF6ZqQ==} peerDependencies: focus-trap: ^7.0.0 vue: ^3.0.0 dependencies: - focus-trap: 7.5.2 - vue: 3.3.4 + focus-trap: 7.5.4 + vue: 3.3.8(typescript@5.2.2) dev: true - /focus-trap@7.5.2: - resolution: {integrity: sha512-p6vGNNWLDGwJCiEjkSK6oERj/hEyI9ITsSwIUICBoKLlWiTWXJRfQibCwcoi50rTZdbi87qDtUlMCmQwsGSgPw==} + /focus-trap@7.5.4: + resolution: {integrity: sha512-N7kHdlgsO/v+iD/dMoJKtsSqs5Dz/dXZVebRgJw23LDk+jMi/974zyiOYDziY2JPp8xivq9BmUGwIJMiuSBi7w==} dependencies: tabbable: 6.2.0 dev: true @@ -9796,16 +9872,6 @@ packages: combined-stream: 1.0.8 mime-types: 2.1.35 - /form-data@3.0.1: - resolution: {integrity: sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==} - engines: {node: '>= 6'} - requiresBuild: true - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - mime-types: 2.1.35 - dev: false - /form-data@4.0.0: resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} engines: {node: '>= 6'} @@ -9819,6 +9885,7 @@ packages: engines: {node: '>=12.20.0'} dependencies: fetch-blob: 3.2.0 + dev: false /formidable@2.1.2: resolution: {integrity: sha512-CM3GuJ57US06mlpQ47YcunuUZ9jpm8Vx+P2CGt2j7HpgkKZO/DJYQ0Bobim8G6PFQmK5lOqOOdUXboU+h73A4g==} @@ -9934,6 +10001,10 @@ packages: /function-bind@1.1.1: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} + /function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + dev: true + /function.prototype.name@1.1.5: resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} engines: {node: '>= 0.4'} @@ -9964,25 +10035,6 @@ packages: wide-align: 1.1.5 dev: false - /gauge@4.0.4: - resolution: {integrity: sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - dependencies: - aproba: 2.0.0 - color-support: 1.1.3 - console-control-strings: 1.1.0 - has-unicode: 2.0.1 - signal-exit: 3.0.7 - string-width: 4.2.3 - strip-ansi: 6.0.1 - wide-align: 1.1.5 - dev: false - - /generic-pool@3.9.0: - resolution: {integrity: sha512-hymDOu5B53XvN4QT9dBmZxPX4CWhBPPLguTZ9MMFeFa/Kg0xWVfylOVNlJji/E7yTZWFd/q9GO5TxDLq156D7g==} - engines: {node: '>= 4'} - dev: true - /gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} @@ -10013,6 +10065,7 @@ packages: engines: {node: '>=6.4'} dependencies: pify: 4.0.1 + dev: false /get-pixels-frame-info-update@3.3.2: resolution: {integrity: sha512-LzVij57X/gK4Y6LpcDdqj+R9WCpD6Sv3ZH85GMA+S3xgPGCz81mHql4GiSnF4GijRjk7TE0ja2sDr8FFYKLe2g==} @@ -10058,6 +10111,11 @@ packages: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} + /get-stream@8.0.1: + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} + engines: {node: '>=16'} + dev: true + /get-symbol-description@1.0.0: resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} engines: {node: '>= 0.4'} @@ -10066,6 +10124,12 @@ packages: get-intrinsic: 1.2.1 dev: true + /get-tsconfig@4.7.2: + resolution: {integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==} + dependencies: + resolve-pkg-maps: 1.0.0 + dev: true + /get-value@2.0.6: resolution: {integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==} engines: {node: '>=0.10.0'} @@ -10148,13 +10212,13 @@ packages: - supports-color dev: true - /glob@10.3.3: - resolution: {integrity: sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==} + /glob@10.3.10: + resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} engines: {node: '>=16 || 14 >=14.17'} hasBin: true dependencies: foreground-child: 3.1.1 - jackspeak: 2.2.2 + jackspeak: 2.3.6 minimatch: 9.0.3 minipass: 5.0.0 path-scurry: 1.10.1 @@ -10190,6 +10254,7 @@ packages: inherits: 2.0.4 minimatch: 5.1.6 once: 1.4.0 + dev: false /global-dirs@3.0.1: resolution: {integrity: sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==} @@ -10392,7 +10457,7 @@ packages: resolution: {integrity: sha512-SVSF7ikuWKhpAW4l4wapAqPPSToJoiNKsbDoUnRrSgwZHH7lH8pbPeQj1aOVYQrbZKhfSVBxVW+Py7vtulRktw==} engines: {node: '>=10'} dependencies: - '@types/node': 20.5.8 + '@types/node': 20.9.0 '@types/vinyl': 2.0.7 istextorbinary: 3.3.0 replacestream: 4.0.3 @@ -10446,8 +10511,8 @@ packages: engines: {node: '>=0.8.0'} dev: true - /happy-dom@11.2.0: - resolution: {integrity: sha512-z4PshcYIIH6SkymSNRcDFwYUJOENe+FOQDx5BbHgg/wQUgxF5p9I9/BN45Jff34bbhXV8yJgkC5N99eyOzXK3w==} + /happy-dom@12.10.3: + resolution: {integrity: sha512-JzUXOh0wdNGY54oKng5hliuBkq/+aT1V3YpTM+lrN/GoLQTANZsMaIvmHiHe612rauHvPJnDZkZ+5GZR++1Abg==} dependencies: css.escape: 1.5.1 entities: 4.5.0 @@ -10561,6 +10626,13 @@ packages: dependencies: function-bind: 1.1.1 + /hasown@2.0.0: + resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} + engines: {node: '>= 0.4'} + dependencies: + function-bind: 1.1.2 + dev: true + /he@1.2.0: resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} hasBin: true @@ -10593,10 +10665,6 @@ packages: lru-cache: 6.0.0 dev: true - /hpagent@0.1.2: - resolution: {integrity: sha512-ePqFXHtSQWAFXYmj+JtOTHr84iNrII4/QRlAAPPE+zqnKy4xJo7Ie1Y4kC7AdB+LxLxSTTzBMASsEcy0q8YyvQ==} - dev: false - /hpagent@1.2.0: resolution: {integrity: sha512-A91dYTeIB6NoXG+PxTQpCCDDnfHsW9kc06Lvpu1TEe9gnd6ZFeiBoRO9JvzEv6xK7EX97/dUE8g/vBMTqTS3CA==} engines: {node: '>=14'} @@ -10652,6 +10720,7 @@ packages: inherits: 2.0.3 setprototypeof: 1.1.0 statuses: 1.5.0 + dev: false /http-errors@1.8.1: resolution: {integrity: sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==} @@ -10662,6 +10731,7 @@ packages: setprototypeof: 1.2.0 statuses: 1.5.0 toidentifier: 1.0.1 + dev: false /http-errors@2.0.0: resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} @@ -10674,12 +10744,11 @@ packages: toidentifier: 1.0.1 dev: false - /http-proxy-agent@5.0.0: - resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} - engines: {node: '>= 6'} + /http-proxy-agent@7.0.0: + resolution: {integrity: sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==} + engines: {node: '>= 14'} dependencies: - '@tootallnate/once': 2.0.0 - agent-base: 6.0.2 + agent-base: 7.1.0 debug: 4.3.4(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -10767,21 +10836,15 @@ packages: engines: {node: '>=10.17.0'} dev: true - /human-signals@3.0.1: - resolution: {integrity: sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==} - engines: {node: '>=12.20.0'} - dev: true - /human-signals@4.3.1: resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} engines: {node: '>=14.18.0'} dev: true - /humanize-ms@1.2.1: - resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} - dependencies: - ms: 2.1.3 - dev: false + /human-signals@5.0.0: + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} + engines: {node: '>=16.17.0'} + dev: true /humanize-number@0.0.2: resolution: {integrity: sha512-un3ZAcNQGI7RzaWGZzQDH47HETM4Wrj6z6E4TId8Yeq9w5ZKUVB1nrT2jwFheTUjEmqcgTjXDc959jum+ai1kQ==} @@ -10872,6 +10935,7 @@ packages: /inherits@2.0.3: resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} + dev: false /inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} @@ -10888,8 +10952,8 @@ packages: resolution: {integrity: sha512-/nPtyeX9xPUvxZf+r0518B7uqNKlP+LqNJqSiXFEaa2T71rWIwTVXGH7hB9xO/EVdwa5/pWlFCPwShOW81XIxQ==} dev: true - /install-artifact-from-github@1.3.3: - resolution: {integrity: sha512-x79SL0d8WOi1ZjXSTUqqs0GPQZ92YArJAN9O46wgU9wdH2U9ecyyhB9YGDbPe2OLV4ptmt6AZYRQZ2GydQZosQ==} + /install-artifact-from-github@1.3.5: + resolution: {integrity: sha512-gZHC7f/cJgXz7MXlHFBxPVMsvIbev1OQN1uKQYKVJDydGNm9oYf9JstbU4Atnh/eSvk41WtEovoRm+8IF686xg==} hasBin: true dev: false @@ -11080,7 +11144,7 @@ packages: resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} hasBin: true dependencies: - ci-info: 3.8.0 + ci-info: 3.9.0 dev: true /is-core-module@2.13.0: @@ -11088,6 +11152,12 @@ packages: dependencies: has: 1.0.3 + /is-core-module@2.13.1: + resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} + dependencies: + hasown: 2.0.0 + dev: true + /is-data-descriptor@0.1.4: resolution: {integrity: sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==} engines: {node: '>=0.10.0'} @@ -11448,6 +11518,7 @@ packages: /is-whitespace@0.3.0: resolution: {integrity: sha512-RydPhl4S6JwAyj0JJjshWJEFG6hNye3pZFBRZaTUfZFwGHxzppNaNOVgQuS/E/SlhrApuMXrpnK1EEIXfdo3Dg==} engines: {node: '>=0.10.0'} + dev: false /is-windows@1.0.2: resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} @@ -11475,6 +11546,11 @@ packages: /isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + /isexe@3.1.1: + resolution: {integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==} + engines: {node: '>=16'} + dev: false + /isobject@2.1.0: resolution: {integrity: sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==} engines: {node: '>=0.10.0'} @@ -11513,7 +11589,7 @@ packages: engines: {node: '>=10'} dependencies: '@babel/core': 7.23.2 - '@babel/parser': 7.22.10 + '@babel/parser': 7.23.0 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.0 semver: 7.5.4 @@ -11557,8 +11633,8 @@ packages: textextensions: 3.3.0 dev: true - /jackspeak@2.2.2: - resolution: {integrity: sha512-mgNtVv4vUuaKA97yxUHoA3+FkuhtxkjdXEWOyB/N76fjy0FjezEt34oy3epBtvCvS+7DyKwqCFWx/oJLV5+kCg==} + /jackspeak@2.3.6: + resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} engines: {node: '>=14'} dependencies: '@isaacs/cliui': 8.0.2 @@ -11575,6 +11651,7 @@ packages: chalk: 4.1.2 filelist: 1.0.4 minimatch: 3.1.2 + dev: false /jest-changed-files@29.7.0: resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==} @@ -11593,7 +11670,7 @@ packages: '@jest/expect': 29.7.0 '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.8.7 + '@types/node': 20.9.0 chalk: 4.1.2 co: 4.6.0 dedent: 1.5.1 @@ -11631,7 +11708,7 @@ packages: create-jest: 29.7.0(@types/node@18.11.18) exit: 0.1.2 import-local: 3.1.0 - jest-config: 29.7.0(@types/node@18.11.18)(ts-node@10.9.1) + jest-config: 29.7.0(@types/node@18.11.18) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -11642,7 +11719,7 @@ packages: - ts-node dev: true - /jest-cli@29.7.0(@types/node@20.8.7)(ts-node@10.9.1): + /jest-cli@29.7.0(@types/node@20.9.0)(ts-node@10.9.1): resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -11656,10 +11733,10 @@ packages: '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@20.8.7)(ts-node@10.9.1) + create-jest: 29.7.0(@types/node@20.9.0)(ts-node@10.9.1) exit: 0.1.2 import-local: 3.1.0 - jest-config: 29.7.0(@types/node@20.8.7)(ts-node@10.9.1) + jest-config: 29.7.0(@types/node@20.9.0)(ts-node@10.9.1) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -11670,7 +11747,7 @@ packages: - ts-node dev: true - /jest-config@29.7.0(@types/node@18.11.18)(ts-node@10.9.1): + /jest-config@29.7.0(@types/node@18.11.18): resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -11705,13 +11782,12 @@ packages: pretty-format: 29.7.0 slash: 3.0.0 strip-json-comments: 3.1.1 - ts-node: 10.9.1(@swc/core@1.3.78)(@types/node@20.8.7)(typescript@5.2.2) transitivePeerDependencies: - babel-plugin-macros - supports-color dev: true - /jest-config@29.7.0(@types/node@20.8.7)(ts-node@10.9.1): + /jest-config@29.7.0(@types/node@20.9.0)(ts-node@10.9.1): resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -11726,7 +11802,7 @@ packages: '@babel/core': 7.23.2 '@jest/test-sequencer': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.8.7 + '@types/node': 20.9.0 babel-jest: 29.7.0(@babel/core@7.23.2) chalk: 4.1.2 ci-info: 3.9.0 @@ -11746,7 +11822,7 @@ packages: pretty-format: 29.7.0 slash: 3.0.0 strip-json-comments: 3.1.1 - ts-node: 10.9.1(@swc/core@1.3.78)(@types/node@20.8.7)(typescript@5.2.2) + ts-node: 10.9.1(@swc/core@1.3.78)(@types/node@20.9.0)(typescript@5.2.2) transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -11787,7 +11863,7 @@ packages: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.8.7 + '@types/node': 20.9.0 jest-mock: 29.7.0 jest-util: 29.7.0 dev: true @@ -11812,7 +11888,7 @@ packages: dependencies: '@jest/types': 29.6.3 '@types/graceful-fs': 4.1.8 - '@types/node': 20.8.7 + '@types/node': 20.9.0 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -11863,7 +11939,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 20.8.7 + '@types/node': 20.9.0 jest-util: 29.7.0 dev: true @@ -11918,7 +11994,7 @@ packages: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.8.7 + '@types/node': 20.9.0 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.11 @@ -11949,7 +12025,7 @@ packages: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.8.7 + '@types/node': 20.9.0 chalk: 4.1.2 cjs-module-lexer: 1.2.3 collect-v8-coverage: 1.0.2 @@ -12001,7 +12077,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 20.8.7 + '@types/node': 20.9.0 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -12026,7 +12102,7 @@ packages: dependencies: '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.8.7 + '@types/node': 20.9.0 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -12045,7 +12121,7 @@ packages: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 20.8.7 + '@types/node': 20.9.0 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true @@ -12054,7 +12130,7 @@ packages: resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 18.11.18 + '@types/node': 20.9.0 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -12081,7 +12157,7 @@ packages: - ts-node dev: true - /jest@29.7.0(@types/node@20.8.7)(ts-node@10.9.1): + /jest@29.7.0(@types/node@20.9.0)(ts-node@10.9.1): resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -12094,7 +12170,7 @@ packages: '@jest/core': 29.7.0(ts-node@10.9.1) '@jest/types': 29.6.3 import-local: 3.1.0 - jest-cli: 29.7.0(@types/node@20.8.7)(ts-node@10.9.1) + jest-cli: 29.7.0(@types/node@20.9.0)(ts-node@10.9.1) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -12111,8 +12187,8 @@ packages: engines: {node: '>= 0.6.0'} dev: false - /joi@17.9.2: - resolution: {integrity: sha512-Itk/r+V4Dx0V3c7RLFdRh12IOjySm2/WGPMubBT92cQvRfYZhPM2W0hZlctjj72iES8jsRCwp7S/cRmWBnJ4nw==} + /joi@17.11.0: + resolution: {integrity: sha512-NgB+lZLNoqISVy1rZocE9PZI36bL/77ie924Ri43yEvi9GUUMPeyVIr8KdFTMUlby1p0PBYMk9spIxEUQYqrJQ==} dependencies: '@hapi/hoek': 9.3.0 '@hapi/topo': 5.1.0 @@ -12142,6 +12218,7 @@ packages: editorconfig: 1.0.4 glob: 8.1.0 nopt: 6.0.0 + dev: false /js-levenshtein@1.1.6: resolution: {integrity: sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==} @@ -12238,7 +12315,7 @@ packages: /json-stringify-safe@5.0.1: resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} - /json5-loader@4.0.1(webpack@5.88.2): + /json5-loader@4.0.1(webpack@5.89.0): resolution: {integrity: sha512-c9viNZlZTz0MTIcf/4qvek5Dz1/PU3DNCB4PwUhlEZIV3qb1bSD6vQQymlV17/Wm6ncra1aCvmIPsuRj+KfEEg==} engines: {node: '>= 10.13.0'} peerDependencies: @@ -12247,7 +12324,7 @@ packages: json5: 2.2.3 loader-utils: 2.0.4 schema-utils: 3.3.0 - webpack: 5.88.2(@swc/core@1.3.78) + webpack: 5.89.0(@swc/core@1.3.78) dev: true /json5@1.0.2: @@ -12296,8 +12373,8 @@ packages: graceful-fs: 4.2.11 dev: true - /jsonld@8.2.1: - resolution: {integrity: sha512-hCnY98LwTp0gJ0oEp41wytYYbU96ZX6SR3QwE8A+1V9dKVCSXrOR1WXF21Vq/Bgx46l2baPRvJ5cix5Gd4EX5A==} + /jsonld@8.3.1: + resolution: {integrity: sha512-tYfKpWL56meSJCHS91Ph0+EUThHZOZ8bKuboME4998SF+Kkukp2PhCPdRCvA7tsGUKr9FvSoyIRqJPuImBcBuA==} engines: {node: '>=14'} dependencies: '@digitalbazaar/http-client': 3.4.1 @@ -12361,8 +12438,8 @@ packages: safe-buffer: 5.2.1 dev: false - /katex@0.16.8: - resolution: {integrity: sha512-ftuDnJbcbOckGY11OO+zg3OofESlbR5DRl2cmN8HeWeeFIV7wTXvAOx8kEjZjobhA+9wh2fbKeO6cdcA9Mnovg==} + /katex@0.16.9: + resolution: {integrity: sha512-fsSYjWS0EEOwvy81j3vRA8TEAhQhKiqO+FQaKWp0m39qwOzHVBgAUBIXWj1pB+O2W3fIpNa6Y9KSKCVbfPhyAQ==} hasBin: true dependencies: commander: 8.3.0 @@ -12413,7 +12490,7 @@ packages: dependencies: '@types/co-body': 6.1.0 '@types/formidable': 2.0.6 - '@types/koa': 2.13.8 + '@types/koa': 2.13.11 co-body: 6.1.0 formidable: 2.1.2 zod: 3.21.4 @@ -12480,6 +12557,7 @@ packages: /koa-router@10.1.1: resolution: {integrity: sha512-z/OzxVjf5NyuNO3t9nJpx7e1oR3FSBAauiwXtMQu4ppcnuNZzTaQ4p21P8A6r2Es8uJJM339oc4oVW+qX7SqnQ==} engines: {node: '>= 8.0.0'} + deprecated: '**IMPORTANT 10x+ PERFORMANCE UPGRADE**: Please upgrade to v12.0.1+ as we have fixed an issue with debuglog causing 10x slower router benchmark performance, see https://github.com/koajs/router/pull/173' dependencies: debug: 4.3.4(supports-color@8.1.1) http-errors: 1.8.1 @@ -12499,6 +12577,7 @@ packages: resolve-path: 1.4.0 transitivePeerDependencies: - supports-color + dev: false /koa-slow@2.1.0: resolution: {integrity: sha512-ii6s1zuZ51p+SY7WIrwjRi1tmPrNpeHEaw5UYi4h1QzAPmIcNk16e9zwKd9+eNNzI9n+Q2LXHAvt1MCfs7j/8w==} @@ -12518,7 +12597,7 @@ packages: - supports-color dev: false - /koa-views@7.0.2(@types/koa@2.13.8)(ejs@3.1.9)(pug@3.0.2): + /koa-views@7.0.2(@types/koa@2.13.11)(ejs@3.1.9)(pug@3.0.2): resolution: {integrity: sha512-dvx3mdVeSVuIPEaKAoGbxLcenudvhl821xxyuRbcoA+bOJ2dvN8wlGjkLu0ZFMlkCscXZV6lzxy28rafeazI/w==} deprecated: This package is deprecated, please use the new fork @ladjs/koa-views. Maintenance is supported by Forward Email at https://forwardemail.net ; follow/watch https://github.com/ladjs/koa-views for updates and release changelog peerDependencies: @@ -12527,7 +12606,7 @@ packages: '@types/koa': optional: true dependencies: - '@types/koa': 2.13.8 + '@types/koa': 2.13.11 consolidate: 0.16.0(ejs@3.1.9)(pug@3.0.2) debug: 4.3.4(supports-color@8.1.1) get-paths: 0.0.7 @@ -12590,6 +12669,7 @@ packages: - velocityjs - walrus - whiskers + dev: false /koa@2.13.4: resolution: {integrity: sha512-43zkIKubNbnrULWlHdN5h1g3SEKXOEzoAlRsHOTFpnlDu8JlAOZSMJBLULusuXRequboiwJcj5vtYXKB3k7+2g==} @@ -12793,9 +12873,12 @@ packages: resolution: {integrity: sha512-AgQGZisAlTPbTEzrHPb6q+NYBMD+DP9uvGSIjSUM5uG+0jG15cb8axWpxuOIqrmQjn6scaaH8JwloiP27b2KXA==} dev: true - /local-pkg@0.4.3: - resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} + /local-pkg@0.5.0: + resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} engines: {node: '>=14'} + dependencies: + mlly: 1.4.2 + pkg-types: 1.0.3 dev: true /locate-path@5.0.0: @@ -12830,10 +12913,6 @@ packages: resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} dev: false - /lodash.difference@4.5.0: - resolution: {integrity: sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==} - dev: false - /lodash.filter@4.6.0: resolution: {integrity: sha512-pXYUy7PR8BCLwX5mgJ/aNtyOvuJTdZAo9EQFUvMIYugqmJxnrYaANvTbgndOzHSCSR0wnlBBfRXJL5SbWxo3FQ==} dev: false @@ -12854,10 +12933,6 @@ packages: resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} dev: false - /lodash.isplainobject@4.0.6: - resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} - dev: false - /lodash.isregexp@3.0.5: resolution: {integrity: sha512-VlV0abdYZs5asSYW1JW5W1f6gxf2SGQt90rzQp7UNTQ8KwcB3CprZe5crN1LIlCA/fB5R9xecrZijGSELJL8Yg==} dev: false @@ -12897,10 +12972,6 @@ packages: resolution: {integrity: sha512-s8xEQdsp2Tu5zUqVdFSe9C0kR8YlnAJYLqMdkh+pIRBRxF6/apWseLdHl3/+jv2I61dhPwtI/Ff+EqvCpc+N8w==} dev: true - /lodash.union@4.6.0: - resolution: {integrity: sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==} - dev: false - /lodash.uniq@4.5.0: resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} dev: true @@ -12944,6 +13015,13 @@ packages: engines: {node: 14 || >=16.14} dev: false + /lru-cache@10.0.2: + resolution: {integrity: sha512-Yj9mA8fPiVgOUpByoTZO5pNrcl5Yk37FcSHsUINpAsaBIEZIuqcCclDZJCVxqQShDsmYX8QG63svJiTbOATZwg==} + engines: {node: 14 || >=16.14} + dependencies: + semver: 7.5.4 + dev: false + /lru-cache@4.1.5: resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} dependencies: @@ -12962,11 +13040,6 @@ packages: dependencies: yallist: 4.0.0 - /lru-cache@7.18.3: - resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} - engines: {node: '>=12'} - dev: false - /lunr@2.3.9: resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==} dev: true @@ -12976,8 +13049,8 @@ packages: engines: {node: '>=12'} dev: false - /magic-string@0.30.2: - resolution: {integrity: sha512-lNZdu7pewtq/ZvWUp9Wpf/x7WzMTsR26TWV03BRZrXFsv+BI6dy8RAiKgm1uM/kyR0rCfUcqvOlXKG66KhIGug==} + /magic-string@0.30.5: + resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==} engines: {node: '>=12'} dependencies: '@jridgewell/sourcemap-codec': 1.4.15 @@ -13011,24 +13084,20 @@ packages: /make-error@1.3.6: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - /make-fetch-happen@11.1.1: - resolution: {integrity: sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + /make-fetch-happen@13.0.0: + resolution: {integrity: sha512-7ThobcL8brtGo9CavByQrQi+23aIfgYU++wg4B87AIS8Rb2ZBt/MEaDqzA00Xwv/jUjAjYkLHjVolYuTLKda2A==} + engines: {node: ^16.14.0 || >=18.0.0} dependencies: - agentkeepalive: 4.5.0 - cacache: 17.1.3 + '@npmcli/agent': 2.2.0 + cacache: 18.0.0 http-cache-semantics: 4.1.1 - http-proxy-agent: 5.0.0 - https-proxy-agent: 5.0.1 is-lambda: 1.0.1 - lru-cache: 7.18.3 - minipass: 5.0.0 + minipass: 7.0.4 minipass-fetch: 3.0.3 minipass-flush: 1.0.5 minipass-pipeline: 1.2.4 negotiator: 0.6.3 promise-retry: 2.0.1 - socks-proxy-agent: 7.0.0 ssri: 10.0.4 transitivePeerDependencies: - supports-color @@ -13141,8 +13210,8 @@ packages: engines: {node: '>= 0.6'} dev: false - /meilisearch@0.34.1: - resolution: {integrity: sha512-7mrLp88JfrbvhAMhOjNPzHGd2iCLHgzNhkveMxppMOToMLQw4Ygof4ksQ9uFi7SKq3UwEhIoMoFT1rUHLD3vWQ==} + /meilisearch@0.35.0: + resolution: {integrity: sha512-gF1I6K5/Wpe7BWfjBnG+o19y/FIpJ9HbN+byON6CB9U3uE7qc6GvwUbjKOllh7LKXQVVxH/kCu7Jn0ODCUwqbQ==} dependencies: cross-fetch: 3.1.8 transitivePeerDependencies: @@ -13291,6 +13360,7 @@ packages: engines: {node: '>=10'} dependencies: brace-expansion: 2.0.1 + dev: false /minimatch@7.4.6: resolution: {integrity: sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==} @@ -13304,6 +13374,7 @@ packages: engines: {node: '>=16 || 14 >=14.17'} dependencies: brace-expansion: 2.0.1 + dev: false /minimatch@9.0.3: resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} @@ -13384,6 +13455,11 @@ packages: engines: {node: '>=8'} dev: false + /minipass@7.0.4: + resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} + engines: {node: '>=16 || 14 >=14.17'} + dev: false + /minizlib@1.3.3: resolution: {integrity: sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==} requiresBuild: true @@ -13438,6 +13514,15 @@ packages: hasBin: true dev: false + /mlly@1.4.2: + resolution: {integrity: sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==} + dependencies: + acorn: 8.10.0 + pathe: 1.1.1 + pkg-types: 1.0.3 + ufo: 1.3.2 + dev: true + /mocha@10.2.0: resolution: {integrity: sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==} engines: {node: '>= 14.0.0'} @@ -13506,8 +13591,8 @@ packages: msgpackr-extract: 3.0.2 dev: false - /multer@1.4.4-lts.1: - resolution: {integrity: sha512-WeSGziVj6+Z2/MwQo3GvqzgR+9Uc+qt8SwHKh3gvNPiISKfsMfG4SvCOFYlxxgkXt7yIV2i1yczehm0EOKIxIg==} + /multer@1.4.5-lts.1: + resolution: {integrity: sha512-ywPWvcDMeH+z9gQq5qYHCCy+ethsk4goepZ45GLD63fOu0YcNecQxi64nDs3qluZB+murG3/D4dJ7+dGctcCQQ==} engines: {node: '>= 6.0.0'} dependencies: append-field: 1.0.0 @@ -13539,6 +13624,7 @@ packages: any-promise: 1.3.0 object-assign: 4.1.1 thenify-all: 1.6.0 + dev: false /nan@2.18.0: resolution: {integrity: sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==} @@ -13669,6 +13755,7 @@ packages: /node-domexception@1.0.0: resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} engines: {node: '>=10.5.0'} + dev: false /node-fetch@2.6.12: resolution: {integrity: sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==} @@ -13688,6 +13775,7 @@ packages: data-uri-to-buffer: 4.0.1 fetch-blob: 3.2.0 formdata-polyfill: 4.0.10 + dev: false /node-gyp-build-optional-packages@5.0.3: resolution: {integrity: sha512-k75jcVzk5wnnc/FMxsf4udAoTEUv2jY3ycfdSd3yWu6Cnd1oee6/CfZJApyscA4FJOmdoixWwiwOyf16RzD5JA==} @@ -13708,22 +13796,21 @@ packages: hasBin: true dev: false - /node-gyp@9.4.0: - resolution: {integrity: sha512-dMXsYP6gc9rRbejLXmTbVRYjAHw7ppswsKyMxuxJxxOHzluIO1rGp9TOQgjFJ+2MCqcOcQTOPB/8Xwhr+7s4Eg==} - engines: {node: ^12.13 || ^14.13 || >=16} + /node-gyp@10.0.1: + resolution: {integrity: sha512-gg3/bHehQfZivQVfqIyy8wTdSymF9yTyP4CJifK73imyNMU8AIGQE2pUa7dNWfmMeG9cDVF2eehiRMv0LC1iAg==} + engines: {node: ^16.14.0 || >=18.0.0} hasBin: true dependencies: env-paths: 2.2.1 exponential-backoff: 3.1.1 - glob: 7.2.3 + glob: 10.3.10 graceful-fs: 4.2.11 - make-fetch-happen: 11.1.1 - nopt: 6.0.0 - npmlog: 6.0.2 - rimraf: 3.0.2 + make-fetch-happen: 13.0.0 + nopt: 7.2.0 + proc-log: 3.0.0 semver: 7.5.4 tar: 6.1.15 - which: 2.0.2 + which: 4.0.0 transitivePeerDependencies: - supports-color dev: false @@ -13735,8 +13822,8 @@ packages: /node-releases@2.0.13: resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} - /nodemailer@6.9.4: - resolution: {integrity: sha512-CXjQvrQZV4+6X5wP6ZIgdehJamI63MFoYFGGPtHudWym9qaEHDNdPzaj5bfMCvxG1vhAileSWW90q7nL0N36mA==} + /nodemailer@6.9.7: + resolution: {integrity: sha512-rUtR77ksqex/eZRLmQ21LKVH5nAAsVicAtAYudK7JgwenEDZ0UIQ1adUGqErz7sMkWYxWTTU1aeP2Jga6WQyJw==} engines: {node: '>=6.0.0'} dev: false @@ -13759,6 +13846,15 @@ packages: hasBin: true dependencies: abbrev: 1.1.1 + dev: false + + /nopt@7.2.0: + resolution: {integrity: sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + hasBin: true + dependencies: + abbrev: 2.0.0 + dev: false /normalize-package-data@2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} @@ -13851,23 +13947,13 @@ packages: set-blocking: 2.0.0 dev: false - /npmlog@6.0.2: - resolution: {integrity: sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - dependencies: - are-we-there-yet: 3.0.1 - console-control-strings: 1.1.0 - gauge: 4.0.4 - set-blocking: 2.0.0 - dev: false - - /nsfwjs@2.4.2(@tensorflow/tfjs@4.2.0): + /nsfwjs@2.4.2(@tensorflow/tfjs@4.13.0): resolution: {integrity: sha512-i4Pp2yt59qPQgeZFyg3wXFBX52uSeu/hkDoqdZfe+sILRxNBUu0VDogj7Lmqak0GlrXviS/wLiVeIx40IDUu7A==} peerDependencies: '@tensorflow/tfjs': ^3.18.0 dependencies: '@nsfw-filter/gif-frames': 1.0.2 - '@tensorflow/tfjs': 4.2.0(seedrandom@3.0.5) + '@tensorflow/tfjs': 4.13.0(seedrandom@3.0.5) dev: false /nth-check@1.0.2: @@ -13965,6 +14051,15 @@ packages: es-abstract: 1.22.1 dev: true + /object.fromentries@2.0.7: + resolution: {integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.22.1 + dev: true + /object.groupby@1.0.0: resolution: {integrity: sha512-70MWG6NfRH9GnbZOikuhPPYzpUpof9iW2J9E4dW7FXTqPNb6rllE6u39SKwwiNh8lCwX3DDb5OgcKGiEBrTTyw==} dependencies: @@ -13974,6 +14069,15 @@ packages: get-intrinsic: 1.2.1 dev: true + /object.groupby@1.0.1: + resolution: {integrity: sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.22.1 + get-intrinsic: 1.2.1 + dev: true + /object.map@1.0.1: resolution: {integrity: sha512-3+mAJu2PLfnSVGHwIWubpOFLscJANBKuB/6A4CxBstc4aqwQY0FWcsppuy4jU5GSB95yES5JHSI+33AWuS4k6w==} engines: {node: '>=0.10.0'} @@ -14006,8 +14110,18 @@ packages: es-abstract: 1.22.1 dev: true - /oblivious-set@1.1.1: - resolution: {integrity: sha512-Oh+8fK09mgGmAshFdH6hSVco6KZmd1tTwNFWj35OvzdmJTMZtAkbn05zar2iG3v6sDs1JLEtOiBGNb6BHwkb2w==} + /object.values@1.1.7: + resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.22.1 + dev: true + + /oblivious-set@1.4.0: + resolution: {integrity: sha512-szyd0ou0T8nsAqHtprRcP3WidfsN1TnAR5yWXf2mFCEr5ek3LEOkT6EZ/92Xfs74HIdyhG5WkGxIssMU0jBaeg==} + engines: {node: '>=16'} dev: true /obuf@1.1.2: @@ -14127,8 +14241,8 @@ packages: resolution: {integrity: sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==} dev: true - /otpauth@9.1.4: - resolution: {integrity: sha512-T6T0E1WlzwKWESq8K0Ja47u01XjmDmRY/AiUoMAc6xZI/OsTsD4cqBrfpt2WfJ29W5pRiWkuUuyHdNQl0/Ic+Q==} + /otpauth@9.2.0: + resolution: {integrity: sha512-vbiHaeTJHrRG4fWRAZwVVrCnQz9SEzNINk2Hfx8BZY8UxTJEnqpOHxr11KfrRVAqWZdD6Y5jdyXW6Xp/ls9O/w==} dependencies: jssha: 3.3.1 dev: false @@ -14432,6 +14546,10 @@ packages: engines: {node: '>=8'} dev: true + /pathe@1.1.1: + resolution: {integrity: sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==} + dev: true + /pause-stream@0.0.11: resolution: {integrity: sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==} dependencies: @@ -14536,8 +14654,8 @@ packages: split2: 4.2.0 dev: false - /photoswipe@5.3.9: - resolution: {integrity: sha512-z9ACLW9472gAawrIXXiliuz9xNZ3xEl7cIPHqY/lAeFQT9X+N9sgCwa86WK9wnK8cuk/F3QEO45n+QSiZnKd2A==} + /photoswipe@5.4.2: + resolution: {integrity: sha512-z5hr36nAIPOZbHJPbCJ/mQ3+ZlizttF9za5gKXKH/us1k4KNHaRbC63K1Px5sVVKUtGb/2+ixHpKqtwl0WAwvA==} engines: {node: '>= 0.12.0'} dev: true @@ -14560,6 +14678,7 @@ packages: /pify@4.0.1: resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} engines: {node: '>=6'} + dev: false /pinkie-promise@2.0.1: resolution: {integrity: sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==} @@ -14591,6 +14710,14 @@ packages: find-up: 4.1.0 dev: true + /pkg-types@1.0.3: + resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} + dependencies: + jsonc-parser: 3.2.0 + mlly: 1.4.2 + pathe: 1.1.1 + dev: true + /plimit-lit@1.5.0: resolution: {integrity: sha512-Eb/MqCb1Iv/ok4m1FqIXqvUKPISufcjZ605hl3KM/n8GaX8zfhtgdLwZU3vKjuHGh2O9Rjog/bHTq8ofIShdng==} dependencies: @@ -14645,8 +14772,8 @@ packages: engines: {node: '>=14.19.0'} dev: false - /pnpm@8.10.2: - resolution: {integrity: sha512-B4IJPVumx62UYggbwe8HdQFqS0EJ7KHh/tzqbxEBQ69fUJk9s2xCfU+oxivjkgoyJNsS2nGdJGyhndnxgEjDPA==} + /pnpm@8.10.5: + resolution: {integrity: sha512-nBYfQz2FVRxY8bOhCxjMPfcrWgLSyu5lZswFtvIK3e+UfnldkMOQM7+S3lUXfq1p2H9iqdqtyR56LjtY9JNToA==} engines: {node: '>=16.14'} hasBin: true dev: true @@ -14829,6 +14956,15 @@ packages: postcss: 8.4.27 dev: true + /postcss-safe-parser@6.0.0(postcss@8.4.31): + resolution: {integrity: sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.3.3 + dependencies: + postcss: 8.4.31 + dev: true + /postcss-scss@4.0.6(postcss@8.4.27): resolution: {integrity: sha512-rLDPhJY4z/i4nVFZ27j9GqLxj1pwxE80eAzUNRMXtcpipFYIeowerzBgG3yJhMtObGEXidtIgbUpQ3eLDsf5OQ==} engines: {node: '>=12.0'} @@ -14838,6 +14974,15 @@ packages: postcss: 8.4.27 dev: true + /postcss-scss@4.0.6(postcss@8.4.31): + resolution: {integrity: sha512-rLDPhJY4z/i4nVFZ27j9GqLxj1pwxE80eAzUNRMXtcpipFYIeowerzBgG3yJhMtObGEXidtIgbUpQ3eLDsf5OQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.4.19 + dependencies: + postcss: 8.4.31 + dev: true + /postcss-selector-parser@2.2.3: resolution: {integrity: sha512-3pqyakeGhrO0BQ5+/tGTfvi5IAUAhHRayGK8WFSu06aEv2BmHoXw/Mhb+w7VY5HERIuC+QoUI7wgrCcq2hqCVA==} dependencies: @@ -14914,6 +15059,15 @@ packages: picocolors: 1.0.0 source-map-js: 1.0.2 + /postcss@8.4.31: + resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.6 + picocolors: 1.0.0 + source-map-js: 1.0.2 + dev: true + /postgres-array@2.0.0: resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==} engines: {node: '>=4'} @@ -15010,8 +15164,8 @@ packages: hasBin: true dev: true - /prettier@3.0.3: - resolution: {integrity: sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==} + /prettier@3.1.0: + resolution: {integrity: sha512-TQLvXjq5IAibjh8EpBIkNKxO749UEWABoiIZehEPiY4GNpVdhaFKqSTu+QrlU6D2dPAfubRmtJTi4K4YkQ5eXw==} engines: {node: '>=14'} hasBin: true dev: true @@ -15049,6 +15203,7 @@ packages: condense-newlines: 0.2.1 extend-shallow: 2.0.1 js-beautify: 1.14.9 + dev: false /prismjs@1.29.0: resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==} @@ -15084,9 +15239,19 @@ packages: - supports-color dev: false + /proc-log@3.0.0: + resolution: {integrity: sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: false + /process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + /process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + dev: true + /progress@2.0.3: resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} engines: {node: '>=0.4.0'} @@ -15125,6 +15290,7 @@ packages: /proto-list@1.2.4: resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} + dev: false /proxy-from-env@1.0.0: resolution: {integrity: sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==} @@ -15132,7 +15298,6 @@ packages: /proxy-from-env@1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} - dev: false /ps-tree@1.2.0: resolution: {integrity: sha512-0VnamPPYHl4uaU/nSFeZZpR21QAWRz+sRv4iW9+v/GS/J5U5iZB5BNN6J0RMoOvdx2gWM2+ZFMIm58q24e4UYA==} @@ -15251,16 +15416,16 @@ packages: resolution: {integrity: sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==} dev: false - /punycode@2.3.0: - resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} + /punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} /pure-rand@6.0.4: resolution: {integrity: sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA==} dev: true - /pureimage@0.4.8: - resolution: {integrity: sha512-/yNBs67VB4moPB7tqfupxFhYYaSlpnBpDb5995B0FP+vTqKwR2KD2uEIvch9NmpqUpVnsXcDOsFgmuGTgLX/Lg==} + /pureimage@0.4.13: + resolution: {integrity: sha512-P8aonTNAnXWJn2pBIqyeWw0I/D4YDOfEavCVvbDG+wx3dCujQX0ENZiW5OcHfbd8HKLfVhCf4F/3Xivf1yWDiA==} engines: {node: '>=14.19.0'} dependencies: jpeg-js: 0.4.4 @@ -15398,13 +15563,13 @@ packages: setimmediate: 1.0.5 dev: false - /re2@1.20.5: - resolution: {integrity: sha512-wZAqOjJ3m0PBgM2B8KG9dNJLwSNIAOZGiHN/c0FpKpaM1Hkg5NpKNAWSVbCXe+bb2K0xmHz6DPR4HJaQ2MejgQ==} + /re2@1.20.8: + resolution: {integrity: sha512-5GArE3towC0ZyinRkkaZARZxlbX3K+z2REXSVltGSW+F/ID8SLrbh1okTXEcTFBp9zsAhKcGH1Vm+zJ2IwMb7Q==} requiresBuild: true dependencies: - install-artifact-from-github: 1.3.3 + install-artifact-from-github: 1.3.5 nan: 2.18.0 - node-gyp: 9.4.0 + node-gyp: 10.0.1 transitivePeerDependencies: - supports-color dev: false @@ -15551,17 +15716,6 @@ packages: - supports-color dev: false - /redis@4.6.7: - resolution: {integrity: sha512-KrkuNJNpCwRm5vFJh0tteMxW8SaUzkm5fBH7eL5hd/D0fAkzvapxbfGPP/r+4JAXdQuX7nebsBkBqA2RHB7Usw==} - dependencies: - '@redis/bloom': 1.2.0(@redis/client@1.5.8) - '@redis/client': 1.5.8 - '@redis/graph': 1.1.0(@redis/client@1.5.8) - '@redis/json': 1.0.4(@redis/client@1.5.8) - '@redis/search': 1.1.3(@redis/client@1.5.8) - '@redis/time-series': 1.0.4(@redis/client@1.5.8) - dev: true - /reduce-css-calc@1.3.0: resolution: {integrity: sha512-0dVfwYVOlf/LBA2ec4OwQ6p3X9mYxn/wOl2xTcLwjnPYrkgEfPx3VI4eGCH3rQLlPISG5v9I9bkZosKsNRTRKA==} dependencies: @@ -15782,6 +15936,11 @@ packages: dependencies: http-errors: 1.6.3 path-is-absolute: 1.0.1 + dev: false + + /resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + dev: true /resolve-url@0.2.1: resolution: {integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==} @@ -15877,11 +16036,23 @@ packages: rangestr: 0.0.1 seedrandom: 2.4.2 - /rollup@3.28.1: - resolution: {integrity: sha512-R9OMQmIHJm9znrU3m3cpE8uhN0fGdXiawME7aZIpQqvpS/85+Vt1Hq1/yVIcYfOmaQiHjvXkQAoJukvLpau6Yw==} - engines: {node: '>=14.18.0', npm: '>=8.0.0'} + /rollup@4.4.1: + resolution: {integrity: sha512-idZzrUpWSblPJX66i+GzrpjKE3vbYrlWirUHteoAbjKReZwa0cohAErOYA5efoMmNCdvG9yrJS+w9Kl6csaH4w==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.4.1 + '@rollup/rollup-android-arm64': 4.4.1 + '@rollup/rollup-darwin-arm64': 4.4.1 + '@rollup/rollup-darwin-x64': 4.4.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.4.1 + '@rollup/rollup-linux-arm64-gnu': 4.4.1 + '@rollup/rollup-linux-arm64-musl': 4.4.1 + '@rollup/rollup-linux-x64-gnu': 4.4.1 + '@rollup/rollup-linux-x64-musl': 4.4.1 + '@rollup/rollup-win32-arm64-msvc': 4.4.1 + '@rollup/rollup-win32-ia32-msvc': 4.4.1 + '@rollup/rollup-win32-x64-msvc': 4.4.1 fsevents: 2.3.3 dev: true @@ -15965,8 +16136,8 @@ packages: postcss: 8.4.27 dev: false - /sass@1.66.1: - resolution: {integrity: sha512-50c+zTsZOJVgFfTgwwEzkjA3/QACgdNsKueWPyAR0mRINIvLAStVQBbPg14iuqEQ74NPDbXzJARJ/O4SI1zftA==} + /sass@1.69.5: + resolution: {integrity: sha512-qg2+UCJibLr2LCVOt3OlPhr/dqVHWOa9XtZf2OjbLs/T4VPSJ00udtgJxH3neXZm+QqX8B+3cU7RaLqp1iVfcQ==} engines: {node: '>=14.0.0'} hasBin: true dependencies: @@ -16081,9 +16252,11 @@ packages: /setprototypeof@1.1.0: resolution: {integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==} + dev: false /setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + dev: false /sha.js@2.4.11: resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} @@ -16100,8 +16273,8 @@ packages: crypt: 0.0.2 dev: true - /sharp@0.32.5: - resolution: {integrity: sha512-0dap3iysgDkNaPOaOL4X/0akdu0ma62GcdC2NBQ+93eqpePdDdr2/LM0sFdDSMmN7yS+odyZtPsb7tx/cYBKnQ==} + /sharp@0.32.6: + resolution: {integrity: sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==} engines: {node: '>=14.15.0'} requiresBuild: true dependencies: @@ -16266,6 +16439,17 @@ packages: - supports-color dev: false + /socks-proxy-agent@8.0.2: + resolution: {integrity: sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g==} + engines: {node: '>= 14'} + dependencies: + agent-base: 7.1.0 + debug: 4.3.4(supports-color@8.1.1) + socks: 2.7.1 + transitivePeerDependencies: + - supports-color + dev: false + /socks@2.7.1: resolution: {integrity: sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==} engines: {node: '>= 10.13.0', npm: '>= 3.0.0'} @@ -16443,9 +16627,9 @@ packages: resolution: {integrity: sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==} dev: false - /start-server-and-test@1.15.2: - resolution: {integrity: sha512-t5xJX04Hg7hqxiKHMJBz/n4zIMsE6G7hpAcerFAH+4Vh9le/LeyFcJERJM7WLiPygWF9TOg33oroJF1XOzJtYQ==} - engines: {node: '>=6'} + /start-server-and-test@2.0.3: + resolution: {integrity: sha512-QsVObjfjFZKJE6CS6bSKNwWZCKBG6975/jKRPPGFfFh+yOQglSeGXiNWjzgQNXdphcBI9nXbyso9tPfX4YAUhg==} + engines: {node: '>=16'} hasBin: true dependencies: arg: 5.0.2 @@ -16455,7 +16639,7 @@ packages: execa: 5.1.1 lazy-ass: 1.6.0 ps-tree: 1.2.0 - wait-on: 6.0.1(debug@4.3.4) + wait-on: 7.2.0(debug@4.3.4) transitivePeerDependencies: - supports-color dev: true @@ -16471,6 +16655,7 @@ packages: /statuses@1.5.0: resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} engines: {node: '>= 0.6'} + dev: false /statuses@2.0.1: resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} @@ -16792,18 +16977,18 @@ packages: whet.extend: 0.9.9 dev: true - /swc-loader@0.2.3(@swc/core@1.3.78)(webpack@5.88.2): + /swc-loader@0.2.3(@swc/core@1.3.78)(webpack@5.89.0): resolution: {integrity: sha512-D1p6XXURfSPleZZA/Lipb3A8pZ17fP4NObZvFCDjK/OKljroqDpPmsBdTraWhVBqUNpcWBQY1imWdoPScRlQ7A==} peerDependencies: '@swc/core': ^1.2.147 webpack: '>=2' dependencies: '@swc/core': 1.3.78 - webpack: 5.88.2(@swc/core@1.3.78) + webpack: 5.89.0(@swc/core@1.3.78) dev: true - /swiper@10.2.0: - resolution: {integrity: sha512-nktQsOtBInJjr3f5DicxC8eHYGcLXDVIGPSon0QoXRaO6NjKnATCbQ8SZsD3dN1Ph1RH4EhVPwSYCcuDRFWHGQ==} + /swiper@11.0.4: + resolution: {integrity: sha512-qtUxILrD4aD++rpKzGrkz3IAWL92f9uTrDwjb6HaNLmPvJhZCE/83DL+9w4kIgDDJeF6QKalV47rMBN77UOVYQ==} engines: {node: '>= 4.7.0'} dev: true @@ -16822,8 +17007,8 @@ packages: moment: 2.29.4 dev: false - /systeminformation@5.21.3: - resolution: {integrity: sha512-+Xjja4LLZa6z/YdqHrzE6lDZLle/k+X1NLHCJhXux1ykMqIj++Nq5YbtjsYjn0p+M3Z/OLFqjLw15D2DrjP3ug==} + /systeminformation@5.21.17: + resolution: {integrity: sha512-JZYRCbIjk3WuBV59A9/rTla2rROX+aAJ9uo2Z1dI+bjieORcukClN8rlM1zE9NYKpULSbaGc+KKct/870lO0DA==} engines: {node: '>=8.0.0'} os: [darwin, linux, win32, freebsd, openbsd, netbsd, sunos, android] hasBin: true @@ -16923,7 +17108,7 @@ packages: engines: {node: '>=14.16'} dev: true - /terser-webpack-plugin@5.3.9(@swc/core@1.3.78)(webpack@5.88.2): + /terser-webpack-plugin@5.3.9(@swc/core@1.3.78)(webpack@5.89.0): resolution: {integrity: sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==} engines: {node: '>= 10.13.0'} peerDependencies: @@ -16939,13 +17124,13 @@ packages: uglify-js: optional: true dependencies: - '@jridgewell/trace-mapping': 0.3.19 + '@jridgewell/trace-mapping': 0.3.20 '@swc/core': 1.3.78 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.1 terser: 5.19.2 - webpack: 5.88.2(@swc/core@1.3.78) + webpack: 5.89.0(@swc/core@1.3.78) dev: true /terser@5.19.2: @@ -16959,12 +17144,12 @@ packages: source-map-support: 0.5.21 dev: true - /tesseract.js-core@4.0.4: - resolution: {integrity: sha512-MJ+vtktjAaT0681uPl6TDUPhbRbpD/S9emko5rtorgHRZpQo7R3BG7h+3pVHgn1KjfNf1bvnx4B7KxEK8YKqpg==} + /tesseract.js-core@5.0.0: + resolution: {integrity: sha512-lJur5LzjinW5VYMKlVNnBU2JPLpO+A9VqAYBeuV+ZgH0hKvsnm+536Yyp+/zRTBdLe7D6Kok0FN9g+TE4J8qGA==} dev: false - /tesseract.js@4.1.1: - resolution: {integrity: sha512-2a9ej6FmtNtRKdFpjvjUpz0zGJRQgPlj/oyJxRBzMN7+2dXKeZwrIDF1b4B7xslrhlE5xpL0TYLpwhpMwsb/rw==} + /tesseract.js@5.0.3: + resolution: {integrity: sha512-UcEaIRQ+KSjxl57SS2WQgnac8hON0uJgqR6418MYLBeFPGqrAooNwcKVIoSVCzflO3CxTKPg5Ic7z7JuW7wOGA==} requiresBuild: true dependencies: bmp-js: 0.1.0 @@ -16974,7 +17159,7 @@ packages: node-fetch: 2.6.12 opencollective-postinstall: 2.0.3 regenerator-runtime: 0.13.11 - tesseract.js-core: 4.0.4 + tesseract.js-core: 5.0.0 wasm-feature-detect: 1.5.1 zlibjs: 0.3.1 transitivePeerDependencies: @@ -17008,14 +17193,16 @@ packages: engines: {node: '>=0.8'} dependencies: thenify: 3.3.1 + dev: false /thenify@3.3.1: resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} dependencies: any-promise: 1.3.0 + dev: false - /three@0.156.0: - resolution: {integrity: sha512-r6meetGWDk3aYjDRh6NpKuUkzoPlI3yldDQe2SkwCcqTTB5NZn7vKQBUXyMExvlwZShaLmvAbsVWaFzp1rkk3A==} + /three@0.158.0: + resolution: {integrity: sha512-TALj4EOpdDPF1henk2Q+s17K61uEAAWQ7TJB68nr7FKxqwyDr3msOt5IWdbGm4TaWKjrtWS8DJJWe9JnvsWOhQ==} dev: true /throttle-debounce@5.0.0: @@ -17143,6 +17330,7 @@ packages: /toidentifier@1.0.1: resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} engines: {node: '>=0.6'} + dev: false /token-stream@1.0.0: resolution: {integrity: sha512-VSsyNPPW74RpHwR8Fc21uubwHY7wMDeJLys2IX5zJNih+OnAnaifKHo+1LHT7DAdloQ7apeaaWg8l7qnf/TnEg==} @@ -17159,7 +17347,7 @@ packages: engines: {node: '>=0.8'} dependencies: psl: 1.9.0 - punycode: 2.3.0 + punycode: 2.3.1 dev: false /tough-cookie@4.1.3: @@ -17167,7 +17355,7 @@ packages: engines: {node: '>=6'} dependencies: psl: 1.9.0 - punycode: 2.3.0 + punycode: 2.3.1 universalify: 0.2.0 url-parse: 1.5.10 dev: true @@ -17258,7 +17446,7 @@ packages: '@babel/core': 7.23.2 bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@20.8.7)(ts-node@10.9.1) + jest: 29.7.0(@types/node@20.9.0)(ts-node@10.9.1) jest-util: 29.7.0 json5: 2.2.3 lodash.memoize: 4.1.2 @@ -17268,8 +17456,8 @@ packages: yargs-parser: 21.1.1 dev: true - /ts-loader@9.4.4(typescript@5.1.6)(webpack@5.88.2): - resolution: {integrity: sha512-MLukxDHBl8OJ5Dk3y69IsKVFRA/6MwzEqBgh+OXMPB/OD01KQuWPFd1WAQP8a5PeSCAxfnkhiuWqfmFJzJQt9w==} + /ts-loader@9.5.1(typescript@5.2.2)(webpack@5.89.0): + resolution: {integrity: sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg==} engines: {node: '>=12.0.0'} peerDependencies: typescript: '*' @@ -17279,11 +17467,12 @@ packages: enhanced-resolve: 5.15.0 micromatch: 4.0.5 semver: 7.5.4 - typescript: 5.1.6 - webpack: 5.88.2(@swc/core@1.3.78) + source-map: 0.7.4 + typescript: 5.2.2 + webpack: 5.89.0(@swc/core@1.3.78) dev: true - /ts-node@10.9.1(@swc/core@1.3.78)(@types/node@18.11.18)(typescript@5.1.6): + /ts-node@10.9.1(@swc/core@1.3.78)(@types/node@20.9.0)(typescript@5.2.2): resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -17303,38 +17492,7 @@ packages: '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 18.11.18 - acorn: 8.10.0 - acorn-walk: 8.2.0 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 - typescript: 5.1.6 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - - /ts-node@10.9.1(@swc/core@1.3.78)(@types/node@20.8.7)(typescript@5.2.2): - resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} - hasBin: true - peerDependencies: - '@swc/core': '>=1.2.50' - '@swc/wasm': '>=1.2.50' - '@types/node': '*' - typescript: '>=2.7' - peerDependenciesMeta: - '@swc/core': - optional: true - '@swc/wasm': - optional: true - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@swc/core': 1.3.78 - '@tsconfig/node10': 1.0.9 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.4 - '@types/node': 20.8.7 + '@types/node': 20.9.0 acorn: 8.10.0 acorn-walk: 8.2.0 arg: 4.1.3 @@ -17344,10 +17502,9 @@ packages: typescript: 5.2.2 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 - dev: true - /tsc-alias@1.8.7: - resolution: {integrity: sha512-59Q/zUQa3miTf99mLbSqaW0hi1jt4WoG8Uhe5hSZJHQpSoFW9eEwvW7jlKMHXWvT+zrzy3SN9PE/YBhQ+WVydA==} + /tsc-alias@1.8.8: + resolution: {integrity: sha512-OYUOd2wl0H858NvABWr/BoSKNERw3N9GTi3rHPK8Iv4O1UyUXIrTTOAZNHsjlVpXFOhpJBVARI1s+rzwLivN3Q==} hasBin: true dependencies: chokidar: 3.5.3 @@ -17621,9 +17778,9 @@ packages: pg: 8.11.3 reflect-metadata: 0.1.13 sha.js: 2.4.11 - ts-node: 10.9.1(@swc/core@1.3.78)(@types/node@18.11.18)(typescript@5.1.6) + ts-node: 10.9.1(@swc/core@1.3.78)(@types/node@20.9.0)(typescript@5.2.2) tslib: 2.6.1 - uuid: 9.0.0 + uuid: 9.0.1 yargs: 17.7.2 transitivePeerDependencies: - supports-color @@ -17634,15 +17791,13 @@ packages: engines: {node: '>=4.2.0'} hasBin: true - /typescript@5.1.6: - resolution: {integrity: sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==} - engines: {node: '>=14.17'} - hasBin: true - /typescript@5.2.2: resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==} engines: {node: '>=14.17'} hasBin: true + + /ufo@1.3.2: + resolution: {integrity: sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA==} dev: true /ulid@2.3.0: @@ -17692,8 +17847,8 @@ packages: undertaker-registry: 1.0.1 dev: true - /undici-types@5.25.3: - resolution: {integrity: sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==} + /undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} /undici@5.23.0: resolution: {integrity: sha512-1D7w+fvRsqlQ9GscLBwcAJinqcZGHUKjbOmXdlE/v8BvEGXjeWAax+341q44EuTcHXXnfyKNbKRq4Lg7OzhMmg==} @@ -17810,7 +17965,7 @@ packages: /uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: - punycode: 2.3.0 + punycode: 2.3.1 /urix@0.1.0: resolution: {integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==} @@ -17883,11 +18038,11 @@ packages: /uuid@9.0.0: resolution: {integrity: sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==} hasBin: true + dev: false /uuid@9.0.1: resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} hasBin: true - dev: true /v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} @@ -17995,7 +18150,7 @@ packages: replace-ext: 1.0.1 dev: true - /vite-plugin-compression@0.5.1(vite@4.4.9): + /vite-plugin-compression@0.5.1(vite@5.0.0): resolution: {integrity: sha512-5QJKBDc+gNYVqL/skgFAP81Yuzo9R+EAf19d+EtsMF/i8kFUpNi3J/H01QD3Oo8zBQn+NzoCIFkpPLynoOzaJg==} peerDependencies: vite: '>=2.0.0' @@ -18003,17 +18158,17 @@ packages: chalk: 4.1.2 debug: 4.3.4(supports-color@8.1.1) fs-extra: 10.1.0 - vite: 4.4.9(@types/node@20.5.8)(sass@1.66.1) + vite: 5.0.0(@types/node@20.9.0)(sass@1.69.5) transitivePeerDependencies: - supports-color dev: true - /vite@4.4.9(@types/node@20.5.8)(sass@1.66.1): - resolution: {integrity: sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==} - engines: {node: ^14.18.0 || >=16.0.0} + /vite@5.0.0(@types/node@20.9.0)(sass@1.69.5): + resolution: {integrity: sha512-ESJVM59mdyGpsiNAeHQOR/0fqNoOyWPYesFto8FFZugfmhdHx8Fzd8sF3Q/xkVhZsyOxHfdM7ieiVAorI9RjFw==} + engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: - '@types/node': '>= 14' + '@types/node': ^18.0.0 || >=20.0.0 less: '*' lightningcss: ^1.21.0 sass: '*' @@ -18036,11 +18191,11 @@ packages: terser: optional: true dependencies: - '@types/node': 20.5.8 - esbuild: 0.18.20 - postcss: 8.4.27 - rollup: 3.28.1 - sass: 1.66.1 + '@types/node': 20.9.0 + esbuild: 0.19.5 + postcss: 8.4.31 + rollup: 4.4.1 + sass: 1.69.5 optionalDependencies: fsevents: 2.3.3 dev: true @@ -18057,8 +18212,8 @@ packages: resolution: {integrity: sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==} dev: true - /vue-draggable-plus@0.2.6(@types/sortablejs@1.15.4): - resolution: {integrity: sha512-d+0omKIBIfLiJFggc6H4ePRaifbX+33+OiCMsxn8rG59yWXlJGrobexxgXetnSo/1NLTd0TkYZKNc4CA6iwJZw==} + /vue-draggable-plus@0.2.7(@types/sortablejs@1.15.4): + resolution: {integrity: sha512-asNQ4OxTQtN91+m45lh8QEwscXhVveaLvPAzaRXHD8JIk1+SOg7NWPQ9EmUTeNhSP3SGkJ2Agvp5WRDt7vXM8w==} peerDependencies: '@types/sortablejs': ^1.15.0 '@vue/composition-api': '*' @@ -18069,14 +18224,14 @@ packages: '@types/sortablejs': 1.15.4 dev: true - /vue-eslint-parser@9.3.1(eslint@8.51.0): + /vue-eslint-parser@9.3.1(eslint@8.53.0): resolution: {integrity: sha512-Clr85iD2XFZ3lJ52/ppmUDG/spxQu6+MAeHXjjyI4I1NUYZ9xmenQp4N0oaHJhrA8OOxltCVxMRfANGa70vU0g==} engines: {node: ^14.17.0 || >=16.0.0} peerDependencies: eslint: '>=6.0.0' dependencies: debug: 4.3.4(supports-color@8.1.1) - eslint: 8.51.0 + eslint: 8.53.0 eslint-scope: 7.2.2 eslint-visitor-keys: 3.4.2 espree: 9.6.1 @@ -18087,6 +18242,24 @@ packages: - supports-color dev: true + /vue-eslint-parser@9.3.2(eslint@8.53.0): + resolution: {integrity: sha512-q7tWyCVaV9f8iQyIA5Mkj/S6AoJ9KBN8IeUSf3XEmBrOtxOZnfTg5s4KClbZBCK3GtnT/+RyCLZyDHuZwTuBjg==} + engines: {node: ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '>=6.0.0' + dependencies: + debug: 4.3.4(supports-color@8.1.1) + eslint: 8.53.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.5.0 + lodash: 4.17.21 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + dev: true + /vue-isyourpasswordsafe@2.0.0: resolution: {integrity: sha512-j3ORj18R9AgFiP2UOM35KuZbSeJAUiwCSyeRBFN3CGFYTJSKsxqU9qGqOHOz6OhLAYKMTin8JOmqugAbF9O+Bg==} dependencies: @@ -18100,13 +18273,13 @@ packages: vue: 2.7.14 dev: true - /vue-prism-editor@2.0.0-alpha.2(vue@3.3.4): + /vue-prism-editor@2.0.0-alpha.2(vue@3.3.8): resolution: {integrity: sha512-Gu42ba9nosrE+gJpnAEuEkDMqG9zSUysIR8SdXUw8MQKDjBnnNR9lHC18uOr/ICz7yrA/5c7jHJr9lpElODC7w==} engines: {node: '>=10'} peerDependencies: vue: ^3.0.0 dependencies: - vue: 3.3.4 + vue: 3.3.8(typescript@5.2.2) dev: true /vue@2.7.14: @@ -18116,23 +18289,29 @@ packages: csstype: 3.1.2 dev: true - /vue@3.3.4: - resolution: {integrity: sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw==} + /vue@3.3.8(typescript@5.2.2): + resolution: {integrity: sha512-5VSX/3DabBikOXMsxzlW8JyfeLKlG9mzqnWgLQLty88vdZL7ZJgrdgBOmrArwxiLtmS+lNNpPcBYqrhE6TQW5w==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true dependencies: - '@vue/compiler-dom': 3.3.4 - '@vue/compiler-sfc': 3.3.4 - '@vue/runtime-dom': 3.3.4 - '@vue/server-renderer': 3.3.4(vue@3.3.4) - '@vue/shared': 3.3.4 + '@vue/compiler-dom': 3.3.8 + '@vue/compiler-sfc': 3.3.8 + '@vue/runtime-dom': 3.3.8 + '@vue/server-renderer': 3.3.8(vue@3.3.8) + '@vue/shared': 3.3.8 + typescript: 5.2.2 dev: true - /wait-on@6.0.1(debug@4.3.4): - resolution: {integrity: sha512-zht+KASY3usTY5u2LgaNqn/Cd8MukxLGjdcZxT2ns5QzDmTFc4XoWBgC+C/na+sMRZTuVygQoMYwdcVjHnYIVw==} - engines: {node: '>=10.0.0'} + /wait-on@7.2.0(debug@4.3.4): + resolution: {integrity: sha512-wCQcHkRazgjG5XoAq9jbTMLpNIjoSlZslrJ2+N9MxDsGEv1HnFoVjOCexL0ESva7Y9cu350j+DWADdk54s4AFQ==} + engines: {node: '>=12.0.0'} hasBin: true dependencies: - axios: 0.25.0(debug@4.3.4) - joi: 17.9.2 + axios: 1.6.2(debug@4.3.4) + joi: 17.11.0 lodash: 4.17.21 minimist: 1.2.8 rxjs: 7.8.1 @@ -18164,8 +18343,8 @@ packages: defaults: 1.0.4 dev: true - /web-push@3.6.5: - resolution: {integrity: sha512-rc/i0LRwA4EAeajRVHQp6+RW+NlCMuk3CgFLb+IR/NJ1RleeNzQ9iwayVHgc4LmcxaaWeslHBM1qLUq1yi0O6A==} + /web-push@3.6.6: + resolution: {integrity: sha512-SyteEck9fiCskNmPxs/GFhJsZrIyLfRvjWNmcUwULLJyCU0f1oxo2sWTokXA1mDAq9vxk4e4gVcb/8agq73NkQ==} engines: {node: '>= 16'} hasBin: true dependencies: @@ -18181,6 +18360,7 @@ packages: /web-streams-polyfill@3.2.1: resolution: {integrity: sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==} engines: {node: '>= 8'} + dev: false /webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} @@ -18195,8 +18375,8 @@ packages: engines: {node: '>=10.13.0'} dev: true - /webpack@5.88.2(@swc/core@1.3.78): - resolution: {integrity: sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==} + /webpack@5.89.0(@swc/core@1.3.78): + resolution: {integrity: sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==} engines: {node: '>=10.13.0'} hasBin: true peerDependencies: @@ -18206,13 +18386,13 @@ packages: optional: true dependencies: '@types/eslint-scope': 3.7.4 - '@types/estree': 1.0.1 + '@types/estree': 1.0.3 '@webassemblyjs/ast': 1.11.6 '@webassemblyjs/wasm-edit': 1.11.6 '@webassemblyjs/wasm-parser': 1.11.6 acorn: 8.10.0 acorn-import-assertions: 1.9.0(acorn@8.10.0) - browserslist: 4.21.10 + browserslist: 4.22.1 chrome-trace-event: 1.0.3 enhanced-resolve: 5.15.0 es-module-lexer: 1.3.0 @@ -18226,7 +18406,7 @@ packages: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.9(@swc/core@1.3.78)(webpack@5.88.2) + terser-webpack-plugin: 5.3.9(@swc/core@1.3.78)(webpack@5.89.0) watchpack: 2.4.0 webpack-sources: 3.2.3 transitivePeerDependencies: @@ -18318,6 +18498,14 @@ packages: dependencies: isexe: 2.0.0 + /which@4.0.0: + resolution: {integrity: sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==} + engines: {node: ^16.13.0 || >=18.0.0} + hasBin: true + dependencies: + isexe: 3.1.1 + dev: false + /wide-align@1.1.5: resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} dependencies: @@ -18402,8 +18590,8 @@ packages: optional: true dev: false - /ws@8.13.0: - resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} + /ws@8.14.2: + resolution: {integrity: sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -18615,12 +18803,12 @@ packages: engines: {node: '>=12.20'} dev: true - /zip-stream@4.1.0: - resolution: {integrity: sha512-zshzwQW7gG7hjpBlgeQP9RuyPGNxvJdzR8SUM3QhxCnLjWN2E7j3dOvpeDcQoETfHx0urRS7EtmVToql7YpU4A==} - engines: {node: '>= 10'} + /zip-stream@5.0.1: + resolution: {integrity: sha512-UfZ0oa0C8LI58wJ+moL46BDIMgCQbnsb+2PoiJYtonhBsMh2bq1eRBVkvjfVsqbEHd9/EgKPUuL9saSSsec8OA==} + engines: {node: '>= 12.0.0'} dependencies: - archiver-utils: 2.1.0 - compress-commons: 4.1.1 + archiver-utils: 4.0.1 + compress-commons: 5.0.1 readable-stream: 3.6.2 dev: false diff --git a/scripts/clean-all.js b/scripts/clean-all.mjs similarity index 88% rename from scripts/clean-all.js rename to scripts/clean-all.mjs index e3394f4098..f8708f740f 100644 --- a/scripts/clean-all.js +++ b/scripts/clean-all.mjs @@ -1,8 +1,11 @@ -const fs = require("node:fs"); -const execa = require("execa"); -const { join } = require("node:path"); +import fs from "node:fs"; +import path, { join } from "node:path"; +import { fileURLToPath } from "node:url"; +import { execa } from "execa"; (async () => { + const __dirname = path.dirname(fileURLToPath(import.meta.url)); + fs.rmSync(join(__dirname, "/../packages/backend/built"), { recursive: true, force: true, diff --git a/scripts/clean.js b/scripts/clean.mjs similarity index 80% rename from scripts/clean.js rename to scripts/clean.mjs index 455c436285..aa2d0f7393 100644 --- a/scripts/clean.js +++ b/scripts/clean.mjs @@ -1,8 +1,10 @@ -const fs = require("node:fs"); -const execa = require("execa"); -const { join } = require("node:path"); +import fs from "node:fs"; +import path, { join } from "node:path"; +import { fileURLToPath } from "node:url"; (async () => { + const __dirname = path.dirname(fileURLToPath(import.meta.url)); + fs.rmSync(join(__dirname, "/../packages/backend/built"), { recursive: true, force: true, diff --git a/scripts/dev.js b/scripts/dev.mjs similarity index 67% rename from scripts/dev.js rename to scripts/dev.mjs index 0d6a05fe20..beaa11f8e0 100644 --- a/scripts/dev.js +++ b/scripts/dev.mjs @@ -1,32 +1,36 @@ -const execa = require("execa"); +import path, { join } from "node:path"; +import { fileURLToPath } from "node:url"; +import { execa } from "execa"; (async () => { + const __dirname = path.dirname(fileURLToPath(import.meta.url)); + await execa("pnpm", ["clean"], { - cwd: __dirname + "/../", + cwd: join(__dirname, "/../"), stdout: process.stdout, stderr: process.stderr, }); execa("pnpm", ["dlx", "gulp", "watch"], { - cwd: __dirname + "/../", + cwd: join(__dirname, "/../"), stdout: process.stdout, stderr: process.stderr, }); execa("pnpm", ["--filter", "backend", "watch"], { - cwd: __dirname + "/../", + cwd: join(__dirname, "/../"), stdout: process.stdout, stderr: process.stderr, }); execa("pnpm", ["--filter", "client", "watch"], { - cwd: __dirname + "/../", + cwd: join(__dirname, "/../"), stdout: process.stdout, stderr: process.stderr, }); execa("pnpm", ["--filter", "sw", "watch"], { - cwd: __dirname + "/../", + cwd: join(__dirname, "/../"), stdout: process.stdout, stderr: process.stderr, }); @@ -34,7 +38,7 @@ const execa = require("execa"); const start = async () => { try { await execa("pnpm", ["start"], { - cwd: __dirname + "/../", + cwd: join(__dirname, "/../"), stdout: process.stdout, stderr: process.stderr, }); From 2d9d6e9fb795478349b2f0d961358672a113a120 Mon Sep 17 00:00:00 2001 From: naskya <m@naskya.net> Date: Fri, 17 Nov 2023 05:18:19 +0900 Subject: [PATCH 72/74] chore: lint --- packages/backend/src/const.ts | 2 +- packages/backend/src/global.d.ts | 2 +- .../src/server/file/send-drive-file.ts | 3 +- packages/backend/src/services/note/create.ts | 3 +- packages/backend/test/ap-request.ts | 2 +- packages/backend/test/api-visibility.ts | 6 +-- packages/backend/test/api.ts | 8 ++-- packages/backend/test/block.ts | 6 +-- packages/backend/test/chart.ts | 8 ++-- packages/backend/test/fetch-resource.ts | 8 ++-- packages/backend/test/ff-visibility.ts | 8 ++-- packages/backend/test/get-file-info.ts | 2 +- packages/backend/test/mfm.ts | 2 +- packages/backend/test/mute.ts | 6 +-- packages/backend/test/note.ts | 16 +++---- packages/backend/test/streaming.ts | 10 ++-- packages/backend/test/thread-mute.ts | 8 ++-- packages/backend/test/user-notes.ts | 8 ++-- packages/backend/test/utils.ts | 16 +++---- packages/client/src/account.ts | 8 ++-- .../client/src/components/MkChatPreview.vue | 4 +- packages/client/src/components/MkDialog.vue | 4 +- .../src/components/MkDriveSelectDialog.vue | 4 +- .../client/src/components/MkLaunchPad.vue | 4 +- packages/client/src/components/MkMedia.vue | 6 +-- packages/client/src/components/MkModal.vue | 20 ++++---- .../client/src/components/MkModalWindow.vue | 4 +- .../client/src/components/MkPagination.vue | 24 +++++----- packages/client/src/components/MkPoll.vue | 8 ++-- .../client/src/components/MkPollEditor.vue | 4 +- packages/client/src/components/MkPostForm.vue | 20 ++++---- packages/client/src/components/MkSignup.vue | 28 +++++------ .../client/src/components/global/MkTime.vue | 48 +++++++++++-------- packages/client/src/directives/ripple.ts | 2 +- packages/client/src/filters/note.ts | 2 +- packages/client/src/init.ts | 40 ++++++++-------- packages/client/src/instance.ts | 2 +- packages/client/src/navbar.ts | 10 ++-- packages/client/src/nirax.ts | 8 ++-- packages/client/src/os.ts | 16 +++---- .../client/src/pages/about.federation.vue | 24 +++++----- .../client/src/pages/admin/bot-protection.vue | 4 +- .../src/pages/admin/overview.queue.chart.vue | 24 +++++----- .../src/pages/admin/queue.chart.chart.vue | 24 +++++----- .../client/src/pages/admin/queue.chart.vue | 4 +- packages/client/src/pages/admin/security.vue | 32 ++++++------- packages/client/src/pages/api-console.vue | 16 +++---- packages/client/src/pages/attached-files.vue | 2 +- .../src/pages/settings/plugin.install.vue | 2 +- packages/client/src/pages/theme-editor.vue | 4 +- packages/client/src/pages/timeline.vue | 12 ++--- packages/client/src/plugin.ts | 7 ++- packages/client/src/router.ts | 6 +-- packages/client/src/scripts/autocomplete.ts | 6 ++- packages/client/src/store.ts | 2 +- packages/client/src/stream.ts | 2 +- packages/client/src/widgets/aiscript.vue | 6 +-- packages/client/src/widgets/button.vue | 8 ++-- packages/client/src/widgets/timeline.vue | 8 ++-- packages/client/tsconfig.json | 10 +--- 60 files changed, 303 insertions(+), 290 deletions(-) diff --git a/packages/backend/src/const.ts b/packages/backend/src/const.ts index 6dddf1fff5..8fc4bd25e0 100644 --- a/packages/backend/src/const.ts +++ b/packages/backend/src/const.ts @@ -1,7 +1,7 @@ import config from "@/config/index.js"; import { - DB_MAX_NOTE_TEXT_LENGTH, DB_MAX_IMAGE_COMMENT_LENGTH, + DB_MAX_NOTE_TEXT_LENGTH, } from "@/misc/hard-limits.js"; export const MAX_NOTE_TEXT_LENGTH = Math.min( diff --git a/packages/backend/src/global.d.ts b/packages/backend/src/global.d.ts index 503e26eb60..6c5a22e4b4 100644 --- a/packages/backend/src/global.d.ts +++ b/packages/backend/src/global.d.ts @@ -1,2 +1,2 @@ -// rome-ignore lint/suspicious/noExplicitAny: i have no idea +// biome-ignore lint/suspicious/noExplicitAny: i have no idea type FIXME = any; diff --git a/packages/backend/src/server/file/send-drive-file.ts b/packages/backend/src/server/file/send-drive-file.ts index 1c4d4136b5..cb29934911 100644 --- a/packages/backend/src/server/file/send-drive-file.ts +++ b/packages/backend/src/server/file/send-drive-file.ts @@ -25,7 +25,8 @@ const assets = `${_dirname}/../../server/file/assets/`; const MAX_BYTE_RANGES = 10; const commonReadableHandlerGenerator = - (ctx: Koa.Context) => (e: Error): void => { + (ctx: Koa.Context) => + (e: Error): void => { serverLogger.error(e); ctx.status = 500; ctx.set("Cache-Control", "max-age=300"); diff --git a/packages/backend/src/services/note/create.ts b/packages/backend/src/services/note/create.ts index 63a295fb33..8670f6275d 100644 --- a/packages/backend/src/services/note/create.ts +++ b/packages/backend/src/services/note/create.ts @@ -175,7 +175,8 @@ export default async ( ) => // biome-ignore lint/suspicious/noAsyncPromiseExecutor: FIXME new Promise<Note>(async (res, rej) => { - const dontFederateInitially = data.localOnly || data.visibility?.startsWith("hidden") === true; + const dontFederateInitially = + data.localOnly || data.visibility?.startsWith("hidden") === true; // If you reply outside the channel, match the scope of the target. // TODO (I think it's a process that could be done on the client side, but it's server side for now.) diff --git a/packages/backend/test/ap-request.ts b/packages/backend/test/ap-request.ts index bf77a38532..722977fe14 100644 --- a/packages/backend/test/ap-request.ts +++ b/packages/backend/test/ap-request.ts @@ -2,8 +2,8 @@ import * as assert from "assert"; import httpSignature from "@peertube/http-signature"; import { genRsaKeyPair } from "../src/misc/gen-key-pair.js"; import { - createSignedPost, createSignedGet, + createSignedPost, } from "../src/remote/activitypub/ap-request.js"; export const buildParsedSignature = ( diff --git a/packages/backend/test/api-visibility.ts b/packages/backend/test/api-visibility.ts index 0ee4a4d337..49b1b5a064 100644 --- a/packages/backend/test/api-visibility.ts +++ b/packages/backend/test/api-visibility.ts @@ -4,11 +4,11 @@ import * as assert from "assert"; import * as childProcess from "child_process"; import { async, - signup, - request, post, - startServer, + request, shutdownServer, + signup, + startServer, } from "./utils.js"; describe("API visibility", () => { diff --git a/packages/backend/test/api.ts b/packages/backend/test/api.ts index 19a754552c..0fc2f424ec 100644 --- a/packages/backend/test/api.ts +++ b/packages/backend/test/api.ts @@ -4,13 +4,13 @@ import * as assert from "assert"; import * as childProcess from "child_process"; import { async, - signup, - request, post, react, - uploadFile, - startServer, + request, shutdownServer, + signup, + startServer, + uploadFile, } from "./utils.js"; describe("API", () => { diff --git a/packages/backend/test/block.ts b/packages/backend/test/block.ts index 08192e4869..100a4ab7d5 100644 --- a/packages/backend/test/block.ts +++ b/packages/backend/test/block.ts @@ -4,11 +4,11 @@ import * as assert from "assert"; import * as childProcess from "child_process"; import { async, - signup, - request, post, - startServer, + request, shutdownServer, + signup, + startServer, } from "./utils.js"; describe("Block", () => { diff --git a/packages/backend/test/chart.ts b/packages/backend/test/chart.ts index e194c6c195..cd600f661a 100644 --- a/packages/backend/test/chart.ts +++ b/packages/backend/test/chart.ts @@ -2,11 +2,11 @@ process.env.NODE_ENV = "test"; import * as assert from "assert"; import * as lolex from "@sinonjs/fake-timers"; -import TestChart from "../src/services/chart/charts/test.js"; -import TestGroupedChart from "../src/services/chart/charts/test-grouped.js"; -import TestUniqueChart from "../src/services/chart/charts/test-unique.js"; -import TestIntersectionChart from "../src/services/chart/charts/test-intersection.js"; import { initDb } from "../src/db/postgre.js"; +import TestGroupedChart from "../src/services/chart/charts/test-grouped.js"; +import TestIntersectionChart from "../src/services/chart/charts/test-intersection.js"; +import TestUniqueChart from "../src/services/chart/charts/test-unique.js"; +import TestChart from "../src/services/chart/charts/test.js"; describe("Chart", () => { let testChart: TestChart; diff --git a/packages/backend/test/fetch-resource.ts b/packages/backend/test/fetch-resource.ts index da3116f0e8..00c0d736ef 100644 --- a/packages/backend/test/fetch-resource.ts +++ b/packages/backend/test/fetch-resource.ts @@ -5,13 +5,13 @@ import * as childProcess from "child_process"; import * as openapi from "@redocly/openapi-core"; import { async, - startServer, - signup, + port, post, request, - simpleGet, - port, shutdownServer, + signup, + simpleGet, + startServer, } from "./utils.js"; // Request Accept diff --git a/packages/backend/test/ff-visibility.ts b/packages/backend/test/ff-visibility.ts index f898926d99..efdbe7f0f6 100644 --- a/packages/backend/test/ff-visibility.ts +++ b/packages/backend/test/ff-visibility.ts @@ -4,14 +4,14 @@ import * as assert from "assert"; import * as childProcess from "child_process"; import { async, - signup, - request, + connectStream, post, react, - connectStream, - startServer, + request, shutdownServer, + signup, simpleGet, + startServer, } from "./utils.js"; describe("FF visibility", () => { diff --git a/packages/backend/test/get-file-info.ts b/packages/backend/test/get-file-info.ts index 22dc28c8e0..b1092af278 100644 --- a/packages/backend/test/get-file-info.ts +++ b/packages/backend/test/get-file-info.ts @@ -1,6 +1,6 @@ import * as assert from "assert"; -import { fileURLToPath } from "node:url"; import { dirname } from "node:path"; +import { fileURLToPath } from "node:url"; import { getFileInfo } from "../src/misc/get-file-info.js"; import { async } from "./utils.js"; diff --git a/packages/backend/test/mfm.ts b/packages/backend/test/mfm.ts index 926bdd259d..81ed95848a 100644 --- a/packages/backend/test/mfm.ts +++ b/packages/backend/test/mfm.ts @@ -1,8 +1,8 @@ import * as assert from "assert"; import * as mfm from "mfm-js"; -import { toHtml } from "../src/mfm/to-html.js"; import { fromHtml } from "../src/mfm/from-html.js"; +import { toHtml } from "../src/mfm/to-html.js"; describe("toHtml", () => { it("br", () => { diff --git a/packages/backend/test/mute.ts b/packages/backend/test/mute.ts index c511628342..831c2c1ee4 100644 --- a/packages/backend/test/mute.ts +++ b/packages/backend/test/mute.ts @@ -4,12 +4,12 @@ import * as assert from "assert"; import * as childProcess from "child_process"; import { async, - signup, - request, post, react, - startServer, + request, shutdownServer, + signup, + startServer, waitFire, } from "./utils.js"; diff --git a/packages/backend/test/note.ts b/packages/backend/test/note.ts index 3af4b88d87..b78138b1ed 100644 --- a/packages/backend/test/note.ts +++ b/packages/backend/test/note.ts @@ -4,15 +4,15 @@ import * as assert from "assert"; import * as childProcess from "child_process"; import { Note } from "../src/models/entities/note.js"; import { - async, - signup, - request, - post, - uploadUrl, - startServer, - shutdownServer, - initTestDb, api, + async, + initTestDb, + post, + request, + shutdownServer, + signup, + startServer, + uploadUrl, } from "./utils.js"; describe("Note", () => { diff --git a/packages/backend/test/streaming.ts b/packages/backend/test/streaming.ts index 3292c66e17..37171f4184 100644 --- a/packages/backend/test/streaming.ts +++ b/packages/backend/test/streaming.ts @@ -4,13 +4,13 @@ import * as assert from "assert"; import * as childProcess from "child_process"; import { Following } from "../src/models/entities/following.js"; import { - connectStream, - signup, api, - post, - startServer, - shutdownServer, + connectStream, initTestDb, + post, + shutdownServer, + signup, + startServer, waitFire, } from "./utils.js"; diff --git a/packages/backend/test/thread-mute.ts b/packages/backend/test/thread-mute.ts index 9b3bb8dfe4..88483b51c8 100644 --- a/packages/backend/test/thread-mute.ts +++ b/packages/backend/test/thread-mute.ts @@ -4,13 +4,13 @@ import * as assert from "assert"; import * as childProcess from "child_process"; import { async, - signup, - request, + connectStream, post, react, - connectStream, - startServer, + request, shutdownServer, + signup, + startServer, } from "./utils.js"; describe("Note thread mute", () => { diff --git a/packages/backend/test/user-notes.ts b/packages/backend/test/user-notes.ts index 86a541c101..cdf5e7dbbb 100644 --- a/packages/backend/test/user-notes.ts +++ b/packages/backend/test/user-notes.ts @@ -4,12 +4,12 @@ import * as assert from "assert"; import * as childProcess from "child_process"; import { async, - signup, - request, post, - uploadUrl, - startServer, + request, shutdownServer, + signup, + startServer, + uploadUrl, } from "./utils.js"; describe("users/notes", () => { diff --git a/packages/backend/test/utils.ts b/packages/backend/test/utils.ts index ff2dd79de9..3c8449fb58 100644 --- a/packages/backend/test/utils.ts +++ b/packages/backend/test/utils.ts @@ -1,18 +1,18 @@ -import * as fs from "node:fs"; -import * as path from "node:path"; -import { fileURLToPath } from "node:url"; -import { dirname } from "node:path"; import * as childProcess from "child_process"; -import * as http from "node:http"; import { SIGKILL } from "constants"; -import WebSocket from "ws"; +import * as fs from "node:fs"; +import * as http from "node:http"; +import * as path from "node:path"; +import { dirname } from "node:path"; +import { fileURLToPath } from "node:url"; import * as firefish from "firefish-js"; -import fetch from "node-fetch"; import FormData from "form-data"; +import got from "got"; +import fetch from "node-fetch"; import { DataSource } from "typeorm"; +import WebSocket from "ws"; import loadConfig from "../src/config/load.js"; import { entities } from "../src/db/postgre.js"; -import got from "got"; const _filename = fileURLToPath(import.meta.url); const _dirname = dirname(_filename); diff --git a/packages/client/src/account.ts b/packages/client/src/account.ts index c91259d127..562a9e5422 100644 --- a/packages/client/src/account.ts +++ b/packages/client/src/account.ts @@ -1,12 +1,12 @@ -import { defineAsyncComponent } from "vue"; import type * as firefish from "firefish-js"; +import { defineAsyncComponent } from "vue"; import { i18n } from "./i18n"; -import { del, get, set } from "@/scripts/idb-proxy"; import { apiUrl } from "@/config"; import { alert, api, popup, popupMenu, waiting } from "@/os"; -import { reloadChannel, unisonReload } from "@/scripts/unison-reload"; -import icon from "@/scripts/icon"; import { $i } from "@/reactiveAccount"; +import icon from "@/scripts/icon"; +import { del, get, set } from "@/scripts/idb-proxy"; +import { reloadChannel, unisonReload } from "@/scripts/unison-reload"; // TODO: 他のタブと永続化されたstateを同期 diff --git a/packages/client/src/components/MkChatPreview.vue b/packages/client/src/components/MkChatPreview.vue index 27db671bd5..b309c8b002 100644 --- a/packages/client/src/components/MkChatPreview.vue +++ b/packages/client/src/components/MkChatPreview.vue @@ -22,8 +22,8 @@ message.groupId ? message.user : isMe(message) - ? message.recipient - : message.user + ? message.recipient + : message.user " :show-indicator="true" disable-link diff --git a/packages/client/src/components/MkDialog.vue b/packages/client/src/components/MkDialog.vue index a940f7d010..2659f139b8 100644 --- a/packages/client/src/components/MkDialog.vue +++ b/packages/client/src/components/MkDialog.vue @@ -327,8 +327,8 @@ async function ok() { const result = props.input ? inputValue.value : props.select - ? selectedValue.value - : true; + ? selectedValue.value + : true; done(false, result); } diff --git a/packages/client/src/components/MkDriveSelectDialog.vue b/packages/client/src/components/MkDriveSelectDialog.vue index af40dc8490..1047acce97 100644 --- a/packages/client/src/components/MkDriveSelectDialog.vue +++ b/packages/client/src/components/MkDriveSelectDialog.vue @@ -17,8 +17,8 @@ ? i18n.ts.selectFiles : i18n.ts.selectFolders : type === "file" - ? i18n.ts.selectFile - : i18n.ts.selectFolder + ? i18n.ts.selectFile + : i18n.ts.selectFolder }} <span v-if="selected.length > 0" diff --git a/packages/client/src/components/MkLaunchPad.vue b/packages/client/src/components/MkLaunchPad.vue index 286f9ccf58..9e194f8e4b 100644 --- a/packages/client/src/components/MkLaunchPad.vue +++ b/packages/client/src/components/MkLaunchPad.vue @@ -88,8 +88,8 @@ const preferedModalType = deviceKind === "desktop" && props.src != null ? "popup" : deviceKind === "smartphone" - ? "drawer" - : "dialog"; + ? "drawer" + : "dialog"; const modal = ref<InstanceType<typeof MkModal>>(); diff --git a/packages/client/src/components/MkMedia.vue b/packages/client/src/components/MkMedia.vue index 24db8d4e74..dad2f9e77d 100644 --- a/packages/client/src/components/MkMedia.vue +++ b/packages/client/src/components/MkMedia.vue @@ -113,9 +113,9 @@ const url = props.raw || defaultStore.state.loadRawImages ? props.media.url : defaultStore.state.disableShowingAnimatedImages && - props.media.type.startsWith("image") - ? getStaticImageUrl(props.media.thumbnailUrl) - : props.media.thumbnailUrl; + props.media.type.startsWith("image") + ? getStaticImageUrl(props.media.thumbnailUrl) + : props.media.thumbnailUrl; const mediaType = computed(() => { return props.media.type === "video/quicktime" diff --git a/packages/client/src/components/MkModal.vue b/packages/client/src/components/MkModal.vue index 893cced0d5..f6b52a626c 100644 --- a/packages/client/src/components/MkModal.vue +++ b/packages/client/src/components/MkModal.vue @@ -169,22 +169,22 @@ const transitionName = computed(() => ? useSendAnime.value ? "send" : type.value === "drawer" - ? "modal-drawer" - : type.value === "popup" - ? "modal-popup" - : "modal" + ? "modal-drawer" + : type.value === "popup" + ? "modal-popup" + : "modal" : "", ); const transitionDuration = computed(() => transitionName.value === "send" ? 400 : transitionName.value === "modal-popup" - ? 100 - : transitionName.value === "modal" - ? 200 - : transitionName.value === "modal-drawer" - ? 200 - : 0, + ? 100 + : transitionName.value === "modal" + ? 200 + : transitionName.value === "modal-drawer" + ? 200 + : 0, ); let contentClicking = false; diff --git a/packages/client/src/components/MkModalWindow.vue b/packages/client/src/components/MkModalWindow.vue index 1a2b3db85e..cab0f07a79 100644 --- a/packages/client/src/components/MkModalWindow.vue +++ b/packages/client/src/components/MkModalWindow.vue @@ -17,8 +17,8 @@ ? `${props.height}px` : null : height - ? `min(${props.height}px, 100%)` - : '100%', + ? `min(${props.height}px, 100%)` + : '100%', }" tabindex="-1" > diff --git a/packages/client/src/components/MkPagination.vue b/packages/client/src/components/MkPagination.vue index f06e8a11d9..17d2ef3e7a 100644 --- a/packages/client/src/components/MkPagination.vue +++ b/packages/client/src/components/MkPagination.vue @@ -259,12 +259,12 @@ const fetchMore = async (): Promise<void> => { offset: offset.value, } : props.pagination.reversed - ? { - sinceId: items.value[0].id, - } - : { - untilId: items.value[items.value.length - 1].id, - }), + ? { + sinceId: items.value[0].id, + } + : { + untilId: items.value[items.value.length - 1].id, + }), }) .then( (res) => { @@ -320,12 +320,12 @@ const fetchMoreAhead = async (): Promise<void> => { offset: offset.value, } : props.pagination.reversed - ? { - untilId: items.value[0].id, - } - : { - sinceId: items.value[items.value.length - 1].id, - }), + ? { + untilId: items.value[0].id, + } + : { + sinceId: items.value[items.value.length - 1].id, + }), }) .then( (res) => { diff --git a/packages/client/src/components/MkPoll.vue b/packages/client/src/components/MkPoll.vue index 21540ba454..48211f1712 100644 --- a/packages/client/src/components/MkPoll.vue +++ b/packages/client/src/components/MkPoll.vue @@ -81,10 +81,10 @@ const timer = computed(() => remaining.value >= 86400 ? "_poll.remainingDays" : remaining.value >= 3600 - ? "_poll.remainingHours" - : remaining.value >= 60 - ? "_poll.remainingMinutes" - : "_poll.remainingSeconds", + ? "_poll.remainingHours" + : remaining.value >= 60 + ? "_poll.remainingMinutes" + : "_poll.remainingSeconds", { s: Math.floor(remaining.value % 60), m: Math.floor(remaining.value / 60) % 60, diff --git a/packages/client/src/components/MkPollEditor.vue b/packages/client/src/components/MkPollEditor.vue index d6dcd75b31..622ac7fd98 100644 --- a/packages/client/src/components/MkPollEditor.vue +++ b/packages/client/src/components/MkPollEditor.vue @@ -171,8 +171,8 @@ function get() { ...(expiration.value === "at" ? { expiresAt: calcAt() } : expiration.value === "after" - ? { expiredAfter: calcAfter() } - : {}), + ? { expiredAfter: calcAfter() } + : {}), }; } diff --git a/packages/client/src/components/MkPostForm.vue b/packages/client/src/components/MkPostForm.vue index a3d7b46667..490d75bab6 100644 --- a/packages/client/src/components/MkPostForm.vue +++ b/packages/client/src/components/MkPostForm.vue @@ -72,8 +72,8 @@ reply ? 'ph-arrow-u-up-left' : renote - ? 'ph-quotes' - : 'ph-paper-plane-tilt', + ? 'ph-quotes' + : 'ph-paper-plane-tilt', ) " ></i> @@ -401,10 +401,10 @@ const submitText = computed((): string => { return props.editId ? i18n.ts.edit : props.renote - ? i18n.ts.quote - : props.reply - ? i18n.ts.reply - : i18n.ts.note; + ? i18n.ts.quote + : props.reply + ? i18n.ts.reply + : i18n.ts.note; }); const textLength = computed((): number => { @@ -473,8 +473,8 @@ if (props.reply && props.reply.text != null) { const mention = x.host ? `@${x.username}@${toASCII(x.host)}` : otherHost == null || otherHost === host - ? `@${x.username}` - : `@${x.username}@${toASCII(otherHost)}`; + ? `@${x.username}` + : `@${x.username}@${toASCII(otherHost)}`; // 自分は除外 if ($i.username === x.username && (x.host == null || x.host === host)) @@ -868,8 +868,8 @@ async function post() { renoteId: props.renote ? props.renote.id : quoteId.value - ? quoteId.value - : undefined, + ? quoteId.value + : undefined, channelId: props.channel ? props.channel.id : undefined, poll: poll.value, cw: useCw.value ? cw.value || "" : undefined, diff --git a/packages/client/src/components/MkSignup.vue b/packages/client/src/components/MkSignup.vue index ff41c5a5d9..9340d9af92 100644 --- a/packages/client/src/components/MkSignup.vue +++ b/packages/client/src/components/MkSignup.vue @@ -371,10 +371,10 @@ function onChangeUsername(): void { const err = !username.value.match(/^[a-zA-Z0-9_]+$/) ? "invalid-format" : username.value.length < 1 - ? "min-range" - : username.value.length > 20 - ? "max-range" - : null; + ? "min-range" + : username.value.length > 20 + ? "max-range" + : null; if (err) { usernameState.value = err; @@ -410,16 +410,16 @@ function onChangeEmail(): void { emailState.value = result.available ? "ok" : result.reason === "used" - ? "unavailable:used" - : result.reason === "format" - ? "unavailable:format" - : result.reason === "disposable" - ? "unavailable:disposable" - : result.reason === "mx" - ? "unavailable:mx" - : result.reason === "smtp" - ? "unavailable:smtp" - : "unavailable"; + ? "unavailable:used" + : result.reason === "format" + ? "unavailable:format" + : result.reason === "disposable" + ? "unavailable:disposable" + : result.reason === "mx" + ? "unavailable:mx" + : result.reason === "smtp" + ? "unavailable:smtp" + : "unavailable"; }) .catch(() => { emailState.value = "error"; diff --git a/packages/client/src/components/global/MkTime.vue b/packages/client/src/components/global/MkTime.vue index 8e25b6d78a..e235684584 100644 --- a/packages/client/src/components/global/MkTime.vue +++ b/packages/client/src/components/global/MkTime.vue @@ -29,11 +29,11 @@ const _time = props.time == null ? NaN : typeof props.time === "number" - ? props.time - : (props.time instanceof Date - ? props.time - : new Date(props.time) - ).getTime(); + ? props.time + : (props.time instanceof Date + ? props.time + : new Date(props.time) + ).getTime(); const invalid = Number.isNaN(_time); const absolute = !invalid ? dateTimeFormat.format(_time) : i18n.ts._ago.invalid; @@ -46,20 +46,30 @@ const relative = computed<string>(() => { return ago >= 31536000 ? i18n.t("_ago.yearsAgo", { n: Math.floor(ago / 31536000).toString() }) : ago >= 2592000 - ? i18n.t("_ago.monthsAgo", { n: Math.floor(ago / 2592000).toString() }) - : ago >= 604800 - ? i18n.t("_ago.weeksAgo", { n: Math.floor(ago / 604800).toString() }) - : ago >= 86400 - ? i18n.t("_ago.daysAgo", { n: Math.floor(ago / 86400).toString() }) - : ago >= 3600 - ? i18n.t("_ago.hoursAgo", { n: Math.floor(ago / 3600).toString() }) - : ago >= 60 - ? i18n.t("_ago.minutesAgo", { n: (~~(ago / 60)).toString() }) - : ago >= 10 - ? i18n.t("_ago.secondsAgo", { n: (~~(ago % 60)).toString() }) - : ago >= -1 - ? i18n.ts._ago.justNow - : i18n.ts._ago.future; + ? i18n.t("_ago.monthsAgo", { + n: Math.floor(ago / 2592000).toString(), + }) + : ago >= 604800 + ? i18n.t("_ago.weeksAgo", { + n: Math.floor(ago / 604800).toString(), + }) + : ago >= 86400 + ? i18n.t("_ago.daysAgo", { + n: Math.floor(ago / 86400).toString(), + }) + : ago >= 3600 + ? i18n.t("_ago.hoursAgo", { + n: Math.floor(ago / 3600).toString(), + }) + : ago >= 60 + ? i18n.t("_ago.minutesAgo", { n: (~~(ago / 60)).toString() }) + : ago >= 10 + ? i18n.t("_ago.secondsAgo", { + n: (~~(ago % 60)).toString(), + }) + : ago >= -1 + ? i18n.ts._ago.justNow + : i18n.ts._ago.future; }); let tickId: number; diff --git a/packages/client/src/directives/ripple.ts b/packages/client/src/directives/ripple.ts index efbc5ee5aa..bf364d1268 100644 --- a/packages/client/src/directives/ripple.ts +++ b/packages/client/src/directives/ripple.ts @@ -1,6 +1,6 @@ +import type { Ref } from "vue"; import Ripple from "@/components/MkRipple.vue"; import { popup } from "@/os"; -import type { Ref } from "vue"; export default { mounted(el: HTMLElement, binding: Ref<boolean>) { diff --git a/packages/client/src/filters/note.ts b/packages/client/src/filters/note.ts index c3f0d6ade1..3f7294634e 100644 --- a/packages/client/src/filters/note.ts +++ b/packages/client/src/filters/note.ts @@ -1,4 +1,4 @@ -import { entities } from "firefish-js"; +import type { entities } from "firefish-js"; export const notePage = (note: entities.Note) => { return `/notes/${note.id}`; diff --git a/packages/client/src/init.ts b/packages/client/src/init.ts index 637e5aafaf..b758b4c99e 100644 --- a/packages/client/src/init.ts +++ b/packages/client/src/init.ts @@ -7,11 +7,11 @@ import "vite/modulepreload-polyfill"; import "@/style.scss"; -import "@phosphor-icons/web/fill"; import "@phosphor-icons/web/bold"; -import "@phosphor-icons/web/regular"; -import "@phosphor-icons/web/light"; import "@phosphor-icons/web/duotone"; +import "@phosphor-icons/web/fill"; +import "@phosphor-icons/web/light"; +import "@phosphor-icons/web/regular"; // #region account indexedDB migration @@ -22,6 +22,7 @@ if (accounts) { } // #endregion +import { compareVersions } from "compare-versions"; import { computed, createApp, @@ -30,31 +31,30 @@ import { version as vueVersion, watch, } from "vue"; -import { compareVersions } from "compare-versions"; import { set } from "@/scripts/idb-proxy"; -import widgets from "@/widgets"; -import directives from "@/directives"; +import { login, refreshAccount, signout, updateAccount } from "@/account"; import components from "@/components"; import { lang, ui, version } from "@/config"; -import { applyTheme } from "@/scripts/theme"; -import { isDeviceDarkmode } from "@/scripts/is-device-darkmode"; +import directives from "@/directives"; import { i18n } from "@/i18n"; -import { alert, api, confirm, popup, post, toast } from "@/os"; -import { stream } from "@/stream"; -import * as sound from "@/scripts/sound"; -import { login, refreshAccount, signout, updateAccount } from "@/account"; -import { $i } from "@/reactiveAccount"; -import { ColdDeviceStorage, defaultStore } from "@/store"; import { fetchInstance, instance } from "@/instance"; -import { makeHotkey } from "@/scripts/hotkey"; -import { search } from "@/scripts/search"; +import { alert, api, confirm, popup, post, toast } from "@/os"; +import { $i } from "@/reactiveAccount"; import { deviceKind } from "@/scripts/device-kind"; -import { initializeSw } from "@/scripts/initialize-sw"; -import { reloadChannel } from "@/scripts/unison-reload"; -import { reactionPicker } from "@/scripts/reaction-picker"; -import { getUrlWithoutLoginId } from "@/scripts/login-id"; import { getAccountFromId } from "@/scripts/get-account-from-id"; +import { makeHotkey } from "@/scripts/hotkey"; +import { initializeSw } from "@/scripts/initialize-sw"; +import { isDeviceDarkmode } from "@/scripts/is-device-darkmode"; +import { getUrlWithoutLoginId } from "@/scripts/login-id"; +import { reactionPicker } from "@/scripts/reaction-picker"; +import { search } from "@/scripts/search"; +import * as sound from "@/scripts/sound"; +import { applyTheme } from "@/scripts/theme"; +import { reloadChannel } from "@/scripts/unison-reload"; +import { ColdDeviceStorage, defaultStore } from "@/store"; +import { stream } from "@/stream"; +import widgets from "@/widgets"; function checkForSplash() { const splash = document.getElementById("splash"); diff --git a/packages/client/src/instance.ts b/packages/client/src/instance.ts index 783cb01ad6..493baeb94b 100644 --- a/packages/client/src/instance.ts +++ b/packages/client/src/instance.ts @@ -1,5 +1,5 @@ -import { computed, reactive } from "vue"; import type * as firefish from "firefish-js"; +import { computed, reactive } from "vue"; import { api } from "./os"; // TODO: 他のタブと永続化されたstateを同期 diff --git a/packages/client/src/navbar.ts b/packages/client/src/navbar.ts index 3021359e41..55cfab5bba 100644 --- a/packages/client/src/navbar.ts +++ b/packages/client/src/navbar.ts @@ -1,11 +1,11 @@ import { computed, reactive } from "vue"; -import { $i } from "@/reactiveAccount"; -import { search } from "@/scripts/search"; -import * as os from "@/os"; -import { i18n } from "@/i18n"; import { ui } from "@/config"; -import { unisonReload } from "@/scripts/unison-reload"; +import { i18n } from "@/i18n"; +import * as os from "@/os"; +import { $i } from "@/reactiveAccount"; import icon from "@/scripts/icon"; +import { search } from "@/scripts/search"; +import { unisonReload } from "@/scripts/unison-reload"; export const navbarItemDef = reactive({ notifications: { diff --git a/packages/client/src/nirax.ts b/packages/client/src/nirax.ts index 0ce413d393..800d47042c 100644 --- a/packages/client/src/nirax.ts +++ b/packages/client/src/nirax.ts @@ -3,8 +3,8 @@ import { EventEmitter } from "eventemitter3"; import type { Component, ShallowRef } from "vue"; import { shallowRef } from "vue"; -import { pleaseLogin } from "@/scripts/please-login"; import { safeURIDecode } from "@/scripts/safe-uri-decode"; +import { pleaseLogin } from "@/scripts/please-login"; interface RouteDef { path: string; @@ -112,7 +112,7 @@ export class Router extends EventEmitter<{ let parts = [..._parts]; const props = new Map<string, string>(); - pathMatchLoop: for (const p of parsePath(route.path)) { + for (const p of parsePath(route.path)) { if (typeof p === "string") { if (p === parts[0]) { parts.shift(); @@ -128,7 +128,7 @@ export class Router extends EventEmitter<{ props.set(p.name, safeURIDecode(parts.join("/"))); parts = []; } - break pathMatchLoop; + break; } else { if (p.startsWith) { if (parts[0] == null || !parts[0].startsWith(p.startsWith)) @@ -159,7 +159,7 @@ export class Router extends EventEmitter<{ child, }; } else { - continue forEachRouteLoop; + continue; } } diff --git a/packages/client/src/os.ts b/packages/client/src/os.ts index 0baefc68a9..d367dc2fc9 100644 --- a/packages/client/src/os.ts +++ b/packages/client/src/os.ts @@ -1,18 +1,18 @@ // TODO: なんでもかんでもos.tsに突っ込むのやめたいのでよしなに分割する +import { EventEmitter } from "eventemitter3"; +import * as firefish from "firefish-js"; +import insertTextAtCursor from "insert-text-at-cursor"; import type { Component, Ref } from "vue"; import { defineAsyncComponent, markRaw, ref } from "vue"; -import { EventEmitter } from "eventemitter3"; -import insertTextAtCursor from "insert-text-at-cursor"; -import * as firefish from "firefish-js"; import { i18n } from "./i18n"; -import { apiUrl, url } from "@/config"; -import MkPostFormDialog from "@/components/MkPostFormDialog.vue"; -import MkWaitingDialog from "@/components/MkWaitingDialog.vue"; -import MkToast from "@/components/MkToast.vue"; import MkDialog from "@/components/MkDialog.vue"; -import type { MenuItem } from "@/types/menu"; +import MkPostFormDialog from "@/components/MkPostFormDialog.vue"; +import MkToast from "@/components/MkToast.vue"; +import MkWaitingDialog from "@/components/MkWaitingDialog.vue"; +import { apiUrl, url } from "@/config"; import { $i } from "@/reactiveAccount"; +import type { MenuItem } from "@/types/menu"; export const pendingApiRequestsCount = ref(0); diff --git a/packages/client/src/pages/about.federation.vue b/packages/client/src/pages/about.federation.vue index 163166a382..d2d00dce27 100644 --- a/packages/client/src/pages/about.federation.vue +++ b/packages/client/src/pages/about.federation.vue @@ -127,18 +127,18 @@ const pagination = { ...(state.value === "federating" ? { federating: true } : state.value === "subscribing" - ? { subscribing: true } - : state.value === "publishing" - ? { publishing: true } - : state.value === "suspended" - ? { suspended: true } - : state.value === "blocked" - ? { blocked: true } - : state.value === "silenced" - ? { silenced: true } - : state.value === "notResponding" - ? { notResponding: true } - : {}), + ? { subscribing: true } + : state.value === "publishing" + ? { publishing: true } + : state.value === "suspended" + ? { suspended: true } + : state.value === "blocked" + ? { blocked: true } + : state.value === "silenced" + ? { silenced: true } + : state.value === "notResponding" + ? { notResponding: true } + : {}), })), }; diff --git a/packages/client/src/pages/admin/bot-protection.vue b/packages/client/src/pages/admin/bot-protection.vue index 54d1b2ae11..0114aa3993 100644 --- a/packages/client/src/pages/admin/bot-protection.vue +++ b/packages/client/src/pages/admin/bot-protection.vue @@ -105,8 +105,8 @@ async function init() { provider.value = meta.enableHcaptcha ? "hcaptcha" : meta.enableRecaptcha - ? "recaptcha" - : null; + ? "recaptcha" + : null; } function save() { diff --git a/packages/client/src/pages/admin/overview.queue.chart.vue b/packages/client/src/pages/admin/overview.queue.chart.vue index 2e9195e205..6482d99db7 100644 --- a/packages/client/src/pages/admin/overview.queue.chart.vue +++ b/packages/client/src/pages/admin/overview.queue.chart.vue @@ -51,23 +51,23 @@ const label = props.type === "process" ? "Process" : props.type === "active" - ? "Active" - : props.type === "delayed" - ? "Delayed" - : props.type === "waiting" - ? "Waiting" - : ("?" as never); + ? "Active" + : props.type === "delayed" + ? "Delayed" + : props.type === "waiting" + ? "Waiting" + : ("?" as never); const color = props.type === "process" ? "#c4a7e7" : props.type === "active" - ? "#31748f" - : props.type === "delayed" - ? "#eb6f92" - : props.type === "waiting" - ? "#f6c177" - : ("?" as never); + ? "#31748f" + : props.type === "delayed" + ? "#eb6f92" + : props.type === "waiting" + ? "#f6c177" + : ("?" as never); onMounted(() => { const vLineColor = defaultStore.state.darkMode diff --git a/packages/client/src/pages/admin/queue.chart.chart.vue b/packages/client/src/pages/admin/queue.chart.chart.vue index bd7b781cbb..fd3edea98d 100644 --- a/packages/client/src/pages/admin/queue.chart.chart.vue +++ b/packages/client/src/pages/admin/queue.chart.chart.vue @@ -96,23 +96,23 @@ const label = props.type === "process" ? "Process" : props.type === "active" - ? "Active" - : props.type === "delayed" - ? "Delayed" - : props.type === "waiting" - ? "Waiting" - : ("?" as never); + ? "Active" + : props.type === "delayed" + ? "Delayed" + : props.type === "waiting" + ? "Waiting" + : ("?" as never); const color = props.type === "process" ? "#9ccfd8" : props.type === "active" - ? "#31748f" - : props.type === "delayed" - ? "#eb6f92" - : props.type === "waiting" - ? "#f6c177" - : ("?" as never); + ? "#31748f" + : props.type === "delayed" + ? "#eb6f92" + : props.type === "waiting" + ? "#f6c177" + : ("?" as never); onMounted(() => { chartInstance = new Chart(chartEl.value, { diff --git a/packages/client/src/pages/admin/queue.chart.vue b/packages/client/src/pages/admin/queue.chart.vue index fad0deb6ca..cb10e27e7f 100644 --- a/packages/client/src/pages/admin/queue.chart.vue +++ b/packages/client/src/pages/admin/queue.chart.vue @@ -117,8 +117,8 @@ onMounted(() => { props.domain === "inbox" ? "admin/queue/inbox-delayed" : props.domain === "deliver" - ? "admin/queue/deliver-delayed" - : null, + ? "admin/queue/deliver-delayed" + : null, {}, ).then((result) => { jobs.value = result; diff --git a/packages/client/src/pages/admin/security.vue b/packages/client/src/pages/admin/security.vue index dd8eff4fe4..7522b53d8a 100644 --- a/packages/client/src/pages/admin/security.vue +++ b/packages/client/src/pages/admin/security.vue @@ -290,14 +290,14 @@ async function init() { meta.sensitiveMediaDetectionSensitivity === "veryLow" ? 0 : meta.sensitiveMediaDetectionSensitivity === "low" - ? 1 - : meta.sensitiveMediaDetectionSensitivity === "medium" - ? 2 - : meta.sensitiveMediaDetectionSensitivity === "high" - ? 3 - : meta.sensitiveMediaDetectionSensitivity === "veryHigh" - ? 4 - : 0; + ? 1 + : meta.sensitiveMediaDetectionSensitivity === "medium" + ? 2 + : meta.sensitiveMediaDetectionSensitivity === "high" + ? 3 + : meta.sensitiveMediaDetectionSensitivity === "veryHigh" + ? 4 + : 0; setSensitiveFlagAutomatically.value = meta.setSensitiveFlagAutomatically; enableSensitiveMediaDetectionForVideos.value = meta.enableSensitiveMediaDetectionForVideos; @@ -317,14 +317,14 @@ function save() { sensitiveMediaDetectionSensitivity.value === 0 ? "veryLow" : sensitiveMediaDetectionSensitivity.value === 1 - ? "low" - : sensitiveMediaDetectionSensitivity.value === 2 - ? "medium" - : sensitiveMediaDetectionSensitivity.value === 3 - ? "high" - : sensitiveMediaDetectionSensitivity.value === 4 - ? "veryHigh" - : 0, + ? "low" + : sensitiveMediaDetectionSensitivity.value === 2 + ? "medium" + : sensitiveMediaDetectionSensitivity.value === 3 + ? "high" + : sensitiveMediaDetectionSensitivity.value === 4 + ? "veryHigh" + : 0, setSensitiveFlagAutomatically: setSensitiveFlagAutomatically.value, enableSensitiveMediaDetectionForVideos: enableSensitiveMediaDetectionForVideos.value, diff --git a/packages/client/src/pages/api-console.vue b/packages/client/src/pages/api-console.vue index 63957c115f..083db86ce0 100644 --- a/packages/client/src/pages/api-console.vue +++ b/packages/client/src/pages/api-console.vue @@ -98,14 +98,14 @@ function onEndpointChange() { p.type === "String" ? "" : p.type === "Number" - ? 0 - : p.type === "Boolean" - ? false - : p.type === "Array" - ? [] - : p.type === "Object" - ? {} - : null; + ? 0 + : p.type === "Boolean" + ? false + : p.type === "Array" + ? [] + : p.type === "Object" + ? {} + : null; } body.value = JSON5.stringify(endpointBody, null, 2); }); diff --git a/packages/client/src/pages/attached-files.vue b/packages/client/src/pages/attached-files.vue index e0fd09d419..91528b981a 100644 --- a/packages/client/src/pages/attached-files.vue +++ b/packages/client/src/pages/attached-files.vue @@ -5,7 +5,7 @@ /></template> <MkSpacer :content-max="800"> <div class="attachments-timeline"> - <XTimeline ref="tl" class="tl" src="file" :fileId="fileId" /> + <XTimeline ref="tl" class="tl" src="file" :file-id="fileId" /> </div> </MkSpacer> </MkStickyContainer> diff --git a/packages/client/src/pages/settings/plugin.install.vue b/packages/client/src/pages/settings/plugin.install.vue index 59d5a95343..3b736d39ec 100644 --- a/packages/client/src/pages/settings/plugin.install.vue +++ b/packages/client/src/pages/settings/plugin.install.vue @@ -21,6 +21,7 @@ import { defineAsyncComponent, nextTick, ref } from "vue"; import { Interpreter, Parser, utils } from "@syuilo/aiscript"; import { v4 as uuid } from "uuid"; +import { compareVersions } from "compare-versions"; import FormTextarea from "@/components/form/textarea.vue"; import FormButton from "@/components/MkButton.vue"; import FormInfo from "@/components/MkInfo.vue"; @@ -29,7 +30,6 @@ import { ColdDeviceStorage } from "@/store"; import { unisonReload } from "@/scripts/unison-reload"; import { i18n } from "@/i18n"; import { definePageMetadata } from "@/scripts/page-metadata"; -import { compareVersions } from "compare-versions"; import icon from "@/scripts/icon"; const code = ref<string>(); diff --git a/packages/client/src/pages/theme-editor.vue b/packages/client/src/pages/theme-editor.vue index 527b62c470..474fe51b08 100644 --- a/packages/client/src/pages/theme-editor.vue +++ b/packages/client/src/pages/theme-editor.vue @@ -90,8 +90,8 @@ color: color.forPreview ? color.forPreview : theme.base === 'light' - ? '#5f5f5f' - : '#dadada', + ? '#5f5f5f' + : '#dadada', }" > A diff --git a/packages/client/src/pages/timeline.vue b/packages/client/src/pages/timeline.vue index 05dcaa6abf..af5af76d84 100644 --- a/packages/client/src/pages/timeline.vue +++ b/packages/client/src/pages/timeline.vue @@ -270,12 +270,12 @@ definePageMetadata( src.value === "local" ? "ph-users ph-lg" : src.value === "social" - ? "ph-handshake ph-lg" - : src.value === "recommended" - ? "ph-thumbs-up ph-lg" - : src.value === "global" - ? "ph-planet ph-lg" - : "ph-house ph-lg", + ? "ph-handshake ph-lg" + : src.value === "recommended" + ? "ph-thumbs-up ph-lg" + : src.value === "global" + ? "ph-planet ph-lg" + : "ph-house ph-lg", })), ); diff --git a/packages/client/src/plugin.ts b/packages/client/src/plugin.ts index 44df90ff08..c38aaa365a 100644 --- a/packages/client/src/plugin.ts +++ b/packages/client/src/plugin.ts @@ -1,6 +1,6 @@ import { Interpreter, Parser, utils, values } from "@syuilo/aiscript"; -import { createAiScriptEnv } from "@/scripts/aiscript/api"; import { inputText } from "@/os"; +import { createAiScriptEnv } from "@/scripts/aiscript/api"; import { noteActions, notePostInterruptors, @@ -114,7 +114,10 @@ function createPluginEnv(opts) { }); }), "Plugin:register_page_view_interruptor": values.FN_NATIVE(([handler]) => { - registerPageViewInterruptor({ pluginId: opts.plugin.id, handler }); + registerPageViewInterruptor({ + pluginId: opts.plugin.id, + handler, + }); }), "Plugin:open_url": values.FN_NATIVE(([url]) => { window.open(url.value, "_blank"); diff --git a/packages/client/src/router.ts b/packages/client/src/router.ts index 2f7446e68b..5dff5a4ba8 100644 --- a/packages/client/src/router.ts +++ b/packages/client/src/router.ts @@ -1,10 +1,10 @@ import type { AsyncComponentLoader } from "vue"; import { defineAsyncComponent, inject } from "vue"; -import { Router } from "@/nirax"; import { iAmModerator } from "@/account"; -import { $i } from "@/reactiveAccount"; -import MkLoading from "@/pages/_loading_.vue"; +import { Router } from "@/nirax"; import MkError from "@/pages/_error_.vue"; +import MkLoading from "@/pages/_loading_.vue"; +import { $i } from "@/reactiveAccount"; // import { api } from "@/os"; // function getGuestTimelineStatus() { diff --git a/packages/client/src/scripts/autocomplete.ts b/packages/client/src/scripts/autocomplete.ts index 0d5d16f180..18e56ba38d 100644 --- a/packages/client/src/scripts/autocomplete.ts +++ b/packages/client/src/scripts/autocomplete.ts @@ -88,7 +88,11 @@ export class Autocomplete { const isHashtag = hashtagIndex !== -1; const isMfmTag = mfmTagIndex !== -1; const isEmoji = - emojiIndex !== -1 && text.split(/:[a-z0-9_+\-]+:/).pop()!.includes(":"); + emojiIndex !== -1 && + text + .split(/:[a-z0-9_+\-]+:/) + .pop()! + .includes(":"); let opened = false; diff --git a/packages/client/src/store.ts b/packages/client/src/store.ts index 39dd533785..48885bac62 100644 --- a/packages/client/src/store.ts +++ b/packages/client/src/store.ts @@ -385,11 +385,11 @@ interface Plugin { ast: any[]; } +import darkTheme from "@/themes/d-rosepine.json5"; /** * Storage for configuration information that does not need to be constantly loaded into memory (non-reactive) */ import lightTheme from "@/themes/l-rosepinedawn.json5"; -import darkTheme from "@/themes/d-rosepine.json5"; export class ColdDeviceStorage { public static default = { diff --git a/packages/client/src/stream.ts b/packages/client/src/stream.ts index 28a8a26650..f0dd1879a2 100644 --- a/packages/client/src/stream.ts +++ b/packages/client/src/stream.ts @@ -1,7 +1,7 @@ import * as firefish from "firefish-js"; import { markRaw } from "vue"; -import { $i } from "@/reactiveAccount"; import { url } from "@/config"; +import { $i } from "@/reactiveAccount"; export const stream = markRaw( new firefish.Stream( diff --git a/packages/client/src/widgets/aiscript.vue b/packages/client/src/widgets/aiscript.vue index 0f1469a0c1..a00f143d85 100644 --- a/packages/client/src/widgets/aiscript.vue +++ b/packages/client/src/widgets/aiscript.vue @@ -28,12 +28,12 @@ <script lang="ts" setup> import { ref } from "vue"; import { Interpreter, Parser, utils } from "@syuilo/aiscript"; -import { - useWidgetPropsManager, +import { useWidgetPropsManager } from "./widget"; +import type { WidgetComponentEmits, + WidgetComponentExpose, WidgetComponentProps, } from "./widget"; -import type { WidgetComponentExpose } from "./widget"; import type { GetFormResultType } from "@/scripts/form"; import * as os from "@/os"; import MkContainer from "@/components/MkContainer.vue"; diff --git a/packages/client/src/widgets/button.vue b/packages/client/src/widgets/button.vue index 696049a03b..5d2c8fa3d0 100644 --- a/packages/client/src/widgets/button.vue +++ b/packages/client/src/widgets/button.vue @@ -9,13 +9,13 @@ <script lang="ts" setup> import { onMounted, onUnmounted, ref, watch } from "vue"; import { Interpreter, Parser } from "@syuilo/aiscript"; -import { createAiScriptEnv } from "@/scripts/aiscript/api"; -import { - useWidgetPropsManager, +import { useWidgetPropsManager } from "./widget"; +import type { WidgetComponentEmits, + WidgetComponentExpose, WidgetComponentProps, } from "./widget"; -import type { WidgetComponentExpose } from "./widget"; +import { createAiScriptEnv } from "@/scripts/aiscript/api"; import type { GetFormResultType } from "@/scripts/form"; import * as os from "@/os"; import { $i } from "@/reactiveAccount"; diff --git a/packages/client/src/widgets/timeline.vue b/packages/client/src/widgets/timeline.vue index d3ab198be9..a51ff32c9b 100644 --- a/packages/client/src/widgets/timeline.vue +++ b/packages/client/src/widgets/timeline.vue @@ -35,8 +35,8 @@ widgetProps.src === "list" ? widgetProps.list.name : widgetProps.src === "antenna" - ? widgetProps.antenna.name - : i18n.t("_timelines." + widgetProps.src) + ? widgetProps.antenna.name + : i18n.t("_timelines." + widgetProps.src) }}</span> <i :class=" @@ -57,8 +57,8 @@ widgetProps.src === 'list' ? `list:${widgetProps.list.id}` : widgetProps.src === 'antenna' - ? `antenna:${widgetProps.antenna.id}` - : widgetProps.src + ? `antenna:${widgetProps.antenna.id}` + : widgetProps.src " :src="widgetProps.src" :list="widgetProps.list ? widgetProps.list.id : null" diff --git a/packages/client/tsconfig.json b/packages/client/tsconfig.json index 2d292dbfb0..f9b6e6560e 100644 --- a/packages/client/tsconfig.json +++ b/packages/client/tsconfig.json @@ -32,15 +32,9 @@ "types": [ "vite/client", ], - "lib": [ - "esnext", - "dom" - ], + "lib": ["esnext", "dom"], "jsx": "preserve" }, "compileOnSave": false, - "include": [ - "./**/*.ts", - "./**/*.vue" - ] + "include": ["./**/*.ts", "./**/*.vue"] } From 465a585f47037ce26834587429f0bd341e35f76f Mon Sep 17 00:00:00 2001 From: naskya <m@naskya.net> Date: Fri, 17 Nov 2023 05:21:29 +0900 Subject: [PATCH 73/74] dev21 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 3af182e94a..adca980853 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "firefish", - "version": "1.0.5-dev20", + "version": "1.0.5-dev21", "codename": "aqua", "repository": { "type": "git", From dd6ef65dee5a03a6ee1b555a9d2ed87c7f1743f4 Mon Sep 17 00:00:00 2001 From: Kainoa Kanter <kainoa@t1c.dev> Date: Thu, 16 Nov 2023 14:20:43 -0800 Subject: [PATCH 74/74] chore: format --- packages/sw/tsconfig.json | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/packages/sw/tsconfig.json b/packages/sw/tsconfig.json index fad2ae5679..cc5e041d13 100644 --- a/packages/sw/tsconfig.json +++ b/packages/sw/tsconfig.json @@ -27,13 +27,8 @@ "node_modules/@types", "@types", ], - "lib": [ - "esnext", - "webworker" - ] + "lib": ["esnext", "webworker"] }, "compileOnSave": false, - "include": [ - "./**/*.ts", "./**/*.d.ts", "./**/*.tsx", "./**/*.vue" - ] + "include": ["./**/*.ts", "./**/*.d.ts", "./**/*.tsx", "./**/*.vue"] }