diff --git a/.gitignore b/.gitignore index e86b4a6c9..d3ddff08c 100644 --- a/.gitignore +++ b/.gitignore @@ -58,9 +58,6 @@ packages/backend/assets/LICENSE !/packages/backend/queue/processors/db !packages/backend/src/db -packages/megalodon/lib -packages/megalodon/.idea - # blender backups *.blend1 *.blend2 @@ -82,8 +79,4 @@ pnpm* # Nix Development shell items .devenv -.direnv - -# Cargo cache for Docker -/.cargo-cache -/.cargo-target +.direnv \ No newline at end of file diff --git a/.pnp.cjs b/.pnp.cjs index 2392f24fa..c9b898d36 100755 --- a/.pnp.cjs +++ b/.pnp.cjs @@ -27,10 +27,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "name": "iceshrimp-js",\ "reference": "workspace:packages/iceshrimp-js"\ },\ - {\ - "name": "megalodon",\ - "reference": "workspace:packages/megalodon"\ - },\ {\ "name": "sw",\ "reference": "workspace:packages/sw"\ @@ -43,7 +39,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["client", ["workspace:packages/client"]],\ ["iceshrimp", ["workspace:."]],\ ["iceshrimp-js", ["workspace:packages/iceshrimp-js"]],\ - ["megalodon", ["workspace:packages/megalodon"]],\ ["sw", ["workspace:packages/sw"]]\ ],\ "fallbackPool": [\ @@ -141,15 +136,15 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ [\ "@babel/plugin-syntax-async-generators",\ - "virtual:a95ec55e88252fb8bb2a9f05ccc4f0e7a21e2222248f9e5ee7e36cd1e168a8129d8fa78dad601ce4e39edaab068261ca7d832685f1bb996f25b6f0ebb880e1fb#npm:7.8.4"\ + "virtual:f9e5bbd48d4bfce3eb2c606acdcf754dc03f5e4ad4e0894f8faaf348a4b861acc4da61e0b37c65344963f14a484562b8e56b144ad7908e3cad8464f1ba78f5fa#npm:7.8.4"\ ],\ [\ "@babel/plugin-syntax-bigint",\ - "virtual:a95ec55e88252fb8bb2a9f05ccc4f0e7a21e2222248f9e5ee7e36cd1e168a8129d8fa78dad601ce4e39edaab068261ca7d832685f1bb996f25b6f0ebb880e1fb#npm:7.8.3"\ + "virtual:f9e5bbd48d4bfce3eb2c606acdcf754dc03f5e4ad4e0894f8faaf348a4b861acc4da61e0b37c65344963f14a484562b8e56b144ad7908e3cad8464f1ba78f5fa#npm:7.8.3"\ ],\ [\ "@babel/plugin-syntax-class-properties",\ - "virtual:a95ec55e88252fb8bb2a9f05ccc4f0e7a21e2222248f9e5ee7e36cd1e168a8129d8fa78dad601ce4e39edaab068261ca7d832685f1bb996f25b6f0ebb880e1fb#npm:7.12.13"\ + "virtual:f9e5bbd48d4bfce3eb2c606acdcf754dc03f5e4ad4e0894f8faaf348a4b861acc4da61e0b37c65344963f14a484562b8e56b144ad7908e3cad8464f1ba78f5fa#npm:7.12.13"\ ],\ [\ "@babel/plugin-syntax-export-namespace-from",\ @@ -157,43 +152,39 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ [\ "@babel/plugin-syntax-import-meta",\ - "virtual:a95ec55e88252fb8bb2a9f05ccc4f0e7a21e2222248f9e5ee7e36cd1e168a8129d8fa78dad601ce4e39edaab068261ca7d832685f1bb996f25b6f0ebb880e1fb#npm:7.10.4"\ + "virtual:f9e5bbd48d4bfce3eb2c606acdcf754dc03f5e4ad4e0894f8faaf348a4b861acc4da61e0b37c65344963f14a484562b8e56b144ad7908e3cad8464f1ba78f5fa#npm:7.10.4"\ ],\ [\ "@babel/plugin-syntax-json-strings",\ - "virtual:a95ec55e88252fb8bb2a9f05ccc4f0e7a21e2222248f9e5ee7e36cd1e168a8129d8fa78dad601ce4e39edaab068261ca7d832685f1bb996f25b6f0ebb880e1fb#npm:7.8.3"\ - ],\ - [\ - "@babel/plugin-syntax-jsx",\ - "virtual:6ed320289f7d3adef6f362dd0bd289fb74d7369c1f461b90a4811d4aab2ffe48377fa88718b4b30a56c3e0a53c2ed18c554e661b6b415436171204fdb64bfefb#npm:7.22.5"\ + "virtual:f9e5bbd48d4bfce3eb2c606acdcf754dc03f5e4ad4e0894f8faaf348a4b861acc4da61e0b37c65344963f14a484562b8e56b144ad7908e3cad8464f1ba78f5fa#npm:7.8.3"\ ],\ [\ "@babel/plugin-syntax-logical-assignment-operators",\ - "virtual:a95ec55e88252fb8bb2a9f05ccc4f0e7a21e2222248f9e5ee7e36cd1e168a8129d8fa78dad601ce4e39edaab068261ca7d832685f1bb996f25b6f0ebb880e1fb#npm:7.10.4"\ + "virtual:f9e5bbd48d4bfce3eb2c606acdcf754dc03f5e4ad4e0894f8faaf348a4b861acc4da61e0b37c65344963f14a484562b8e56b144ad7908e3cad8464f1ba78f5fa#npm:7.10.4"\ ],\ [\ "@babel/plugin-syntax-nullish-coalescing-operator",\ - "virtual:a95ec55e88252fb8bb2a9f05ccc4f0e7a21e2222248f9e5ee7e36cd1e168a8129d8fa78dad601ce4e39edaab068261ca7d832685f1bb996f25b6f0ebb880e1fb#npm:7.8.3"\ + "virtual:f9e5bbd48d4bfce3eb2c606acdcf754dc03f5e4ad4e0894f8faaf348a4b861acc4da61e0b37c65344963f14a484562b8e56b144ad7908e3cad8464f1ba78f5fa#npm:7.8.3"\ ],\ [\ "@babel/plugin-syntax-numeric-separator",\ - "virtual:a95ec55e88252fb8bb2a9f05ccc4f0e7a21e2222248f9e5ee7e36cd1e168a8129d8fa78dad601ce4e39edaab068261ca7d832685f1bb996f25b6f0ebb880e1fb#npm:7.10.4"\ + "virtual:f9e5bbd48d4bfce3eb2c606acdcf754dc03f5e4ad4e0894f8faaf348a4b861acc4da61e0b37c65344963f14a484562b8e56b144ad7908e3cad8464f1ba78f5fa#npm:7.10.4"\ ],\ [\ "@babel/plugin-syntax-object-rest-spread",\ - "virtual:a95ec55e88252fb8bb2a9f05ccc4f0e7a21e2222248f9e5ee7e36cd1e168a8129d8fa78dad601ce4e39edaab068261ca7d832685f1bb996f25b6f0ebb880e1fb#npm:7.8.3"\ + "virtual:f9e5bbd48d4bfce3eb2c606acdcf754dc03f5e4ad4e0894f8faaf348a4b861acc4da61e0b37c65344963f14a484562b8e56b144ad7908e3cad8464f1ba78f5fa#npm:7.8.3"\ ],\ [\ "@babel/plugin-syntax-optional-catch-binding",\ - "virtual:a95ec55e88252fb8bb2a9f05ccc4f0e7a21e2222248f9e5ee7e36cd1e168a8129d8fa78dad601ce4e39edaab068261ca7d832685f1bb996f25b6f0ebb880e1fb#npm:7.8.3"\ + "virtual:f9e5bbd48d4bfce3eb2c606acdcf754dc03f5e4ad4e0894f8faaf348a4b861acc4da61e0b37c65344963f14a484562b8e56b144ad7908e3cad8464f1ba78f5fa#npm:7.8.3"\ ],\ [\ "@babel/plugin-syntax-optional-chaining",\ - "virtual:a95ec55e88252fb8bb2a9f05ccc4f0e7a21e2222248f9e5ee7e36cd1e168a8129d8fa78dad601ce4e39edaab068261ca7d832685f1bb996f25b6f0ebb880e1fb#npm:7.8.3"\ + "virtual:f9e5bbd48d4bfce3eb2c606acdcf754dc03f5e4ad4e0894f8faaf348a4b861acc4da61e0b37c65344963f14a484562b8e56b144ad7908e3cad8464f1ba78f5fa#npm:7.8.3"\ ],\ [\ "@babel/plugin-syntax-top-level-await",\ - "virtual:a95ec55e88252fb8bb2a9f05ccc4f0e7a21e2222248f9e5ee7e36cd1e168a8129d8fa78dad601ce4e39edaab068261ca7d832685f1bb996f25b6f0ebb880e1fb#npm:7.14.5"\ + "virtual:f9e5bbd48d4bfce3eb2c606acdcf754dc03f5e4ad4e0894f8faaf348a4b861acc4da61e0b37c65344963f14a484562b8e56b144ad7908e3cad8464f1ba78f5fa#npm:7.14.5"\ ],\ [\ "@babel/plugin-syntax-typescript",\ @@ -487,14 +478,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "@jest/environment",\ "npm:27.5.1"\ ],\ - [\ - "@jest/expect",\ - "npm:29.6.2"\ - ],\ - [\ - "@jest/expect-utils",\ - "npm:29.6.2"\ - ],\ [\ "@jest/fake-timers",\ "npm:27.5.1"\ @@ -509,7 +492,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ [\ "@jest/schemas",\ - "npm:29.6.0"\ + "npm:28.1.3"\ ],\ [\ "@jest/source-map",\ @@ -991,10 +974,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "@types/cookies",\ "npm:0.7.7"\ ],\ - [\ - "@types/core-js",\ - "npm:2.5.5"\ - ],\ [\ "@types/disposable-email-domains",\ "npm:1.0.4"\ @@ -1031,10 +1010,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "@types/fluent-ffmpeg",\ "npm:2.1.21"\ ],\ - [\ - "@types/form-data",\ - "npm:2.5.0"\ - ],\ [\ "@types/formidable",\ "npm:2.0.6"\ @@ -1223,18 +1198,10 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "@types/oauth",\ "npm:0.9.1"\ ],\ - [\ - "@types/object-assign-deep",\ - "npm:0.4.0"\ - ],\ [\ "@types/offscreencanvas",\ "npm:2019.3.0"\ ],\ - [\ - "@types/parse-link-header",\ - "npm:2.0.1"\ - ],\ [\ "@types/picomatch",\ "npm:2.3.0"\ @@ -1397,31 +1364,31 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ [\ "@typescript-eslint/eslint-plugin",\ - "virtual:e08418ef59deeef07c44e8084933240f44dc1c0a2f11df6c1122cde5bb698f75d16f72b69df01637f13c248e9f40c9a0743e0787a4299c44674d46800adefa34#npm:5.62.0"\ + "virtual:e0e8263c43cf16085b2522c108420341539e4d9a00312aaf37527b43f97708919abfc484199eb33fec4b04571df6e28e29523ae785da626693f7cc26f4ce57f7#npm:6.2.0"\ ],\ [\ "@typescript-eslint/parser",\ - "virtual:e08418ef59deeef07c44e8084933240f44dc1c0a2f11df6c1122cde5bb698f75d16f72b69df01637f13c248e9f40c9a0743e0787a4299c44674d46800adefa34#npm:5.62.0"\ + "virtual:e0e8263c43cf16085b2522c108420341539e4d9a00312aaf37527b43f97708919abfc484199eb33fec4b04571df6e28e29523ae785da626693f7cc26f4ce57f7#npm:6.2.0"\ ],\ [\ "@typescript-eslint/scope-manager",\ - "npm:5.62.0"\ + "npm:6.2.0"\ ],\ [\ "@typescript-eslint/type-utils",\ - "virtual:d8c483f88a6065b498e6e0fc3a962a33c3eeb9fbe05ba30d5d2b593085dc15628873487fa52ca2d8f6ae5f96f3679ddd42df2375f86d9e5f7c79f9530cbe38c7#npm:5.62.0"\ + "virtual:3b6679253154e85050836479386972d2dff7aa3c98cee4eebd492aaca13f5cb7343b2734c50ad896888a02f5e031359a5da525c02d6f92779f3f9dd7e752126a#npm:6.2.0"\ ],\ [\ "@typescript-eslint/types",\ - "npm:5.62.0"\ + "npm:6.2.0"\ ],\ [\ "@typescript-eslint/typescript-estree",\ - "virtual:b8a8e61bd56111fe5b42ef698d4b06734eb27130dc91c0bb828f4984137c8d04ffd7317532cd84566b52db4763d5d3711b9902080f51e743c25e129b3f641136#npm:5.62.0"\ + "virtual:1d19509600f1cc6d2f705159f8806fb3abec3c9b1565d595799bf8c4b583e74d03f7547a701f1dffa2a4b9296fbf4418890a9c9b4b5b64d4d2a7262be86ccf74#npm:6.2.0"\ ],\ [\ "@typescript-eslint/utils",\ - "virtual:262671aca90b8273ff3878fb2edf92b6759420b3f869df13deb87726d6348ffd0e641fafa62df5bcff1ee9d8b4d44ef75eb8d7e5a9e3a9907b7b9abecd4193e5#npm:5.62.0"\ + "virtual:3b6679253154e85050836479386972d2dff7aa3c98cee4eebd492aaca13f5cb7343b2734c50ad896888a02f5e031359a5da525c02d6f92779f3f9dd7e752126a#npm:6.2.0"\ ],\ [\ "@typescript-eslint/visitor-keys",\ @@ -1631,10 +1598,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "ansi-regex",\ "npm:5.0.1"\ ],\ - [\ - "ansi-sequence-parser",\ - "npm:1.1.1"\ - ],\ [\ "ansi-styles",\ "npm:4.3.0"\ @@ -2129,7 +2092,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ [\ "camelcase",\ - "npm:6.3.0"\ + "npm:5.3.1"\ ],\ [\ "camelcase-keys",\ @@ -2957,7 +2920,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ [\ "eslint-config-prettier",\ - "virtual:53ee7992132b8e069dc99c9f0f3d05821836bcb37183dd466da76224f67e18ee1c7c92a27051df007cb908288116489612199ddda9fa1e776557a21308d9d714#npm:8.9.0"\ + "virtual:658502eb4296e93abedc18b6aa9b26978f434f08d98e21ebb0e725354b8bb54b62db9c4a1893e460c694ff7500ff5cbafa4457b0dfd26b5838868666c861e990#npm:8.9.0"\ ],\ [\ "eslint-formatter-pretty",\ @@ -2973,7 +2936,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ [\ "eslint-plugin-es",\ - "virtual:901bc8648d2b06d17f3000f1e9d038ce35c7d66f20cb53040caeea1ad14138988398a2e53a10ec927174e8d4953e875d8b7ecfc57187857f7e1c3778d9ee3d38#npm:3.0.1"\ + "virtual:6d60dacb0813b4e6b8359a1c0de8eeca4bc2490505c625487e49169379d1c8083e1600e103ea095a99958df68cc2b096769bbbba513c7d07b1df3a60f1f1964d#npm:4.1.0"\ ],\ [\ "eslint-plugin-es-x",\ @@ -3011,21 +2974,13 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "eslint-plugin-n",\ "virtual:2ba63d9edc202bd2651a98715151dff30efc6c123b169246bec0f73b689a82a5906355cd813e670529b429d734a64d1f2a1286ff8bfb1a65891f1768ad081ce1#npm:16.0.1"\ ],\ - [\ - "eslint-plugin-node",\ - "virtual:53ee7992132b8e069dc99c9f0f3d05821836bcb37183dd466da76224f67e18ee1c7c92a27051df007cb908288116489612199ddda9fa1e776557a21308d9d714#npm:11.1.0"\ - ],\ [\ "eslint-plugin-prettier",\ - "virtual:e08418ef59deeef07c44e8084933240f44dc1c0a2f11df6c1122cde5bb698f75d16f72b69df01637f13c248e9f40c9a0743e0787a4299c44674d46800adefa34#npm:4.2.1"\ + "virtual:e0e8263c43cf16085b2522c108420341539e4d9a00312aaf37527b43f97708919abfc484199eb33fec4b04571df6e28e29523ae785da626693f7cc26f4ce57f7#npm:5.0.0"\ ],\ [\ "eslint-plugin-promise",\ - "virtual:53ee7992132b8e069dc99c9f0f3d05821836bcb37183dd466da76224f67e18ee1c7c92a27051df007cb908288116489612199ddda9fa1e776557a21308d9d714#npm:6.1.1"\ - ],\ - [\ - "eslint-plugin-standard",\ - "virtual:53ee7992132b8e069dc99c9f0f3d05821836bcb37183dd466da76224f67e18ee1c7c92a27051df007cb908288116489612199ddda9fa1e776557a21308d9d714#npm:5.0.0"\ + "virtual:2ba63d9edc202bd2651a98715151dff30efc6c123b169246bec0f73b689a82a5906355cd813e670529b429d734a64d1f2a1286ff8bfb1a65891f1768ad081ce1#npm:6.1.1"\ ],\ [\ "eslint-plugin-tsdoc",\ @@ -3061,7 +3016,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ [\ "eslint-utils",\ - "npm:2.1.0"\ + "virtual:6d60dacb0813b4e6b8359a1c0de8eeca4bc2490505c625487e49169379d1c8083e1600e103ea095a99958df68cc2b096769bbbba513c7d07b1df3a60f1f1964d#npm:3.0.0"\ ],\ [\ "eslint-visitor-keys",\ @@ -3353,7 +3308,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ [\ "form-data",\ - "npm:4.0.0"\ + "npm:3.0.1"\ ],\ [\ "form-data-encoder",\ @@ -4185,7 +4140,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ [\ "jest-diff",\ - "npm:29.6.2"\ + "npm:27.5.1"\ ],\ [\ "jest-docblock",\ @@ -4209,7 +4164,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ [\ "jest-get-type",\ - "npm:29.4.3"\ + "npm:27.5.1"\ ],\ [\ "jest-haste-map",\ @@ -4269,7 +4224,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ [\ "jest-util",\ - "npm:29.6.2"\ + "npm:27.5.1"\ ],\ [\ "jest-validate",\ @@ -4277,7 +4232,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ [\ "jest-watcher",\ - "npm:29.6.2"\ + "npm:27.5.1"\ ],\ [\ "jest-websocket-mock",\ @@ -4285,7 +4240,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ [\ "jest-worker",\ - "npm:29.6.2"\ + "npm:27.5.1"\ ],\ [\ "jju",\ @@ -4383,10 +4338,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "jsonc-eslint-parser",\ "npm:2.3.0"\ ],\ - [\ - "jsonc-parser",\ - "npm:3.2.0"\ - ],\ [\ "jsonfile",\ "npm:6.1.0"\ @@ -4691,10 +4642,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "lru-cache",\ "npm:6.0.0"\ ],\ - [\ - "lunr",\ - "npm:2.3.9"\ - ],\ [\ "luxon",\ "npm:3.3.0"\ @@ -4743,10 +4690,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "map-visit",\ "npm:1.0.0"\ ],\ - [\ - "marked",\ - "npm:4.3.0"\ - ],\ [\ "matchdep",\ "npm:2.0.0"\ @@ -4771,10 +4714,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "media-typer",\ "npm:0.3.0"\ ],\ - [\ - "megalodon",\ - "workspace:packages/megalodon"\ - ],\ [\ "meilisearch",\ "npm:0.33.0"\ @@ -5099,10 +5038,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "object-assign",\ "npm:4.1.1"\ ],\ - [\ - "object-assign-deep",\ - "npm:0.4.0"\ - ],\ [\ "object-copy",\ "npm:0.1.0"\ @@ -5275,10 +5210,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "parse-json",\ "npm:5.2.0"\ ],\ - [\ - "parse-link-header",\ - "npm:2.0.0"\ - ],\ [\ "parse-node-version",\ "npm:1.0.1"\ @@ -5697,7 +5628,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ [\ "proxy-from-env",\ - "npm:1.1.0"\ + "npm:1.0.0"\ ],\ [\ "ps-tree",\ @@ -5771,10 +5702,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "punycode",\ "npm:2.3.0"\ ],\ - [\ - "pure-rand",\ - "npm:6.0.2"\ - ],\ [\ "pureimage",\ "npm:0.3.15"\ @@ -6227,10 +6154,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "shebang-regex",\ "npm:3.0.0"\ ],\ - [\ - "shiki",\ - "npm:0.14.3"\ - ],\ [\ "side-channel",\ "npm:1.0.4"\ @@ -6743,7 +6666,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ [\ "ts-api-utils",\ - "virtual:148c3fe962747bd503d128c988b52530a27a053ec6970107761be5cbe05264584821730bb5dcc4cb59167c41627782c03385f73b0f2e18e5d62b630658c14a4a#npm:1.0.1"\ + "virtual:3b6679253154e85050836479386972d2dff7aa3c98cee4eebd492aaca13f5cb7343b2734c50ad896888a02f5e031359a5da525c02d6f92779f3f9dd7e752126a#npm:1.0.1"\ ],\ [\ "ts-loader",\ @@ -6771,7 +6694,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ [\ "tsutils",\ - "virtual:c5ce38885086e40fbb13bdcf602db323f83f7e9bb7edd87776604a24ca5b49715433e15314b6a2ca7e40f026ea7497814fa50d07c6d5eafd0bc52ac76d93b85f#npm:3.21.0"\ + "virtual:3626087449fcafda434757e41cfa5e841537938d142bccc823c53baa1488d986ae6f21de680f1a1c37e006f588b5498a62cab4024ffb21d6fd093b56c8dade28#npm:3.21.0"\ ],\ [\ "tunnel-agent",\ @@ -7029,14 +6952,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "void-elements",\ "npm:3.1.0"\ ],\ - [\ - "vscode-oniguruma",\ - "npm:1.7.0"\ - ],\ - [\ - "vscode-textmate",\ - "npm:8.0.0"\ - ],\ [\ "vue",\ "npm:3.3.4"\ @@ -7845,29 +7760,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD"\ }]\ ]],\ - ["@babel/plugin-syntax-jsx", [\ - ["npm:7.22.5", {\ - "packageLocation": "./.yarn/cache/@babel-plugin-syntax-jsx-npm-7.22.5-2cbf8e7e68-8829d30c26.zip/node_modules/@babel/plugin-syntax-jsx/",\ - "packageDependencies": [\ - ["@babel/plugin-syntax-jsx", "npm:7.22.5"]\ - ],\ - "linkType": "SOFT"\ - }],\ - ["virtual:6ed320289f7d3adef6f362dd0bd289fb74d7369c1f461b90a4811d4aab2ffe48377fa88718b4b30a56c3e0a53c2ed18c554e661b6b415436171204fdb64bfefb#npm:7.22.5", {\ - "packageLocation": "./.yarn/__virtual__/@babel-plugin-syntax-jsx-virtual-ccbe314515/0/cache/@babel-plugin-syntax-jsx-npm-7.22.5-2cbf8e7e68-8829d30c26.zip/node_modules/@babel/plugin-syntax-jsx/",\ - "packageDependencies": [\ - ["@babel/plugin-syntax-jsx", "virtual:6ed320289f7d3adef6f362dd0bd289fb74d7369c1f461b90a4811d4aab2ffe48377fa88718b4b30a56c3e0a53c2ed18c554e661b6b415436171204fdb64bfefb#npm:7.22.5"],\ - ["@babel/core", "npm:7.22.9"],\ - ["@babel/helper-plugin-utils", "npm:7.22.5"],\ - ["@types/babel__core", null]\ - ],\ - "packagePeers": [\ - "@babel/core",\ - "@types/babel__core"\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ ["@babel/plugin-syntax-logical-assignment-operators", [\ ["npm:7.10.4", {\ "packageLocation": "./.yarn/cache/@babel-plugin-syntax-logical-assignment-operators-npm-7.10.4-72ae00fdf6-aff3357703.zip/node_modules/@babel/plugin-syntax-logical-assignment-operators/",\ @@ -8814,7 +8706,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@types/eslint", null],\ ["@types/prettier", null],\ ["eslint", "npm:8.45.0"],\ - ["eslint-config-prettier", "virtual:53ee7992132b8e069dc99c9f0f3d05821836bcb37183dd466da76224f67e18ee1c7c92a27051df007cb908288116489612199ddda9fa1e776557a21308d9d714#npm:8.9.0"],\ + ["eslint-config-prettier", "virtual:658502eb4296e93abedc18b6aa9b26978f434f08d98e21ebb0e725354b8bb54b62db9c4a1893e460c694ff7500ff5cbafa4457b0dfd26b5838868666c861e990#npm:8.9.0"],\ ["eslint-plugin-eslint-comments", "virtual:a47359453d05960acfdb0e9ea5a0a6b96ac556b27d2d094c5fc0c7a7c1749650640c69033df2c650c35d7c667cef5718018dde3071a14b8d540a6db06a046973#npm:3.2.0"],\ ["eslint-plugin-html", "npm:7.1.0"],\ ["eslint-plugin-import", "virtual:a47359453d05960acfdb0e9ea5a0a6b96ac556b27d2d094c5fc0c7a7c1749650640c69033df2c650c35d7c667cef5718018dde3071a14b8d540a6db06a046973#npm:2.27.5"],\ @@ -8848,7 +8740,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@types/prettier", null],\ ["@types/typescript", null],\ ["eslint", "npm:8.45.0"],\ - ["eslint-config-prettier", "virtual:53ee7992132b8e069dc99c9f0f3d05821836bcb37183dd466da76224f67e18ee1c7c92a27051df007cb908288116489612199ddda9fa1e776557a21308d9d714#npm:8.9.0"],\ + ["eslint-config-prettier", "virtual:658502eb4296e93abedc18b6aa9b26978f434f08d98e21ebb0e725354b8bb54b62db9c4a1893e460c694ff7500ff5cbafa4457b0dfd26b5838868666c861e990#npm:8.9.0"],\ ["eslint-plugin-eslint-comments", "virtual:a47359453d05960acfdb0e9ea5a0a6b96ac556b27d2d094c5fc0c7a7c1749650640c69033df2c650c35d7c667cef5718018dde3071a14b8d540a6db06a046973#npm:3.2.0"],\ ["eslint-plugin-html", "npm:7.1.0"],\ ["eslint-plugin-import", "virtual:a47359453d05960acfdb0e9ea5a0a6b96ac556b27d2d094c5fc0c7a7c1749650640c69033df2c650c35d7c667cef5718018dde3071a14b8d540a6db06a046973#npm:2.27.5"],\ @@ -8856,7 +8748,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["eslint-plugin-markdown", "virtual:a47359453d05960acfdb0e9ea5a0a6b96ac556b27d2d094c5fc0c7a7c1749650640c69033df2c650c35d7c667cef5718018dde3071a14b8d540a6db06a046973#npm:3.0.0"],\ ["eslint-plugin-n", "virtual:2ba63d9edc202bd2651a98715151dff30efc6c123b169246bec0f73b689a82a5906355cd813e670529b429d734a64d1f2a1286ff8bfb1a65891f1768ad081ce1#npm:16.0.1"],\ ["eslint-plugin-prettier", "virtual:e0e8263c43cf16085b2522c108420341539e4d9a00312aaf37527b43f97708919abfc484199eb33fec4b04571df6e28e29523ae785da626693f7cc26f4ce57f7#npm:5.0.0"],\ - ["eslint-plugin-promise", "virtual:53ee7992132b8e069dc99c9f0f3d05821836bcb37183dd466da76224f67e18ee1c7c92a27051df007cb908288116489612199ddda9fa1e776557a21308d9d714#npm:6.1.1"],\ + ["eslint-plugin-promise", "virtual:2ba63d9edc202bd2651a98715151dff30efc6c123b169246bec0f73b689a82a5906355cd813e670529b429d734a64d1f2a1286ff8bfb1a65891f1768ad081ce1#npm:6.1.1"],\ ["eslint-plugin-tsdoc", "npm:0.2.17"],\ ["eslint-plugin-unicorn", "virtual:2ba63d9edc202bd2651a98715151dff30efc6c123b169246bec0f73b689a82a5906355cd813e670529b429d734a64d1f2a1286ff8bfb1a65891f1768ad081ce1#npm:40.1.0"],\ ["eslint-plugin-yml", "virtual:a47359453d05960acfdb0e9ea5a0a6b96ac556b27d2d094c5fc0c7a7c1749650640c69033df2c650c35d7c667cef5718018dde3071a14b8d540a6db06a046973#npm:1.8.0"],\ @@ -8903,7 +8795,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@typescript-eslint/eslint-plugin", "virtual:e08418ef59deeef07c44e8084933240f44dc1c0a2f11df6c1122cde5bb698f75d16f72b69df01637f13c248e9f40c9a0743e0787a4299c44674d46800adefa34#npm:5.62.0"],\ ["@typescript-eslint/parser", "virtual:e08418ef59deeef07c44e8084933240f44dc1c0a2f11df6c1122cde5bb698f75d16f72b69df01637f13c248e9f40c9a0743e0787a4299c44674d46800adefa34#npm:5.62.0"],\ ["eslint", "npm:8.45.0"],\ - ["eslint-config-prettier", "virtual:53ee7992132b8e069dc99c9f0f3d05821836bcb37183dd466da76224f67e18ee1c7c92a27051df007cb908288116489612199ddda9fa1e776557a21308d9d714#npm:8.9.0"],\ + ["eslint-config-prettier", "virtual:658502eb4296e93abedc18b6aa9b26978f434f08d98e21ebb0e725354b8bb54b62db9c4a1893e460c694ff7500ff5cbafa4457b0dfd26b5838868666c861e990#npm:8.9.0"],\ ["eslint-plugin-prettier", "virtual:e08418ef59deeef07c44e8084933240f44dc1c0a2f11df6c1122cde5bb698f75d16f72b69df01637f13c248e9f40c9a0743e0787a4299c44674d46800adefa34#npm:4.2.1"],\ ["eslint-plugin-tsdoc", "npm:0.2.17"],\ ["prettier", "npm:3.0.0"],\ @@ -8930,7 +8822,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@typescript-eslint/eslint-plugin", "virtual:e0e8263c43cf16085b2522c108420341539e4d9a00312aaf37527b43f97708919abfc484199eb33fec4b04571df6e28e29523ae785da626693f7cc26f4ce57f7#npm:6.2.0"],\ ["@typescript-eslint/parser", "virtual:e0e8263c43cf16085b2522c108420341539e4d9a00312aaf37527b43f97708919abfc484199eb33fec4b04571df6e28e29523ae785da626693f7cc26f4ce57f7#npm:6.2.0"],\ ["eslint", "npm:8.45.0"],\ - ["eslint-config-prettier", "virtual:53ee7992132b8e069dc99c9f0f3d05821836bcb37183dd466da76224f67e18ee1c7c92a27051df007cb908288116489612199ddda9fa1e776557a21308d9d714#npm:8.9.0"],\ + ["eslint-config-prettier", "virtual:658502eb4296e93abedc18b6aa9b26978f434f08d98e21ebb0e725354b8bb54b62db9c4a1893e460c694ff7500ff5cbafa4457b0dfd26b5838868666c861e990#npm:8.9.0"],\ ["eslint-plugin-prettier", "virtual:e0e8263c43cf16085b2522c108420341539e4d9a00312aaf37527b43f97708919abfc484199eb33fec4b04571df6e28e29523ae785da626693f7cc26f4ce57f7#npm:5.0.0"],\ ["eslint-plugin-tsdoc", "npm:0.2.17"],\ ["prettier", "npm:3.0.0"],\ @@ -8967,7 +8859,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@typescript-eslint/eslint-plugin", "virtual:e0e8263c43cf16085b2522c108420341539e4d9a00312aaf37527b43f97708919abfc484199eb33fec4b04571df6e28e29523ae785da626693f7cc26f4ce57f7#npm:6.2.0"],\ ["@typescript-eslint/parser", "virtual:e0e8263c43cf16085b2522c108420341539e4d9a00312aaf37527b43f97708919abfc484199eb33fec4b04571df6e28e29523ae785da626693f7cc26f4ce57f7#npm:6.2.0"],\ ["eslint", "npm:8.45.0"],\ - ["eslint-config-prettier", "virtual:53ee7992132b8e069dc99c9f0f3d05821836bcb37183dd466da76224f67e18ee1c7c92a27051df007cb908288116489612199ddda9fa1e776557a21308d9d714#npm:8.9.0"],\ + ["eslint-config-prettier", "virtual:658502eb4296e93abedc18b6aa9b26978f434f08d98e21ebb0e725354b8bb54b62db9c4a1893e460c694ff7500ff5cbafa4457b0dfd26b5838868666c861e990#npm:8.9.0"],\ ["eslint-plugin-jsdoc", "virtual:e0e8263c43cf16085b2522c108420341539e4d9a00312aaf37527b43f97708919abfc484199eb33fec4b04571df6e28e29523ae785da626693f7cc26f4ce57f7#npm:46.4.5"],\ ["eslint-plugin-prettier", "virtual:e0e8263c43cf16085b2522c108420341539e4d9a00312aaf37527b43f97708919abfc484199eb33fec4b04571df6e28e29523ae785da626693f7cc26f4ce57f7#npm:5.0.0"],\ ["eslint-plugin-tsdoc", "npm:0.2.17"],\ @@ -9009,7 +8901,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@typescript-eslint/eslint-plugin", "virtual:e08418ef59deeef07c44e8084933240f44dc1c0a2f11df6c1122cde5bb698f75d16f72b69df01637f13c248e9f40c9a0743e0787a4299c44674d46800adefa34#npm:5.62.0"],\ ["@typescript-eslint/parser", "virtual:e08418ef59deeef07c44e8084933240f44dc1c0a2f11df6c1122cde5bb698f75d16f72b69df01637f13c248e9f40c9a0743e0787a4299c44674d46800adefa34#npm:5.62.0"],\ ["eslint", "npm:8.45.0"],\ - ["eslint-config-prettier", "virtual:53ee7992132b8e069dc99c9f0f3d05821836bcb37183dd466da76224f67e18ee1c7c92a27051df007cb908288116489612199ddda9fa1e776557a21308d9d714#npm:8.9.0"],\ + ["eslint-config-prettier", "virtual:658502eb4296e93abedc18b6aa9b26978f434f08d98e21ebb0e725354b8bb54b62db9c4a1893e460c694ff7500ff5cbafa4457b0dfd26b5838868666c861e990#npm:8.9.0"],\ ["eslint-plugin-prettier", "virtual:e08418ef59deeef07c44e8084933240f44dc1c0a2f11df6c1122cde5bb698f75d16f72b69df01637f13c248e9f40c9a0743e0787a4299c44674d46800adefa34#npm:4.2.1"],\ ["eslint-plugin-tsdoc", "npm:0.2.17"],\ ["eslint-plugin-vitest-globals", "npm:1.4.0"],\ @@ -9175,19 +9067,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["slash", "npm:3.0.0"]\ ],\ "linkType": "HARD"\ - }],\ - ["npm:29.6.2", {\ - "packageLocation": "./.yarn/cache/@jest-console-npm-29.6.2-4db58c0edb-1198667bda.zip/node_modules/@jest/console/",\ - "packageDependencies": [\ - ["@jest/console", "npm:29.6.2"],\ - ["@jest/types", "npm:29.6.1"],\ - ["@types/node", "npm:20.4.5"],\ - ["chalk", "npm:4.1.2"],\ - ["jest-message-util", "npm:29.6.2"],\ - ["jest-util", "npm:29.6.2"],\ - ["slash", "npm:3.0.0"]\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["@jest/core", [\ @@ -9198,13 +9077,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ "linkType": "SOFT"\ }],\ - ["npm:29.6.2", {\ - "packageLocation": "./.yarn/cache/@jest-core-npm-29.6.2-5d908b046b-6bbb388643.zip/node_modules/@jest/core/",\ - "packageDependencies": [\ - ["@jest/core", "npm:29.6.2"]\ - ],\ - "linkType": "SOFT"\ - }],\ ["virtual:5bad70dae6965fedb709435a1f98f6068f949c0c05d437106a92a9193b3e730d8268e7515dad25f5905ae92236992ab8fbfc7410fd0235d954a384668ad19a1c#npm:27.5.1", {\ "packageLocation": "./.yarn/__virtual__/@jest-core-virtual-055df65b40/0/cache/@jest-core-npm-27.5.1-b2d79816b3-904a94ad8f.zip/node_modules/@jest/core/",\ "packageDependencies": [\ @@ -9245,47 +9117,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "node-notifier"\ ],\ "linkType": "HARD"\ - }],\ - ["virtual:bd9710c9c251a85558397c2064308f14bc59e7e1c8062d2db486886a0ad015ec714ed737a07de2fc270cb1b6c7a431850d2a0eca37586e501fd28cec1e1544c8#npm:29.6.2", {\ - "packageLocation": "./.yarn/__virtual__/@jest-core-virtual-7a1349fdbd/0/cache/@jest-core-npm-29.6.2-5d908b046b-6bbb388643.zip/node_modules/@jest/core/",\ - "packageDependencies": [\ - ["@jest/core", "virtual:bd9710c9c251a85558397c2064308f14bc59e7e1c8062d2db486886a0ad015ec714ed737a07de2fc270cb1b6c7a431850d2a0eca37586e501fd28cec1e1544c8#npm:29.6.2"],\ - ["@jest/console", "npm:29.6.2"],\ - ["@jest/reporters", "virtual:7a1349fdbdec705db12204988f3a5337251b3348c6db61d55f0e40f29bf066706ae6f476bc47dafb9c19aebb1c963bf39935656a9962ee9626f3b650c47ec693#npm:29.6.2"],\ - ["@jest/test-result", "npm:29.6.2"],\ - ["@jest/transform", "npm:29.6.2"],\ - ["@jest/types", "npm:29.6.1"],\ - ["@types/node", "npm:20.4.5"],\ - ["@types/node-notifier", null],\ - ["ansi-escapes", "npm:4.3.2"],\ - ["chalk", "npm:4.1.2"],\ - ["ci-info", "npm:3.8.0"],\ - ["exit", "npm:0.1.2"],\ - ["graceful-fs", "npm:4.2.11"],\ - ["jest-changed-files", "npm:29.5.0"],\ - ["jest-config", "virtual:7a1349fdbdec705db12204988f3a5337251b3348c6db61d55f0e40f29bf066706ae6f476bc47dafb9c19aebb1c963bf39935656a9962ee9626f3b650c47ec693#npm:29.6.2"],\ - ["jest-haste-map", "npm:29.6.2"],\ - ["jest-message-util", "npm:29.6.2"],\ - ["jest-regex-util", "npm:29.4.3"],\ - ["jest-resolve", "npm:29.6.2"],\ - ["jest-resolve-dependencies", "npm:29.6.2"],\ - ["jest-runner", "npm:29.6.2"],\ - ["jest-runtime", "npm:29.6.2"],\ - ["jest-snapshot", "npm:29.6.2"],\ - ["jest-util", "npm:29.6.2"],\ - ["jest-validate", "npm:29.6.2"],\ - ["jest-watcher", "npm:29.6.2"],\ - ["micromatch", "npm:4.0.5"],\ - ["node-notifier", null],\ - ["pretty-format", "npm:29.6.2"],\ - ["slash", "npm:3.0.0"],\ - ["strip-ansi", "npm:6.0.1"]\ - ],\ - "packagePeers": [\ - "@types/node-notifier",\ - "node-notifier"\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["@jest/environment", [\ @@ -9299,38 +9130,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["jest-mock", "npm:27.5.1"]\ ],\ "linkType": "HARD"\ - }],\ - ["npm:29.6.2", {\ - "packageLocation": "./.yarn/cache/@jest-environment-npm-29.6.2-48e8b9de28-c7de0e4c0d.zip/node_modules/@jest/environment/",\ - "packageDependencies": [\ - ["@jest/environment", "npm:29.6.2"],\ - ["@jest/fake-timers", "npm:29.6.2"],\ - ["@jest/types", "npm:29.6.1"],\ - ["@types/node", "npm:20.4.5"],\ - ["jest-mock", "npm:29.6.2"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ - ["@jest/expect", [\ - ["npm:29.6.2", {\ - "packageLocation": "./.yarn/cache/@jest-expect-npm-29.6.2-7910937388-bd2d88a4e7.zip/node_modules/@jest/expect/",\ - "packageDependencies": [\ - ["@jest/expect", "npm:29.6.2"],\ - ["expect", "npm:29.6.2"],\ - ["jest-snapshot", "npm:29.6.2"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ - ["@jest/expect-utils", [\ - ["npm:29.6.2", {\ - "packageLocation": "./.yarn/cache/@jest-expect-utils-npm-29.6.2-bafd0077bb-0decf2009a.zip/node_modules/@jest/expect-utils/",\ - "packageDependencies": [\ - ["@jest/expect-utils", "npm:29.6.2"],\ - ["jest-get-type", "npm:29.4.3"]\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["@jest/fake-timers", [\ @@ -9346,19 +9145,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["jest-util", "npm:27.5.1"]\ ],\ "linkType": "HARD"\ - }],\ - ["npm:29.6.2", {\ - "packageLocation": "./.yarn/cache/@jest-fake-timers-npm-29.6.2-db388f40be-1abcda02f2.zip/node_modules/@jest/fake-timers/",\ - "packageDependencies": [\ - ["@jest/fake-timers", "npm:29.6.2"],\ - ["@jest/types", "npm:29.6.1"],\ - ["@sinonjs/fake-timers", "npm:10.3.0"],\ - ["@types/node", "npm:20.4.5"],\ - ["jest-message-util", "npm:29.6.2"],\ - ["jest-mock", "npm:29.6.2"],\ - ["jest-util", "npm:29.6.2"]\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["@jest/globals", [\ @@ -9371,17 +9157,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["expect", "npm:27.5.1"]\ ],\ "linkType": "HARD"\ - }],\ - ["npm:29.6.2", {\ - "packageLocation": "./.yarn/cache/@jest-globals-npm-29.6.2-c549594aed-aa4a54f19c.zip/node_modules/@jest/globals/",\ - "packageDependencies": [\ - ["@jest/globals", "npm:29.6.2"],\ - ["@jest/environment", "npm:29.6.2"],\ - ["@jest/expect", "npm:29.6.2"],\ - ["@jest/types", "npm:29.6.1"],\ - ["jest-mock", "npm:29.6.2"]\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["@jest/reporters", [\ @@ -9392,13 +9167,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ "linkType": "SOFT"\ }],\ - ["npm:29.6.2", {\ - "packageLocation": "./.yarn/cache/@jest-reporters-npm-29.6.2-42ade157bc-7cf880d073.zip/node_modules/@jest/reporters/",\ - "packageDependencies": [\ - ["@jest/reporters", "npm:29.6.2"]\ - ],\ - "linkType": "SOFT"\ - }],\ ["virtual:055df65b400bb3e4fa3657fa6f31b584e462c668e3360eba26d93c777dff436861f1ac977e7529e5b1c04a222ce4c589badeec22e2f87ac202495072a28ceb03#npm:27.5.1", {\ "packageLocation": "./.yarn/__virtual__/@jest-reporters-virtual-4daf0b0d91/0/cache/@jest-reporters-npm-27.5.1-a792fda73f-faba5eafb8.zip/node_modules/@jest/reporters/",\ "packageDependencies": [\ @@ -9436,43 +9204,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "node-notifier"\ ],\ "linkType": "HARD"\ - }],\ - ["virtual:7a1349fdbdec705db12204988f3a5337251b3348c6db61d55f0e40f29bf066706ae6f476bc47dafb9c19aebb1c963bf39935656a9962ee9626f3b650c47ec693#npm:29.6.2", {\ - "packageLocation": "./.yarn/__virtual__/@jest-reporters-virtual-94cb78df75/0/cache/@jest-reporters-npm-29.6.2-42ade157bc-7cf880d073.zip/node_modules/@jest/reporters/",\ - "packageDependencies": [\ - ["@jest/reporters", "virtual:7a1349fdbdec705db12204988f3a5337251b3348c6db61d55f0e40f29bf066706ae6f476bc47dafb9c19aebb1c963bf39935656a9962ee9626f3b650c47ec693#npm:29.6.2"],\ - ["@bcoe/v8-coverage", "npm:0.2.3"],\ - ["@jest/console", "npm:29.6.2"],\ - ["@jest/test-result", "npm:29.6.2"],\ - ["@jest/transform", "npm:29.6.2"],\ - ["@jest/types", "npm:29.6.1"],\ - ["@jridgewell/trace-mapping", "npm:0.3.18"],\ - ["@types/node", "npm:20.4.5"],\ - ["@types/node-notifier", null],\ - ["chalk", "npm:4.1.2"],\ - ["collect-v8-coverage", "npm:1.0.2"],\ - ["exit", "npm:0.1.2"],\ - ["glob", "npm:7.2.3"],\ - ["graceful-fs", "npm:4.2.11"],\ - ["istanbul-lib-coverage", "npm:3.2.0"],\ - ["istanbul-lib-instrument", "npm:5.2.1"],\ - ["istanbul-lib-report", "npm:3.0.1"],\ - ["istanbul-lib-source-maps", "npm:4.0.1"],\ - ["istanbul-reports", "npm:3.1.6"],\ - ["jest-message-util", "npm:29.6.2"],\ - ["jest-util", "npm:29.6.2"],\ - ["jest-worker", "npm:29.6.2"],\ - ["node-notifier", null],\ - ["slash", "npm:3.0.0"],\ - ["string-length", "npm:4.0.2"],\ - ["strip-ansi", "npm:6.0.1"],\ - ["v8-to-istanbul", "npm:9.1.0"]\ - ],\ - "packagePeers": [\ - "@types/node-notifier",\ - "node-notifier"\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["@jest/schemas", [\ @@ -9503,16 +9234,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["source-map", "npm:0.6.1"]\ ],\ "linkType": "HARD"\ - }],\ - ["npm:29.6.0", {\ - "packageLocation": "./.yarn/cache/@jest-source-map-npm-29.6.0-84d0709d08-9c6c403874.zip/node_modules/@jest/source-map/",\ - "packageDependencies": [\ - ["@jest/source-map", "npm:29.6.0"],\ - ["@jridgewell/trace-mapping", "npm:0.3.18"],\ - ["callsites", "npm:3.1.0"],\ - ["graceful-fs", "npm:4.2.11"]\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["@jest/test-result", [\ @@ -9526,17 +9247,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["collect-v8-coverage", "npm:1.0.2"]\ ],\ "linkType": "HARD"\ - }],\ - ["npm:29.6.2", {\ - "packageLocation": "./.yarn/cache/@jest-test-result-npm-29.6.2-066177b4eb-8aff37f18c.zip/node_modules/@jest/test-result/",\ - "packageDependencies": [\ - ["@jest/test-result", "npm:29.6.2"],\ - ["@jest/console", "npm:29.6.2"],\ - ["@jest/types", "npm:29.6.1"],\ - ["@types/istanbul-lib-coverage", "npm:2.0.4"],\ - ["collect-v8-coverage", "npm:1.0.2"]\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["@jest/test-sequencer", [\ @@ -9550,17 +9260,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["jest-runtime", "npm:27.5.1"]\ ],\ "linkType": "HARD"\ - }],\ - ["npm:29.6.2", {\ - "packageLocation": "./.yarn/cache/@jest-test-sequencer-npm-29.6.2-05231e441f-12dc2577e4.zip/node_modules/@jest/test-sequencer/",\ - "packageDependencies": [\ - ["@jest/test-sequencer", "npm:29.6.2"],\ - ["@jest/test-result", "npm:29.6.2"],\ - ["graceful-fs", "npm:4.2.11"],\ - ["jest-haste-map", "npm:29.6.2"],\ - ["slash", "npm:3.0.0"]\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["@jest/transform", [\ @@ -9585,28 +9284,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["write-file-atomic", "npm:3.0.3"]\ ],\ "linkType": "HARD"\ - }],\ - ["npm:29.6.2", {\ - "packageLocation": "./.yarn/cache/@jest-transform-npm-29.6.2-6b692dd6ca-ffb8c3c344.zip/node_modules/@jest/transform/",\ - "packageDependencies": [\ - ["@jest/transform", "npm:29.6.2"],\ - ["@babel/core", "npm:7.22.9"],\ - ["@jest/types", "npm:29.6.1"],\ - ["@jridgewell/trace-mapping", "npm:0.3.18"],\ - ["babel-plugin-istanbul", "npm:6.1.1"],\ - ["chalk", "npm:4.1.2"],\ - ["convert-source-map", "npm:2.0.0"],\ - ["fast-json-stable-stringify", "npm:2.1.0"],\ - ["graceful-fs", "npm:4.2.11"],\ - ["jest-haste-map", "npm:29.6.2"],\ - ["jest-regex-util", "npm:29.4.3"],\ - ["jest-util", "npm:29.6.2"],\ - ["micromatch", "npm:4.0.5"],\ - ["pirates", "npm:4.0.6"],\ - ["slash", "npm:3.0.0"],\ - ["write-file-atomic", "npm:4.0.2"]\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["@jest/types", [\ @@ -9621,19 +9298,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["chalk", "npm:4.1.2"]\ ],\ "linkType": "HARD"\ - }],\ - ["npm:29.6.1", {\ - "packageLocation": "./.yarn/cache/@jest-types-npm-29.6.1-b7c765fadd-89fc1ccf71.zip/node_modules/@jest/types/",\ - "packageDependencies": [\ - ["@jest/types", "npm:29.6.1"],\ - ["@jest/schemas", "npm:29.6.0"],\ - ["@types/istanbul-lib-coverage", "npm:2.0.4"],\ - ["@types/istanbul-reports", "npm:3.0.1"],\ - ["@types/node", "npm:20.4.5"],\ - ["@types/yargs", "npm:17.0.24"],\ - ["chalk", "npm:4.1.2"]\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["@jridgewell/gen-mapping", [\ @@ -10738,25 +10402,9 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["type-detect", "npm:4.0.8"]\ ],\ "linkType": "HARD"\ - }],\ - ["npm:3.0.0", {\ - "packageLocation": "./.yarn/cache/@sinonjs-commons-npm-3.0.0-fa72ff71a1-b4b5b73d4d.zip/node_modules/@sinonjs/commons/",\ - "packageDependencies": [\ - ["@sinonjs/commons", "npm:3.0.0"],\ - ["type-detect", "npm:4.0.8"]\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["@sinonjs/fake-timers", [\ - ["npm:10.3.0", {\ - "packageLocation": "./.yarn/cache/@sinonjs-fake-timers-npm-10.3.0-7417f876b4-614d30cb4d.zip/node_modules/@sinonjs/fake-timers/",\ - "packageDependencies": [\ - ["@sinonjs/fake-timers", "npm:10.3.0"],\ - ["@sinonjs/commons", "npm:3.0.0"]\ - ],\ - "linkType": "HARD"\ - }],\ ["npm:8.1.0", {\ "packageLocation": "./.yarn/cache/@sinonjs-fake-timers-npm-8.1.0-95c51c96db-09b5a158ce.zip/node_modules/@sinonjs/fake-timers/",\ "packageDependencies": [\ @@ -11576,15 +11224,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD"\ }]\ ]],\ - ["@types/core-js", [\ - ["npm:2.5.5", {\ - "packageLocation": "./.yarn/cache/@types-core-js-npm-2.5.5-cc01096305-54eb91dc52.zip/node_modules/@types/core-js/",\ - "packageDependencies": [\ - ["@types/core-js", "npm:2.5.5"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ ["@types/disposable-email-domains", [\ ["npm:1.0.4", {\ "packageLocation": "./.yarn/cache/@types-disposable-email-domains-npm-1.0.4-07039890e8-cdcd6e04c3.zip/node_modules/@types/disposable-email-domains/",\ @@ -11695,16 +11334,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD"\ }]\ ]],\ - ["@types/form-data", [\ - ["npm:2.5.0", {\ - "packageLocation": "./.yarn/cache/@types-form-data-npm-2.5.0-499e3e2b06-c3f6c89327.zip/node_modules/@types/form-data/",\ - "packageDependencies": [\ - ["@types/form-data", "npm:2.5.0"],\ - ["form-data", "npm:4.0.0"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ ["@types/formidable", [\ ["npm:2.0.6", {\ "packageLocation": "./.yarn/cache/@types-formidable-npm-2.0.6-94d53f71b6-d6be0ac12b.zip/node_modules/@types/formidable/",\ @@ -11836,15 +11465,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["pretty-format", "npm:27.5.1"]\ ],\ "linkType": "HARD"\ - }],\ - ["npm:29.5.3", {\ - "packageLocation": "./.yarn/cache/@types-jest-npm-29.5.3-8fc40e94bc-e36bb92e0b.zip/node_modules/@types/jest/",\ - "packageDependencies": [\ - ["@types/jest", "npm:29.5.3"],\ - ["expect", "npm:29.6.2"],\ - ["pretty-format", "npm:29.6.2"]\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["@types/js-yaml", [\ @@ -12240,15 +11860,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD"\ }]\ ]],\ - ["@types/object-assign-deep", [\ - ["npm:0.4.0", {\ - "packageLocation": "./.yarn/cache/@types-object-assign-deep-npm-0.4.0-bbbcb71273-012429bfa3.zip/node_modules/@types/object-assign-deep/",\ - "packageDependencies": [\ - ["@types/object-assign-deep", "npm:0.4.0"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ ["@types/offscreencanvas", [\ ["npm:2019.3.0", {\ "packageLocation": "./.yarn/cache/@types-offscreencanvas-npm-2019.3.0-5d5329705c-006361d170.zip/node_modules/@types/offscreencanvas/",\ @@ -12265,15 +11876,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD"\ }]\ ]],\ - ["@types/parse-link-header", [\ - ["npm:2.0.1", {\ - "packageLocation": "./.yarn/cache/@types-parse-link-header-npm-2.0.1-6e02f03027-f766786125.zip/node_modules/@types/parse-link-header/",\ - "packageDependencies": [\ - ["@types/parse-link-header", "npm:2.0.1"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ ["@types/picomatch", [\ ["npm:2.3.0", {\ "packageLocation": "./.yarn/cache/@types-picomatch-npm-2.3.0-02d6bd0a9c-dde9572b6c.zip/node_modules/@types/picomatch/",\ @@ -12659,14 +12261,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@types/yargs-parser", "npm:21.0.0"]\ ],\ "linkType": "HARD"\ - }],\ - ["npm:17.0.24", {\ - "packageLocation": "./.yarn/cache/@types-yargs-npm-17.0.24-b034cf1d8b-5f3ac4dc4f.zip/node_modules/@types/yargs/",\ - "packageDependencies": [\ - ["@types/yargs", "npm:17.0.24"],\ - ["@types/yargs-parser", "npm:21.0.0"]\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["@types/yargs-parser", [\ @@ -12703,37 +12297,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ "linkType": "SOFT"\ }],\ - ["virtual:53ee7992132b8e069dc99c9f0f3d05821836bcb37183dd466da76224f67e18ee1c7c92a27051df007cb908288116489612199ddda9fa1e776557a21308d9d714#npm:5.62.0", {\ - "packageLocation": "./.yarn/__virtual__/@typescript-eslint-eslint-plugin-virtual-262671aca9/0/cache/@typescript-eslint-eslint-plugin-npm-5.62.0-c48b9a5492-fc104b389c.zip/node_modules/@typescript-eslint/eslint-plugin/",\ - "packageDependencies": [\ - ["@typescript-eslint/eslint-plugin", "virtual:53ee7992132b8e069dc99c9f0f3d05821836bcb37183dd466da76224f67e18ee1c7c92a27051df007cb908288116489612199ddda9fa1e776557a21308d9d714#npm:5.62.0"],\ - ["@eslint-community/regexpp", "npm:4.6.2"],\ - ["@types/eslint", null],\ - ["@types/typescript", null],\ - ["@types/typescript-eslint__parser", null],\ - ["@typescript-eslint/parser", "virtual:53ee7992132b8e069dc99c9f0f3d05821836bcb37183dd466da76224f67e18ee1c7c92a27051df007cb908288116489612199ddda9fa1e776557a21308d9d714#npm:5.62.0"],\ - ["@typescript-eslint/scope-manager", "npm:5.62.0"],\ - ["@typescript-eslint/type-utils", "virtual:262671aca90b8273ff3878fb2edf92b6759420b3f869df13deb87726d6348ffd0e641fafa62df5bcff1ee9d8b4d44ef75eb8d7e5a9e3a9907b7b9abecd4193e5#npm:5.62.0"],\ - ["@typescript-eslint/utils", "virtual:262671aca90b8273ff3878fb2edf92b6759420b3f869df13deb87726d6348ffd0e641fafa62df5bcff1ee9d8b4d44ef75eb8d7e5a9e3a9907b7b9abecd4193e5#npm:5.62.0"],\ - ["debug", "virtual:ac3d8e680759ce54399273724d44e041d6c9b73454d191d411a8c44bb27e22f02aaf6ed9d3ad0ac1c298eac4833cff369c9c7b84c573016112c4f84be2cd8543#npm:4.3.4"],\ - ["eslint", "npm:8.45.0"],\ - ["graphemer", "npm:1.4.0"],\ - ["ignore", "npm:5.2.4"],\ - ["natural-compare-lite", "npm:1.4.0"],\ - ["semver", "npm:7.5.4"],\ - ["tsutils", "virtual:262671aca90b8273ff3878fb2edf92b6759420b3f869df13deb87726d6348ffd0e641fafa62df5bcff1ee9d8b4d44ef75eb8d7e5a9e3a9907b7b9abecd4193e5#npm:3.21.0"],\ - ["typescript", "patch:typescript@npm%3A4.9.4#~builtin::version=4.9.4&hash=289587"]\ - ],\ - "packagePeers": [\ - "@types/eslint",\ - "@types/typescript-eslint__parser",\ - "@types/typescript",\ - "@typescript-eslint/parser",\ - "eslint",\ - "typescript"\ - ],\ - "linkType": "HARD"\ - }],\ ["virtual:e08418ef59deeef07c44e8084933240f44dc1c0a2f11df6c1122cde5bb698f75d16f72b69df01637f13c248e9f40c9a0743e0787a4299c44674d46800adefa34#npm:5.62.0", {\ "packageLocation": "./.yarn/__virtual__/@typescript-eslint-eslint-plugin-virtual-d8c483f88a/0/cache/@typescript-eslint-eslint-plugin-npm-5.62.0-c48b9a5492-fc104b389c.zip/node_modules/@typescript-eslint/eslint-plugin/",\ "packageDependencies": [\ @@ -12745,7 +12308,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@typescript-eslint/parser", "virtual:e08418ef59deeef07c44e8084933240f44dc1c0a2f11df6c1122cde5bb698f75d16f72b69df01637f13c248e9f40c9a0743e0787a4299c44674d46800adefa34#npm:5.62.0"],\ ["@typescript-eslint/scope-manager", "npm:5.62.0"],\ ["@typescript-eslint/type-utils", "virtual:d8c483f88a6065b498e6e0fc3a962a33c3eeb9fbe05ba30d5d2b593085dc15628873487fa52ca2d8f6ae5f96f3679ddd42df2375f86d9e5f7c79f9530cbe38c7#npm:5.62.0"],\ - ["@typescript-eslint/utils", "virtual:262671aca90b8273ff3878fb2edf92b6759420b3f869df13deb87726d6348ffd0e641fafa62df5bcff1ee9d8b4d44ef75eb8d7e5a9e3a9907b7b9abecd4193e5#npm:5.62.0"],\ + ["@typescript-eslint/utils", "virtual:d8c483f88a6065b498e6e0fc3a962a33c3eeb9fbe05ba30d5d2b593085dc15628873487fa52ca2d8f6ae5f96f3679ddd42df2375f86d9e5f7c79f9530cbe38c7#npm:5.62.0"],\ ["debug", "virtual:ac3d8e680759ce54399273724d44e041d6c9b73454d191d411a8c44bb27e22f02aaf6ed9d3ad0ac1c298eac4833cff369c9c7b84c573016112c4f84be2cd8543#npm:4.3.4"],\ ["eslint", "npm:8.45.0"],\ ["graphemer", "npm:1.4.0"],\ @@ -12814,27 +12377,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ "linkType": "SOFT"\ }],\ - ["virtual:53ee7992132b8e069dc99c9f0f3d05821836bcb37183dd466da76224f67e18ee1c7c92a27051df007cb908288116489612199ddda9fa1e776557a21308d9d714#npm:5.62.0", {\ - "packageLocation": "./.yarn/__virtual__/@typescript-eslint-parser-virtual-34b104654e/0/cache/@typescript-eslint-parser-npm-5.62.0-c6b29fa302-d168f4c7f2.zip/node_modules/@typescript-eslint/parser/",\ - "packageDependencies": [\ - ["@typescript-eslint/parser", "virtual:53ee7992132b8e069dc99c9f0f3d05821836bcb37183dd466da76224f67e18ee1c7c92a27051df007cb908288116489612199ddda9fa1e776557a21308d9d714#npm:5.62.0"],\ - ["@types/eslint", null],\ - ["@types/typescript", null],\ - ["@typescript-eslint/scope-manager", "npm:5.62.0"],\ - ["@typescript-eslint/types", "npm:5.62.0"],\ - ["@typescript-eslint/typescript-estree", "virtual:0d507e97b19e50257dc6f8ee15aef924c15230600ffb640f58137a86713a4ac16c7d03ec2491b927d350aa876e56149788bca3be2016f5284de28fa3c3cee3f0#npm:5.62.0"],\ - ["debug", "virtual:ac3d8e680759ce54399273724d44e041d6c9b73454d191d411a8c44bb27e22f02aaf6ed9d3ad0ac1c298eac4833cff369c9c7b84c573016112c4f84be2cd8543#npm:4.3.4"],\ - ["eslint", "npm:8.45.0"],\ - ["typescript", "patch:typescript@npm%3A4.9.4#~builtin::version=4.9.4&hash=289587"]\ - ],\ - "packagePeers": [\ - "@types/eslint",\ - "@types/typescript",\ - "eslint",\ - "typescript"\ - ],\ - "linkType": "HARD"\ - }],\ ["virtual:e08418ef59deeef07c44e8084933240f44dc1c0a2f11df6c1122cde5bb698f75d16f72b69df01637f13c248e9f40c9a0743e0787a4299c44674d46800adefa34#npm:5.62.0", {\ "packageLocation": "./.yarn/__virtual__/@typescript-eslint-parser-virtual-3c10179175/0/cache/@typescript-eslint-parser-npm-5.62.0-c6b29fa302-d168f4c7f2.zip/node_modules/@typescript-eslint/parser/",\ "packageDependencies": [\ @@ -12914,27 +12456,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ "linkType": "SOFT"\ }],\ - ["virtual:262671aca90b8273ff3878fb2edf92b6759420b3f869df13deb87726d6348ffd0e641fafa62df5bcff1ee9d8b4d44ef75eb8d7e5a9e3a9907b7b9abecd4193e5#npm:5.62.0", {\ - "packageLocation": "./.yarn/__virtual__/@typescript-eslint-type-utils-virtual-0d507e97b1/0/cache/@typescript-eslint-type-utils-npm-5.62.0-220216d668-fc41eece5f.zip/node_modules/@typescript-eslint/type-utils/",\ - "packageDependencies": [\ - ["@typescript-eslint/type-utils", "virtual:262671aca90b8273ff3878fb2edf92b6759420b3f869df13deb87726d6348ffd0e641fafa62df5bcff1ee9d8b4d44ef75eb8d7e5a9e3a9907b7b9abecd4193e5#npm:5.62.0"],\ - ["@types/eslint", null],\ - ["@types/typescript", null],\ - ["@typescript-eslint/typescript-estree", "virtual:0d507e97b19e50257dc6f8ee15aef924c15230600ffb640f58137a86713a4ac16c7d03ec2491b927d350aa876e56149788bca3be2016f5284de28fa3c3cee3f0#npm:5.62.0"],\ - ["@typescript-eslint/utils", "virtual:262671aca90b8273ff3878fb2edf92b6759420b3f869df13deb87726d6348ffd0e641fafa62df5bcff1ee9d8b4d44ef75eb8d7e5a9e3a9907b7b9abecd4193e5#npm:5.62.0"],\ - ["debug", "virtual:ac3d8e680759ce54399273724d44e041d6c9b73454d191d411a8c44bb27e22f02aaf6ed9d3ad0ac1c298eac4833cff369c9c7b84c573016112c4f84be2cd8543#npm:4.3.4"],\ - ["eslint", "npm:8.45.0"],\ - ["tsutils", "virtual:262671aca90b8273ff3878fb2edf92b6759420b3f869df13deb87726d6348ffd0e641fafa62df5bcff1ee9d8b4d44ef75eb8d7e5a9e3a9907b7b9abecd4193e5#npm:3.21.0"],\ - ["typescript", "patch:typescript@npm%3A4.9.4#~builtin::version=4.9.4&hash=289587"]\ - ],\ - "packagePeers": [\ - "@types/eslint",\ - "@types/typescript",\ - "eslint",\ - "typescript"\ - ],\ - "linkType": "HARD"\ - }],\ ["virtual:3b6679253154e85050836479386972d2dff7aa3c98cee4eebd492aaca13f5cb7343b2734c50ad896888a02f5e031359a5da525c02d6f92779f3f9dd7e752126a#npm:6.2.0", {\ "packageLocation": "./.yarn/__virtual__/@typescript-eslint-type-utils-virtual-1d19509600/0/cache/@typescript-eslint-type-utils-npm-6.2.0-80d306e667-9adb542fb3.zip/node_modules/@typescript-eslint/type-utils/",\ "packageDependencies": [\ @@ -12963,7 +12484,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@types/eslint", null],\ ["@types/typescript", null],\ ["@typescript-eslint/typescript-estree", "virtual:b8a8e61bd56111fe5b42ef698d4b06734eb27130dc91c0bb828f4984137c8d04ffd7317532cd84566b52db4763d5d3711b9902080f51e743c25e129b3f641136#npm:5.62.0"],\ - ["@typescript-eslint/utils", "virtual:262671aca90b8273ff3878fb2edf92b6759420b3f869df13deb87726d6348ffd0e641fafa62df5bcff1ee9d8b4d44ef75eb8d7e5a9e3a9907b7b9abecd4193e5#npm:5.62.0"],\ + ["@typescript-eslint/utils", "virtual:d8c483f88a6065b498e6e0fc3a962a33c3eeb9fbe05ba30d5d2b593085dc15628873487fa52ca2d8f6ae5f96f3679ddd42df2375f86d9e5f7c79f9530cbe38c7#npm:5.62.0"],\ ["debug", "virtual:ac3d8e680759ce54399273724d44e041d6c9b73454d191d411a8c44bb27e22f02aaf6ed9d3ad0ac1c298eac4833cff369c9c7b84c573016112c4f84be2cd8543#npm:4.3.4"],\ ["eslint", "npm:8.45.0"],\ ["tsutils", "virtual:d8c483f88a6065b498e6e0fc3a962a33c3eeb9fbe05ba30d5d2b593085dc15628873487fa52ca2d8f6ae5f96f3679ddd42df2375f86d9e5f7c79f9530cbe38c7#npm:3.21.0"],\ @@ -13009,26 +12530,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ "linkType": "SOFT"\ }],\ - ["virtual:0d507e97b19e50257dc6f8ee15aef924c15230600ffb640f58137a86713a4ac16c7d03ec2491b927d350aa876e56149788bca3be2016f5284de28fa3c3cee3f0#npm:5.62.0", {\ - "packageLocation": "./.yarn/__virtual__/@typescript-eslint-typescript-estree-virtual-4090a17e30/0/cache/@typescript-eslint-typescript-estree-npm-5.62.0-5d1ea132a9-3624520abb.zip/node_modules/@typescript-eslint/typescript-estree/",\ - "packageDependencies": [\ - ["@typescript-eslint/typescript-estree", "virtual:0d507e97b19e50257dc6f8ee15aef924c15230600ffb640f58137a86713a4ac16c7d03ec2491b927d350aa876e56149788bca3be2016f5284de28fa3c3cee3f0#npm:5.62.0"],\ - ["@types/typescript", null],\ - ["@typescript-eslint/types", "npm:5.62.0"],\ - ["@typescript-eslint/visitor-keys", "npm:5.62.0"],\ - ["debug", "virtual:ac3d8e680759ce54399273724d44e041d6c9b73454d191d411a8c44bb27e22f02aaf6ed9d3ad0ac1c298eac4833cff369c9c7b84c573016112c4f84be2cd8543#npm:4.3.4"],\ - ["globby", "npm:11.1.0"],\ - ["is-glob", "npm:4.0.3"],\ - ["semver", "npm:7.5.4"],\ - ["tsutils", "virtual:262671aca90b8273ff3878fb2edf92b6759420b3f869df13deb87726d6348ffd0e641fafa62df5bcff1ee9d8b4d44ef75eb8d7e5a9e3a9907b7b9abecd4193e5#npm:3.21.0"],\ - ["typescript", "patch:typescript@npm%3A4.9.4#~builtin::version=4.9.4&hash=289587"]\ - ],\ - "packagePeers": [\ - "@types/typescript",\ - "typescript"\ - ],\ - "linkType": "HARD"\ - }],\ ["virtual:1d19509600f1cc6d2f705159f8806fb3abec3c9b1565d595799bf8c4b583e74d03f7547a701f1dffa2a4b9296fbf4418890a9c9b4b5b64d4d2a7262be86ccf74#npm:6.2.0", {\ "packageLocation": "./.yarn/__virtual__/@typescript-eslint-typescript-estree-virtual-36b69c47f8/0/cache/@typescript-eslint-typescript-estree-npm-6.2.0-88c97a9049-5bfd5bf09f.zip/node_modules/@typescript-eslint/typescript-estree/",\ "packageDependencies": [\ @@ -13049,6 +12550,26 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ "linkType": "HARD"\ }],\ + ["virtual:579853664dfc24ccd6f67180f333b224354dcf46049d13b34c1200486ae2c743e80772559b1e7472e52c36cc15034b3761836d63dc6e697b3a60b8e848eadf86#npm:5.62.0", {\ + "packageLocation": "./.yarn/__virtual__/@typescript-eslint-typescript-estree-virtual-3626087449/0/cache/@typescript-eslint-typescript-estree-npm-5.62.0-5d1ea132a9-3624520abb.zip/node_modules/@typescript-eslint/typescript-estree/",\ + "packageDependencies": [\ + ["@typescript-eslint/typescript-estree", "virtual:579853664dfc24ccd6f67180f333b224354dcf46049d13b34c1200486ae2c743e80772559b1e7472e52c36cc15034b3761836d63dc6e697b3a60b8e848eadf86#npm:5.62.0"],\ + ["@types/typescript", null],\ + ["@typescript-eslint/types", "npm:5.62.0"],\ + ["@typescript-eslint/visitor-keys", "npm:5.62.0"],\ + ["debug", "virtual:ac3d8e680759ce54399273724d44e041d6c9b73454d191d411a8c44bb27e22f02aaf6ed9d3ad0ac1c298eac4833cff369c9c7b84c573016112c4f84be2cd8543#npm:4.3.4"],\ + ["globby", "npm:11.1.0"],\ + ["is-glob", "npm:4.0.3"],\ + ["semver", "npm:7.5.4"],\ + ["tsutils", "virtual:3626087449fcafda434757e41cfa5e841537938d142bccc823c53baa1488d986ae6f21de680f1a1c37e006f588b5498a62cab4024ffb21d6fd093b56c8dade28#npm:3.21.0"],\ + ["typescript", null]\ + ],\ + "packagePeers": [\ + "@types/typescript",\ + "typescript"\ + ],\ + "linkType": "HARD"\ + }],\ ["virtual:a121c5a7d8528ef92d0c92ee6bf5f9f4cdcf9b7ec62b0e7ebc7c807ee667749aa61928fa93f9880c3bf5bd6ec6689e08ec3bf197c706f246128313a67b850093#npm:6.2.0", {\ "packageLocation": "./.yarn/__virtual__/@typescript-eslint-typescript-estree-virtual-148c3fe962/0/cache/@typescript-eslint-typescript-estree-npm-6.2.0-88c97a9049-5bfd5bf09f.zip/node_modules/@typescript-eslint/typescript-estree/",\ "packageDependencies": [\ @@ -13088,26 +12609,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "typescript"\ ],\ "linkType": "HARD"\ - }],\ - ["virtual:bca71ce60be5b7b09e84aaa4fb90952c7c4897b7c40dcc5771a9710cb7430119ab862da87e6d463b034f9c88078c870fc1bad2197de4e79ba3431158416fc109#npm:5.62.0", {\ - "packageLocation": "./.yarn/__virtual__/@typescript-eslint-typescript-estree-virtual-c5ce388850/0/cache/@typescript-eslint-typescript-estree-npm-5.62.0-5d1ea132a9-3624520abb.zip/node_modules/@typescript-eslint/typescript-estree/",\ - "packageDependencies": [\ - ["@typescript-eslint/typescript-estree", "virtual:bca71ce60be5b7b09e84aaa4fb90952c7c4897b7c40dcc5771a9710cb7430119ab862da87e6d463b034f9c88078c870fc1bad2197de4e79ba3431158416fc109#npm:5.62.0"],\ - ["@types/typescript", null],\ - ["@typescript-eslint/types", "npm:5.62.0"],\ - ["@typescript-eslint/visitor-keys", "npm:5.62.0"],\ - ["debug", "virtual:ac3d8e680759ce54399273724d44e041d6c9b73454d191d411a8c44bb27e22f02aaf6ed9d3ad0ac1c298eac4833cff369c9c7b84c573016112c4f84be2cd8543#npm:4.3.4"],\ - ["globby", "npm:11.1.0"],\ - ["is-glob", "npm:4.0.3"],\ - ["semver", "npm:7.5.4"],\ - ["tsutils", "virtual:c5ce38885086e40fbb13bdcf602db323f83f7e9bb7edd87776604a24ca5b49715433e15314b6a2ca7e40f026ea7497814fa50d07c6d5eafd0bc52ac76d93b85f#npm:3.21.0"],\ - ["typescript", null]\ - ],\ - "packagePeers": [\ - "@types/typescript",\ - "typescript"\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["@typescript-eslint/utils", [\ @@ -13125,27 +12626,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ "linkType": "SOFT"\ }],\ - ["virtual:262671aca90b8273ff3878fb2edf92b6759420b3f869df13deb87726d6348ffd0e641fafa62df5bcff1ee9d8b4d44ef75eb8d7e5a9e3a9907b7b9abecd4193e5#npm:5.62.0", {\ - "packageLocation": "./.yarn/__virtual__/@typescript-eslint-utils-virtual-bca71ce60b/0/cache/@typescript-eslint-utils-npm-5.62.0-907f2d579e-ee9398c8c5.zip/node_modules/@typescript-eslint/utils/",\ - "packageDependencies": [\ - ["@typescript-eslint/utils", "virtual:262671aca90b8273ff3878fb2edf92b6759420b3f869df13deb87726d6348ffd0e641fafa62df5bcff1ee9d8b4d44ef75eb8d7e5a9e3a9907b7b9abecd4193e5#npm:5.62.0"],\ - ["@eslint-community/eslint-utils", "virtual:a03a909c3f5870829b2a1f1c58cd72dd0904272c636f0500be601a3bd781404d19a891ad23156b2b680426d08dbfc464b1e4ab195d463ee4ff16262a9e851f5e#npm:4.4.0"],\ - ["@types/eslint", null],\ - ["@types/json-schema", "npm:7.0.12"],\ - ["@types/semver", "npm:7.5.0"],\ - ["@typescript-eslint/scope-manager", "npm:5.62.0"],\ - ["@typescript-eslint/types", "npm:5.62.0"],\ - ["@typescript-eslint/typescript-estree", "virtual:bca71ce60be5b7b09e84aaa4fb90952c7c4897b7c40dcc5771a9710cb7430119ab862da87e6d463b034f9c88078c870fc1bad2197de4e79ba3431158416fc109#npm:5.62.0"],\ - ["eslint", "npm:8.45.0"],\ - ["eslint-scope", "npm:5.1.1"],\ - ["semver", "npm:7.5.4"]\ - ],\ - "packagePeers": [\ - "@types/eslint",\ - "eslint"\ - ],\ - "linkType": "HARD"\ - }],\ ["virtual:3b6679253154e85050836479386972d2dff7aa3c98cee4eebd492aaca13f5cb7343b2734c50ad896888a02f5e031359a5da525c02d6f92779f3f9dd7e752126a#npm:6.2.0", {\ "packageLocation": "./.yarn/__virtual__/@typescript-eslint-utils-virtual-a121c5a7d8/0/cache/@typescript-eslint-utils-npm-6.2.0-28a91fae91-54f062412a.zip/node_modules/@typescript-eslint/utils/",\ "packageDependencies": [\ @@ -13165,6 +12645,27 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "eslint"\ ],\ "linkType": "HARD"\ + }],\ + ["virtual:d8c483f88a6065b498e6e0fc3a962a33c3eeb9fbe05ba30d5d2b593085dc15628873487fa52ca2d8f6ae5f96f3679ddd42df2375f86d9e5f7c79f9530cbe38c7#npm:5.62.0", {\ + "packageLocation": "./.yarn/__virtual__/@typescript-eslint-utils-virtual-579853664d/0/cache/@typescript-eslint-utils-npm-5.62.0-907f2d579e-ee9398c8c5.zip/node_modules/@typescript-eslint/utils/",\ + "packageDependencies": [\ + ["@typescript-eslint/utils", "virtual:d8c483f88a6065b498e6e0fc3a962a33c3eeb9fbe05ba30d5d2b593085dc15628873487fa52ca2d8f6ae5f96f3679ddd42df2375f86d9e5f7c79f9530cbe38c7#npm:5.62.0"],\ + ["@eslint-community/eslint-utils", "virtual:a03a909c3f5870829b2a1f1c58cd72dd0904272c636f0500be601a3bd781404d19a891ad23156b2b680426d08dbfc464b1e4ab195d463ee4ff16262a9e851f5e#npm:4.4.0"],\ + ["@types/eslint", null],\ + ["@types/json-schema", "npm:7.0.12"],\ + ["@types/semver", "npm:7.5.0"],\ + ["@typescript-eslint/scope-manager", "npm:5.62.0"],\ + ["@typescript-eslint/types", "npm:5.62.0"],\ + ["@typescript-eslint/typescript-estree", "virtual:579853664dfc24ccd6f67180f333b224354dcf46049d13b34c1200486ae2c743e80772559b1e7472e52c36cc15034b3761836d63dc6e697b3a60b8e848eadf86#npm:5.62.0"],\ + ["eslint", "npm:8.45.0"],\ + ["eslint-scope", "npm:5.1.1"],\ + ["semver", "npm:7.5.4"]\ + ],\ + "packagePeers": [\ + "@types/eslint",\ + "eslint"\ + ],\ + "linkType": "HARD"\ }]\ ]],\ ["@typescript-eslint/visitor-keys", [\ @@ -13959,15 +13460,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD"\ }]\ ]],\ - ["ansi-sequence-parser", [\ - ["npm:1.1.1", {\ - "packageLocation": "./.yarn/cache/ansi-sequence-parser-npm-1.1.1-4cfd5b85e2-ead5b15c59.zip/node_modules/ansi-sequence-parser/",\ - "packageDependencies": [\ - ["ansi-sequence-parser", "npm:1.1.1"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ ["ansi-styles", [\ ["npm:2.2.1", {\ "packageLocation": "./.yarn/cache/ansi-styles-npm-2.2.1-f3297e782c-ebc0e00381.zip/node_modules/ansi-styles/",\ @@ -14652,16 +14144,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ "linkType": "HARD"\ }],\ - ["npm:1.2.2", {\ - "packageLocation": "./.yarn/cache/axios-npm-1.2.2-151da260f0-6e357491b3.zip/node_modules/axios/",\ - "packageDependencies": [\ - ["axios", "npm:1.2.2"],\ - ["follow-redirects", "virtual:a1c287d287cceec925a9c0ff143359f3710be8008f8559da00a15e4d93f76849e9493b8b7760d073ae605ea56d1482d54174c007b28cbf6b38332d152576190f#npm:1.15.2"],\ - ["form-data", "npm:4.0.0"],\ - ["proxy-from-env", "npm:1.1.0"]\ - ],\ - "linkType": "HARD"\ - }],\ ["npm:1.4.0", {\ "packageLocation": "./.yarn/cache/axios-npm-1.4.0-4d7ce8ca3e-7fb6a4313b.zip/node_modules/axios/",\ "packageDependencies": [\ @@ -14718,13 +14200,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ "linkType": "SOFT"\ }],\ - ["npm:29.6.2", {\ - "packageLocation": "./.yarn/cache/babel-jest-npm-29.6.2-b4a252efef-3936b5d6ed.zip/node_modules/babel-jest/",\ - "packageDependencies": [\ - ["babel-jest", "npm:29.6.2"]\ - ],\ - "linkType": "SOFT"\ - }],\ ["virtual:22a06fd2523d9a1c7ec843e303e5545630e46567c6023b7a0a724a1e23da515483816d12e5eb6cf98caaf6877afb4ce10ecb0a2a9a0c7eb4000f4c90978167ab#npm:27.5.1", {\ "packageLocation": "./.yarn/__virtual__/babel-jest-virtual-cfd43a9d69/0/cache/babel-jest-npm-27.5.1-f9f56b9874-4e93e6e9fb.zip/node_modules/babel-jest/",\ "packageDependencies": [\ @@ -14743,24 +14218,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "@babel/core"\ ],\ "linkType": "HARD"\ - }],\ - ["virtual:2dfc883c42c90b5148b491738bcf41094dda88bacf2bbf81307652482ffebb47c50024fc64eb7e2d134edeeb4a64aa7ad5fe2f573cb6ac82f74577f5cba3cfb0#npm:29.6.2", {\ - "packageLocation": "./.yarn/__virtual__/babel-jest-virtual-d4f7678758/0/cache/babel-jest-npm-29.6.2-b4a252efef-3936b5d6ed.zip/node_modules/babel-jest/",\ - "packageDependencies": [\ - ["babel-jest", "virtual:2dfc883c42c90b5148b491738bcf41094dda88bacf2bbf81307652482ffebb47c50024fc64eb7e2d134edeeb4a64aa7ad5fe2f573cb6ac82f74577f5cba3cfb0#npm:29.6.2"],\ - ["@babel/core", "npm:7.22.9"],\ - ["@jest/transform", "npm:29.6.2"],\ - ["@types/babel__core", "npm:7.20.1"],\ - ["babel-plugin-istanbul", "npm:6.1.1"],\ - ["babel-preset-jest", "virtual:d4f767875805b302a4c959ad86ba38679300dd1b7d9c99bac07280122b6ed2218962644951bbfd7738d72c500e7b047c80e147503b9429a165a9aa3dbb09dc6c#npm:29.5.0"],\ - ["chalk", "npm:4.1.2"],\ - ["graceful-fs", "npm:4.2.11"],\ - ["slash", "npm:3.0.0"]\ - ],\ - "packagePeers": [\ - "@babel/core"\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["babel-plugin-istanbul", [\ @@ -14788,17 +14245,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@types/babel__traverse", "npm:7.20.1"]\ ],\ "linkType": "HARD"\ - }],\ - ["npm:29.5.0", {\ - "packageLocation": "./.yarn/cache/babel-plugin-jest-hoist-npm-29.5.0-3760955b96-099b525407.zip/node_modules/babel-plugin-jest-hoist/",\ - "packageDependencies": [\ - ["babel-plugin-jest-hoist", "npm:29.5.0"],\ - ["@babel/template", "npm:7.22.5"],\ - ["@babel/types", "npm:7.22.5"],\ - ["@types/babel__core", "npm:7.20.1"],\ - ["@types/babel__traverse", "npm:7.20.1"]\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["babel-preset-current-node-syntax", [\ @@ -14868,13 +14314,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ "linkType": "SOFT"\ }],\ - ["npm:29.5.0", {\ - "packageLocation": "./.yarn/cache/babel-preset-jest-npm-29.5.0-1e9ee3b405-5566ca2762.zip/node_modules/babel-preset-jest/",\ - "packageDependencies": [\ - ["babel-preset-jest", "npm:29.5.0"]\ - ],\ - "linkType": "SOFT"\ - }],\ ["virtual:cfd43a9d6960cc7645f06286e13ca12f4af1bd9aa2f0e8d416e14ca1591e5b1347db5f332cdebfcaebbdfd8792fc9c008f58f13134db2e20cfbcc79ca73760a9#npm:27.5.1", {\ "packageLocation": "./.yarn/__virtual__/babel-preset-jest-virtual-741d833773/0/cache/babel-preset-jest-npm-27.5.1-2c76f7f68c-251bcea11c.zip/node_modules/babel-preset-jest/",\ "packageDependencies": [\ @@ -14889,21 +14328,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "@types/babel__core"\ ],\ "linkType": "HARD"\ - }],\ - ["virtual:d4f767875805b302a4c959ad86ba38679300dd1b7d9c99bac07280122b6ed2218962644951bbfd7738d72c500e7b047c80e147503b9429a165a9aa3dbb09dc6c#npm:29.5.0", {\ - "packageLocation": "./.yarn/__virtual__/babel-preset-jest-virtual-da915431d9/0/cache/babel-preset-jest-npm-29.5.0-1e9ee3b405-5566ca2762.zip/node_modules/babel-preset-jest/",\ - "packageDependencies": [\ - ["babel-preset-jest", "virtual:d4f767875805b302a4c959ad86ba38679300dd1b7d9c99bac07280122b6ed2218962644951bbfd7738d72c500e7b047c80e147503b9429a165a9aa3dbb09dc6c#npm:29.5.0"],\ - ["@babel/core", "npm:7.22.9"],\ - ["@types/babel__core", "npm:7.20.1"],\ - ["babel-plugin-jest-hoist", "npm:29.5.0"],\ - ["babel-preset-current-node-syntax", "virtual:741d833773476bafd42792c023ccf5972d67de9302c1316c40941f4cde29b308af46e1176be8d92bed5eeca2510337cc5340ad1a7724705b9066eaabdd07ce97#npm:1.0.1"]\ - ],\ - "packagePeers": [\ - "@babel/core",\ - "@types/babel__core"\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["babel-walk", [\ @@ -15058,7 +14482,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["koa-send", "npm:5.0.1"],\ ["koa-slow", "npm:2.1.0"],\ ["koa-views", "virtual:aa59773ac87791c4813d53447077fcf8a847d6de5a301d34dc31286584b1dbb26d30d3adb5b4c41c1e8aea04371e926fda05c09c6253647c432e11d872a304ba#npm:7.0.2"],\ - ["megalodon", "workspace:packages/megalodon"],\ ["meilisearch", "npm:0.33.0"],\ ["mfm-js", "npm:0.23.3"],\ ["mime-types", "npm:2.1.35"],\ @@ -16349,7 +15772,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["emojilib", "https://iceshrimp.dev/iceshrimp/emojilib.git#commit=6da2033596e67662a509a20997cb05bcf17a6310"],\ ["escape-regexp", "npm:0.0.1"],\ ["eslint", "npm:8.45.0"],\ - ["eslint-config-prettier", "virtual:53ee7992132b8e069dc99c9f0f3d05821836bcb37183dd466da76224f67e18ee1c7c92a27051df007cb908288116489612199ddda9fa1e776557a21308d9d714#npm:8.9.0"],\ + ["eslint-config-prettier", "virtual:658502eb4296e93abedc18b6aa9b26978f434f08d98e21ebb0e725354b8bb54b62db9c4a1893e460c694ff7500ff5cbafa4457b0dfd26b5838868666c861e990#npm:8.9.0"],\ ["eslint-plugin-file-progress", "virtual:658502eb4296e93abedc18b6aa9b26978f434f08d98e21ebb0e725354b8bb54b62db9c4a1893e460c694ff7500ff5cbafa4457b0dfd26b5838868666c861e990#npm:1.3.0"],\ ["eventemitter3", "npm:5.0.1"],\ ["fast-blurhash", "npm:1.1.2"],\ @@ -17158,13 +16581,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["convert-source-map", "npm:1.9.0"]\ ],\ "linkType": "HARD"\ - }],\ - ["npm:2.0.0", {\ - "packageLocation": "./.yarn/cache/convert-source-map-npm-2.0.0-7ab664dc4e-63ae9933be.zip/node_modules/convert-source-map/",\ - "packageDependencies": [\ - ["convert-source-map", "npm:2.0.0"]\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["cookies", [\ @@ -17882,26 +17298,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["dedent", "npm:0.7.0"]\ ],\ "linkType": "HARD"\ - }],\ - ["npm:1.2.0", {\ - "packageLocation": "./.yarn/cache/dedent-npm-1.2.0-2b32a4a08e-239f12ddd4.zip/node_modules/dedent/",\ - "packageDependencies": [\ - ["dedent", "npm:1.2.0"]\ - ],\ - "linkType": "SOFT"\ - }],\ - ["virtual:675d768a165791a678c7f44449470ebed4a78b5127fef1bcecca0ff523c7ef02c1ab1642aa6235af20674a41fe8582e06f555131997e4c92c4a60d4f332a205b#npm:1.2.0", {\ - "packageLocation": "./.yarn/__virtual__/dedent-virtual-0e58cc7a3b/0/cache/dedent-npm-1.2.0-2b32a4a08e-239f12ddd4.zip/node_modules/dedent/",\ - "packageDependencies": [\ - ["dedent", "virtual:675d768a165791a678c7f44449470ebed4a78b5127fef1bcecca0ff523c7ef02c1ab1642aa6235af20674a41fe8582e06f555131997e4c92c4a60d4f332a205b#npm:1.2.0"],\ - ["@types/babel-plugin-macros", null],\ - ["babel-plugin-macros", null]\ - ],\ - "packagePeers": [\ - "@types/babel-plugin-macros",\ - "babel-plugin-macros"\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["deep-email-validator", [\ @@ -18481,13 +17877,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["emittery", [\ - ["npm:0.13.1", {\ - "packageLocation": "./.yarn/cache/emittery-npm-0.13.1-cb6cd1bb03-2b089ab630.zip/node_modules/emittery/",\ - "packageDependencies": [\ - ["emittery", "npm:0.13.1"]\ - ],\ - "linkType": "HARD"\ - }],\ ["npm:0.8.1", {\ "packageLocation": "./.yarn/cache/emittery-npm-0.8.1-9771f0f260-2457e8c7b0.zip/node_modules/emittery/",\ "packageDependencies": [\ @@ -18963,10 +18352,10 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ "linkType": "SOFT"\ }],\ - ["virtual:53ee7992132b8e069dc99c9f0f3d05821836bcb37183dd466da76224f67e18ee1c7c92a27051df007cb908288116489612199ddda9fa1e776557a21308d9d714#npm:8.9.0", {\ - "packageLocation": "./.yarn/__virtual__/eslint-config-prettier-virtual-c4c07085f0/0/cache/eslint-config-prettier-npm-8.9.0-55f18738a4-a675d0dabd.zip/node_modules/eslint-config-prettier/",\ + ["virtual:658502eb4296e93abedc18b6aa9b26978f434f08d98e21ebb0e725354b8bb54b62db9c4a1893e460c694ff7500ff5cbafa4457b0dfd26b5838868666c861e990#npm:8.9.0", {\ + "packageLocation": "./.yarn/__virtual__/eslint-config-prettier-virtual-7d10af0f4e/0/cache/eslint-config-prettier-npm-8.9.0-55f18738a4-a675d0dabd.zip/node_modules/eslint-config-prettier/",\ "packageDependencies": [\ - ["eslint-config-prettier", "virtual:53ee7992132b8e069dc99c9f0f3d05821836bcb37183dd466da76224f67e18ee1c7c92a27051df007cb908288116489612199ddda9fa1e776557a21308d9d714#npm:8.9.0"],\ + ["eslint-config-prettier", "virtual:658502eb4296e93abedc18b6aa9b26978f434f08d98e21ebb0e725354b8bb54b62db9c4a1893e460c694ff7500ff5cbafa4457b0dfd26b5838868666c861e990#npm:8.9.0"],\ ["@types/eslint", null],\ ["eslint", "npm:8.45.0"]\ ],\ @@ -18977,40 +18366,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD"\ }]\ ]],\ - ["eslint-config-standard", [\ - ["npm:16.0.3", {\ - "packageLocation": "./.yarn/cache/eslint-config-standard-npm-16.0.3-9922e724a8-6ae193634f.zip/node_modules/eslint-config-standard/",\ - "packageDependencies": [\ - ["eslint-config-standard", "npm:16.0.3"]\ - ],\ - "linkType": "SOFT"\ - }],\ - ["virtual:53ee7992132b8e069dc99c9f0f3d05821836bcb37183dd466da76224f67e18ee1c7c92a27051df007cb908288116489612199ddda9fa1e776557a21308d9d714#npm:16.0.3", {\ - "packageLocation": "./.yarn/__virtual__/eslint-config-standard-virtual-5ffc5c56eb/0/cache/eslint-config-standard-npm-16.0.3-9922e724a8-6ae193634f.zip/node_modules/eslint-config-standard/",\ - "packageDependencies": [\ - ["eslint-config-standard", "virtual:53ee7992132b8e069dc99c9f0f3d05821836bcb37183dd466da76224f67e18ee1c7c92a27051df007cb908288116489612199ddda9fa1e776557a21308d9d714#npm:16.0.3"],\ - ["@types/eslint", null],\ - ["@types/eslint-plugin-import", null],\ - ["@types/eslint-plugin-node", null],\ - ["@types/eslint-plugin-promise", null],\ - ["eslint", "npm:8.45.0"],\ - ["eslint-plugin-import", "virtual:53ee7992132b8e069dc99c9f0f3d05821836bcb37183dd466da76224f67e18ee1c7c92a27051df007cb908288116489612199ddda9fa1e776557a21308d9d714#npm:2.27.5"],\ - ["eslint-plugin-node", "virtual:53ee7992132b8e069dc99c9f0f3d05821836bcb37183dd466da76224f67e18ee1c7c92a27051df007cb908288116489612199ddda9fa1e776557a21308d9d714#npm:11.1.0"],\ - ["eslint-plugin-promise", "virtual:53ee7992132b8e069dc99c9f0f3d05821836bcb37183dd466da76224f67e18ee1c7c92a27051df007cb908288116489612199ddda9fa1e776557a21308d9d714#npm:6.1.1"]\ - ],\ - "packagePeers": [\ - "@types/eslint-plugin-import",\ - "@types/eslint-plugin-node",\ - "@types/eslint-plugin-promise",\ - "@types/eslint",\ - "eslint-plugin-import",\ - "eslint-plugin-node",\ - "eslint-plugin-promise",\ - "eslint"\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ ["eslint-formatter-pretty", [\ ["npm:4.1.0", {\ "packageLocation": "./.yarn/cache/eslint-formatter-pretty-npm-4.1.0-30790f28b4-e8e0cd3843.zip/node_modules/eslint-formatter-pretty/",\ @@ -19077,46 +18432,9 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "eslint"\ ],\ "linkType": "HARD"\ - }],\ - ["virtual:becf4056d77ec7bcd349fd95190997fddbc0640f3e2b8fc15ff2c4b28176524ba9b71ab982b021a034930f879e7e90cd699afbbbdf5ab913323c23a6e08d2a2e#npm:2.8.0", {\ - "packageLocation": "./.yarn/__virtual__/eslint-module-utils-virtual-96c1950ca0/0/cache/eslint-module-utils-npm-2.8.0-05e42bcab0-74c6dfea76.zip/node_modules/eslint-module-utils/",\ - "packageDependencies": [\ - ["eslint-module-utils", "virtual:becf4056d77ec7bcd349fd95190997fddbc0640f3e2b8fc15ff2c4b28176524ba9b71ab982b021a034930f879e7e90cd699afbbbdf5ab913323c23a6e08d2a2e#npm:2.8.0"],\ - ["@types/eslint", null],\ - ["@types/eslint-import-resolver-node", null],\ - ["@types/eslint-import-resolver-typescript", null],\ - ["@types/eslint-import-resolver-webpack", null],\ - ["@types/typescript-eslint__parser", null],\ - ["@typescript-eslint/parser", "virtual:53ee7992132b8e069dc99c9f0f3d05821836bcb37183dd466da76224f67e18ee1c7c92a27051df007cb908288116489612199ddda9fa1e776557a21308d9d714#npm:5.62.0"],\ - ["debug", "virtual:396a3691f7b25accf085fe2fff1f56eb7540eff3f2e928a7572ca1de9b831ff8f22136404f236aaed35d90369918dfc34392844d0f822a310563f34746dfb015#npm:3.2.7"],\ - ["eslint", "npm:8.45.0"],\ - ["eslint-import-resolver-node", "npm:0.3.7"],\ - ["eslint-import-resolver-typescript", null],\ - ["eslint-import-resolver-webpack", null]\ - ],\ - "packagePeers": [\ - "@types/eslint-import-resolver-node",\ - "@types/eslint-import-resolver-typescript",\ - "@types/eslint-import-resolver-webpack",\ - "@types/eslint",\ - "@types/typescript-eslint__parser",\ - "@typescript-eslint/parser",\ - "eslint-import-resolver-node",\ - "eslint-import-resolver-typescript",\ - "eslint-import-resolver-webpack",\ - "eslint"\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["eslint-plugin-es", [\ - ["npm:3.0.1", {\ - "packageLocation": "./.yarn/cache/eslint-plugin-es-npm-3.0.1-95e8015220-e57592c523.zip/node_modules/eslint-plugin-es/",\ - "packageDependencies": [\ - ["eslint-plugin-es", "npm:3.0.1"]\ - ],\ - "linkType": "SOFT"\ - }],\ ["npm:4.1.0", {\ "packageLocation": "./.yarn/cache/eslint-plugin-es-npm-4.1.0-a4cf26d3cd-26b87a216d.zip/node_modules/eslint-plugin-es/",\ "packageDependencies": [\ @@ -19138,21 +18456,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "eslint"\ ],\ "linkType": "HARD"\ - }],\ - ["virtual:901bc8648d2b06d17f3000f1e9d038ce35c7d66f20cb53040caeea1ad14138988398a2e53a10ec927174e8d4953e875d8b7ecfc57187857f7e1c3778d9ee3d38#npm:3.0.1", {\ - "packageLocation": "./.yarn/__virtual__/eslint-plugin-es-virtual-1d7b0cc598/0/cache/eslint-plugin-es-npm-3.0.1-95e8015220-e57592c523.zip/node_modules/eslint-plugin-es/",\ - "packageDependencies": [\ - ["eslint-plugin-es", "virtual:901bc8648d2b06d17f3000f1e9d038ce35c7d66f20cb53040caeea1ad14138988398a2e53a10ec927174e8d4953e875d8b7ecfc57187857f7e1c3778d9ee3d38#npm:3.0.1"],\ - ["@types/eslint", null],\ - ["eslint", "npm:8.45.0"],\ - ["eslint-utils", "npm:2.1.0"],\ - ["regexpp", "npm:3.2.0"]\ - ],\ - "packagePeers": [\ - "@types/eslint",\ - "eslint"\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["eslint-plugin-es-x", [\ @@ -19245,38 +18548,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ "linkType": "SOFT"\ }],\ - ["virtual:53ee7992132b8e069dc99c9f0f3d05821836bcb37183dd466da76224f67e18ee1c7c92a27051df007cb908288116489612199ddda9fa1e776557a21308d9d714#npm:2.27.5", {\ - "packageLocation": "./.yarn/__virtual__/eslint-plugin-import-virtual-becf4056d7/0/cache/eslint-plugin-import-npm-2.27.5-35b044b26f-f500571a38.zip/node_modules/eslint-plugin-import/",\ - "packageDependencies": [\ - ["eslint-plugin-import", "virtual:53ee7992132b8e069dc99c9f0f3d05821836bcb37183dd466da76224f67e18ee1c7c92a27051df007cb908288116489612199ddda9fa1e776557a21308d9d714#npm:2.27.5"],\ - ["@types/eslint", null],\ - ["@types/typescript-eslint__parser", null],\ - ["@typescript-eslint/parser", "virtual:53ee7992132b8e069dc99c9f0f3d05821836bcb37183dd466da76224f67e18ee1c7c92a27051df007cb908288116489612199ddda9fa1e776557a21308d9d714#npm:5.62.0"],\ - ["array-includes", "npm:3.1.6"],\ - ["array.prototype.flat", "npm:1.3.1"],\ - ["array.prototype.flatmap", "npm:1.3.1"],\ - ["debug", "virtual:396a3691f7b25accf085fe2fff1f56eb7540eff3f2e928a7572ca1de9b831ff8f22136404f236aaed35d90369918dfc34392844d0f822a310563f34746dfb015#npm:3.2.7"],\ - ["doctrine", "npm:2.1.0"],\ - ["eslint", "npm:8.45.0"],\ - ["eslint-import-resolver-node", "npm:0.3.7"],\ - ["eslint-module-utils", "virtual:becf4056d77ec7bcd349fd95190997fddbc0640f3e2b8fc15ff2c4b28176524ba9b71ab982b021a034930f879e7e90cd699afbbbdf5ab913323c23a6e08d2a2e#npm:2.8.0"],\ - ["has", "npm:1.0.3"],\ - ["is-core-module", "npm:2.12.1"],\ - ["is-glob", "npm:4.0.3"],\ - ["minimatch", "npm:3.1.2"],\ - ["object.values", "npm:1.1.6"],\ - ["resolve", "patch:resolve@npm%3A1.22.3#~builtin::version=1.22.3&hash=c3c19d"],\ - ["semver", "npm:6.3.1"],\ - ["tsconfig-paths", "npm:3.14.2"]\ - ],\ - "packagePeers": [\ - "@types/eslint",\ - "@types/typescript-eslint__parser",\ - "@typescript-eslint/parser",\ - "eslint"\ - ],\ - "linkType": "HARD"\ - }],\ ["virtual:a47359453d05960acfdb0e9ea5a0a6b96ac556b27d2d094c5fc0c7a7c1749650640c69033df2c650c35d7c667cef5718018dde3071a14b8d540a6db06a046973#npm:2.27.5", {\ "packageLocation": "./.yarn/__virtual__/eslint-plugin-import-virtual-472e7a619f/0/cache/eslint-plugin-import-npm-2.27.5-35b044b26f-f500571a38.zip/node_modules/eslint-plugin-import/",\ "packageDependencies": [\ @@ -19447,34 +18718,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD"\ }]\ ]],\ - ["eslint-plugin-node", [\ - ["npm:11.1.0", {\ - "packageLocation": "./.yarn/cache/eslint-plugin-node-npm-11.1.0-913abe06f4-5804c4f8a6.zip/node_modules/eslint-plugin-node/",\ - "packageDependencies": [\ - ["eslint-plugin-node", "npm:11.1.0"]\ - ],\ - "linkType": "SOFT"\ - }],\ - ["virtual:53ee7992132b8e069dc99c9f0f3d05821836bcb37183dd466da76224f67e18ee1c7c92a27051df007cb908288116489612199ddda9fa1e776557a21308d9d714#npm:11.1.0", {\ - "packageLocation": "./.yarn/__virtual__/eslint-plugin-node-virtual-901bc8648d/0/cache/eslint-plugin-node-npm-11.1.0-913abe06f4-5804c4f8a6.zip/node_modules/eslint-plugin-node/",\ - "packageDependencies": [\ - ["eslint-plugin-node", "virtual:53ee7992132b8e069dc99c9f0f3d05821836bcb37183dd466da76224f67e18ee1c7c92a27051df007cb908288116489612199ddda9fa1e776557a21308d9d714#npm:11.1.0"],\ - ["@types/eslint", null],\ - ["eslint", "npm:8.45.0"],\ - ["eslint-plugin-es", "virtual:901bc8648d2b06d17f3000f1e9d038ce35c7d66f20cb53040caeea1ad14138988398a2e53a10ec927174e8d4953e875d8b7ecfc57187857f7e1c3778d9ee3d38#npm:3.0.1"],\ - ["eslint-utils", "npm:2.1.0"],\ - ["ignore", "npm:5.2.4"],\ - ["minimatch", "npm:3.1.2"],\ - ["resolve", "patch:resolve@npm%3A1.22.3#~builtin::version=1.22.3&hash=c3c19d"],\ - ["semver", "npm:6.3.1"]\ - ],\ - "packagePeers": [\ - "@types/eslint",\ - "eslint"\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ ["eslint-plugin-prettier", [\ ["npm:4.2.1", {\ "packageLocation": "./.yarn/cache/eslint-plugin-prettier-npm-4.2.1-ba8e1240f1-b9e839d233.zip/node_modules/eslint-plugin-prettier/",\ @@ -19490,28 +18733,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ "linkType": "SOFT"\ }],\ - ["virtual:53ee7992132b8e069dc99c9f0f3d05821836bcb37183dd466da76224f67e18ee1c7c92a27051df007cb908288116489612199ddda9fa1e776557a21308d9d714#npm:4.2.1", {\ - "packageLocation": "./.yarn/__virtual__/eslint-plugin-prettier-virtual-974457778f/0/cache/eslint-plugin-prettier-npm-4.2.1-ba8e1240f1-b9e839d233.zip/node_modules/eslint-plugin-prettier/",\ - "packageDependencies": [\ - ["eslint-plugin-prettier", "virtual:53ee7992132b8e069dc99c9f0f3d05821836bcb37183dd466da76224f67e18ee1c7c92a27051df007cb908288116489612199ddda9fa1e776557a21308d9d714#npm:4.2.1"],\ - ["@types/eslint", null],\ - ["@types/eslint-config-prettier", null],\ - ["@types/prettier", null],\ - ["eslint", "npm:8.45.0"],\ - ["eslint-config-prettier", "virtual:53ee7992132b8e069dc99c9f0f3d05821836bcb37183dd466da76224f67e18ee1c7c92a27051df007cb908288116489612199ddda9fa1e776557a21308d9d714#npm:8.9.0"],\ - ["prettier", "npm:2.8.8"],\ - ["prettier-linter-helpers", "npm:1.0.0"]\ - ],\ - "packagePeers": [\ - "@types/eslint-config-prettier",\ - "@types/eslint",\ - "@types/prettier",\ - "eslint-config-prettier",\ - "eslint",\ - "prettier"\ - ],\ - "linkType": "HARD"\ - }],\ ["virtual:e08418ef59deeef07c44e8084933240f44dc1c0a2f11df6c1122cde5bb698f75d16f72b69df01637f13c248e9f40c9a0743e0787a4299c44674d46800adefa34#npm:4.2.1", {\ "packageLocation": "./.yarn/__virtual__/eslint-plugin-prettier-virtual-2a10735b83/0/cache/eslint-plugin-prettier-npm-4.2.1-ba8e1240f1-b9e839d233.zip/node_modules/eslint-plugin-prettier/",\ "packageDependencies": [\ @@ -19520,7 +18741,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@types/eslint-config-prettier", null],\ ["@types/prettier", null],\ ["eslint", "npm:8.45.0"],\ - ["eslint-config-prettier", "virtual:53ee7992132b8e069dc99c9f0f3d05821836bcb37183dd466da76224f67e18ee1c7c92a27051df007cb908288116489612199ddda9fa1e776557a21308d9d714#npm:8.9.0"],\ + ["eslint-config-prettier", "virtual:658502eb4296e93abedc18b6aa9b26978f434f08d98e21ebb0e725354b8bb54b62db9c4a1893e460c694ff7500ff5cbafa4457b0dfd26b5838868666c861e990#npm:8.9.0"],\ ["prettier", "npm:3.0.0"],\ ["prettier-linter-helpers", "npm:1.0.0"]\ ],\ @@ -19542,7 +18763,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@types/eslint-config-prettier", null],\ ["@types/prettier", null],\ ["eslint", "npm:8.45.0"],\ - ["eslint-config-prettier", "virtual:53ee7992132b8e069dc99c9f0f3d05821836bcb37183dd466da76224f67e18ee1c7c92a27051df007cb908288116489612199ddda9fa1e776557a21308d9d714#npm:8.9.0"],\ + ["eslint-config-prettier", "virtual:658502eb4296e93abedc18b6aa9b26978f434f08d98e21ebb0e725354b8bb54b62db9c4a1893e460c694ff7500ff5cbafa4457b0dfd26b5838868666c861e990#npm:8.9.0"],\ ["prettier", "npm:3.0.0"],\ ["prettier-linter-helpers", "npm:1.0.0"],\ ["synckit", "npm:0.8.5"]\ @@ -19573,10 +18794,10 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ "linkType": "SOFT"\ }],\ - ["virtual:53ee7992132b8e069dc99c9f0f3d05821836bcb37183dd466da76224f67e18ee1c7c92a27051df007cb908288116489612199ddda9fa1e776557a21308d9d714#npm:6.1.1", {\ - "packageLocation": "./.yarn/__virtual__/eslint-plugin-promise-virtual-32d9df16ad/0/cache/eslint-plugin-promise-npm-6.1.1-8928fc7781-46b9a4f79d.zip/node_modules/eslint-plugin-promise/",\ + ["virtual:2ba63d9edc202bd2651a98715151dff30efc6c123b169246bec0f73b689a82a5906355cd813e670529b429d734a64d1f2a1286ff8bfb1a65891f1768ad081ce1#npm:6.1.1", {\ + "packageLocation": "./.yarn/__virtual__/eslint-plugin-promise-virtual-fa5968b43b/0/cache/eslint-plugin-promise-npm-6.1.1-8928fc7781-46b9a4f79d.zip/node_modules/eslint-plugin-promise/",\ "packageDependencies": [\ - ["eslint-plugin-promise", "virtual:53ee7992132b8e069dc99c9f0f3d05821836bcb37183dd466da76224f67e18ee1c7c92a27051df007cb908288116489612199ddda9fa1e776557a21308d9d714#npm:6.1.1"],\ + ["eslint-plugin-promise", "virtual:2ba63d9edc202bd2651a98715151dff30efc6c123b169246bec0f73b689a82a5906355cd813e670529b429d734a64d1f2a1286ff8bfb1a65891f1768ad081ce1#npm:6.1.1"],\ ["@types/eslint", null],\ ["eslint", "npm:8.45.0"]\ ],\ @@ -19600,28 +18821,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD"\ }]\ ]],\ - ["eslint-plugin-standard", [\ - ["npm:5.0.0", {\ - "packageLocation": "./.yarn/cache/eslint-plugin-standard-npm-5.0.0-261fbe58f0-58f1aba891.zip/node_modules/eslint-plugin-standard/",\ - "packageDependencies": [\ - ["eslint-plugin-standard", "npm:5.0.0"]\ - ],\ - "linkType": "SOFT"\ - }],\ - ["virtual:53ee7992132b8e069dc99c9f0f3d05821836bcb37183dd466da76224f67e18ee1c7c92a27051df007cb908288116489612199ddda9fa1e776557a21308d9d714#npm:5.0.0", {\ - "packageLocation": "./.yarn/__virtual__/eslint-plugin-standard-virtual-c8ff3f088f/0/cache/eslint-plugin-standard-npm-5.0.0-261fbe58f0-58f1aba891.zip/node_modules/eslint-plugin-standard/",\ - "packageDependencies": [\ - ["eslint-plugin-standard", "virtual:53ee7992132b8e069dc99c9f0f3d05821836bcb37183dd466da76224f67e18ee1c7c92a27051df007cb908288116489612199ddda9fa1e776557a21308d9d714#npm:5.0.0"],\ - ["@types/eslint", null],\ - ["eslint", "npm:8.45.0"]\ - ],\ - "packagePeers": [\ - "@types/eslint",\ - "eslint"\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ ["eslint-plugin-tsdoc", [\ ["npm:0.2.17", {\ "packageLocation": "./.yarn/cache/eslint-plugin-tsdoc-npm-0.2.17-a48e3f007d-d143a5f1c5.zip/node_modules/eslint-plugin-tsdoc/",\ @@ -20195,19 +19394,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["jest-message-util", "npm:27.5.1"]\ ],\ "linkType": "HARD"\ - }],\ - ["npm:29.6.2", {\ - "packageLocation": "./.yarn/cache/expect-npm-29.6.2-d56284fd66-71f7b0c560.zip/node_modules/expect/",\ - "packageDependencies": [\ - ["expect", "npm:29.6.2"],\ - ["@jest/expect-utils", "npm:29.6.2"],\ - ["@types/node", "npm:20.4.5"],\ - ["jest-get-type", "npm:29.4.3"],\ - ["jest-matcher-utils", "npm:29.6.2"],\ - ["jest-message-util", "npm:29.6.2"],\ - ["jest-util", "npm:29.6.2"]\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["exponential-backoff", [\ @@ -23563,13 +22749,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ "linkType": "SOFT"\ }],\ - ["npm:29.6.2", {\ - "packageLocation": "./.yarn/cache/jest-npm-29.6.2-5eda7a13ff-dd63facd4e.zip/node_modules/jest/",\ - "packageDependencies": [\ - ["jest", "npm:29.6.2"]\ - ],\ - "linkType": "SOFT"\ - }],\ ["virtual:21a30884d94fbf67bcf4a1714713cc91d32809a34424c4ce678841dfdc63b58647c5e18570d56e36b3c762ee72f81c251599477127a715978fa6e1d8b9e5d952#npm:27.5.1", {\ "packageLocation": "./.yarn/__virtual__/jest-virtual-5bad70dae6/0/cache/jest-npm-27.5.1-bacad4fe2a-96f1d69042.zip/node_modules/jest/",\ "packageDependencies": [\ @@ -23585,23 +22764,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "node-notifier"\ ],\ "linkType": "HARD"\ - }],\ - ["virtual:53ee7992132b8e069dc99c9f0f3d05821836bcb37183dd466da76224f67e18ee1c7c92a27051df007cb908288116489612199ddda9fa1e776557a21308d9d714#npm:29.6.2", {\ - "packageLocation": "./.yarn/__virtual__/jest-virtual-bd9710c9c2/0/cache/jest-npm-29.6.2-5eda7a13ff-dd63facd4e.zip/node_modules/jest/",\ - "packageDependencies": [\ - ["jest", "virtual:53ee7992132b8e069dc99c9f0f3d05821836bcb37183dd466da76224f67e18ee1c7c92a27051df007cb908288116489612199ddda9fa1e776557a21308d9d714#npm:29.6.2"],\ - ["@jest/core", "virtual:bd9710c9c251a85558397c2064308f14bc59e7e1c8062d2db486886a0ad015ec714ed737a07de2fc270cb1b6c7a431850d2a0eca37586e501fd28cec1e1544c8#npm:29.6.2"],\ - ["@jest/types", "npm:29.6.1"],\ - ["@types/node-notifier", null],\ - ["import-local", "npm:3.1.0"],\ - ["jest-cli", "virtual:bd9710c9c251a85558397c2064308f14bc59e7e1c8062d2db486886a0ad015ec714ed737a07de2fc270cb1b6c7a431850d2a0eca37586e501fd28cec1e1544c8#npm:29.6.2"],\ - ["node-notifier", null]\ - ],\ - "packagePeers": [\ - "@types/node-notifier",\ - "node-notifier"\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["jest-changed-files", [\ @@ -23614,15 +22776,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["throat", "npm:6.0.2"]\ ],\ "linkType": "HARD"\ - }],\ - ["npm:29.5.0", {\ - "packageLocation": "./.yarn/cache/jest-changed-files-npm-29.5.0-9ca582b770-a67a7cb3c1.zip/node_modules/jest-changed-files/",\ - "packageDependencies": [\ - ["jest-changed-files", "npm:29.5.0"],\ - ["execa", "npm:5.1.1"],\ - ["p-limit", "npm:3.1.0"]\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["jest-circus", [\ @@ -23651,33 +22804,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["throat", "npm:6.0.2"]\ ],\ "linkType": "HARD"\ - }],\ - ["npm:29.6.2", {\ - "packageLocation": "./.yarn/cache/jest-circus-npm-29.6.2-675d768a16-4f5a96a68c.zip/node_modules/jest-circus/",\ - "packageDependencies": [\ - ["jest-circus", "npm:29.6.2"],\ - ["@jest/environment", "npm:29.6.2"],\ - ["@jest/expect", "npm:29.6.2"],\ - ["@jest/test-result", "npm:29.6.2"],\ - ["@jest/types", "npm:29.6.1"],\ - ["@types/node", "npm:20.4.5"],\ - ["chalk", "npm:4.1.2"],\ - ["co", "npm:4.6.0"],\ - ["dedent", "virtual:675d768a165791a678c7f44449470ebed4a78b5127fef1bcecca0ff523c7ef02c1ab1642aa6235af20674a41fe8582e06f555131997e4c92c4a60d4f332a205b#npm:1.2.0"],\ - ["is-generator-fn", "npm:2.1.0"],\ - ["jest-each", "npm:29.6.2"],\ - ["jest-matcher-utils", "npm:29.6.2"],\ - ["jest-message-util", "npm:29.6.2"],\ - ["jest-runtime", "npm:29.6.2"],\ - ["jest-snapshot", "npm:29.6.2"],\ - ["jest-util", "npm:29.6.2"],\ - ["p-limit", "npm:3.1.0"],\ - ["pretty-format", "npm:29.6.2"],\ - ["pure-rand", "npm:6.0.2"],\ - ["slash", "npm:3.0.0"],\ - ["stack-utils", "npm:2.0.6"]\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["jest-cli", [\ @@ -23688,13 +22814,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ "linkType": "SOFT"\ }],\ - ["npm:29.6.2", {\ - "packageLocation": "./.yarn/cache/jest-cli-npm-29.6.2-99e0036409-0b7b09ae4b.zip/node_modules/jest-cli/",\ - "packageDependencies": [\ - ["jest-cli", "npm:29.6.2"]\ - ],\ - "linkType": "SOFT"\ - }],\ ["virtual:5bad70dae6965fedb709435a1f98f6068f949c0c05d437106a92a9193b3e730d8268e7515dad25f5905ae92236992ab8fbfc7410fd0235d954a384668ad19a1c#npm:27.5.1", {\ "packageLocation": "./.yarn/__virtual__/jest-cli-virtual-78157380f0/0/cache/jest-cli-npm-27.5.1-e801369688-6c0a69fb48.zip/node_modules/jest-cli/",\ "packageDependencies": [\ @@ -23719,31 +22838,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "node-notifier"\ ],\ "linkType": "HARD"\ - }],\ - ["virtual:bd9710c9c251a85558397c2064308f14bc59e7e1c8062d2db486886a0ad015ec714ed737a07de2fc270cb1b6c7a431850d2a0eca37586e501fd28cec1e1544c8#npm:29.6.2", {\ - "packageLocation": "./.yarn/__virtual__/jest-cli-virtual-b70b69b616/0/cache/jest-cli-npm-29.6.2-99e0036409-0b7b09ae4b.zip/node_modules/jest-cli/",\ - "packageDependencies": [\ - ["jest-cli", "virtual:bd9710c9c251a85558397c2064308f14bc59e7e1c8062d2db486886a0ad015ec714ed737a07de2fc270cb1b6c7a431850d2a0eca37586e501fd28cec1e1544c8#npm:29.6.2"],\ - ["@jest/core", "virtual:bd9710c9c251a85558397c2064308f14bc59e7e1c8062d2db486886a0ad015ec714ed737a07de2fc270cb1b6c7a431850d2a0eca37586e501fd28cec1e1544c8#npm:29.6.2"],\ - ["@jest/test-result", "npm:29.6.2"],\ - ["@jest/types", "npm:29.6.1"],\ - ["@types/node-notifier", null],\ - ["chalk", "npm:4.1.2"],\ - ["exit", "npm:0.1.2"],\ - ["graceful-fs", "npm:4.2.11"],\ - ["import-local", "npm:3.1.0"],\ - ["jest-config", "virtual:b70b69b61627a7a4d45b96895919a1d55f5e2d2e82046e4ccd748b1f16237725c6d57ede2d95d7b52d72791f8c733e50e686b03470afefa41897bc1159547425#npm:29.6.2"],\ - ["jest-util", "npm:29.6.2"],\ - ["jest-validate", "npm:29.6.2"],\ - ["node-notifier", null],\ - ["prompts", "npm:2.4.2"],\ - ["yargs", "npm:17.7.2"]\ - ],\ - "packagePeers": [\ - "@types/node-notifier",\ - "node-notifier"\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["jest-config", [\ @@ -23754,13 +22848,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ "linkType": "SOFT"\ }],\ - ["npm:29.6.2", {\ - "packageLocation": "./.yarn/cache/jest-config-npm-29.6.2-71660b6c0c-3bd104a3ac.zip/node_modules/jest-config/",\ - "packageDependencies": [\ - ["jest-config", "npm:29.6.2"]\ - ],\ - "linkType": "SOFT"\ - }],\ ["virtual:055df65b400bb3e4fa3657fa6f31b584e462c668e3360eba26d93c777dff436861f1ac977e7529e5b1c04a222ce4c589badeec22e2f87ac202495072a28ceb03#npm:27.5.1", {\ "packageLocation": "./.yarn/__virtual__/jest-config-virtual-22a06fd252/0/cache/jest-config-npm-27.5.1-e70d159078-1188fd46c0.zip/node_modules/jest-config/",\ "packageDependencies": [\ @@ -23797,80 +22884,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "ts-node"\ ],\ "linkType": "HARD"\ - }],\ - ["virtual:7a1349fdbdec705db12204988f3a5337251b3348c6db61d55f0e40f29bf066706ae6f476bc47dafb9c19aebb1c963bf39935656a9962ee9626f3b650c47ec693#npm:29.6.2", {\ - "packageLocation": "./.yarn/__virtual__/jest-config-virtual-2dfc883c42/0/cache/jest-config-npm-29.6.2-71660b6c0c-3bd104a3ac.zip/node_modules/jest-config/",\ - "packageDependencies": [\ - ["jest-config", "virtual:7a1349fdbdec705db12204988f3a5337251b3348c6db61d55f0e40f29bf066706ae6f476bc47dafb9c19aebb1c963bf39935656a9962ee9626f3b650c47ec693#npm:29.6.2"],\ - ["@babel/core", "npm:7.22.9"],\ - ["@jest/test-sequencer", "npm:29.6.2"],\ - ["@jest/types", "npm:29.6.1"],\ - ["@types/node", "npm:20.4.5"],\ - ["@types/ts-node", null],\ - ["babel-jest", "virtual:2dfc883c42c90b5148b491738bcf41094dda88bacf2bbf81307652482ffebb47c50024fc64eb7e2d134edeeb4a64aa7ad5fe2f573cb6ac82f74577f5cba3cfb0#npm:29.6.2"],\ - ["chalk", "npm:4.1.2"],\ - ["ci-info", "npm:3.8.0"],\ - ["deepmerge", "npm:4.3.1"],\ - ["glob", "npm:7.2.3"],\ - ["graceful-fs", "npm:4.2.11"],\ - ["jest-circus", "npm:29.6.2"],\ - ["jest-environment-node", "npm:29.6.2"],\ - ["jest-get-type", "npm:29.4.3"],\ - ["jest-regex-util", "npm:29.4.3"],\ - ["jest-resolve", "npm:29.6.2"],\ - ["jest-runner", "npm:29.6.2"],\ - ["jest-util", "npm:29.6.2"],\ - ["jest-validate", "npm:29.6.2"],\ - ["micromatch", "npm:4.0.5"],\ - ["parse-json", "npm:5.2.0"],\ - ["pretty-format", "npm:29.6.2"],\ - ["slash", "npm:3.0.0"],\ - ["strip-json-comments", "npm:3.1.1"],\ - ["ts-node", null]\ - ],\ - "packagePeers": [\ - "@types/node",\ - "@types/ts-node",\ - "ts-node"\ - ],\ - "linkType": "HARD"\ - }],\ - ["virtual:b70b69b61627a7a4d45b96895919a1d55f5e2d2e82046e4ccd748b1f16237725c6d57ede2d95d7b52d72791f8c733e50e686b03470afefa41897bc1159547425#npm:29.6.2", {\ - "packageLocation": "./.yarn/__virtual__/jest-config-virtual-b2c58d9fc4/0/cache/jest-config-npm-29.6.2-71660b6c0c-3bd104a3ac.zip/node_modules/jest-config/",\ - "packageDependencies": [\ - ["jest-config", "virtual:b70b69b61627a7a4d45b96895919a1d55f5e2d2e82046e4ccd748b1f16237725c6d57ede2d95d7b52d72791f8c733e50e686b03470afefa41897bc1159547425#npm:29.6.2"],\ - ["@babel/core", "npm:7.22.9"],\ - ["@jest/test-sequencer", "npm:29.6.2"],\ - ["@jest/types", "npm:29.6.1"],\ - ["@types/node", null],\ - ["@types/ts-node", null],\ - ["babel-jest", "virtual:2dfc883c42c90b5148b491738bcf41094dda88bacf2bbf81307652482ffebb47c50024fc64eb7e2d134edeeb4a64aa7ad5fe2f573cb6ac82f74577f5cba3cfb0#npm:29.6.2"],\ - ["chalk", "npm:4.1.2"],\ - ["ci-info", "npm:3.8.0"],\ - ["deepmerge", "npm:4.3.1"],\ - ["glob", "npm:7.2.3"],\ - ["graceful-fs", "npm:4.2.11"],\ - ["jest-circus", "npm:29.6.2"],\ - ["jest-environment-node", "npm:29.6.2"],\ - ["jest-get-type", "npm:29.4.3"],\ - ["jest-regex-util", "npm:29.4.3"],\ - ["jest-resolve", "npm:29.6.2"],\ - ["jest-runner", "npm:29.6.2"],\ - ["jest-util", "npm:29.6.2"],\ - ["jest-validate", "npm:29.6.2"],\ - ["micromatch", "npm:4.0.5"],\ - ["parse-json", "npm:5.2.0"],\ - ["pretty-format", "npm:29.6.2"],\ - ["slash", "npm:3.0.0"],\ - ["strip-json-comments", "npm:3.1.1"],\ - ["ts-node", null]\ - ],\ - "packagePeers": [\ - "@types/node",\ - "@types/ts-node",\ - "ts-node"\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["jest-diff", [\ @@ -23916,14 +22929,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["detect-newline", "npm:3.1.0"]\ ],\ "linkType": "HARD"\ - }],\ - ["npm:29.4.3", {\ - "packageLocation": "./.yarn/cache/jest-docblock-npm-29.4.3-0fa9ff492b-e0e9df1485.zip/node_modules/jest-docblock/",\ - "packageDependencies": [\ - ["jest-docblock", "npm:29.4.3"],\ - ["detect-newline", "npm:3.1.0"]\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["jest-each", [\ @@ -23938,18 +22943,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["pretty-format", "npm:27.5.1"]\ ],\ "linkType": "HARD"\ - }],\ - ["npm:29.6.2", {\ - "packageLocation": "./.yarn/cache/jest-each-npm-29.6.2-c58f436344-b64194f4ca.zip/node_modules/jest-each/",\ - "packageDependencies": [\ - ["jest-each", "npm:29.6.2"],\ - ["@jest/types", "npm:29.6.1"],\ - ["chalk", "npm:4.1.2"],\ - ["jest-get-type", "npm:29.4.3"],\ - ["jest-util", "npm:29.6.2"],\ - ["pretty-format", "npm:29.6.2"]\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["jest-environment-jsdom", [\ @@ -23981,19 +22974,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["jest-util", "npm:27.5.1"]\ ],\ "linkType": "HARD"\ - }],\ - ["npm:29.6.2", {\ - "packageLocation": "./.yarn/cache/jest-environment-node-npm-29.6.2-0ac11b8f1c-0b754ac2d3.zip/node_modules/jest-environment-node/",\ - "packageDependencies": [\ - ["jest-environment-node", "npm:29.6.2"],\ - ["@jest/environment", "npm:29.6.2"],\ - ["@jest/fake-timers", "npm:29.6.2"],\ - ["@jest/types", "npm:29.6.1"],\ - ["@types/node", "npm:20.4.5"],\ - ["jest-mock", "npm:29.6.2"],\ - ["jest-util", "npm:29.6.2"]\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["jest-fetch-mock", [\ @@ -24050,25 +23030,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["walker", "npm:1.0.8"]\ ],\ "linkType": "HARD"\ - }],\ - ["npm:29.6.2", {\ - "packageLocation": "./.yarn/cache/jest-haste-map-npm-29.6.2-70adb235f5-7262339720.zip/node_modules/jest-haste-map/",\ - "packageDependencies": [\ - ["jest-haste-map", "npm:29.6.2"],\ - ["@jest/types", "npm:29.6.1"],\ - ["@types/graceful-fs", "npm:4.1.6"],\ - ["@types/node", "npm:20.4.5"],\ - ["anymatch", "npm:3.1.3"],\ - ["fb-watchman", "npm:2.0.2"],\ - ["fsevents", "patch:fsevents@npm%3A2.3.2#~builtin::version=2.3.2&hash=df0bf1"],\ - ["graceful-fs", "npm:4.2.11"],\ - ["jest-regex-util", "npm:29.4.3"],\ - ["jest-util", "npm:29.6.2"],\ - ["jest-worker", "npm:29.6.2"],\ - ["micromatch", "npm:4.0.5"],\ - ["walker", "npm:1.0.8"]\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["jest-jasmine2", [\ @@ -24106,15 +23067,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["pretty-format", "npm:27.5.1"]\ ],\ "linkType": "HARD"\ - }],\ - ["npm:29.6.2", {\ - "packageLocation": "./.yarn/cache/jest-leak-detector-npm-29.6.2-d58b6b7df0-e00152acdb.zip/node_modules/jest-leak-detector/",\ - "packageDependencies": [\ - ["jest-leak-detector", "npm:29.6.2"],\ - ["jest-get-type", "npm:29.4.3"],\ - ["pretty-format", "npm:29.6.2"]\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["jest-matcher-utils", [\ @@ -24128,17 +23080,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["pretty-format", "npm:27.5.1"]\ ],\ "linkType": "HARD"\ - }],\ - ["npm:29.6.2", {\ - "packageLocation": "./.yarn/cache/jest-matcher-utils-npm-29.6.2-fd1c69812e-3e1b65dd30.zip/node_modules/jest-matcher-utils/",\ - "packageDependencies": [\ - ["jest-matcher-utils", "npm:29.6.2"],\ - ["chalk", "npm:4.1.2"],\ - ["jest-diff", "npm:29.6.2"],\ - ["jest-get-type", "npm:29.4.3"],\ - ["pretty-format", "npm:29.6.2"]\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["jest-message-util", [\ @@ -24157,22 +23098,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["stack-utils", "npm:2.0.6"]\ ],\ "linkType": "HARD"\ - }],\ - ["npm:29.6.2", {\ - "packageLocation": "./.yarn/cache/jest-message-util-npm-29.6.2-8bd7bc632e-e8e3c8d230.zip/node_modules/jest-message-util/",\ - "packageDependencies": [\ - ["jest-message-util", "npm:29.6.2"],\ - ["@babel/code-frame", "npm:7.22.5"],\ - ["@jest/types", "npm:29.6.1"],\ - ["@types/stack-utils", "npm:2.0.1"],\ - ["chalk", "npm:4.1.2"],\ - ["graceful-fs", "npm:4.2.11"],\ - ["micromatch", "npm:4.0.5"],\ - ["pretty-format", "npm:29.6.2"],\ - ["slash", "npm:3.0.0"],\ - ["stack-utils", "npm:2.0.6"]\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["jest-mock", [\ @@ -24184,16 +23109,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@types/node", "npm:20.4.5"]\ ],\ "linkType": "HARD"\ - }],\ - ["npm:29.6.2", {\ - "packageLocation": "./.yarn/cache/jest-mock-npm-29.6.2-c31cf48c24-0bacb5d584.zip/node_modules/jest-mock/",\ - "packageDependencies": [\ - ["jest-mock", "npm:29.6.2"],\ - ["@jest/types", "npm:29.6.1"],\ - ["@types/node", "npm:20.4.5"],\ - ["jest-util", "npm:29.6.2"]\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["jest-pnp-resolver", [\ @@ -24204,19 +23119,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ "linkType": "SOFT"\ }],\ - ["virtual:21cedcf0b9201ca97ec9127dc52a205d6d9c4066b9ac558e28a1151501259be794a16df21757c6ff42ad4df544de1ff31949a93936601fd189d13b8497a39485#npm:1.2.3", {\ - "packageLocation": "./.yarn/__virtual__/jest-pnp-resolver-virtual-11e58bb3ba/0/cache/jest-pnp-resolver-npm-1.2.3-70e06bf27c-db1a8ab2cb.zip/node_modules/jest-pnp-resolver/",\ - "packageDependencies": [\ - ["jest-pnp-resolver", "virtual:21cedcf0b9201ca97ec9127dc52a205d6d9c4066b9ac558e28a1151501259be794a16df21757c6ff42ad4df544de1ff31949a93936601fd189d13b8497a39485#npm:1.2.3"],\ - ["@types/jest-resolve", null],\ - ["jest-resolve", "npm:29.6.2"]\ - ],\ - "packagePeers": [\ - "@types/jest-resolve",\ - "jest-resolve"\ - ],\ - "linkType": "HARD"\ - }],\ ["virtual:a0a4a415f59ab1a920949fe4f9ac7174aa7df535addf97fcdc124f36cb0389a80c8f31f99ad52fa0c7aaa53f66726b763a7b2a27b93255cb52f9164322c0788e#npm:1.2.3", {\ "packageLocation": "./.yarn/__virtual__/jest-pnp-resolver-virtual-023cf0dbf9/0/cache/jest-pnp-resolver-npm-1.2.3-70e06bf27c-db1a8ab2cb.zip/node_modules/jest-pnp-resolver/",\ "packageDependencies": [\ @@ -24238,13 +23140,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["jest-regex-util", "npm:27.5.1"]\ ],\ "linkType": "HARD"\ - }],\ - ["npm:29.4.3", {\ - "packageLocation": "./.yarn/cache/jest-regex-util-npm-29.4.3-defc22c588-96fc7fc28c.zip/node_modules/jest-regex-util/",\ - "packageDependencies": [\ - ["jest-regex-util", "npm:29.4.3"]\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["jest-resolve", [\ @@ -24264,22 +23159,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["slash", "npm:3.0.0"]\ ],\ "linkType": "HARD"\ - }],\ - ["npm:29.6.2", {\ - "packageLocation": "./.yarn/cache/jest-resolve-npm-29.6.2-21cedcf0b9-01721957e6.zip/node_modules/jest-resolve/",\ - "packageDependencies": [\ - ["jest-resolve", "npm:29.6.2"],\ - ["chalk", "npm:4.1.2"],\ - ["graceful-fs", "npm:4.2.11"],\ - ["jest-haste-map", "npm:29.6.2"],\ - ["jest-pnp-resolver", "virtual:21cedcf0b9201ca97ec9127dc52a205d6d9c4066b9ac558e28a1151501259be794a16df21757c6ff42ad4df544de1ff31949a93936601fd189d13b8497a39485#npm:1.2.3"],\ - ["jest-util", "npm:29.6.2"],\ - ["jest-validate", "npm:29.6.2"],\ - ["resolve", "patch:resolve@npm%3A1.22.2#~builtin::version=1.22.2&hash=c3c19d"],\ - ["resolve.exports", "npm:2.0.2"],\ - ["slash", "npm:3.0.0"]\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["jest-resolve-dependencies", [\ @@ -24292,15 +23171,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["jest-snapshot", "npm:27.5.1"]\ ],\ "linkType": "HARD"\ - }],\ - ["npm:29.6.2", {\ - "packageLocation": "./.yarn/cache/jest-resolve-dependencies-npm-29.6.2-63dbac2655-d40ee11af2.zip/node_modules/jest-resolve-dependencies/",\ - "packageDependencies": [\ - ["jest-resolve-dependencies", "npm:29.6.2"],\ - ["jest-regex-util", "npm:29.4.3"],\ - ["jest-snapshot", "npm:29.6.2"]\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["jest-runner", [\ @@ -24331,34 +23201,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["throat", "npm:6.0.2"]\ ],\ "linkType": "HARD"\ - }],\ - ["npm:29.6.2", {\ - "packageLocation": "./.yarn/cache/jest-runner-npm-29.6.2-74dddde534-46bd506a08.zip/node_modules/jest-runner/",\ - "packageDependencies": [\ - ["jest-runner", "npm:29.6.2"],\ - ["@jest/console", "npm:29.6.2"],\ - ["@jest/environment", "npm:29.6.2"],\ - ["@jest/test-result", "npm:29.6.2"],\ - ["@jest/transform", "npm:29.6.2"],\ - ["@jest/types", "npm:29.6.1"],\ - ["@types/node", "npm:20.4.5"],\ - ["chalk", "npm:4.1.2"],\ - ["emittery", "npm:0.13.1"],\ - ["graceful-fs", "npm:4.2.11"],\ - ["jest-docblock", "npm:29.4.3"],\ - ["jest-environment-node", "npm:29.6.2"],\ - ["jest-haste-map", "npm:29.6.2"],\ - ["jest-leak-detector", "npm:29.6.2"],\ - ["jest-message-util", "npm:29.6.2"],\ - ["jest-resolve", "npm:29.6.2"],\ - ["jest-runtime", "npm:29.6.2"],\ - ["jest-util", "npm:29.6.2"],\ - ["jest-watcher", "npm:29.6.2"],\ - ["jest-worker", "npm:29.6.2"],\ - ["p-limit", "npm:3.1.0"],\ - ["source-map-support", "npm:0.5.13"]\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["jest-runtime", [\ @@ -24390,35 +23232,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["strip-bom", "npm:4.0.0"]\ ],\ "linkType": "HARD"\ - }],\ - ["npm:29.6.2", {\ - "packageLocation": "./.yarn/cache/jest-runtime-npm-29.6.2-3a51c05bc4-8e7e4486b2.zip/node_modules/jest-runtime/",\ - "packageDependencies": [\ - ["jest-runtime", "npm:29.6.2"],\ - ["@jest/environment", "npm:29.6.2"],\ - ["@jest/fake-timers", "npm:29.6.2"],\ - ["@jest/globals", "npm:29.6.2"],\ - ["@jest/source-map", "npm:29.6.0"],\ - ["@jest/test-result", "npm:29.6.2"],\ - ["@jest/transform", "npm:29.6.2"],\ - ["@jest/types", "npm:29.6.1"],\ - ["@types/node", "npm:20.4.5"],\ - ["chalk", "npm:4.1.2"],\ - ["cjs-module-lexer", "npm:1.2.3"],\ - ["collect-v8-coverage", "npm:1.0.2"],\ - ["glob", "npm:7.2.3"],\ - ["graceful-fs", "npm:4.2.11"],\ - ["jest-haste-map", "npm:29.6.2"],\ - ["jest-message-util", "npm:29.6.2"],\ - ["jest-mock", "npm:29.6.2"],\ - ["jest-regex-util", "npm:29.4.3"],\ - ["jest-resolve", "npm:29.6.2"],\ - ["jest-snapshot", "npm:29.6.2"],\ - ["jest-util", "npm:29.6.2"],\ - ["slash", "npm:3.0.0"],\ - ["strip-bom", "npm:4.0.0"]\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["jest-serializer", [\ @@ -24461,33 +23274,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["semver", "npm:7.5.4"]\ ],\ "linkType": "HARD"\ - }],\ - ["npm:29.6.2", {\ - "packageLocation": "./.yarn/cache/jest-snapshot-npm-29.6.2-6ed320289f-c1c70a9dbc.zip/node_modules/jest-snapshot/",\ - "packageDependencies": [\ - ["jest-snapshot", "npm:29.6.2"],\ - ["@babel/core", "npm:7.22.9"],\ - ["@babel/generator", "npm:7.22.9"],\ - ["@babel/plugin-syntax-jsx", "virtual:6ed320289f7d3adef6f362dd0bd289fb74d7369c1f461b90a4811d4aab2ffe48377fa88718b4b30a56c3e0a53c2ed18c554e661b6b415436171204fdb64bfefb#npm:7.22.5"],\ - ["@babel/plugin-syntax-typescript", "virtual:b26687beb2614ce39983d45755ee1addcfe600e4f0030ebc42cd973d8bc10089112f81ea1266f3ec074ad029140ad57839a71eecdae7a68945739b618ffcfb74#npm:7.22.5"],\ - ["@babel/types", "npm:7.22.5"],\ - ["@jest/expect-utils", "npm:29.6.2"],\ - ["@jest/transform", "npm:29.6.2"],\ - ["@jest/types", "npm:29.6.1"],\ - ["babel-preset-current-node-syntax", "virtual:b26687beb2614ce39983d45755ee1addcfe600e4f0030ebc42cd973d8bc10089112f81ea1266f3ec074ad029140ad57839a71eecdae7a68945739b618ffcfb74#npm:1.0.1"],\ - ["chalk", "npm:4.1.2"],\ - ["expect", "npm:29.6.2"],\ - ["graceful-fs", "npm:4.2.11"],\ - ["jest-diff", "npm:29.6.2"],\ - ["jest-get-type", "npm:29.4.3"],\ - ["jest-matcher-utils", "npm:29.6.2"],\ - ["jest-message-util", "npm:29.6.2"],\ - ["jest-util", "npm:29.6.2"],\ - ["natural-compare", "npm:1.4.0"],\ - ["pretty-format", "npm:29.6.2"],\ - ["semver", "npm:7.5.4"]\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["jest-util", [\ @@ -24503,19 +23289,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["picomatch", "npm:2.3.1"]\ ],\ "linkType": "HARD"\ - }],\ - ["npm:29.6.2", {\ - "packageLocation": "./.yarn/cache/jest-util-npm-29.6.2-41bd0e8e02-8aedc0c800.zip/node_modules/jest-util/",\ - "packageDependencies": [\ - ["jest-util", "npm:29.6.2"],\ - ["@jest/types", "npm:29.6.1"],\ - ["@types/node", "npm:20.4.5"],\ - ["chalk", "npm:4.1.2"],\ - ["ci-info", "npm:3.8.0"],\ - ["graceful-fs", "npm:4.2.11"],\ - ["picomatch", "npm:2.3.1"]\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["jest-validate", [\ @@ -24531,19 +23304,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["pretty-format", "npm:27.5.1"]\ ],\ "linkType": "HARD"\ - }],\ - ["npm:29.6.2", {\ - "packageLocation": "./.yarn/cache/jest-validate-npm-29.6.2-008427c47c-32648d0021.zip/node_modules/jest-validate/",\ - "packageDependencies": [\ - ["jest-validate", "npm:29.6.2"],\ - ["@jest/types", "npm:29.6.1"],\ - ["camelcase", "npm:6.3.0"],\ - ["chalk", "npm:4.1.2"],\ - ["jest-get-type", "npm:29.4.3"],\ - ["leven", "npm:3.1.0"],\ - ["pretty-format", "npm:29.6.2"]\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["jest-watcher", [\ @@ -24560,21 +23320,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["string-length", "npm:4.0.2"]\ ],\ "linkType": "HARD"\ - }],\ - ["npm:29.6.2", {\ - "packageLocation": "./.yarn/cache/jest-watcher-npm-29.6.2-ec5e606774-14624190fc.zip/node_modules/jest-watcher/",\ - "packageDependencies": [\ - ["jest-watcher", "npm:29.6.2"],\ - ["@jest/test-result", "npm:29.6.2"],\ - ["@jest/types", "npm:29.6.1"],\ - ["@types/node", "npm:20.4.5"],\ - ["ansi-escapes", "npm:4.3.2"],\ - ["chalk", "npm:4.1.2"],\ - ["emittery", "npm:0.13.1"],\ - ["jest-util", "npm:29.6.2"],\ - ["string-length", "npm:4.0.2"]\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["jest-websocket-mock", [\ @@ -24598,17 +23343,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["supports-color", "npm:8.1.1"]\ ],\ "linkType": "HARD"\ - }],\ - ["npm:29.6.2", {\ - "packageLocation": "./.yarn/cache/jest-worker-npm-29.6.2-ccd8e6f0e1-1103556453.zip/node_modules/jest-worker/",\ - "packageDependencies": [\ - ["jest-worker", "npm:29.6.2"],\ - ["@types/node", "npm:20.4.5"],\ - ["jest-util", "npm:29.6.2"],\ - ["merge-stream", "npm:2.0.0"],\ - ["supports-color", "npm:8.1.1"]\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["jju", [\ @@ -25013,15 +23747,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD"\ }]\ ]],\ - ["jsonc-parser", [\ - ["npm:3.2.0", {\ - "packageLocation": "./.yarn/cache/jsonc-parser-npm-3.2.0-1896ece3b7-946dd9a5f3.zip/node_modules/jsonc-parser/",\ - "packageDependencies": [\ - ["jsonc-parser", "npm:3.2.0"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ ["jsonfile", [\ ["npm:4.0.0", {\ "packageLocation": "./.yarn/cache/jsonfile-npm-4.0.0-10ce3aea15-6447d6224f.zip/node_modules/jsonfile/",\ @@ -26039,15 +24764,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD"\ }]\ ]],\ - ["lunr", [\ - ["npm:2.3.9", {\ - "packageLocation": "./.yarn/cache/lunr-npm-2.3.9-fa3aa9c2d6-176719e24f.zip/node_modules/lunr/",\ - "packageDependencies": [\ - ["lunr", "npm:2.3.9"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ ["luxon", [\ ["npm:3.3.0", {\ "packageLocation": "./.yarn/cache/luxon-npm-3.3.0-bdbae9bfd5-50cf17a0dc.zip/node_modules/luxon/",\ @@ -26199,15 +24915,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD"\ }]\ ]],\ - ["marked", [\ - ["npm:4.3.0", {\ - "packageLocation": "./.yarn/cache/marked-npm-4.3.0-e7ef9e874f-0db6817893.zip/node_modules/marked/",\ - "packageDependencies": [\ - ["marked", "npm:4.3.0"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ ["matchdep", [\ ["npm:2.0.0", {\ "packageLocation": "./.yarn/cache/matchdep-npm-2.0.0-19deb4c755-890457c0b6.zip/node_modules/matchdep/",\ @@ -26271,53 +24978,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD"\ }]\ ]],\ - ["megalodon", [\ - ["workspace:packages/megalodon", {\ - "packageLocation": "./packages/megalodon/",\ - "packageDependencies": [\ - ["megalodon", "workspace:packages/megalodon"],\ - ["@types/async-lock", "npm:1.4.0"],\ - ["@types/core-js", "npm:2.5.5"],\ - ["@types/form-data", "npm:2.5.0"],\ - ["@types/jest", "npm:29.5.3"],\ - ["@types/node", "npm:18.11.18"],\ - ["@types/oauth", "npm:0.9.1"],\ - ["@types/object-assign-deep", "npm:0.4.0"],\ - ["@types/parse-link-header", "npm:2.0.1"],\ - ["@types/uuid", "npm:9.0.2"],\ - ["@types/ws", "npm:8.5.5"],\ - ["@typescript-eslint/eslint-plugin", "virtual:53ee7992132b8e069dc99c9f0f3d05821836bcb37183dd466da76224f67e18ee1c7c92a27051df007cb908288116489612199ddda9fa1e776557a21308d9d714#npm:5.62.0"],\ - ["@typescript-eslint/parser", "virtual:53ee7992132b8e069dc99c9f0f3d05821836bcb37183dd466da76224f67e18ee1c7c92a27051df007cb908288116489612199ddda9fa1e776557a21308d9d714#npm:5.62.0"],\ - ["async-lock", "npm:1.4.0"],\ - ["axios", "npm:1.2.2"],\ - ["dayjs", "npm:1.11.9"],\ - ["eslint", "npm:8.45.0"],\ - ["eslint-config-prettier", "virtual:53ee7992132b8e069dc99c9f0f3d05821836bcb37183dd466da76224f67e18ee1c7c92a27051df007cb908288116489612199ddda9fa1e776557a21308d9d714#npm:8.9.0"],\ - ["eslint-config-standard", "virtual:53ee7992132b8e069dc99c9f0f3d05821836bcb37183dd466da76224f67e18ee1c7c92a27051df007cb908288116489612199ddda9fa1e776557a21308d9d714#npm:16.0.3"],\ - ["eslint-plugin-import", "virtual:53ee7992132b8e069dc99c9f0f3d05821836bcb37183dd466da76224f67e18ee1c7c92a27051df007cb908288116489612199ddda9fa1e776557a21308d9d714#npm:2.27.5"],\ - ["eslint-plugin-node", "virtual:53ee7992132b8e069dc99c9f0f3d05821836bcb37183dd466da76224f67e18ee1c7c92a27051df007cb908288116489612199ddda9fa1e776557a21308d9d714#npm:11.1.0"],\ - ["eslint-plugin-prettier", "virtual:53ee7992132b8e069dc99c9f0f3d05821836bcb37183dd466da76224f67e18ee1c7c92a27051df007cb908288116489612199ddda9fa1e776557a21308d9d714#npm:4.2.1"],\ - ["eslint-plugin-promise", "virtual:53ee7992132b8e069dc99c9f0f3d05821836bcb37183dd466da76224f67e18ee1c7c92a27051df007cb908288116489612199ddda9fa1e776557a21308d9d714#npm:6.1.1"],\ - ["eslint-plugin-standard", "virtual:53ee7992132b8e069dc99c9f0f3d05821836bcb37183dd466da76224f67e18ee1c7c92a27051df007cb908288116489612199ddda9fa1e776557a21308d9d714#npm:5.0.0"],\ - ["form-data", "npm:4.0.0"],\ - ["https-proxy-agent", "npm:5.0.1"],\ - ["jest", "virtual:53ee7992132b8e069dc99c9f0f3d05821836bcb37183dd466da76224f67e18ee1c7c92a27051df007cb908288116489612199ddda9fa1e776557a21308d9d714#npm:29.6.2"],\ - ["jest-worker", "npm:29.6.2"],\ - ["lodash", "npm:4.17.21"],\ - ["oauth", "npm:0.10.0"],\ - ["object-assign-deep", "npm:0.4.0"],\ - ["parse-link-header", "npm:2.0.0"],\ - ["prettier", "npm:2.8.8"],\ - ["socks-proxy-agent", "npm:7.0.0"],\ - ["ts-jest", "virtual:53ee7992132b8e069dc99c9f0f3d05821836bcb37183dd466da76224f67e18ee1c7c92a27051df007cb908288116489612199ddda9fa1e776557a21308d9d714#npm:29.1.1"],\ - ["typedoc", "virtual:53ee7992132b8e069dc99c9f0f3d05821836bcb37183dd466da76224f67e18ee1c7c92a27051df007cb908288116489612199ddda9fa1e776557a21308d9d714#npm:0.23.28"],\ - ["typescript", "patch:typescript@npm%3A4.9.4#~builtin::version=4.9.4&hash=289587"],\ - ["uuid", "npm:9.0.0"],\ - ["ws", "virtual:53ee7992132b8e069dc99c9f0f3d05821836bcb37183dd466da76224f67e18ee1c7c92a27051df007cb908288116489612199ddda9fa1e776557a21308d9d714#npm:8.12.0"]\ - ],\ - "linkType": "SOFT"\ - }]\ - ]],\ ["meilisearch", [\ ["npm:0.33.0", {\ "packageLocation": "./.yarn/cache/meilisearch-npm-0.33.0-a8742f194e-e3c01a1530.zip/node_modules/meilisearch/",\ @@ -26529,14 +25189,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ "linkType": "HARD"\ }],\ - ["npm:7.4.6", {\ - "packageLocation": "./.yarn/cache/minimatch-npm-7.4.6-f3feee458c-1a6c8d2261.zip/node_modules/minimatch/",\ - "packageDependencies": [\ - ["minimatch", "npm:7.4.6"],\ - ["brace-expansion", "npm:2.0.1"]\ - ],\ - "linkType": "HARD"\ - }],\ ["npm:9.0.1", {\ "packageLocation": "./.yarn/cache/minimatch-npm-9.0.1-277fdc6fbd-97f5f5284b.zip/node_modules/minimatch/",\ "packageDependencies": [\ @@ -27478,15 +26130,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD"\ }]\ ]],\ - ["object-assign-deep", [\ - ["npm:0.4.0", {\ - "packageLocation": "./.yarn/cache/object-assign-deep-npm-0.4.0-8527f6721d-3c31920ca8.zip/node_modules/object-assign-deep/",\ - "packageDependencies": [\ - ["object-assign-deep", "npm:0.4.0"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ ["object-copy", [\ ["npm:0.1.0", {\ "packageLocation": "./.yarn/cache/object-copy-npm-0.1.0-e229d02f2b-a9e35f07e3.zip/node_modules/object-copy/",\ @@ -27985,16 +26628,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD"\ }]\ ]],\ - ["parse-link-header", [\ - ["npm:2.0.0", {\ - "packageLocation": "./.yarn/cache/parse-link-header-npm-2.0.0-c29aea08c6-0e96c6af99.zip/node_modules/parse-link-header/",\ - "packageDependencies": [\ - ["parse-link-header", "npm:2.0.0"],\ - ["xtend", "npm:4.0.2"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ ["parse-node-version", [\ ["npm:1.0.1", {\ "packageLocation": "./.yarn/cache/parse-node-version-npm-1.0.1-7dd3b14751-c192393b6a.zip/node_modules/parse-node-version/",\ @@ -29483,15 +28116,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD"\ }]\ ]],\ - ["pure-rand", [\ - ["npm:6.0.2", {\ - "packageLocation": "./.yarn/cache/pure-rand-npm-6.0.2-5d375bc0a6-79de33876a.zip/node_modules/pure-rand/",\ - "packageDependencies": [\ - ["pure-rand", "npm:6.0.2"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ ["pureimage", [\ ["npm:0.3.15", {\ "packageLocation": "./.yarn/cache/pureimage-npm-0.3.15-06cff99363-a650918d18.zip/node_modules/pureimage/",\ @@ -30362,13 +28986,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["resolve.exports", "npm:1.1.1"]\ ],\ "linkType": "HARD"\ - }],\ - ["npm:2.0.2", {\ - "packageLocation": "./.yarn/cache/resolve.exports-npm-2.0.2-f59b42bbe5-1c7778ca1b.zip/node_modules/resolve.exports/",\ - "packageDependencies": [\ - ["resolve.exports", "npm:2.0.2"]\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["responselike", [\ @@ -30926,19 +29543,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD"\ }]\ ]],\ - ["shiki", [\ - ["npm:0.14.3", {\ - "packageLocation": "./.yarn/cache/shiki-npm-0.14.3-bbc09f85cf-a4dd98e3b2.zip/node_modules/shiki/",\ - "packageDependencies": [\ - ["shiki", "npm:0.14.3"],\ - ["ansi-sequence-parser", "npm:1.1.1"],\ - ["jsonc-parser", "npm:3.2.0"],\ - ["vscode-oniguruma", "npm:1.7.0"],\ - ["vscode-textmate", "npm:8.0.0"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ ["side-channel", [\ ["npm:1.0.4", {\ "packageLocation": "./.yarn/cache/side-channel-npm-1.0.4-e1f38b9e06-351e41b947.zip/node_modules/side-channel/",\ @@ -31203,15 +29807,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["source-map-support", [\ - ["npm:0.5.13", {\ - "packageLocation": "./.yarn/cache/source-map-support-npm-0.5.13-377dfd7321-933550047b.zip/node_modules/source-map-support/",\ - "packageDependencies": [\ - ["source-map-support", "npm:0.5.13"],\ - ["buffer-from", "npm:1.1.2"],\ - ["source-map", "npm:0.6.1"]\ - ],\ - "linkType": "HARD"\ - }],\ ["npm:0.5.21", {\ "packageLocation": "./.yarn/cache/source-map-support-npm-0.5.21-09ca99e250-43e98d700d.zip/node_modules/source-map-support/",\ "packageDependencies": [\ @@ -32648,13 +31243,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ "linkType": "SOFT"\ }],\ - ["npm:29.1.1", {\ - "packageLocation": "./.yarn/cache/ts-jest-npm-29.1.1-04e888e48e-a8c9e284ed.zip/node_modules/ts-jest/",\ - "packageDependencies": [\ - ["ts-jest", "npm:29.1.1"]\ - ],\ - "linkType": "SOFT"\ - }],\ ["virtual:21a30884d94fbf67bcf4a1714713cc91d32809a34424c4ce678841dfdc63b58647c5e18570d56e36b3c762ee72f81c251599477127a715978fa6e1d8b9e5d952#npm:27.1.5", {\ "packageLocation": "./.yarn/__virtual__/ts-jest-virtual-15e65b8c94/0/cache/ts-jest-npm-27.1.5-6f0b4fcb08-3ef51c538b.zip/node_modules/ts-jest/",\ "packageDependencies": [\ @@ -32691,47 +31279,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "typescript"\ ],\ "linkType": "HARD"\ - }],\ - ["virtual:53ee7992132b8e069dc99c9f0f3d05821836bcb37183dd466da76224f67e18ee1c7c92a27051df007cb908288116489612199ddda9fa1e776557a21308d9d714#npm:29.1.1", {\ - "packageLocation": "./.yarn/__virtual__/ts-jest-virtual-82c68a540c/0/cache/ts-jest-npm-29.1.1-04e888e48e-a8c9e284ed.zip/node_modules/ts-jest/",\ - "packageDependencies": [\ - ["ts-jest", "virtual:53ee7992132b8e069dc99c9f0f3d05821836bcb37183dd466da76224f67e18ee1c7c92a27051df007cb908288116489612199ddda9fa1e776557a21308d9d714#npm:29.1.1"],\ - ["@babel/core", null],\ - ["@jest/types", null],\ - ["@types/babel-jest", null],\ - ["@types/babel__core", null],\ - ["@types/esbuild", null],\ - ["@types/jest", "npm:29.5.3"],\ - ["@types/jest__types", null],\ - ["@types/typescript", null],\ - ["babel-jest", null],\ - ["bs-logger", "npm:0.2.6"],\ - ["esbuild", null],\ - ["fast-json-stable-stringify", "npm:2.1.0"],\ - ["jest", "virtual:53ee7992132b8e069dc99c9f0f3d05821836bcb37183dd466da76224f67e18ee1c7c92a27051df007cb908288116489612199ddda9fa1e776557a21308d9d714#npm:29.6.2"],\ - ["jest-util", "npm:29.6.2"],\ - ["json5", "npm:2.2.3"],\ - ["lodash.memoize", "npm:4.1.2"],\ - ["make-error", "npm:1.3.6"],\ - ["semver", "npm:7.5.4"],\ - ["typescript", "patch:typescript@npm%3A4.9.4#~builtin::version=4.9.4&hash=289587"],\ - ["yargs-parser", "npm:21.1.1"]\ - ],\ - "packagePeers": [\ - "@babel/core",\ - "@jest/types",\ - "@types/babel-jest",\ - "@types/babel__core",\ - "@types/esbuild",\ - "@types/jest",\ - "@types/jest__types",\ - "@types/typescript",\ - "babel-jest",\ - "esbuild",\ - "jest",\ - "typescript"\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["ts-loader", [\ @@ -32938,24 +31485,10 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ "linkType": "SOFT"\ }],\ - ["virtual:262671aca90b8273ff3878fb2edf92b6759420b3f869df13deb87726d6348ffd0e641fafa62df5bcff1ee9d8b4d44ef75eb8d7e5a9e3a9907b7b9abecd4193e5#npm:3.21.0", {\ - "packageLocation": "./.yarn/__virtual__/tsutils-virtual-e4609e8cc4/0/cache/tsutils-npm-3.21.0-347e6636c5-1843f4c1b2.zip/node_modules/tsutils/",\ + ["virtual:3626087449fcafda434757e41cfa5e841537938d142bccc823c53baa1488d986ae6f21de680f1a1c37e006f588b5498a62cab4024ffb21d6fd093b56c8dade28#npm:3.21.0", {\ + "packageLocation": "./.yarn/__virtual__/tsutils-virtual-3393987ef3/0/cache/tsutils-npm-3.21.0-347e6636c5-1843f4c1b2.zip/node_modules/tsutils/",\ "packageDependencies": [\ - ["tsutils", "virtual:262671aca90b8273ff3878fb2edf92b6759420b3f869df13deb87726d6348ffd0e641fafa62df5bcff1ee9d8b4d44ef75eb8d7e5a9e3a9907b7b9abecd4193e5#npm:3.21.0"],\ - ["@types/typescript", null],\ - ["tslib", "npm:1.14.1"],\ - ["typescript", "patch:typescript@npm%3A4.9.4#~builtin::version=4.9.4&hash=289587"]\ - ],\ - "packagePeers": [\ - "@types/typescript",\ - "typescript"\ - ],\ - "linkType": "HARD"\ - }],\ - ["virtual:c5ce38885086e40fbb13bdcf602db323f83f7e9bb7edd87776604a24ca5b49715433e15314b6a2ca7e40f026ea7497814fa50d07c6d5eafd0bc52ac76d93b85f#npm:3.21.0", {\ - "packageLocation": "./.yarn/__virtual__/tsutils-virtual-a0878c9432/0/cache/tsutils-npm-3.21.0-347e6636c5-1843f4c1b2.zip/node_modules/tsutils/",\ - "packageDependencies": [\ - ["tsutils", "virtual:c5ce38885086e40fbb13bdcf602db323f83f7e9bb7edd87776604a24ca5b49715433e15314b6a2ca7e40f026ea7497814fa50d07c6d5eafd0bc52ac76d93b85f#npm:3.21.0"],\ + ["tsutils", "virtual:3626087449fcafda434757e41cfa5e841537938d142bccc823c53baa1488d986ae6f21de680f1a1c37e006f588b5498a62cab4024ffb21d6fd093b56c8dade28#npm:3.21.0"],\ ["@types/typescript", null],\ ["tslib", "npm:1.14.1"],\ ["typescript", null]\ @@ -33162,32 +31695,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD"\ }]\ ]],\ - ["typedoc", [\ - ["npm:0.23.28", {\ - "packageLocation": "./.yarn/cache/typedoc-npm-0.23.28-9a9eb64ab5-40eb4e207a.zip/node_modules/typedoc/",\ - "packageDependencies": [\ - ["typedoc", "npm:0.23.28"]\ - ],\ - "linkType": "SOFT"\ - }],\ - ["virtual:53ee7992132b8e069dc99c9f0f3d05821836bcb37183dd466da76224f67e18ee1c7c92a27051df007cb908288116489612199ddda9fa1e776557a21308d9d714#npm:0.23.28", {\ - "packageLocation": "./.yarn/__virtual__/typedoc-virtual-ef0f875e3c/0/cache/typedoc-npm-0.23.28-9a9eb64ab5-40eb4e207a.zip/node_modules/typedoc/",\ - "packageDependencies": [\ - ["typedoc", "virtual:53ee7992132b8e069dc99c9f0f3d05821836bcb37183dd466da76224f67e18ee1c7c92a27051df007cb908288116489612199ddda9fa1e776557a21308d9d714#npm:0.23.28"],\ - ["@types/typescript", null],\ - ["lunr", "npm:2.3.9"],\ - ["marked", "npm:4.3.0"],\ - ["minimatch", "npm:7.4.6"],\ - ["shiki", "npm:0.14.3"],\ - ["typescript", "patch:typescript@npm%3A4.9.4#~builtin::version=4.9.4&hash=289587"]\ - ],\ - "packagePeers": [\ - "@types/typescript",\ - "typescript"\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ ["typeorm", [\ ["npm:0.3.17", {\ "packageLocation": "./.yarn/cache/typeorm-npm-0.3.17-f8c2578e7f-71fcb2b2e8.zip/node_modules/typeorm/",\ @@ -33290,13 +31797,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["typescript", [\ - ["patch:typescript@npm%3A4.9.4#~builtin::version=4.9.4&hash=289587", {\ - "packageLocation": "./.yarn/cache/typescript-patch-0887b19144-2160f7ad97.zip/node_modules/typescript/",\ - "packageDependencies": [\ - ["typescript", "patch:typescript@npm%3A4.9.4#~builtin::version=4.9.4&hash=289587"]\ - ],\ - "linkType": "HARD"\ - }],\ ["patch:typescript@npm%3A5.0.4#~builtin::version=5.0.4&hash=b5f058", {\ "packageLocation": "./.yarn/cache/typescript-patch-ecf29fafbd-d26b6ba97b.zip/node_modules/typescript/",\ "packageDependencies": [\ @@ -33723,16 +32223,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["source-map", "npm:0.7.4"]\ ],\ "linkType": "HARD"\ - }],\ - ["npm:9.1.0", {\ - "packageLocation": "./.yarn/cache/v8-to-istanbul-npm-9.1.0-04cd324682-2069d59ee4.zip/node_modules/v8-to-istanbul/",\ - "packageDependencies": [\ - ["v8-to-istanbul", "npm:9.1.0"],\ - ["@jridgewell/trace-mapping", "npm:0.3.18"],\ - ["@types/istanbul-lib-coverage", "npm:2.0.4"],\ - ["convert-source-map", "npm:1.9.0"]\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["v8flags", [\ @@ -33962,24 +32452,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD"\ }]\ ]],\ - ["vscode-oniguruma", [\ - ["npm:1.7.0", {\ - "packageLocation": "./.yarn/cache/vscode-oniguruma-npm-1.7.0-07cc55fbcc-53519d91d9.zip/node_modules/vscode-oniguruma/",\ - "packageDependencies": [\ - ["vscode-oniguruma", "npm:1.7.0"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ - ["vscode-textmate", [\ - ["npm:8.0.0", {\ - "packageLocation": "./.yarn/cache/vscode-textmate-npm-8.0.0-2deb0cc7cf-127780dfea.zip/node_modules/vscode-textmate/",\ - "packageDependencies": [\ - ["vscode-textmate", "npm:8.0.0"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ ["vue", [\ ["npm:2.7.14", {\ "packageLocation": "./.yarn/cache/vue-npm-2.7.14-46e9ad467b-8b06da67cc.zip/node_modules/vue/",\ @@ -34665,15 +33137,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["typedarray-to-buffer", "npm:3.1.5"]\ ],\ "linkType": "HARD"\ - }],\ - ["npm:4.0.2", {\ - "packageLocation": "./.yarn/cache/write-file-atomic-npm-4.0.2-661baae4aa-5da60bd4ee.zip/node_modules/write-file-atomic/",\ - "packageDependencies": [\ - ["write-file-atomic", "npm:4.0.2"],\ - ["imurmurhash", "npm:0.1.4"],\ - ["signal-exit", "npm:3.0.7"]\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["ws", [\ @@ -34684,13 +33147,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ "linkType": "SOFT"\ }],\ - ["npm:8.12.0", {\ - "packageLocation": "./.yarn/cache/ws-npm-8.12.0-4e21348613-818ff3f874.zip/node_modules/ws/",\ - "packageDependencies": [\ - ["ws", "npm:8.12.0"]\ - ],\ - "linkType": "SOFT"\ - }],\ ["npm:8.13.0", {\ "packageLocation": "./.yarn/cache/ws-npm-8.13.0-26ffa3016a-53e991bbf9.zip/node_modules/ws/",\ "packageDependencies": [\ @@ -34698,23 +33154,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ "linkType": "SOFT"\ }],\ - ["virtual:53ee7992132b8e069dc99c9f0f3d05821836bcb37183dd466da76224f67e18ee1c7c92a27051df007cb908288116489612199ddda9fa1e776557a21308d9d714#npm:8.12.0", {\ - "packageLocation": "./.yarn/__virtual__/ws-virtual-bfc826783f/0/cache/ws-npm-8.12.0-4e21348613-818ff3f874.zip/node_modules/ws/",\ - "packageDependencies": [\ - ["ws", "virtual:53ee7992132b8e069dc99c9f0f3d05821836bcb37183dd466da76224f67e18ee1c7c92a27051df007cb908288116489612199ddda9fa1e776557a21308d9d714#npm:8.12.0"],\ - ["@types/bufferutil", null],\ - ["@types/utf-8-validate", null],\ - ["bufferutil", null],\ - ["utf-8-validate", null]\ - ],\ - "packagePeers": [\ - "@types/bufferutil",\ - "@types/utf-8-validate",\ - "bufferutil",\ - "utf-8-validate"\ - ],\ - "linkType": "HARD"\ - }],\ ["virtual:aa59773ac87791c4813d53447077fcf8a847d6de5a301d34dc31286584b1dbb26d30d3adb5b4c41c1e8aea04371e926fda05c09c6253647c432e11d872a304ba#npm:8.13.0", {\ "packageLocation": "./.yarn/__virtual__/ws-virtual-952aed175e/0/cache/ws-npm-8.13.0-26ffa3016a-53e991bbf9.zip/node_modules/ws/",\ "packageDependencies": [\ diff --git a/.yarn/cache/@babel-plugin-syntax-jsx-npm-7.22.5-2cbf8e7e68-8829d30c26.zip b/.yarn/cache/@babel-plugin-syntax-jsx-npm-7.22.5-2cbf8e7e68-8829d30c26.zip deleted file mode 100644 index a7a99ba99..000000000 --- a/.yarn/cache/@babel-plugin-syntax-jsx-npm-7.22.5-2cbf8e7e68-8829d30c26.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:18ab3bedac73e7066563f65639e663bd22fc43ddbf1658d5087a2a623e6b01ac -size 3606 diff --git a/.yarn/cache/@jest-console-npm-29.6.2-4db58c0edb-1198667bda.zip b/.yarn/cache/@jest-console-npm-29.6.2-4db58c0edb-1198667bda.zip deleted file mode 100644 index 52419746d..000000000 --- a/.yarn/cache/@jest-console-npm-29.6.2-4db58c0edb-1198667bda.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1654c05a0bdaa2ba59a00ab4fdcb3b5ba48340a869ca7f30b37fe62786ec5d5c -size 8161 diff --git a/.yarn/cache/@jest-core-npm-29.6.2-5d908b046b-6bbb388643.zip b/.yarn/cache/@jest-core-npm-29.6.2-5d908b046b-6bbb388643.zip deleted file mode 100644 index e6e2fb7e1..000000000 --- a/.yarn/cache/@jest-core-npm-29.6.2-5d908b046b-6bbb388643.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:de0502453eb5123991ca8651abc46e66ae1ea4fb5f1d16287351481f2b814d90 -size 55363 diff --git a/.yarn/cache/@jest-environment-npm-29.6.2-48e8b9de28-c7de0e4c0d.zip b/.yarn/cache/@jest-environment-npm-29.6.2-48e8b9de28-c7de0e4c0d.zip deleted file mode 100644 index cc38db706..000000000 --- a/.yarn/cache/@jest-environment-npm-29.6.2-48e8b9de28-c7de0e4c0d.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3b8dcf11f47e95a7d9fca627789e25445724cf16aa43db53b0cad72c42cd34c7 -size 6381 diff --git a/.yarn/cache/@jest-expect-npm-29.6.2-7910937388-bd2d88a4e7.zip b/.yarn/cache/@jest-expect-npm-29.6.2-7910937388-bd2d88a4e7.zip deleted file mode 100644 index fb36171e9..000000000 --- a/.yarn/cache/@jest-expect-npm-29.6.2-7910937388-bd2d88a4e7.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b609d4aa7fcd36642cdeaae414fb820bf24c06f01ccd3c84b1182084b0519bf2 -size 3721 diff --git a/.yarn/cache/@jest-expect-utils-npm-29.6.2-bafd0077bb-0decf2009a.zip b/.yarn/cache/@jest-expect-utils-npm-29.6.2-bafd0077bb-0decf2009a.zip deleted file mode 100644 index 8ea79ad3b..000000000 --- a/.yarn/cache/@jest-expect-utils-npm-29.6.2-bafd0077bb-0decf2009a.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4c41b33744deff0723250ff2ad09aee8efa9b51d6ac18461f9ac1bfba664ad91 -size 11645 diff --git a/.yarn/cache/@jest-fake-timers-npm-29.6.2-db388f40be-1abcda02f2.zip b/.yarn/cache/@jest-fake-timers-npm-29.6.2-db388f40be-1abcda02f2.zip deleted file mode 100644 index 63ea3db02..000000000 --- a/.yarn/cache/@jest-fake-timers-npm-29.6.2-db388f40be-1abcda02f2.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1d5a0ab25388dc1e65916f4bb2c297393dce0b9fe4ec9debb1c79b0926b51e70 -size 8759 diff --git a/.yarn/cache/@jest-globals-npm-29.6.2-c549594aed-aa4a54f19c.zip b/.yarn/cache/@jest-globals-npm-29.6.2-c549594aed-aa4a54f19c.zip deleted file mode 100644 index 1a3bfe96f..000000000 --- a/.yarn/cache/@jest-globals-npm-29.6.2-c549594aed-aa4a54f19c.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:91e0eac5975106b583c5ab3ebe4512d38a78bd692a0fc6edaa16921aefb47b6a -size 3113 diff --git a/.yarn/cache/@jest-reporters-npm-29.6.2-42ade157bc-7cf880d073.zip b/.yarn/cache/@jest-reporters-npm-29.6.2-42ade157bc-7cf880d073.zip deleted file mode 100644 index 98298ba5e..000000000 --- a/.yarn/cache/@jest-reporters-npm-29.6.2-42ade157bc-7cf880d073.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5102a4ed33f93b869a247c097708f488cee7f1d785140f93f22c872ed83b797f -size 41772 diff --git a/.yarn/cache/@jest-source-map-npm-29.6.0-84d0709d08-9c6c403874.zip b/.yarn/cache/@jest-source-map-npm-29.6.0-84d0709d08-9c6c403874.zip deleted file mode 100644 index 2513af759..000000000 --- a/.yarn/cache/@jest-source-map-npm-29.6.0-84d0709d08-9c6c403874.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c07b335bf6f608203258d68eed9a86f70697fe214dd8d568ba7bc90031596e13 -size 3921 diff --git a/.yarn/cache/@jest-test-result-npm-29.6.2-066177b4eb-8aff37f18c.zip b/.yarn/cache/@jest-test-result-npm-29.6.2-066177b4eb-8aff37f18c.zip deleted file mode 100644 index 1d34dc55f..000000000 --- a/.yarn/cache/@jest-test-result-npm-29.6.2-066177b4eb-8aff37f18c.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1edcae43e390f6032bd5ca265da251f3435250a83f25f979269a97167b0b6feb -size 6521 diff --git a/.yarn/cache/@jest-test-sequencer-npm-29.6.2-05231e441f-12dc2577e4.zip b/.yarn/cache/@jest-test-sequencer-npm-29.6.2-05231e441f-12dc2577e4.zip deleted file mode 100644 index 8f33be722..000000000 --- a/.yarn/cache/@jest-test-sequencer-npm-29.6.2-05231e441f-12dc2577e4.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:61d92ee38249fd90011eb21d3f6a8ac3d8c96f7015969cd232bd066dacc29526 -size 6156 diff --git a/.yarn/cache/@jest-transform-npm-29.6.2-6b692dd6ca-ffb8c3c344.zip b/.yarn/cache/@jest-transform-npm-29.6.2-6b692dd6ca-ffb8c3c344.zip deleted file mode 100644 index c2a2b8a18..000000000 --- a/.yarn/cache/@jest-transform-npm-29.6.2-6b692dd6ca-ffb8c3c344.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7c7e094fb84725878c14b8de411ad2645af777d5ef56c30cb55a845a55a6d8f9 -size 16496 diff --git a/.yarn/cache/@jest-types-npm-29.6.1-b7c765fadd-89fc1ccf71.zip b/.yarn/cache/@jest-types-npm-29.6.1-b7c765fadd-89fc1ccf71.zip deleted file mode 100644 index ded3fae51..000000000 --- a/.yarn/cache/@jest-types-npm-29.6.1-b7c765fadd-89fc1ccf71.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:102cbaeaea0bc133ea9f98a996097f0ec835e8265ad7a23c48003e087f14eb66 -size 10081 diff --git a/.yarn/cache/@sinonjs-commons-npm-3.0.0-fa72ff71a1-b4b5b73d4d.zip b/.yarn/cache/@sinonjs-commons-npm-3.0.0-fa72ff71a1-b4b5b73d4d.zip deleted file mode 100644 index 70aa0cef6..000000000 --- a/.yarn/cache/@sinonjs-commons-npm-3.0.0-fa72ff71a1-b4b5b73d4d.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4487032a64c52ed80e78c874882e27a5d2e383539b25bfec6c7386631aef071f -size 25833 diff --git a/.yarn/cache/@sinonjs-fake-timers-npm-10.3.0-7417f876b4-614d30cb4d.zip b/.yarn/cache/@sinonjs-fake-timers-npm-10.3.0-7417f876b4-614d30cb4d.zip deleted file mode 100644 index d32c671f3..000000000 --- a/.yarn/cache/@sinonjs-fake-timers-npm-10.3.0-7417f876b4-614d30cb4d.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ceb732470a6c1b6cd609d02e4ed607790ee50f3ed4a268dd32d684d6d10127f6 -size 19740 diff --git a/.yarn/cache/@types-core-js-npm-2.5.5-cc01096305-54eb91dc52.zip b/.yarn/cache/@types-core-js-npm-2.5.5-cc01096305-54eb91dc52.zip deleted file mode 100644 index c1be4e72f..000000000 --- a/.yarn/cache/@types-core-js-npm-2.5.5-cc01096305-54eb91dc52.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b772e58018de1a00181ec8b7029ac107adb233d9412dee68dc6e9150e90d2bf2 -size 12398 diff --git a/.yarn/cache/@types-form-data-npm-2.5.0-499e3e2b06-c3f6c89327.zip b/.yarn/cache/@types-form-data-npm-2.5.0-499e3e2b06-c3f6c89327.zip deleted file mode 100644 index 947814dc6..000000000 --- a/.yarn/cache/@types-form-data-npm-2.5.0-499e3e2b06-c3f6c89327.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2e0315049da03c30ced878e65f1cbf0a497c9e71b2d54b0519d32e576b8946f2 -size 1827 diff --git a/.yarn/cache/@types-jest-npm-29.5.3-8fc40e94bc-e36bb92e0b.zip b/.yarn/cache/@types-jest-npm-29.5.3-8fc40e94bc-e36bb92e0b.zip deleted file mode 100644 index 639d95125..000000000 --- a/.yarn/cache/@types-jest-npm-29.5.3-8fc40e94bc-e36bb92e0b.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:42bcf8bc643ed4c6774b33d39fddede08ccc0ba56b0d9ae319bd71b5573fe425 -size 18468 diff --git a/.yarn/cache/@types-object-assign-deep-npm-0.4.0-bbbcb71273-012429bfa3.zip b/.yarn/cache/@types-object-assign-deep-npm-0.4.0-bbbcb71273-012429bfa3.zip deleted file mode 100644 index ec6934f03..000000000 --- a/.yarn/cache/@types-object-assign-deep-npm-0.4.0-bbbcb71273-012429bfa3.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:853ef88be0eb5ed8061b67e6b02c355c258b6fb785fb8476d06325c058452901 -size 2753 diff --git a/.yarn/cache/@types-parse-link-header-npm-2.0.1-6e02f03027-f766786125.zip b/.yarn/cache/@types-parse-link-header-npm-2.0.1-6e02f03027-f766786125.zip deleted file mode 100644 index 74cbe067b..000000000 --- a/.yarn/cache/@types-parse-link-header-npm-2.0.1-6e02f03027-f766786125.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a29f11b7cb936ac6d410f10a4489f62c193bad3e8847343f8f1d3df099a959b9 -size 2850 diff --git a/.yarn/cache/@types-yargs-npm-17.0.24-b034cf1d8b-5f3ac4dc4f.zip b/.yarn/cache/@types-yargs-npm-17.0.24-b034cf1d8b-5f3ac4dc4f.zip deleted file mode 100644 index dad238d9a..000000000 --- a/.yarn/cache/@types-yargs-npm-17.0.24-b034cf1d8b-5f3ac4dc4f.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:dd169ff9a2264861357b1def4eb1f5a735f87a8431ddaa18d69d7b4cb9c91fef -size 16008 diff --git a/.yarn/cache/ansi-sequence-parser-npm-1.1.1-4cfd5b85e2-ead5b15c59.zip b/.yarn/cache/ansi-sequence-parser-npm-1.1.1-4cfd5b85e2-ead5b15c59.zip deleted file mode 100644 index 120bbca4f..000000000 --- a/.yarn/cache/ansi-sequence-parser-npm-1.1.1-4cfd5b85e2-ead5b15c59.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7252c56c378ba694b042fcf2fb8f1901fa790c7d7b7abe42ab906c4dcfd70f75 -size 7801 diff --git a/.yarn/cache/axios-npm-1.2.2-151da260f0-6e357491b3.zip b/.yarn/cache/axios-npm-1.2.2-151da260f0-6e357491b3.zip deleted file mode 100644 index e87b57f0e..000000000 --- a/.yarn/cache/axios-npm-1.2.2-151da260f0-6e357491b3.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c637d55317d0dd1ea27e19b8444b51ff7fa3dc049aded1f5700e31fd905bc0db -size 454641 diff --git a/.yarn/cache/babel-jest-npm-29.6.2-b4a252efef-3936b5d6ed.zip b/.yarn/cache/babel-jest-npm-29.6.2-b4a252efef-3936b5d6ed.zip deleted file mode 100644 index 4a0ea39b9..000000000 --- a/.yarn/cache/babel-jest-npm-29.6.2-b4a252efef-3936b5d6ed.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5aadb5ca69c771b6c0adf6a12f409ea0ec52c7d19726db0b3ff7189d2fb4228b -size 5666 diff --git a/.yarn/cache/babel-plugin-jest-hoist-npm-29.5.0-3760955b96-099b525407.zip b/.yarn/cache/babel-plugin-jest-hoist-npm-29.5.0-3760955b96-099b525407.zip deleted file mode 100644 index 69c42fdb3..000000000 --- a/.yarn/cache/babel-plugin-jest-hoist-npm-29.5.0-3760955b96-099b525407.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5e68de9ccb6eeca3994e321eda7f4c9ce98cd97a778c75b8994cfcf0d38cdac0 -size 6469 diff --git a/.yarn/cache/babel-preset-jest-npm-29.5.0-1e9ee3b405-5566ca2762.zip b/.yarn/cache/babel-preset-jest-npm-29.5.0-1e9ee3b405-5566ca2762.zip deleted file mode 100644 index ed201ea16..000000000 --- a/.yarn/cache/babel-preset-jest-npm-29.5.0-1e9ee3b405-5566ca2762.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d99e84ba041f9e2a36ea4ad38ee0d6cafa0830436cb5adec8722b7908feb88bf -size 2446 diff --git a/.yarn/cache/convert-source-map-npm-2.0.0-7ab664dc4e-63ae9933be.zip b/.yarn/cache/convert-source-map-npm-2.0.0-7ab664dc4e-63ae9933be.zip deleted file mode 100644 index e69801bdd..000000000 --- a/.yarn/cache/convert-source-map-npm-2.0.0-7ab664dc4e-63ae9933be.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:39b507512936808f011a283496ce80cb84f6f7ee7a0b989571f5254f8e0020a1 -size 6022 diff --git a/.yarn/cache/dedent-npm-1.2.0-2b32a4a08e-239f12ddd4.zip b/.yarn/cache/dedent-npm-1.2.0-2b32a4a08e-239f12ddd4.zip deleted file mode 100644 index 902ff5f55..000000000 --- a/.yarn/cache/dedent-npm-1.2.0-2b32a4a08e-239f12ddd4.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:408430848296fabcb5a9d8b39987d5de438251aaf166d5af11bbed4e753e8963 -size 5289 diff --git a/.yarn/cache/emittery-npm-0.13.1-cb6cd1bb03-2b089ab630.zip b/.yarn/cache/emittery-npm-0.13.1-cb6cd1bb03-2b089ab630.zip deleted file mode 100644 index 5da6d47ca..000000000 --- a/.yarn/cache/emittery-npm-0.13.1-cb6cd1bb03-2b089ab630.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:fadee3d0ca24b8eee0bd387f1e27bb3cdcf2f2482e6de03fcf7d7307f63af064 -size 14167 diff --git a/.yarn/cache/eslint-config-standard-npm-16.0.3-9922e724a8-6ae193634f.zip b/.yarn/cache/eslint-config-standard-npm-16.0.3-9922e724a8-6ae193634f.zip deleted file mode 100644 index c04ba43c2..000000000 --- a/.yarn/cache/eslint-config-standard-npm-16.0.3-9922e724a8-6ae193634f.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c3ba5e55de69e9a73d4fdd55ae8f6059edda968cfdc5837ff5bde2810ab841ef -size 7281 diff --git a/.yarn/cache/eslint-plugin-es-npm-3.0.1-95e8015220-e57592c523.zip b/.yarn/cache/eslint-plugin-es-npm-3.0.1-95e8015220-e57592c523.zip deleted file mode 100644 index 0ccfbf4cd..000000000 --- a/.yarn/cache/eslint-plugin-es-npm-3.0.1-95e8015220-e57592c523.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:86c4c2577f67bb16768a53122bd244b787fdf2655d9531afe351c237dfc2995c -size 86546 diff --git a/.yarn/cache/eslint-plugin-node-npm-11.1.0-913abe06f4-5804c4f8a6.zip b/.yarn/cache/eslint-plugin-node-npm-11.1.0-913abe06f4-5804c4f8a6.zip deleted file mode 100644 index f55e4528d..000000000 --- a/.yarn/cache/eslint-plugin-node-npm-11.1.0-913abe06f4-5804c4f8a6.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:52750392ee792ac8cf682bd29c1132724e4ce3c839f90d20567ef8db68e96b56 -size 86370 diff --git a/.yarn/cache/eslint-plugin-standard-npm-5.0.0-261fbe58f0-58f1aba891.zip b/.yarn/cache/eslint-plugin-standard-npm-5.0.0-261fbe58f0-58f1aba891.zip deleted file mode 100644 index 7ba140e88..000000000 --- a/.yarn/cache/eslint-plugin-standard-npm-5.0.0-261fbe58f0-58f1aba891.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:14fc2a8c2163e67403012745a81eea44ccff157de4202bb59335a5ccb9dfd24f -size 9686 diff --git a/.yarn/cache/expect-npm-29.6.2-d56284fd66-71f7b0c560.zip b/.yarn/cache/expect-npm-29.6.2-d56284fd66-71f7b0c560.zip deleted file mode 100644 index 2f2e052da..000000000 --- a/.yarn/cache/expect-npm-29.6.2-d56284fd66-71f7b0c560.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1b14b3d98a7e8cc3aec4ffff7562b58a6482bb80edfb619fb6e91b274d8045d7 -size 28655 diff --git a/.yarn/cache/jest-changed-files-npm-29.5.0-9ca582b770-a67a7cb3c1.zip b/.yarn/cache/jest-changed-files-npm-29.5.0-9ca582b770-a67a7cb3c1.zip deleted file mode 100644 index 952085d64..000000000 --- a/.yarn/cache/jest-changed-files-npm-29.5.0-9ca582b770-a67a7cb3c1.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d84f7a2a7265662a2ac606b99c8d2d146eebf0326c161f8970b42fa2fa656fa4 -size 8782 diff --git a/.yarn/cache/jest-circus-npm-29.6.2-675d768a16-4f5a96a68c.zip b/.yarn/cache/jest-circus-npm-29.6.2-675d768a16-4f5a96a68c.zip deleted file mode 100644 index 759b93f63..000000000 --- a/.yarn/cache/jest-circus-npm-29.6.2-675d768a16-4f5a96a68c.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e821c92db733fa29ea519728775426ecf9224f89b93b9365384dd8e24c9fbba1 -size 26157 diff --git a/.yarn/cache/jest-cli-npm-29.6.2-99e0036409-0b7b09ae4b.zip b/.yarn/cache/jest-cli-npm-29.6.2-99e0036409-0b7b09ae4b.zip deleted file mode 100644 index 3651f3a18..000000000 --- a/.yarn/cache/jest-cli-npm-29.6.2-99e0036409-0b7b09ae4b.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8c9ce640b0c2d3a01da04cf462163d9021176173bea828a8e336b792c15f7457 -size 17948 diff --git a/.yarn/cache/jest-config-npm-29.6.2-71660b6c0c-3bd104a3ac.zip b/.yarn/cache/jest-config-npm-29.6.2-71660b6c0c-3bd104a3ac.zip deleted file mode 100644 index baa74b093..000000000 --- a/.yarn/cache/jest-config-npm-29.6.2-71660b6c0c-3bd104a3ac.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a0112167b3cb9f4d4fb93a40becd0f722b4dd098f8b6a746fc200c802a1eb6b4 -size 38591 diff --git a/.yarn/cache/jest-docblock-npm-29.4.3-0fa9ff492b-e0e9df1485.zip b/.yarn/cache/jest-docblock-npm-29.4.3-0fa9ff492b-e0e9df1485.zip deleted file mode 100644 index ced0418d8..000000000 --- a/.yarn/cache/jest-docblock-npm-29.4.3-0fa9ff492b-e0e9df1485.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5750375a0d9b2d0e94107f756921c48a675087f12f8197089c015ab6f44f2631 -size 4858 diff --git a/.yarn/cache/jest-each-npm-29.6.2-c58f436344-b64194f4ca.zip b/.yarn/cache/jest-each-npm-29.6.2-c58f436344-b64194f4ca.zip deleted file mode 100644 index 33316b2d8..000000000 --- a/.yarn/cache/jest-each-npm-29.6.2-c58f436344-b64194f4ca.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4291c6f034e46bb6611c71f814b61f60b6a7113174a747be3a2e0f3d32e8cac9 -size 11979 diff --git a/.yarn/cache/jest-environment-node-npm-29.6.2-0ac11b8f1c-0b754ac2d3.zip b/.yarn/cache/jest-environment-node-npm-29.6.2-0ac11b8f1c-0b754ac2d3.zip deleted file mode 100644 index d5acffa6b..000000000 --- a/.yarn/cache/jest-environment-node-npm-29.6.2-0ac11b8f1c-0b754ac2d3.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a2e76229ec47d60798729f4016d7296cfe825fc88a3ea8508816a4dd30e22645 -size 4635 diff --git a/.yarn/cache/jest-haste-map-npm-29.6.2-70adb235f5-7262339720.zip b/.yarn/cache/jest-haste-map-npm-29.6.2-70adb235f5-7262339720.zip deleted file mode 100644 index 3b48b0559..000000000 --- a/.yarn/cache/jest-haste-map-npm-29.6.2-70adb235f5-7262339720.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:12bcaadf430473cadba669e021a1befadae4dd55e4ec70131a354bb753f9eee2 -size 42986 diff --git a/.yarn/cache/jest-leak-detector-npm-29.6.2-d58b6b7df0-e00152acdb.zip b/.yarn/cache/jest-leak-detector-npm-29.6.2-d58b6b7df0-e00152acdb.zip deleted file mode 100644 index 2f5f40b10..000000000 --- a/.yarn/cache/jest-leak-detector-npm-29.6.2-d58b6b7df0-e00152acdb.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a4de6b4a3e81cfc4aba80b7f3b5a7c9be590e5d6459c80ef24070d3ef5c82b34 -size 3959 diff --git a/.yarn/cache/jest-matcher-utils-npm-29.6.2-fd1c69812e-3e1b65dd30.zip b/.yarn/cache/jest-matcher-utils-npm-29.6.2-fd1c69812e-3e1b65dd30.zip deleted file mode 100644 index ace3f26e3..000000000 --- a/.yarn/cache/jest-matcher-utils-npm-29.6.2-fd1c69812e-3e1b65dd30.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b325411a01faaf5d4ea595cf963f8e690f55e113e0dff91ea9945cfe14dc1794 -size 10653 diff --git a/.yarn/cache/jest-message-util-npm-29.6.2-8bd7bc632e-e8e3c8d230.zip b/.yarn/cache/jest-message-util-npm-29.6.2-8bd7bc632e-e8e3c8d230.zip deleted file mode 100644 index e519d8651..000000000 --- a/.yarn/cache/jest-message-util-npm-29.6.2-8bd7bc632e-e8e3c8d230.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:eeb2ef721f623a970182556e640e5f89ed4a65a55283c7a2dbf2a3108235f3b8 -size 8354 diff --git a/.yarn/cache/jest-mock-npm-29.6.2-c31cf48c24-0bacb5d584.zip b/.yarn/cache/jest-mock-npm-29.6.2-c31cf48c24-0bacb5d584.zip deleted file mode 100644 index 181ad32b0..000000000 --- a/.yarn/cache/jest-mock-npm-29.6.2-c31cf48c24-0bacb5d584.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:fdc47685560e8e7e27a1de2b4fa2c4e9250b349b82c4a79e317a5496b6f27084 -size 13587 diff --git a/.yarn/cache/jest-npm-29.6.2-5eda7a13ff-dd63facd4e.zip b/.yarn/cache/jest-npm-29.6.2-5eda7a13ff-dd63facd4e.zip deleted file mode 100644 index dc0b4b701..000000000 --- a/.yarn/cache/jest-npm-29.6.2-5eda7a13ff-dd63facd4e.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:cb054b300fb6883e04321ca67d2621a7dacb33524fa37f38fb27c7b9861c51ff -size 3666 diff --git a/.yarn/cache/jest-regex-util-npm-29.4.3-defc22c588-96fc7fc28c.zip b/.yarn/cache/jest-regex-util-npm-29.4.3-defc22c588-96fc7fc28c.zip deleted file mode 100644 index 22f65d6d8..000000000 --- a/.yarn/cache/jest-regex-util-npm-29.4.3-defc22c588-96fc7fc28c.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4c501fc5ac45220007fb8b53055c0b5fc84270dd6d4c56e3d6829e26f1854b89 -size 2762 diff --git a/.yarn/cache/jest-resolve-dependencies-npm-29.6.2-63dbac2655-d40ee11af2.zip b/.yarn/cache/jest-resolve-dependencies-npm-29.6.2-63dbac2655-d40ee11af2.zip deleted file mode 100644 index cbd26e74a..000000000 --- a/.yarn/cache/jest-resolve-dependencies-npm-29.6.2-63dbac2655-d40ee11af2.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ec0fdfc70715b106e8ad67d6537c40091c1109ff587359ac5fefab549a79a8d5 -size 4377 diff --git a/.yarn/cache/jest-resolve-npm-29.6.2-21cedcf0b9-01721957e6.zip b/.yarn/cache/jest-resolve-npm-29.6.2-21cedcf0b9-01721957e6.zip deleted file mode 100644 index b6a640fd7..000000000 --- a/.yarn/cache/jest-resolve-npm-29.6.2-21cedcf0b9-01721957e6.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1144a83adf39a5d2ba21833c1bb364456fad354089a28c0957ce3a34c2de159f -size 20730 diff --git a/.yarn/cache/jest-runner-npm-29.6.2-74dddde534-46bd506a08.zip b/.yarn/cache/jest-runner-npm-29.6.2-74dddde534-46bd506a08.zip deleted file mode 100644 index cc641f688..000000000 --- a/.yarn/cache/jest-runner-npm-29.6.2-74dddde534-46bd506a08.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:42f1baee31296104d275e7f81afcfa8cf13e274060dec070443575108d5e4d1e -size 10991 diff --git a/.yarn/cache/jest-runtime-npm-29.6.2-3a51c05bc4-8e7e4486b2.zip b/.yarn/cache/jest-runtime-npm-29.6.2-3a51c05bc4-8e7e4486b2.zip deleted file mode 100644 index 32d7a40d4..000000000 --- a/.yarn/cache/jest-runtime-npm-29.6.2-3a51c05bc4-8e7e4486b2.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1442fca175a166f7b91e8d1d7624695781f336c330d27080a2553f49ef0948ad -size 21142 diff --git a/.yarn/cache/jest-snapshot-npm-29.6.2-6ed320289f-c1c70a9dbc.zip b/.yarn/cache/jest-snapshot-npm-29.6.2-6ed320289f-c1c70a9dbc.zip deleted file mode 100644 index 78dc53bd3..000000000 --- a/.yarn/cache/jest-snapshot-npm-29.6.2-6ed320289f-c1c70a9dbc.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:35f599f95136c5c1883773636f98490876e1cf3bbee74c85d03189481ad52b11 -size 27269 diff --git a/.yarn/cache/jest-util-npm-29.6.2-41bd0e8e02-8aedc0c800.zip b/.yarn/cache/jest-util-npm-29.6.2-41bd0e8e02-8aedc0c800.zip deleted file mode 100644 index 628f923ee..000000000 --- a/.yarn/cache/jest-util-npm-29.6.2-41bd0e8e02-8aedc0c800.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a7870140a02973e8b37a2ec221a8ab9572980e2fef2d1f670721b57a24b05619 -size 18938 diff --git a/.yarn/cache/jest-validate-npm-29.6.2-008427c47c-32648d0021.zip b/.yarn/cache/jest-validate-npm-29.6.2-008427c47c-32648d0021.zip deleted file mode 100644 index c469ed661..000000000 --- a/.yarn/cache/jest-validate-npm-29.6.2-008427c47c-32648d0021.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2022aadae496a6b336b783436f33e728b0f2150faa69b3e9cbf16c700f9229af -size 13772 diff --git a/.yarn/cache/jest-watcher-npm-29.6.2-ec5e606774-14624190fc.zip b/.yarn/cache/jest-watcher-npm-29.6.2-ec5e606774-14624190fc.zip deleted file mode 100644 index bb010fba5..000000000 --- a/.yarn/cache/jest-watcher-npm-29.6.2-ec5e606774-14624190fc.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:addbecd6ea202da049edc2758aa4f910468925f7345c44b950dcc00c0e501ed3 -size 11859 diff --git a/.yarn/cache/jest-worker-npm-29.6.2-ccd8e6f0e1-1103556453.zip b/.yarn/cache/jest-worker-npm-29.6.2-ccd8e6f0e1-1103556453.zip deleted file mode 100644 index 972a4d677..000000000 --- a/.yarn/cache/jest-worker-npm-29.6.2-ccd8e6f0e1-1103556453.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f16e57c16b99fb9e7f3fe4f42c8504155c4d8dcbc4a99d2e38a5515ca81456c5 -size 34394 diff --git a/.yarn/cache/jsonc-parser-npm-3.2.0-1896ece3b7-946dd9a5f3.zip b/.yarn/cache/jsonc-parser-npm-3.2.0-1896ece3b7-946dd9a5f3.zip deleted file mode 100644 index 26e0d4d2e..000000000 --- a/.yarn/cache/jsonc-parser-npm-3.2.0-1896ece3b7-946dd9a5f3.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5ce6e9d5d5f916b5f682f73a5401145a2e5995d5b4576f8ed9a11c1bc76a6f5a -size 47640 diff --git a/.yarn/cache/lunr-npm-2.3.9-fa3aa9c2d6-176719e24f.zip b/.yarn/cache/lunr-npm-2.3.9-fa3aa9c2d6-176719e24f.zip deleted file mode 100644 index 7cebdb3df..000000000 --- a/.yarn/cache/lunr-npm-2.3.9-fa3aa9c2d6-176719e24f.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1c357fb30a55ddf8dbbed1ae73e60379c902bd9f23ecfec43dd55027132b2673 -size 241883 diff --git a/.yarn/cache/marked-npm-4.3.0-e7ef9e874f-0db6817893.zip b/.yarn/cache/marked-npm-4.3.0-e7ef9e874f-0db6817893.zip deleted file mode 100644 index 9f97b311a..000000000 --- a/.yarn/cache/marked-npm-4.3.0-e7ef9e874f-0db6817893.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a9858a2960c77a3d4b81b5c540ef09a5522027f77dedc62b4dfc300019c98d5b -size 118004 diff --git a/.yarn/cache/minimatch-npm-7.4.6-f3feee458c-1a6c8d2261.zip b/.yarn/cache/minimatch-npm-7.4.6-f3feee458c-1a6c8d2261.zip deleted file mode 100644 index 5b7257437..000000000 --- a/.yarn/cache/minimatch-npm-7.4.6-f3feee458c-1a6c8d2261.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a7abf9226362b8922db0ef8a32b520d3fb764fce0a7c8369392e14b628cb6b1e -size 104848 diff --git a/.yarn/cache/object-assign-deep-npm-0.4.0-8527f6721d-3c31920ca8.zip b/.yarn/cache/object-assign-deep-npm-0.4.0-8527f6721d-3c31920ca8.zip deleted file mode 100644 index a243bf958..000000000 --- a/.yarn/cache/object-assign-deep-npm-0.4.0-8527f6721d-3c31920ca8.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d44d943050aa490ad90b5bdc99adf7b8a3ab8d3ef8e4d47c777111dc86b02a4f -size 7588 diff --git a/.yarn/cache/parse-link-header-npm-2.0.0-c29aea08c6-0e96c6af99.zip b/.yarn/cache/parse-link-header-npm-2.0.0-c29aea08c6-0e96c6af99.zip deleted file mode 100644 index b50b9f3f6..000000000 --- a/.yarn/cache/parse-link-header-npm-2.0.0-c29aea08c6-0e96c6af99.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d0f84776881a3a996a36e21ff2ae5b5c39423181210244688b3449a0db63d710 -size 5640 diff --git a/.yarn/cache/pure-rand-npm-6.0.2-5d375bc0a6-79de33876a.zip b/.yarn/cache/pure-rand-npm-6.0.2-5d375bc0a6-79de33876a.zip deleted file mode 100644 index d12064911..000000000 --- a/.yarn/cache/pure-rand-npm-6.0.2-5d375bc0a6-79de33876a.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7636a223c9390692e0adfc8a6aa31e44db3e3739c40e7126bd2774a1bea87fb9 -size 36070 diff --git a/.yarn/cache/resolve.exports-npm-2.0.2-f59b42bbe5-1c7778ca1b.zip b/.yarn/cache/resolve.exports-npm-2.0.2-f59b42bbe5-1c7778ca1b.zip deleted file mode 100644 index 0870e363e..000000000 --- a/.yarn/cache/resolve.exports-npm-2.0.2-f59b42bbe5-1c7778ca1b.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d419344f356cca0ec64aa91078e7c1ceb932bae6d9c504abce061db36210017f -size 9753 diff --git a/.yarn/cache/shiki-npm-0.14.3-bbc09f85cf-a4dd98e3b2.zip b/.yarn/cache/shiki-npm-0.14.3-bbc09f85cf-a4dd98e3b2.zip deleted file mode 100644 index 0a0f6c34b..000000000 --- a/.yarn/cache/shiki-npm-0.14.3-bbc09f85cf-a4dd98e3b2.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7deb65c2105f140f73847fe655cb3f94ab86a220939b49331830a4bd5f82439b -size 1462791 diff --git a/.yarn/cache/source-map-support-npm-0.5.13-377dfd7321-933550047b.zip b/.yarn/cache/source-map-support-npm-0.5.13-377dfd7321-933550047b.zip deleted file mode 100644 index 598aeae1c..000000000 --- a/.yarn/cache/source-map-support-npm-0.5.13-377dfd7321-933550047b.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:01ec55ff8df0376a3fd755e10db6ffea51f39300fc6596a10aaf27239b744248 -size 27643 diff --git a/.yarn/cache/ts-jest-npm-29.1.1-04e888e48e-a8c9e284ed.zip b/.yarn/cache/ts-jest-npm-29.1.1-04e888e48e-a8c9e284ed.zip deleted file mode 100644 index 45b91764f..000000000 --- a/.yarn/cache/ts-jest-npm-29.1.1-04e888e48e-a8c9e284ed.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:24a036dbe219d456381822ad566a98eaefa896acd3c9a2c778d17c1b0e086701 -size 104392 diff --git a/.yarn/cache/typedoc-npm-0.23.28-9a9eb64ab5-40eb4e207a.zip b/.yarn/cache/typedoc-npm-0.23.28-9a9eb64ab5-40eb4e207a.zip deleted file mode 100644 index d0e98f2b2..000000000 --- a/.yarn/cache/typedoc-npm-0.23.28-9a9eb64ab5-40eb4e207a.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ea314bae543c0a2daf90ee6659dee5c1e1e00a06116e8e5a6b456b2e28f653b0 -size 356561 diff --git a/.yarn/cache/typescript-npm-4.9.4-51bdca3293-e782fb9e00.zip b/.yarn/cache/typescript-npm-4.9.4-51bdca3293-e782fb9e00.zip deleted file mode 100644 index c4223b101..000000000 --- a/.yarn/cache/typescript-npm-4.9.4-51bdca3293-e782fb9e00.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:63348d4525a5c8d64224057cd6ff7a100ac0f7c49bc280576ff814415a44ce55 -size 11682518 diff --git a/.yarn/cache/typescript-patch-0887b19144-2160f7ad97.zip b/.yarn/cache/typescript-patch-0887b19144-2160f7ad97.zip deleted file mode 100644 index a3f0dbd3c..000000000 --- a/.yarn/cache/typescript-patch-0887b19144-2160f7ad97.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f1d1531c0c4b251dc994b2c52595f7e152b3ca89957488cece01230a50a595c3 -size 11698410 diff --git a/.yarn/cache/v8-to-istanbul-npm-9.1.0-04cd324682-2069d59ee4.zip b/.yarn/cache/v8-to-istanbul-npm-9.1.0-04cd324682-2069d59ee4.zip deleted file mode 100644 index 15583696f..000000000 --- a/.yarn/cache/v8-to-istanbul-npm-9.1.0-04cd324682-2069d59ee4.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:16aa70ea80093b2eba131c32039ac402bfbe0ce7d746e89230d03e0a86f76697 -size 16329 diff --git a/.yarn/cache/vscode-oniguruma-npm-1.7.0-07cc55fbcc-53519d91d9.zip b/.yarn/cache/vscode-oniguruma-npm-1.7.0-07cc55fbcc-53519d91d9.zip deleted file mode 100644 index 8e4c2987b..000000000 --- a/.yarn/cache/vscode-oniguruma-npm-1.7.0-07cc55fbcc-53519d91d9.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:25e7ff1ca972362ad3427c5cae170fd280ccbb75945b617e749dd913ada91a03 -size 162024 diff --git a/.yarn/cache/vscode-textmate-npm-8.0.0-2deb0cc7cf-127780dfea.zip b/.yarn/cache/vscode-textmate-npm-8.0.0-2deb0cc7cf-127780dfea.zip deleted file mode 100644 index eea92112d..000000000 --- a/.yarn/cache/vscode-textmate-npm-8.0.0-2deb0cc7cf-127780dfea.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d24fdac3f7c380bbe8a18254d8df10ba71f4842897c6f82275728b0fcaf41b54 -size 94328 diff --git a/.yarn/cache/write-file-atomic-npm-4.0.2-661baae4aa-5da60bd4ee.zip b/.yarn/cache/write-file-atomic-npm-4.0.2-661baae4aa-5da60bd4ee.zip deleted file mode 100644 index b2e20a140..000000000 --- a/.yarn/cache/write-file-atomic-npm-4.0.2-661baae4aa-5da60bd4ee.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:34d97733dcd8af2ff2a76ce554599bda1e47b473498b506ab7a61a46b73e0a72 -size 5475 diff --git a/.yarn/cache/ws-npm-8.12.0-4e21348613-818ff3f874.zip b/.yarn/cache/ws-npm-8.12.0-4e21348613-818ff3f874.zip deleted file mode 100644 index ca88fb12b..000000000 --- a/.yarn/cache/ws-npm-8.12.0-4e21348613-818ff3f874.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ffbe0d07363acc50c3846eee8b989ecddac1f0584cf849dcedf1173e0d53352e -size 39763 diff --git a/Dockerfile b/Dockerfile index b298de26a..a27791f0d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -12,7 +12,6 @@ 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/iceshrimp-js/package.json packages/iceshrimp-js/package.json -COPY packages/megalodon/package.json packages/megalodon/package.json # Prepare yarn cache COPY .yarn/cache .yarn/cache @@ -48,8 +47,6 @@ RUN apk add --no-cache --no-progress tini ffmpeg vips-dev zip unzip nodejs-curre COPY . ./ -COPY --from=build /iceshrimp/packages/megalodon /iceshrimp/packages/megalodon - # Copy node modules COPY --from=build /iceshrimp/.yarn /iceshrimp/.yarn diff --git a/package.json b/package.json index e3366b136..a933c648a 100644 --- a/package.json +++ b/package.json @@ -36,8 +36,7 @@ "packages/backend", "packages/client", "packages/sw", - "packages/iceshrimp-js", - "packages/megalodon" + "packages/iceshrimp-js" ], "resolutions": { "chokidar": "^3.3.1" diff --git a/packages/README.md b/packages/README.md index 232f19273..670fd5a48 100644 --- a/packages/README.md +++ b/packages/README.md @@ -6,4 +6,3 @@ This directory contains all of the packages Iceshrimp 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 - `iceshrimp-js`: TypeScript SDK for both backend and client, also published on [NPM](https://www.npmjs.com/package/iceshrimp-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 f3dbe5399..f4f1648cf 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -91,7 +91,6 @@ "koa-send": "5.0.1", "koa-slow": "2.1.0", "koa-views": "7.0.2", - "megalodon": "workspace:*", "meilisearch": "0.33.0", "mfm-js": "0.23.3", "mime-types": "2.1.35", diff --git a/packages/backend/src/server/api/mastodon/endpoints/misc.ts b/packages/backend/src/server/api/mastodon/endpoints/misc.ts index 5d6eee479..666775d74 100644 --- a/packages/backend/src/server/api/mastodon/endpoints/misc.ts +++ b/packages/backend/src/server/api/mastodon/endpoints/misc.ts @@ -1,5 +1,4 @@ import Router from "@koa/router"; -import { getClient } from "@/server/api/mastodon/index.js"; import { MiscHelpers } from "@/server/api/mastodon/helpers/misc.js"; import authenticate from "@/server/api/authenticate.js"; import { argsToBools, limitToInt } from "@/server/api/mastodon/endpoints/timeline.js"; diff --git a/packages/backend/src/server/api/mastodon/endpoints/search.ts b/packages/backend/src/server/api/mastodon/endpoints/search.ts index 7e04be87f..6f0b1fecc 100644 --- a/packages/backend/src/server/api/mastodon/endpoints/search.ts +++ b/packages/backend/src/server/api/mastodon/endpoints/search.ts @@ -1,12 +1,9 @@ -import { Converter } from "megalodon"; import Router from "@koa/router"; -import axios from "axios"; import { argsToBools, convertPaginationArgsIds, limitToInt, normalizeUrlQuery } from "./timeline.js"; -import { convertAccountId, convertSearchIds, convertStatusIds } from "../converters.js"; +import { convertSearchIds } from "../converters.js"; import authenticate from "@/server/api/authenticate.js"; import { UserHelpers } from "@/server/api/mastodon/helpers/user.js"; import { SearchHelpers } from "@/server/api/mastodon/helpers/search.js"; -import { MiscHelpers } from "@/server/api/mastodon/helpers/misc.js"; export function setupEndpointsSearch(router: Router): void { router.get("/v1/search", async (ctx) => { diff --git a/packages/backend/src/server/api/mastodon/endpoints/timeline.ts b/packages/backend/src/server/api/mastodon/endpoints/timeline.ts index 9740b4cc9..22918748b 100644 --- a/packages/backend/src/server/api/mastodon/endpoints/timeline.ts +++ b/packages/backend/src/server/api/mastodon/endpoints/timeline.ts @@ -1,5 +1,4 @@ import Router from "@koa/router"; -import { getClient } from "../index.js"; import { ParsedUrlQuery } from "querystring"; import { convertConversationIds, convertStatusIds, } from "../converters.js"; import { convertId, IdType } from "../../index.js"; diff --git a/packages/backend/src/server/api/mastodon/index.ts b/packages/backend/src/server/api/mastodon/index.ts index d9911d24a..31b770ee6 100644 --- a/packages/backend/src/server/api/mastodon/index.ts +++ b/packages/backend/src/server/api/mastodon/index.ts @@ -1,5 +1,4 @@ import Router from "@koa/router"; -import megalodon, { MegalodonInterface } from "megalodon"; import { setupEndpointsAuth } from "./endpoints/auth.js"; import { setupEndpointsAccount } from "./endpoints/account.js"; import { setupEndpointsStatus } from "./endpoints/status.js"; @@ -13,17 +12,6 @@ import { HttpMethodEnum, koaBody } from "koa-body"; import multer from "@koa/multer"; import { setupEndpointsList } from "@/server/api/mastodon/endpoints/list.js"; -export function getClient( - BASE_URL: string, - authorization: string | undefined, -): MegalodonInterface { - const accessTokenArr = authorization?.split(" ") ?? [null]; - const accessToken = accessTokenArr[accessTokenArr.length - 1]; - const generator = (megalodon as any).default; - const client = generator(BASE_URL, accessToken) as MegalodonInterface; - return client; -} - export function setupMastodonApi(router: Router, fileRouter: Router, upload: multer.Instance): void { router.use( koaBody({ diff --git a/packages/megalodon/package.json b/packages/megalodon/package.json deleted file mode 100644 index b5d466ed3..000000000 --- a/packages/megalodon/package.json +++ /dev/null @@ -1,83 +0,0 @@ -{ - "name": "megalodon", - "private": true, - "main": "./lib/src/index.js", - "typings": "./lib/src/index.d.ts", - "scripts": { - "build": "tsc -p ./", - "build:debug": "yarn build", - "lint": "rome check **/*.ts --apply", - "format": "rome format --write src/**/*.ts", - "doc": "typedoc --out ../docs ./src", - "test": "NODE_ENV=test jest -u --maxWorkers=3" - }, - "jest": { - "moduleFileExtensions": [ - "ts", - "js" - ], - "moduleNameMapper": { - "^@/(.+)": "/src/$1", - "^~/(.+)": "/$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", - "async-lock": "1.4.0", - "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" - }, - "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": "18.11.18", - "@types/object-assign-deep": "^0.4.0", - "@types/parse-link-header": "^2.0.0", - "@types/uuid": "^9.0.0", - "@typescript-eslint/eslint-plugin": "^5.49.0", - "@typescript-eslint/parser": "^5.49.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 deleted file mode 100644 index f19fe38a2..000000000 --- a/packages/megalodon/src/axios.d.ts +++ /dev/null @@ -1 +0,0 @@ -declare module "axios/lib/adapters/http"; diff --git a/packages/megalodon/src/cancel.ts b/packages/megalodon/src/cancel.ts deleted file mode 100644 index f8e4729b8..000000000 --- a/packages/megalodon/src/cancel.ts +++ /dev/null @@ -1,13 +0,0 @@ -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 deleted file mode 100644 index 93d669fa7..000000000 --- a/packages/megalodon/src/converter.ts +++ /dev/null @@ -1,3 +0,0 @@ -import MisskeyAPI from "./misskey/api_client"; - -export default MisskeyAPI.Converter; diff --git a/packages/megalodon/src/default.ts b/packages/megalodon/src/default.ts deleted file mode 100644 index 45bce13e2..000000000 --- a/packages/megalodon/src/default.ts +++ /dev/null @@ -1,3 +0,0 @@ -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 deleted file mode 100644 index 06a85eb98..000000000 --- a/packages/megalodon/src/entities/account.ts +++ /dev/null @@ -1,27 +0,0 @@ -/// -/// -/// -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; - moved: Account | null; - fields: Array; - bot: boolean | null; - source?: Source; - }; -} diff --git a/packages/megalodon/src/entities/activity.ts b/packages/megalodon/src/entities/activity.ts deleted file mode 100644 index 6bc0b6d80..000000000 --- a/packages/megalodon/src/entities/activity.ts +++ /dev/null @@ -1,8 +0,0 @@ -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 deleted file mode 100644 index 7c7983163..000000000 --- a/packages/megalodon/src/entities/announcement.ts +++ /dev/null @@ -1,34 +0,0 @@ -/// -/// -/// - -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; - statuses: Array; - tags: Array; - emojis: Array; - reactions: Array; - }; - - 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 deleted file mode 100644 index 9b98b1277..000000000 --- a/packages/megalodon/src/entities/application.ts +++ /dev/null @@ -1,7 +0,0 @@ -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 deleted file mode 100644 index 9cc17acc5..000000000 --- a/packages/megalodon/src/entities/async_attachment.ts +++ /dev/null @@ -1,14 +0,0 @@ -/// -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 deleted file mode 100644 index 082c79edd..000000000 --- a/packages/megalodon/src/entities/attachment.ts +++ /dev/null @@ -1,49 +0,0 @@ -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 deleted file mode 100644 index 356d99aee..000000000 --- a/packages/megalodon/src/entities/card.ts +++ /dev/null @@ -1,16 +0,0 @@ -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 deleted file mode 100644 index a794a7c5a..000000000 --- a/packages/megalodon/src/entities/context.ts +++ /dev/null @@ -1,8 +0,0 @@ -/// - -namespace Entity { - export type Context = { - ancestors: Array; - descendants: Array; - }; -} diff --git a/packages/megalodon/src/entities/conversation.ts b/packages/megalodon/src/entities/conversation.ts deleted file mode 100644 index 2bdc19666..000000000 --- a/packages/megalodon/src/entities/conversation.ts +++ /dev/null @@ -1,11 +0,0 @@ -/// -/// - -namespace Entity { - export type Conversation = { - id: string; - accounts: Array; - last_status: Status | null; - unread: boolean; - }; -} diff --git a/packages/megalodon/src/entities/emoji.ts b/packages/megalodon/src/entities/emoji.ts deleted file mode 100644 index 10c32ab0b..000000000 --- a/packages/megalodon/src/entities/emoji.ts +++ /dev/null @@ -1,9 +0,0 @@ -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 deleted file mode 100644 index fc9f8c69c..000000000 --- a/packages/megalodon/src/entities/featured_tag.ts +++ /dev/null @@ -1,8 +0,0 @@ -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 deleted file mode 100644 index de4b6b2b7..000000000 --- a/packages/megalodon/src/entities/field.ts +++ /dev/null @@ -1,7 +0,0 @@ -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 deleted file mode 100644 index 55b7305cc..000000000 --- a/packages/megalodon/src/entities/filter.ts +++ /dev/null @@ -1,12 +0,0 @@ -namespace Entity { - export type Filter = { - id: string; - phrase: string; - context: Array; - 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 deleted file mode 100644 index 4676357d6..000000000 --- a/packages/megalodon/src/entities/history.ts +++ /dev/null @@ -1,7 +0,0 @@ -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 deleted file mode 100644 index 3b42e6f41..000000000 --- a/packages/megalodon/src/entities/identity_proof.ts +++ /dev/null @@ -1,9 +0,0 @@ -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 deleted file mode 100644 index 9c0f572db..000000000 --- a/packages/megalodon/src/entities/instance.ts +++ /dev/null @@ -1,41 +0,0 @@ -/// -/// -/// - -namespace Entity { - export type Instance = { - uri: string; - title: string; - description: string; - email: string; - version: string; - thumbnail: string | null; - urls: URLs; - stats: Stats; - languages: Array; - 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; - 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 deleted file mode 100644 index 97e75286b..000000000 --- a/packages/megalodon/src/entities/list.ts +++ /dev/null @@ -1,6 +0,0 @@ -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 deleted file mode 100644 index 7ee99282c..000000000 --- a/packages/megalodon/src/entities/marker.ts +++ /dev/null @@ -1,15 +0,0 @@ -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 deleted file mode 100644 index 4fe36a655..000000000 --- a/packages/megalodon/src/entities/mention.ts +++ /dev/null @@ -1,8 +0,0 @@ -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 deleted file mode 100644 index 68eff3347..000000000 --- a/packages/megalodon/src/entities/notification.ts +++ /dev/null @@ -1,15 +0,0 @@ -/// -/// - -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 deleted file mode 100644 index 2539d68b2..000000000 --- a/packages/megalodon/src/entities/poll.ts +++ /dev/null @@ -1,14 +0,0 @@ -/// - -namespace Entity { - export type Poll = { - id: string; - expires_at: string | null; - expired: boolean; - multiple: boolean; - votes_count: number; - options: Array; - voted: boolean; - own_votes: Array; - }; -} diff --git a/packages/megalodon/src/entities/poll_option.ts b/packages/megalodon/src/entities/poll_option.ts deleted file mode 100644 index e818a8607..000000000 --- a/packages/megalodon/src/entities/poll_option.ts +++ /dev/null @@ -1,6 +0,0 @@ -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 deleted file mode 100644 index 7994dc568..000000000 --- a/packages/megalodon/src/entities/preferences.ts +++ /dev/null @@ -1,9 +0,0 @@ -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 deleted file mode 100644 index ad1146a24..000000000 --- a/packages/megalodon/src/entities/push_subscription.ts +++ /dev/null @@ -1,16 +0,0 @@ -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 deleted file mode 100644 index 4edbec6a7..000000000 --- a/packages/megalodon/src/entities/reaction.ts +++ /dev/null @@ -1,12 +0,0 @@ -/// - -namespace Entity { - export type Reaction = { - count: number; - me: boolean; - name: string; - url?: string; - static_url?: string; - accounts?: Array; - }; -} diff --git a/packages/megalodon/src/entities/relationship.ts b/packages/megalodon/src/entities/relationship.ts deleted file mode 100644 index 91802d5c8..000000000 --- a/packages/megalodon/src/entities/relationship.ts +++ /dev/null @@ -1,17 +0,0 @@ -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 deleted file mode 100644 index 6862a5fab..000000000 --- a/packages/megalodon/src/entities/report.ts +++ /dev/null @@ -1,9 +0,0 @@ -namespace Entity { - export type Report = { - id: string; - action_taken: string; - comment: string; - account_id: string; - status_ids: Array; - }; -} diff --git a/packages/megalodon/src/entities/results.ts b/packages/megalodon/src/entities/results.ts deleted file mode 100644 index 4448e5335..000000000 --- a/packages/megalodon/src/entities/results.ts +++ /dev/null @@ -1,11 +0,0 @@ -/// -/// -/// - -namespace Entity { - export type Results = { - accounts: Array; - statuses: Array; - hashtags: Array; - }; -} diff --git a/packages/megalodon/src/entities/scheduled_status.ts b/packages/megalodon/src/entities/scheduled_status.ts deleted file mode 100644 index 78dfb8ed2..000000000 --- a/packages/megalodon/src/entities/scheduled_status.ts +++ /dev/null @@ -1,10 +0,0 @@ -/// -/// -namespace Entity { - export type ScheduledStatus = { - id: string; - scheduled_at: string; - params: StatusParams; - media_attachments: Array; - }; -} diff --git a/packages/megalodon/src/entities/source.ts b/packages/megalodon/src/entities/source.ts deleted file mode 100644 index 913b02fda..000000000 --- a/packages/megalodon/src/entities/source.ts +++ /dev/null @@ -1,10 +0,0 @@ -/// -namespace Entity { - export type Source = { - privacy: string | null; - sensitive: boolean | null; - language: string | null; - note: string; - fields: Array; - }; -} diff --git a/packages/megalodon/src/entities/stats.ts b/packages/megalodon/src/entities/stats.ts deleted file mode 100644 index 6471df039..000000000 --- a/packages/megalodon/src/entities/stats.ts +++ /dev/null @@ -1,7 +0,0 @@ -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 deleted file mode 100644 index df458c7a6..000000000 --- a/packages/megalodon/src/entities/status.ts +++ /dev/null @@ -1,45 +0,0 @@ -/// -/// -/// -/// -/// -/// -/// -/// -/// - -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; - text: 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; - mentions: Array; - tags: Array; - card: Card | null; - poll: Poll | null; - application: Application | null; - language: string | null; - pinned: boolean | null; - reactions: Array; - quote: Status | null; - bookmarked: boolean; - }; -} diff --git a/packages/megalodon/src/entities/status_edit.ts b/packages/megalodon/src/entities/status_edit.ts deleted file mode 100644 index 4040b4ff9..000000000 --- a/packages/megalodon/src/entities/status_edit.ts +++ /dev/null @@ -1,23 +0,0 @@ -/// -/// -/// -/// -/// -/// -/// -/// -/// - -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; - poll: Poll | null; - }; -} diff --git a/packages/megalodon/src/entities/status_params.ts b/packages/megalodon/src/entities/status_params.ts deleted file mode 100644 index 18908c01c..000000000 --- a/packages/megalodon/src/entities/status_params.ts +++ /dev/null @@ -1,12 +0,0 @@ -namespace Entity { - export type StatusParams = { - text: string; - in_reply_to_id: string | null; - media_ids: Array | 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 deleted file mode 100644 index ccc88aece..000000000 --- a/packages/megalodon/src/entities/tag.ts +++ /dev/null @@ -1,10 +0,0 @@ -/// - -namespace Entity { - export type Tag = { - name: string; - url: string; - history: Array | null; - following?: boolean; - }; -} diff --git a/packages/megalodon/src/entities/token.ts b/packages/megalodon/src/entities/token.ts deleted file mode 100644 index 1583edafb..000000000 --- a/packages/megalodon/src/entities/token.ts +++ /dev/null @@ -1,8 +0,0 @@ -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 deleted file mode 100644 index 1ee9ed67c..000000000 --- a/packages/megalodon/src/entities/urls.ts +++ /dev/null @@ -1,5 +0,0 @@ -namespace Entity { - export type URLs = { - streaming_api: string; - }; -} diff --git a/packages/megalodon/src/entity.ts b/packages/megalodon/src/entity.ts deleted file mode 100644 index b73d2b359..000000000 --- a/packages/megalodon/src/entity.ts +++ /dev/null @@ -1,38 +0,0 @@ -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// - -export default Entity; diff --git a/packages/megalodon/src/filter_context.ts b/packages/megalodon/src/filter_context.ts deleted file mode 100644 index 4c83cb15f..000000000 --- a/packages/megalodon/src/filter_context.ts +++ /dev/null @@ -1,11 +0,0 @@ -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 deleted file mode 100644 index 758d3a46a..000000000 --- a/packages/megalodon/src/index.ts +++ /dev/null @@ -1,32 +0,0 @@ -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 deleted file mode 100644 index 33a5790f6..000000000 --- a/packages/megalodon/src/megalodon.ts +++ /dev/null @@ -1,1532 +0,0 @@ -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; - redirect_uris: string; - website: string; - }>, - ): Promise; - - /** - * 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; - redirect_uris: string; - website: string; - }>, - ): Promise; - - // ====================================== - // apps - // ====================================== - /** - * GET /api/v1/apps/verify_credentials - * - * @return An Application - */ - verifyAppCredentials(): Promise>; - - // ====================================== - // 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; - - /** - * 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; - - /** - * 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>; - - // ====================================== - // 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>; - /** - * GET /api/v1/accounts/verify_credentials - * - * @return Account. - */ - verifyAccountCredentials(): Promise>; - /** - * 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>; - /** - * GET /api/v1/accounts/:id - * - * @param id The account ID. - * @return An account. - */ - getAccount(id: string): Promise>; - /** - * 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>>; - /** - * 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>>; - /** - * POST /api/v1/pleroma/accounts/:id/subscribe - * - * @param id Target account ID. - * @return Relationship. - */ - subscribeAccount(id: string): Promise>; - /** - * POST /api/v1/pleroma/accounts/:id/unsubscribe - * - * @param id Target account ID. - * @return Relationship. - */ - unsubscribeAccount(id: string): Promise>; - /** - * 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>>; - - /** - * GET /api/v1/accounts/:id/featured_tags - * - * @param id The account ID. - * @return The array of accounts. - */ - getAccountFeaturedTags( - id: string, - ): Promise>>; - - /** - * 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>>; - /** - * GET /api/v1/accounts/:id/lists - * - * @param id The account ID. - * @return The array of lists. - */ - getAccountLists(id: string): Promise>>; - /** - * GET /api/v1/accounts/:id/identity_proofs - * - * @param id The account ID. - * @return Array of IdentityProof - */ - getIdentityProof(id: string): Promise>>; - /** - * 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>; - /** - * POST /api/v1/accounts/:id/unfollow - * - * @param id The account ID. - * @return Relationship - */ - unfollowAccount(id: string): Promise>; - /** - * POST /api/v1/accounts/:id/block - * - * @param id The account ID. - * @return Relationship - */ - blockAccount(id: string): Promise>; - /** - * POST /api/v1/accounts/:id/unblock - * - * @param id The account ID. - * @return RElationship - */ - unblockAccount(id: string): Promise>; - /** - * 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>; - /** - * POST /api/v1/accounts/:id/unmute - * - * @param id The account ID. - * @return Relationship - */ - unmuteAccount(id: string): Promise>; - /** - * POST /api/v1/accounts/:id/pin - * - * @param id The account ID. - * @return Relationship - */ - pinAccount(id: string): Promise>; - /** - * POST /api/v1/accounts/:id/unpin - * - * @param id The account ID. - * @return Relationship - */ - unpinAccount(id: string): Promise>; - /** - * GET /api/v1/accounts/relationships - * - * @param id The account ID. - * @return Relationship - */ - getRelationship(id: string): Promise>; - /** - * Get multiple relationships in one method - * - * @param ids Array of account IDs. - * @return Array of Relationship. - */ - getRelationships( - ids: Array, - ): Promise>>; - /** - * 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>>; - // ====================================== - // 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>>; - // ====================================== - // 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>>; - // ====================================== - // 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>>; - // ====================================== - // 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>>; - // ====================================== - // 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>>; - /** - * POST/api/v1/domain_blocks - * - * @param domain Domain to block. - */ - blockDomain(domain: string): Promise>; - /** - * DELETE /api/v1/domain_blocks - * - * @param domain Domain to unblock - */ - unblockDomain(domain: string): Promise>; - // ====================================== - // accounts/filters - // ====================================== - /** - * GET /api/v1/filters - * - * @return Array of filters. - */ - getFilters(): Promise>>; - /** - * GET /api/v1/filters/:id - * - * @param id The filter ID. - * @return Filter. - */ - getFilter(id: string): Promise>; - /** - * 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, - options?: { - irreversible?: boolean; - whole_word?: boolean; - expires_in?: string; - }, - ): Promise>; - /** - * 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, - options?: { - irreversible?: boolean; - whole_word?: boolean; - expires_in?: string; - }, - ): Promise>; - /** - * DELETE /api/v1/filters/:id - * - * @param id The filter ID. - * @return Removed filter. - */ - deleteFilter(id: string): Promise>; - // ====================================== - // 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; forward?: boolean }, - ): Promise>; - // ====================================== - // accounts/follow_requests - // ====================================== - /** - * GET /api/v1/follow_requests - * - * @param limit Maximum number of results. - * @return Array of account. - */ - getFollowRequests(limit?: number): Promise>>; - /** - * POST /api/v1/follow_requests/:id/authorize - * - * @param id Target account ID. - * @return Relationship. - */ - acceptFollowRequest(id: string): Promise>; - /** - * POST /api/v1/follow_requests/:id/reject - * - * @param id Target account ID. - * @return Relationship. - */ - rejectFollowRequest(id: string): Promise>; - // ====================================== - // 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>>; - // ====================================== - // accounts/featured_tags - // ====================================== - /** - * GET /api/v1/featured_tags - * - * @return Array of featured tag. - */ - getFeaturedTags(): Promise>>; - /** - * POST /api/v1/featured_tags - * - * @param name Target hashtag name. - * @return FeaturedTag. - */ - createFeaturedTag(name: string): Promise>; - /** - * DELETE /api/v1/featured_tags/:id - * - * @param id Target featured tag id. - * @return Empty - */ - deleteFeaturedTag(id: string): Promise>; - /** - * GET /api/v1/featured_tags/suggestions - * - * @return Array of tag. - */ - getSuggestedTags(): Promise>>; - // ====================================== - // accounts/preferences - // ====================================== - /** - * GET /api/v1/preferences - * - * @return Preferences. - */ - getPreferences(): Promise>; - // ====================================== - // accounts/suggestions - // ====================================== - /** - * GET /api/v1/suggestions - * - * @param limit Maximum number of results. - * @return Array of accounts. - */ - getSuggestions(limit?: number): Promise>>; - // ====================================== - // accounts/tags - // ====================================== - getFollowedTags(): Promise>>; - /** - * GET /api/v1/tags/:id - * - * @param id Target hashtag id. - * @return Tag - */ - getTag(id: string): Promise>; - /** - * POST /api/v1/tags/:id/follow - * - * @param id Target hashtag id. - * @return Tag - */ - followTag(id: string): Promise>; - /** - * POST /api/v1/tags/:id/unfollow - * - * @param id Target hashtag id. - * @return Tag - */ - unfollowTag(id: string): Promise>; - // ====================================== - // 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; - poll?: { - options: Array; - 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>; - /** - * GET /api/v1/statuses/:id - * - * @param id The target status id. - * @return Status - */ - getStatus(id: string): Promise>; - /** - 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; - poll?: { - options?: Array; - expires_in?: number; - multiple?: boolean; - hide_totals?: boolean; - }; - }, - ): Promise>; - /** - * DELETE /api/v1/statuses/:id - * - * @param id The target status id. - * @return Status - */ - deleteStatus(id: string): Promise>; - /** - * 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>; - /** - * GET /api/v1/statuses/:id/history - * - * Get status edit history. - * @param id The target status id. - * @return StatusEdit - */ - getStatusHistory(id: string): Promise>>; - /** - * GET /api/v1/statuses/:id/reblogged_by - * - * @param id The target status id. - * @return Array of accounts. - */ - getStatusRebloggedBy(id: string): Promise>>; - /** - * GET /api/v1/statuses/:id/favourited_by - * - * @param id The target status id. - * @return Array of accounts. - */ - getStatusFavouritedBy(id: string): Promise>>; - /** - * POST /api/v1/statuses/:id/favourite - * - * @param id The target status id. - * @return Status. - */ - favouriteStatus(id: string): Promise>; - /** - * POST /api/v1/statuses/:id/unfavourite - * - * @param id The target status id. - * @return Status. - */ - unfavouriteStatus(id: string): Promise>; - /** - * POST /api/v1/statuses/:id/reblog - * - * @param id The target status id. - * @return Status. - */ - reblogStatus(id: string): Promise>; - /** - * POST /api/v1/statuses/:id/unreblog - * - * @param id The target status id. - * @return Status. - */ - unreblogStatus(id: string): Promise>; - /** - * POST /api/v1/statuses/:id/bookmark - * - * @param id The target status id. - * @return Status. - */ - bookmarkStatus(id: string): Promise>; - /** - * POST /api/v1/statuses/:id/unbookmark - * - * @param id The target status id. - * @return Status. - */ - unbookmarkStatus(id: string): Promise>; - /** - * POST /api/v1/statuses/:id/mute - * - * @param id The target status id. - * @return Status - */ - muteStatus(id: string): Promise>; - /** - * POST /api/v1/statuses/:id/unmute - * - * @param id The target status id. - * @return Status - */ - unmuteStatus(id: string): Promise>; - /** - * POST /api/v1/statuses/:id/pin - * @param id The target status id. - * @return Status - */ - pinStatus(id: string): Promise>; - /** - * POST /api/v1/statuses/:id/unpin - * - * @param id The target status id. - * @return Status - */ - unpinStatus(id: string): Promise>; - /** - * 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>; - /** - * 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>; - // ====================================== - // 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>; - /** - * GET /api/v1/media/:id - * - * @param id Target media ID. - * @return Attachment - */ - getMedia(id: string): Promise>; - /** - * 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>; - // ====================================== - // statuses/polls - // ====================================== - /** - * GET /api/v1/polls/:id - * - * @param id Target poll ID. - * @return Poll - */ - getPoll(id: string): Promise>; - /** - * 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): Promise>; - // ====================================== - // 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>>; - /** - * GET /api/v1/scheduled_statuses/:id - * - * @param id Target status ID. - * @return ScheduledStatus. - */ - getScheduledStatus(id: string): Promise>; - /** - * 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>; - /** - * DELETE /api/v1/scheduled_statuses/:id - * - * @param id Target scheduled status ID. - */ - cancelScheduledStatus(id: string): Promise>; - // ====================================== - // 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>>; - /** - * 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>>; - /** - * 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>>; - /** - * 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>>; - /** - * 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>>; - // ====================================== - // 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>>; - /** - * DELETE /api/v1/conversations/:id - * - * @param id Target conversation ID. - */ - deleteConversation(id: string): Promise>; - /** - * POST /api/v1/conversations/:id/read - * - * @param id Target conversation ID. - * @return Conversation. - */ - readConversation(id: string): Promise>; - // ====================================== - // timelines/lists - // ====================================== - /** - * GET /api/v1/lists - * - * @return Array of lists. - */ - getLists(): Promise>>; - /** - * GET /api/v1/lists/:id - * - * @param id Target list ID. - * @return List. - */ - getList(id: string): Promise>; - /** - * POST /api/v1/lists - * - * @param title List name. - * @return List. - */ - createList(title: string): Promise>; - /** - * PUT /api/v1/lists/:id - * - * @param id Target list ID. - * @param title New list name. - * @return List. - */ - updateList(id: string, title: string): Promise>; - /** - * DELETE /api/v1/lists/:id - * - * @param id Target list ID. - */ - deleteList(id: string): Promise>; - /** - * 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>>; - /** - * 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, - ): Promise>; - /** - * 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, - ): Promise>; - // ====================================== - // 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): Promise>; - /** - * 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>; - // ====================================== - // 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; - account_id?: string; - }): Promise>>; - /** - * GET /api/v1/notifications/:id - * - * @param id Target notification ID. - * @return Notification. - */ - getNotification(id: string): Promise>; - /** - * POST /api/v1/notifications/clear - */ - dismissNotifications(): Promise>; - /** - * POST /api/v1/notifications/:id/dismiss - * - * @param id Target notification ID. - */ - dismissNotification(id: string): Promise>; - /** - * 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> - >; - // ====================================== - // 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>; - /** - * GET /api/v1/push/subscription - * - * @return PushSubscription. - */ - getPushSubscription(): Promise>; - /** - * 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>; - /** - * DELETE /api/v1/push/subscription - */ - deletePushSubscription(): Promise>; - // ====================================== - // 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>; - - // ====================================== - // instance - // ====================================== - /** - * GET /api/v1/instance - */ - getInstance(): Promise>; - - /** - * GET /api/v1/instance/peers - */ - getInstancePeers(): Promise>>; - - /** - * GET /api/v1/instance/activity - */ - getInstanceActivity(): Promise>>; - - // ====================================== - // instance/trends - // ====================================== - /** - * GET /api/v1/trends - * - * @param limit Maximum number of results to return. Defaults to 10. - */ - getInstanceTrends( - limit?: number | null, - ): Promise>>; - - // ====================================== - // 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>>; - - // ====================================== - // instance/custom_emojis - // ====================================== - /** - * GET /api/v1/custom_emojis - * - * @return Array of emojis. - */ - getInstanceCustomEmojis(): Promise>>; - - // ====================================== - // 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>>; - - /** - * POST /api/v1/announcements/:id/dismiss - */ - dismissInstanceAnnouncement(id: string): Promise>; - - // ====================================== - // Emoji reactions - // ====================================== - createEmojiReaction( - id: string, - emoji: string, - ): Promise>; - deleteEmojiReaction( - id: string, - emoji: string, - ): Promise>; - getEmojiReactions(id: string): Promise>>; - getEmojiReaction( - id: string, - emoji: string, - ): Promise>; - - // ====================================== - // 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(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 deleted file mode 100644 index 45839a134..000000000 --- a/packages/megalodon/src/misskey.ts +++ /dev/null @@ -1,3468 +0,0 @@ -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; - redirect_uris: string; - website: string; - }> = { - scopes: MisskeyAPI.DEFAULT_SCOPE, - redirect_uris: this.baseUrl, - }, - ): Promise { - 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; - redirect_uris: string; - website: string; - }> = { - scopes: MisskeyAPI.DEFAULT_SCOPE, - redirect_uris: this.baseUrl, - }, - ): Promise { - const redirect_uris = options.redirect_uris || this.baseUrl; - const scopes = options.scopes || MisskeyAPI.DEFAULT_SCOPE; - - const params: { - name: string; - description: string; - permission: Array; - 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("/api/app/create", params) - .then((res: Response) => { - 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 { - return this.client - .post("/api/auth/session/generate", { - appSecret: clientSecret, - }) - .then((res: Response) => res.data); - } - - // ====================================== - // apps - // ====================================== - public async verifyAppCredentials(): Promise> { - 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 { - return this.client - .post("/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 { - 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> { - 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> { - return new Promise((_, reject) => { - const err = new NoImplementedError("misskey does not support"); - reject(err); - }); - } - - /** - * POST /api/i - */ - public async verifyAccountCredentials(): Promise> { - return this.client - .post("/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> { - 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("/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> { - return this.client - .post("/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> { - return this.client - .post("/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>> { - const accountCache = this.getFreshAccountCache(); - - if (options?.pinned) { - return this.client - .post("/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>("/api/users/notes", params) - .then(async (res) => { - const statuses: Array = 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>> { - 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>("/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> { - return new Promise((_, reject) => { - const err = new NoImplementedError("misskey does not support"); - reject(err); - }); - } - - public async unsubscribeAccount( - _id: string, - ): Promise> { - 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>> { - 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>("/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>> { - let params = { - userId: id, - }; - if (options) { - if (options.limit) { - params = Object.assign(params, { - limit: options.limit <= 100 ? options.limit : 100, - }); - } - } - return this.client - .post>("/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>> { - return new Promise((_, reject) => { - const err = new NoImplementedError("misskey does not support"); - reject(err); - }); - } - - public async getIdentityProof( - _id: string, - ): Promise>> { - 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> { - await this.client.post<{}>("/api/following/create", { - userId: id, - }); - return this.client - .post("/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> { - await this.client.post<{}>("/api/following/delete", { - userId: id, - }); - return this.client - .post("/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> { - await this.client.post<{}>("/api/blocking/create", { - userId: id, - }); - return this.client - .post("/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> { - await this.client.post<{}>("/api/blocking/delete", { - userId: id, - }); - return this.client - .post("/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> { - await this.client.post<{}>("/api/mute/create", { - userId: id, - }); - return this.client - .post("/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> { - await this.client.post<{}>("/api/mute/delete", { - userId: id, - }); - return this.client - .post("/api/users/relation", { - userId: id, - }) - .then((res) => { - return Object.assign(res, { - data: this.converter.relation(res.data), - }); - }); - } - - public async pinAccount(_id: string): Promise> { - return new Promise((_, reject) => { - const err = new NoImplementedError("misskey does not support"); - reject(err); - }); - } - - public async unpinAccount( - _id: string, - ): Promise> { - 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> { - return this.client - .post("/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, - ): Promise>> { - 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>> { - 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>("/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>> { - 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>("/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>> { - const userId = await this.client - .post("/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>> { - 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>("/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>> { - 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>("/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>> { - return new Promise((_, reject) => { - const err = new NoImplementedError("misskey does not support"); - reject(err); - }); - } - - public async blockDomain(_domain: string): Promise> { - return new Promise((_, reject) => { - const err = new NoImplementedError("misskey does not support"); - reject(err); - }); - } - - public async unblockDomain(_domain: string): Promise> { - return new Promise((_, reject) => { - const err = new NoImplementedError("misskey does not support"); - reject(err); - }); - } - - // ====================================== - // accounts/filters - // ====================================== - public async getFilters(): Promise>> { - return new Promise((_, reject) => { - const err = new NoImplementedError("misskey does not support"); - reject(err); - }); - } - - public async getFilter(_id: string): Promise> { - return new Promise((_, reject) => { - const err = new NoImplementedError("misskey does not support"); - reject(err); - }); - } - - public async createFilter( - _phrase: string, - _context: Array, - _options?: { - irreversible?: boolean; - whole_word?: boolean; - expires_in?: string; - }, - ): Promise> { - return new Promise((_, reject) => { - const err = new NoImplementedError("misskey does not support"); - reject(err); - }); - } - - public async updateFilter( - _id: string, - _phrase: string, - _context: Array, - _options?: { - irreversible?: boolean; - whole_word?: boolean; - expires_in?: string; - }, - ): Promise> { - return new Promise((_, reject) => { - const err = new NoImplementedError("misskey does not support"); - reject(err); - }); - } - - public async deleteFilter(_id: string): Promise> { - 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; - forward?: boolean; - }, - ): Promise> { - 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>> { - return this.client - .post>( - "/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> { - await this.client.post<{}>("/api/following/requests/accept", { - userId: id, - }); - return this.client - .post("/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> { - await this.client.post<{}>("/api/following/requests/reject", { - userId: id, - }); - return this.client - .post("/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>> { - return new Promise((_, reject) => { - const err = new NoImplementedError("misskey does not support"); - reject(err); - }); - } - - // ====================================== - // accounts/featured_tags - // ====================================== - public async getFeaturedTags(): Promise>> { - return this.getAccountFeaturedTags(); - } - - public async getAccountFeaturedTags(): Promise< - Response> - > { - 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> { - return new Promise((_, reject) => { - const err = new NoImplementedError("misskey does not support"); - reject(err); - }); - } - - public async deleteFeaturedTag(_id: string): Promise> { - return new Promise((_, reject) => { - const err = new NoImplementedError("misskey does not support"); - reject(err); - }); - } - - public async getSuggestedTags(): Promise>> { - return new Promise((_, reject) => { - const err = new NoImplementedError("misskey does not support"); - reject(err); - }); - } - - // ====================================== - // accounts/preferences - // ====================================== - public async getPreferences(): Promise> { - return this.client - .post("/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>> { - let params = {}; - if (limit) { - params = Object.assign(params, { - limit: limit, - }); - } - return this.client - .post>( - "/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>> { - 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> { - return new Promise((_, reject) => { - const err = new NoImplementedError("misskey does not support"); - reject(err); - }); - } - - public async followTag(_id: string): Promise> { - return new Promise((_, reject) => { - const err = new NoImplementedError("misskey does not support"); - reject(err); - }); - } - - public async unfollowTag(_id: string): Promise> { - return new Promise((_, reject) => { - const err = new NoImplementedError("misskey does not support"); - reject(err); - }); - } - - // ====================================== - // statuses - // ====================================== - public async postStatus( - status: string, - options?: { - media_ids?: Array; - poll?: { - options: Array; - 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> { - 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("/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> { - return this.client - .post("/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 { - 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 { - 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 { - return this.client - .post("/api/notes/state", { - noteId: id, - }) - .then((p) => p.data.isFavorited ?? false); - } - - public async addUserDetailsToStatus( - status: Entity.Status, - cache: AccountCache, - ): Promise { - 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 { - 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.text!, 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, - `@${m.acct}`, - ); - } - return status; - } - - public async getMentions( - text: string, - origin: string | null, - cache: AccountCache, - ): Promise { - const mentions: Entity.Mention[] = []; - - if (text == undefined) return mentions; - - const mentionMatch = text.matchAll( - /(?<=^|\s)@(?[a-zA-Z0-9_]+)(?:@(?[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 { - 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 { - 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; - poll?: { - options: Array; - expires_in: number; - multiple?: boolean; - hide_totals?: boolean; - }; - }, - ): Promise> { - let params = { - editId: id, - }; - if (options) { - params = Object.assign(params, { - text: options.status, - }); - 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.sensitive) { - params = Object.assign(params, { - cw: "", - }); - } - if (options.spoiler_text) { - params = Object.assign(params, { - cw: options.spoiler_text, - }); - } - } - return this.client - .post("/api/notes/edit", params) - .then(async (res) => ({ - ...res, - data: await this.noteWithDetails( - res.data.createdNote, - this.baseUrlToHost(this.baseUrl), - this.getFreshAccountCache(), - ), - })); - } - - /** - * POST /api/notes/delete - */ - public async deleteStatus(id: string): Promise> { - const status = await this.getStatus(id); - await this.client.post<{}>("/api/notes/delete", { - noteId: id, - }); - return status; - } - - /** - * POST /api/notes/children - */ - public async getStatusContext( - id: string, - options?: { limit?: number; max_id?: string; since_id?: string }, - ): Promise> { - 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>("/api/notes/children", params) - .then(async (res) => { - const accountCache = this.getFreshAccountCache(); - const conversation = await this.client.post< - Array - >("/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>> { - // 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>> { - return this.client - .post>("/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>> { - return this.client - .post>("/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> { - return this.createEmojiReaction(id, await this.getDefaultFavoriteEmoji()); - } - - private async getDefaultFavoriteEmoji(): Promise { - // 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>("/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("/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> { - // 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> { - return this.client - .post("/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> { - await this.client.post<{}>("/api/notes/unrenote", { - noteId: id, - }); - return this.client - .post("/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> { - await this.client.post<{}>("/api/notes/favorites/create", { - noteId: id, - }); - return this.client - .post("/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> { - await this.client.post<{}>("/api/notes/favorites/delete", { - noteId: id, - }); - return this.client - .post("/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> { - return new Promise((_, reject) => { - const err = new NoImplementedError("misskey does not support"); - reject(err); - }); - } - - public async unmuteStatus(_id: string): Promise> { - return new Promise((_, reject) => { - const err = new NoImplementedError("misskey does not support"); - reject(err); - }); - } - - /** - * POST /api/i/pin - */ - public async pinStatus(id: string): Promise> { - await this.client.post<{}>("/api/i/pin", { - noteId: id, - }); - return this.client - .post("/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> { - await this.client.post<{}>("/api/i/unpin", { - noteId: id, - }); - return this.client - .post("/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> { - await this.client.post<{}>("/api/notes/reactions/create", { - noteId: id, - reaction: this.reactionName(name), - }); - return this.client - .post("/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> { - await this.client.post<{}>("/api/notes/reactions/delete", { - noteId: id, - reaction: this.reactionName(name), - }); - return this.client - .post("/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> { - 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( - "/api/drive/files/create", - formData, - headers, - ) - .then((res) => ({ ...res, data: this.converter.file(res.data) })); - } - - public async getMedia(id: string): Promise> { - const res = await this.client.post( - "/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> { - 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("/api/drive/files/update", params) - .then((res) => ({ ...res, data: this.converter.file(res.data) })); - } - - // ====================================== - // statuses/polls - // ====================================== - public async getPoll(id: string): Promise> { - 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, - ): Promise> { - 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("/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>> { - return new Promise((_, reject) => { - const err = new NoImplementedError("misskey does not support"); - reject(err); - }); - } - - public async getScheduledStatus( - _id: string, - ): Promise> { - return new Promise((_, reject) => { - const err = new NoImplementedError("misskey does not support"); - reject(err); - }); - } - - public async scheduleStatus( - _id: string, - _scheduled_at?: string | null, - ): Promise> { - return new Promise((_, reject) => { - const err = new NoImplementedError("misskey does not support"); - reject(err); - }); - } - - public async cancelScheduledStatus(_id: string): Promise> { - 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>> { - 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>("/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>> { - 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>("/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>> { - 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>("/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>> { - 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>("/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>> { - 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>( - "/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>> { - 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>("/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> { - return new Promise((_, reject) => { - const err = new NoImplementedError("misskey does not support"); - reject(err); - }); - } - - public async readConversation( - _id: string, - ): Promise> { - 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>> { - return this.client - .post>("/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> { - return this.client - .post("/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> { - return this.client - .post("/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> { - return this.client - .post("/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> { - 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>> { - const res = await this.client.post( - "/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, - ): Promise> { - 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, - ): Promise> { - return this.client.post<{}>("/api/users/lists/pull", { - listId: id, - userId: account_ids[0], - }); - } - - // ====================================== - // timelines/markers - // ====================================== - public async getMarkers( - _timeline: Array, - ): Promise> { - 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> { - 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; - account_id?: string; - }): Promise>> { - 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>( - "/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> { - 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> { - return this.client.post<{}>("/api/notifications/mark-all-as-read"); - } - - public async dismissNotification(_id: string): Promise> { - return new Promise((_, reject) => { - const err = new NoImplementedError("misskey does not support"); - reject(err); - }); - } - - public async readNotifications(_options: { - id?: string; - max_id?: string; - }): Promise>> { - 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> { - return new Promise((_, reject) => { - const err = new NoImplementedError("misskey does not support"); - reject(err); - }); - } - - public async getPushSubscription(): Promise< - Response - > { - 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> { - return new Promise((_, reject) => { - const err = new NoImplementedError("misskey does not support"); - reject(err); - }); - } - - /** - * DELETE /api/v1/push/subscription - */ - public async deletePushSubscription(): Promise> { - 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> { - 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(/^@(?[a-zA-Z0-9_]+)(?:@(?[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( - "/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>( - "/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>("/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>("/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> { - const meta = await this.client - .post("/api/meta") - .then((res) => res.data); - return this.client - .post("/api/stats") - .then((res) => ({ ...res, data: this.converter.meta(meta, res.data) })); - } - - public async getInstancePeers(): Promise>> { - return new Promise((_, reject) => { - const err = new NoImplementedError("misskey does not support"); - reject(err); - }); - } - - public async getInstanceActivity(): Promise< - Response> - > { - 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>> { - return this.client - .post>("/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>> { - 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> - > { - return this.client - .post("/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>> { - let params = {}; - if (with_dismissed) { - params = Object.assign(params, { - withUnreads: with_dismissed, - }); - } - return this.client - .post>("/api/announcements", params) - .then((res) => ({ - ...res, - data: res.data.map((t) => this.converter.announcement(t)), - })); - } - - public async dismissInstanceAnnouncement(id: string): Promise> { - 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> { - await this.client.post<{}>("/api/notes/reactions/create", { - noteId: id, - reaction: emoji, - }); - return this.client - .post("/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> { - await this.client.post<{}>("/api/notes/reactions/delete", { - noteId: id, - }); - return this.client - .post("/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>> { - return this.client - .post>("/api/notes/reactions", { - noteId: id, - }) - .then((res) => ({ - ...res, - data: this.converter.reactions(res.data), - })); - } - - public async getEmojiReaction( - _id: string, - _emoji: string, - ): Promise> { - 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 deleted file mode 100644 index 299c7edd3..000000000 --- a/packages/megalodon/src/misskey/api_client.ts +++ /dev/null @@ -1,727 +0,0 @@ -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(/\r?\n/g, "
"); - - 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, "
") ?? "", - 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) : "", - text: 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, - r: { [key: string]: number }, - myReaction?: string, - ): Array => { - // Map of emoji shortcodes to image URLs. - const emojiUrls = new Map( - 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, - ): Array => { - const result: Array = []; - 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 = [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: `

${this.escapeMFM(a.title)}

${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.domain, - 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( - path: string, - params?: any, - headers?: { [key: string]: string }, - ): Promise>; - 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( - path: string, - params: any = {}, - headers: { [key: string]: string } = {}, - ): Promise> { - 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(this.baseUrl + path, bodyParams, options) - .then((resp: AxiosResponse) => { - const res: Response = { - 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 deleted file mode 100644 index c41bd3f1b..000000000 --- a/packages/megalodon/src/misskey/entities/GetAll.ts +++ /dev/null @@ -1,6 +0,0 @@ -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 deleted file mode 100644 index 95100cbf1..000000000 --- a/packages/megalodon/src/misskey/entities/announcement.ts +++ /dev/null @@ -1,10 +0,0 @@ -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 deleted file mode 100644 index 40a704b94..000000000 --- a/packages/megalodon/src/misskey/entities/app.ts +++ /dev/null @@ -1,9 +0,0 @@ -namespace MisskeyEntity { - export type App = { - id: string - name: string - callbackUrl: string - permission: Array - secret: string - } -} diff --git a/packages/megalodon/src/misskey/entities/blocking.ts b/packages/megalodon/src/misskey/entities/blocking.ts deleted file mode 100644 index 9900a777b..000000000 --- a/packages/megalodon/src/misskey/entities/blocking.ts +++ /dev/null @@ -1,10 +0,0 @@ -/// - -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 deleted file mode 100644 index 88ba60040..000000000 --- a/packages/megalodon/src/misskey/entities/createdNote.ts +++ /dev/null @@ -1,7 +0,0 @@ -/// - -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 deleted file mode 100644 index e545a465d..000000000 --- a/packages/megalodon/src/misskey/entities/emoji.ts +++ /dev/null @@ -1,9 +0,0 @@ -namespace MisskeyEntity { - export type Emoji = { - name: string - host: string | null - url: string - aliases: Array - category: string - } -} diff --git a/packages/megalodon/src/misskey/entities/favorite.ts b/packages/megalodon/src/misskey/entities/favorite.ts deleted file mode 100644 index 8ed7a54bf..000000000 --- a/packages/megalodon/src/misskey/entities/favorite.ts +++ /dev/null @@ -1,10 +0,0 @@ -/// - -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 deleted file mode 100644 index 57a2eb43d..000000000 --- a/packages/megalodon/src/misskey/entities/field.ts +++ /dev/null @@ -1,7 +0,0 @@ -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 deleted file mode 100644 index e9e29ff65..000000000 --- a/packages/megalodon/src/misskey/entities/file.ts +++ /dev/null @@ -1,20 +0,0 @@ -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 deleted file mode 100644 index bd2777b2d..000000000 --- a/packages/megalodon/src/misskey/entities/followRequest.ts +++ /dev/null @@ -1,9 +0,0 @@ -/// - -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 deleted file mode 100644 index 70ef632e1..000000000 --- a/packages/megalodon/src/misskey/entities/follower.ts +++ /dev/null @@ -1,11 +0,0 @@ -/// - -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 deleted file mode 100644 index 927a91354..000000000 --- a/packages/megalodon/src/misskey/entities/following.ts +++ /dev/null @@ -1,11 +0,0 @@ -/// - -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 deleted file mode 100644 index 6a3fe43ad..000000000 --- a/packages/megalodon/src/misskey/entities/hashtag.ts +++ /dev/null @@ -1,7 +0,0 @@ -namespace MisskeyEntity { - export type Hashtag = { - tag: string - chart: Array - usersCount: number - } -} diff --git a/packages/megalodon/src/misskey/entities/list.ts b/packages/megalodon/src/misskey/entities/list.ts deleted file mode 100644 index 8167d2981..000000000 --- a/packages/megalodon/src/misskey/entities/list.ts +++ /dev/null @@ -1,8 +0,0 @@ -namespace MisskeyEntity { - export type List = { - id: string - createdAt: string - name: string - userIds: Array - } -} diff --git a/packages/megalodon/src/misskey/entities/meta.ts b/packages/megalodon/src/misskey/entities/meta.ts deleted file mode 100644 index dc539eb0f..000000000 --- a/packages/megalodon/src/misskey/entities/meta.ts +++ /dev/null @@ -1,19 +0,0 @@ -/// - -namespace MisskeyEntity { - export type Meta = { - maintainerName: string - maintainerEmail: string - name: string - version: string - uri: string - domain: string - description: string - langs: Array - disableRegistration: boolean - disableLocalTimeline: boolean - bannerUrl: string - maxNoteTextLength: 3000 - emojis: Array - } -} diff --git a/packages/megalodon/src/misskey/entities/mute.ts b/packages/megalodon/src/misskey/entities/mute.ts deleted file mode 100644 index 3cd7ae409..000000000 --- a/packages/megalodon/src/misskey/entities/mute.ts +++ /dev/null @@ -1,10 +0,0 @@ -/// - -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 deleted file mode 100644 index 1d7207de1..000000000 --- a/packages/megalodon/src/misskey/entities/note.ts +++ /dev/null @@ -1,32 +0,0 @@ -/// -/// -/// -/// - -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 - fileIds: Array - files: Array - replyId: string | null - renoteId: string | null - uri?: string - reply?: Note - renote?: Note - viaMobile?: boolean - tags?: Array - poll?: Poll - mentions?: Array - myReaction?: string - } -} diff --git a/packages/megalodon/src/misskey/entities/notification.ts b/packages/megalodon/src/misskey/entities/notification.ts deleted file mode 100644 index c331a1ec8..000000000 --- a/packages/megalodon/src/misskey/entities/notification.ts +++ /dev/null @@ -1,17 +0,0 @@ -/// -/// - -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 deleted file mode 100644 index a3f1d971a..000000000 --- a/packages/megalodon/src/misskey/entities/poll.ts +++ /dev/null @@ -1,13 +0,0 @@ -namespace MisskeyEntity { - export type Choice = { - text: string - votes: number - isVoted: boolean - } - - export type Poll = { - multiple: boolean - expiresAt: string - choices: Array - } -} diff --git a/packages/megalodon/src/misskey/entities/reaction.ts b/packages/megalodon/src/misskey/entities/reaction.ts deleted file mode 100644 index 0c8903529..000000000 --- a/packages/megalodon/src/misskey/entities/reaction.ts +++ /dev/null @@ -1,11 +0,0 @@ -/// - -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 deleted file mode 100644 index 07653b486..000000000 --- a/packages/megalodon/src/misskey/entities/relation.ts +++ /dev/null @@ -1,12 +0,0 @@ -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 deleted file mode 100644 index 47fe9cf82..000000000 --- a/packages/megalodon/src/misskey/entities/session.ts +++ /dev/null @@ -1,6 +0,0 @@ -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 deleted file mode 100644 index 4538fb461..000000000 --- a/packages/megalodon/src/misskey/entities/state.ts +++ /dev/null @@ -1,7 +0,0 @@ -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 deleted file mode 100644 index 7f080efda..000000000 --- a/packages/megalodon/src/misskey/entities/stats.ts +++ /dev/null @@ -1,9 +0,0 @@ -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 deleted file mode 100644 index 4ea7bde7c..000000000 --- a/packages/megalodon/src/misskey/entities/user.ts +++ /dev/null @@ -1,13 +0,0 @@ -/// - -namespace MisskeyEntity { - export type User = { - id: string - name: string - username: string - host: string | null - avatarUrl: string - avatarColor: string - emojis: Array - } -} diff --git a/packages/megalodon/src/misskey/entities/userDetail.ts b/packages/megalodon/src/misskey/entities/userDetail.ts deleted file mode 100644 index 1c6d6431d..000000000 --- a/packages/megalodon/src/misskey/entities/userDetail.ts +++ /dev/null @@ -1,34 +0,0 @@ -/// -/// -/// - -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 - 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 - pinnedNotes?: Array - fields: Array - } -} diff --git a/packages/megalodon/src/misskey/entities/userDetailMe.ts b/packages/megalodon/src/misskey/entities/userDetailMe.ts deleted file mode 100644 index 2cb680863..000000000 --- a/packages/megalodon/src/misskey/entities/userDetailMe.ts +++ /dev/null @@ -1,36 +0,0 @@ -/// -/// -/// - -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 - 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 - pinnedNotes?: Array - fields: Array - alwaysMarkNsfw: boolean - lang: string | null - } -} diff --git a/packages/megalodon/src/misskey/entities/userkey.ts b/packages/megalodon/src/misskey/entities/userkey.ts deleted file mode 100644 index 5b66e95b8..000000000 --- a/packages/megalodon/src/misskey/entities/userkey.ts +++ /dev/null @@ -1,8 +0,0 @@ -/// - -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 deleted file mode 100644 index 72a80f9d9..000000000 --- a/packages/megalodon/src/misskey/entity.ts +++ /dev/null @@ -1,28 +0,0 @@ -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// - -export default MisskeyEntity; diff --git a/packages/megalodon/src/misskey/notification.ts b/packages/megalodon/src/misskey/notification.ts deleted file mode 100644 index eb7c2d23d..000000000 --- a/packages/megalodon/src/misskey/notification.ts +++ /dev/null @@ -1,18 +0,0 @@ -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 deleted file mode 100644 index 0cbfc2bfe..000000000 --- a/packages/megalodon/src/misskey/web_socket.ts +++ /dev/null @@ -1,458 +0,0 @@ -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://misskey.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 deleted file mode 100644 index 84cd23e40..000000000 --- a/packages/megalodon/src/notification.ts +++ /dev/null @@ -1,14 +0,0 @@ -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 deleted file mode 100644 index f0df721f0..000000000 --- a/packages/megalodon/src/oauth.ts +++ /dev/null @@ -1,123 +0,0 @@ -/** - * 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 deleted file mode 100644 index 2ddf2ac2e..000000000 --- a/packages/megalodon/src/parser.ts +++ /dev/null @@ -1,94 +0,0 @@ -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 = 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 deleted file mode 100644 index fadbcf084..000000000 --- a/packages/megalodon/src/proxy_config.ts +++ /dev/null @@ -1,92 +0,0 @@ -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 deleted file mode 100644 index 13fd8ab57..000000000 --- a/packages/megalodon/src/response.ts +++ /dev/null @@ -1,8 +0,0 @@ -type Response = { - 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 deleted file mode 100644 index 896453550..000000000 --- a/packages/megalodon/test/integration/megalodon.spec.ts +++ /dev/null @@ -1,27 +0,0 @@ -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 deleted file mode 100644 index 0ec128842..000000000 --- a/packages/megalodon/test/integration/misskey.spec.ts +++ /dev/null @@ -1,204 +0,0 @@ -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> = { - 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 deleted file mode 100644 index 23740fa91..000000000 --- a/packages/megalodon/test/unit/misskey/api_client.spec.ts +++ /dev/null @@ -1,233 +0,0 @@ -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
fuga
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.text).toEqual(plainContent) - expect(megalodonStatus.content).toEqual(content) - }) - it('html tags should be escaped', () => { - const plainContent = '

hoge\nfuga\nfuga

' - const content = '<p>hoge
fuga
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.text).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 deleted file mode 100644 index c748aae70..000000000 --- a/packages/megalodon/test/unit/parser.spec.ts +++ /dev/null @@ -1,152 +0,0 @@ -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', - text: '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 deleted file mode 100644 index 5a9bfbde9..000000000 --- a/packages/megalodon/tsconfig.json +++ /dev/null @@ -1,64 +0,0 @@ -{ - "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/rome.json b/rome.json index 9aae3a52e..0a7d38e7c 100644 --- a/rome.json +++ b/rome.json @@ -11,11 +11,8 @@ "packages/iceshrimp-js/api-extractor.json", "packages/*/tsconfig.json", "packages/*/built", - "packages/megalodon/lib", "packages/*/package-lock.json", "packages/backend/src/server/web/manifest.ts", - "packages/megalodon/src/misskey/web_socket.ts", - "packages/megalodon/src/misskey/api_client.ts", "packages/backend/built/", "*/model.json", "*.md", diff --git a/scripts/clean-all.js b/scripts/clean-all.js index 5725724c3..9a6234426 100644 --- a/scripts/clean-all.js +++ b/scripts/clean-all.js @@ -37,14 +37,6 @@ 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 778fb193a..e97f9cb19 100644 --- a/scripts/clean.js +++ b/scripts/clean.js @@ -19,9 +19,5 @@ 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 }); })(); diff --git a/yarn.lock b/yarn.lock index 9d5ebe68c..a3b4628c8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -38,7 +38,7 @@ __metadata: languageName: node linkType: hard -"@babel/core@npm:^7.1.0, @babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.14.6, @babel/core@npm:^7.22.9, @babel/core@npm:^7.7.2, @babel/core@npm:^7.8.0": +"@babel/core@npm:^7.1.0, @babel/core@npm:^7.12.3, @babel/core@npm:^7.14.6, @babel/core@npm:^7.22.9, @babel/core@npm:^7.7.2, @babel/core@npm:^7.8.0": version: 7.22.9 resolution: "@babel/core@npm:7.22.9" dependencies: @@ -307,17 +307,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-jsx@npm:^7.7.2": - version: 7.22.5 - resolution: "@babel/plugin-syntax-jsx@npm:7.22.5" - dependencies: - "@babel/helper-plugin-utils": ^7.22.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8829d30c2617ab31393d99cec2978e41f014f4ac6f01a1cecf4c4dd8320c3ec12fdc3ce121126b2d8d32f6887e99ca1a0bad53dedb1e6ad165640b92b24980ce - languageName: node - linkType: hard - "@babel/plugin-syntax-logical-assignment-operators@npm:^7.8.3": version: 7.10.4 resolution: "@babel/plugin-syntax-logical-assignment-operators@npm:7.10.4" @@ -1198,20 +1187,6 @@ __metadata: languageName: node linkType: hard -"@jest/console@npm:^29.6.2": - version: 29.6.2 - resolution: "@jest/console@npm:29.6.2" - dependencies: - "@jest/types": ^29.6.1 - "@types/node": "*" - chalk: ^4.0.0 - jest-message-util: ^29.6.2 - jest-util: ^29.6.2 - slash: ^3.0.0 - checksum: 1198667bda0430770c3e9b92681c0ee9f8346394574071c633f306192ac5f08e12972d6a5fdf03eb0d441051c8439bce0f6f9f355dc60d98777a35328331ba2e - languageName: node - linkType: hard - "@jest/core@npm:^27.5.1": version: 27.5.1 resolution: "@jest/core@npm:27.5.1" @@ -1253,47 +1228,6 @@ __metadata: languageName: node linkType: hard -"@jest/core@npm:^29.6.2": - version: 29.6.2 - resolution: "@jest/core@npm:29.6.2" - dependencies: - "@jest/console": ^29.6.2 - "@jest/reporters": ^29.6.2 - "@jest/test-result": ^29.6.2 - "@jest/transform": ^29.6.2 - "@jest/types": ^29.6.1 - "@types/node": "*" - ansi-escapes: ^4.2.1 - chalk: ^4.0.0 - ci-info: ^3.2.0 - exit: ^0.1.2 - graceful-fs: ^4.2.9 - jest-changed-files: ^29.5.0 - jest-config: ^29.6.2 - jest-haste-map: ^29.6.2 - jest-message-util: ^29.6.2 - jest-regex-util: ^29.4.3 - jest-resolve: ^29.6.2 - jest-resolve-dependencies: ^29.6.2 - jest-runner: ^29.6.2 - jest-runtime: ^29.6.2 - jest-snapshot: ^29.6.2 - jest-util: ^29.6.2 - jest-validate: ^29.6.2 - jest-watcher: ^29.6.2 - micromatch: ^4.0.4 - pretty-format: ^29.6.2 - slash: ^3.0.0 - strip-ansi: ^6.0.0 - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - checksum: 6bbb3886430248c0092f275b1b946a701406732f7442c04e63e4ee2297c2ec02d8ceeec508a202e08128197699b2bcddbae2c2f74adb2cf30f2f0d7d94a7c2dc - languageName: node - linkType: hard - "@jest/environment@npm:^27.5.1": version: 27.5.1 resolution: "@jest/environment@npm:27.5.1" @@ -1306,37 +1240,6 @@ __metadata: languageName: node linkType: hard -"@jest/environment@npm:^29.6.2": - version: 29.6.2 - resolution: "@jest/environment@npm:29.6.2" - dependencies: - "@jest/fake-timers": ^29.6.2 - "@jest/types": ^29.6.1 - "@types/node": "*" - jest-mock: ^29.6.2 - checksum: c7de0e4c0d9166e02d0eb166574e05ec460e1db3b69d6476e63244edd52d7c917e6876af55fe723ff3086f52c0b1869dec60654054735a7a48c9d4ac43af2a25 - languageName: node - linkType: hard - -"@jest/expect-utils@npm:^29.6.2": - version: 29.6.2 - resolution: "@jest/expect-utils@npm:29.6.2" - dependencies: - jest-get-type: ^29.4.3 - checksum: 0decf2009aa3735f9df469e78ce1721c2815e4278439887e0cf0321ca8979541a22515d114a59b2445a6cd70a074b09dc9c00b5e7b3b3feac5174b9c4a78b2e1 - languageName: node - linkType: hard - -"@jest/expect@npm:^29.6.2": - version: 29.6.2 - resolution: "@jest/expect@npm:29.6.2" - dependencies: - expect: ^29.6.2 - jest-snapshot: ^29.6.2 - checksum: bd2d88a4e7c5420079c239afef341ec53dc7e353816cd13acbb42631a31fd321fe58677bb43a4dba851028f4c7e31da7980314e9094cd5b348896cb6cd3d42b2 - languageName: node - linkType: hard - "@jest/fake-timers@npm:^27.5.1": version: 27.5.1 resolution: "@jest/fake-timers@npm:27.5.1" @@ -1351,20 +1254,6 @@ __metadata: languageName: node linkType: hard -"@jest/fake-timers@npm:^29.6.2": - version: 29.6.2 - resolution: "@jest/fake-timers@npm:29.6.2" - dependencies: - "@jest/types": ^29.6.1 - "@sinonjs/fake-timers": ^10.0.2 - "@types/node": "*" - jest-message-util: ^29.6.2 - jest-mock: ^29.6.2 - jest-util: ^29.6.2 - checksum: 1abcda02f22d2ba32e178b7ab80a9180235a6c75ec9faef33324627b19a70dad64889a9ea49b8f07230e14a6e683b9120542c6d1d6b2ecaf937f4efde32dad88 - languageName: node - linkType: hard - "@jest/globals@npm:^27.5.1": version: 27.5.1 resolution: "@jest/globals@npm:27.5.1" @@ -1376,18 +1265,6 @@ __metadata: languageName: node linkType: hard -"@jest/globals@npm:^29.6.2": - version: 29.6.2 - resolution: "@jest/globals@npm:29.6.2" - dependencies: - "@jest/environment": ^29.6.2 - "@jest/expect": ^29.6.2 - "@jest/types": ^29.6.1 - jest-mock: ^29.6.2 - checksum: aa4a54f19cc025205bc696546940e1fe9c752c2d4d825852088aa76d44677ebba1ec66fabb78e615480cff23a06a70b5a3f893ab5163d901cdfa0d2267870b10 - languageName: node - linkType: hard - "@jest/reporters@npm:^27.5.1": version: 27.5.1 resolution: "@jest/reporters@npm:27.5.1" @@ -1426,43 +1303,6 @@ __metadata: languageName: node linkType: hard -"@jest/reporters@npm:^29.6.2": - version: 29.6.2 - resolution: "@jest/reporters@npm:29.6.2" - dependencies: - "@bcoe/v8-coverage": ^0.2.3 - "@jest/console": ^29.6.2 - "@jest/test-result": ^29.6.2 - "@jest/transform": ^29.6.2 - "@jest/types": ^29.6.1 - "@jridgewell/trace-mapping": ^0.3.18 - "@types/node": "*" - chalk: ^4.0.0 - collect-v8-coverage: ^1.0.0 - exit: ^0.1.2 - glob: ^7.1.3 - graceful-fs: ^4.2.9 - istanbul-lib-coverage: ^3.0.0 - istanbul-lib-instrument: ^5.1.0 - istanbul-lib-report: ^3.0.0 - istanbul-lib-source-maps: ^4.0.0 - istanbul-reports: ^3.1.3 - jest-message-util: ^29.6.2 - jest-util: ^29.6.2 - jest-worker: ^29.6.2 - slash: ^3.0.0 - string-length: ^4.0.1 - strip-ansi: ^6.0.0 - v8-to-istanbul: ^9.0.1 - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - checksum: 7cf880d0730cee7d24ee96928003ef6946bf93423b0ae9a2edb53cae2c231b8ac50ec264f48a73744e3f11ca319cd414edacf99b2e7bf37cd72fe0b362090dd1 - languageName: node - linkType: hard - "@jest/schemas@npm:^28.1.3": version: 28.1.3 resolution: "@jest/schemas@npm:28.1.3" @@ -1492,17 +1332,6 @@ __metadata: languageName: node linkType: hard -"@jest/source-map@npm:^29.6.0": - version: 29.6.0 - resolution: "@jest/source-map@npm:29.6.0" - dependencies: - "@jridgewell/trace-mapping": ^0.3.18 - callsites: ^3.0.0 - graceful-fs: ^4.2.9 - checksum: 9c6c40387410bb70b2fae8124287fc28f6bdd1b2d7f24348e8611e1bb638b404518228a4ce64a582365b589c536ae8e7ebab0126cef59a87874b71061d19783b - languageName: node - linkType: hard - "@jest/test-result@npm:^27.5.1": version: 27.5.1 resolution: "@jest/test-result@npm:27.5.1" @@ -1515,18 +1344,6 @@ __metadata: languageName: node linkType: hard -"@jest/test-result@npm:^29.6.2": - version: 29.6.2 - resolution: "@jest/test-result@npm:29.6.2" - dependencies: - "@jest/console": ^29.6.2 - "@jest/types": ^29.6.1 - "@types/istanbul-lib-coverage": ^2.0.0 - collect-v8-coverage: ^1.0.0 - checksum: 8aff37f18c8d2df4d9f453d57ec018a6479eb697fabcf74b1ca06e34553da1d7a2b85580a290408ba0b02e58543263244a2cb065c7c7180c8d8180cc78444fbd - languageName: node - linkType: hard - "@jest/test-sequencer@npm:^27.5.1": version: 27.5.1 resolution: "@jest/test-sequencer@npm:27.5.1" @@ -1539,18 +1356,6 @@ __metadata: languageName: node linkType: hard -"@jest/test-sequencer@npm:^29.6.2": - version: 29.6.2 - resolution: "@jest/test-sequencer@npm:29.6.2" - dependencies: - "@jest/test-result": ^29.6.2 - graceful-fs: ^4.2.9 - jest-haste-map: ^29.6.2 - slash: ^3.0.0 - checksum: 12dc2577e45eeb98b85d1769846b7d6effa536907986ad3c4cbd014df9e24431a564cc8cd94603332e4b1f9bfb421371883efc6a5085b361a52425ffc2a52dc6 - languageName: node - linkType: hard - "@jest/transform@npm:^27.5.1": version: 27.5.1 resolution: "@jest/transform@npm:27.5.1" @@ -1574,29 +1379,6 @@ __metadata: languageName: node linkType: hard -"@jest/transform@npm:^29.6.2": - version: 29.6.2 - resolution: "@jest/transform@npm:29.6.2" - dependencies: - "@babel/core": ^7.11.6 - "@jest/types": ^29.6.1 - "@jridgewell/trace-mapping": ^0.3.18 - babel-plugin-istanbul: ^6.1.1 - chalk: ^4.0.0 - convert-source-map: ^2.0.0 - fast-json-stable-stringify: ^2.1.0 - graceful-fs: ^4.2.9 - jest-haste-map: ^29.6.2 - jest-regex-util: ^29.4.3 - jest-util: ^29.6.2 - micromatch: ^4.0.4 - pirates: ^4.0.4 - slash: ^3.0.0 - write-file-atomic: ^4.0.2 - checksum: ffb8c3c344cd48bedadec295d9c436737eccc39c1f0868aa9753b76397b33b2e5b121058af6f287ba6f2036181137e37df1212334bfa9d9a712986a4518cdc18 - languageName: node - linkType: hard - "@jest/types@npm:^27.5.1": version: 27.5.1 resolution: "@jest/types@npm:27.5.1" @@ -1610,20 +1392,6 @@ __metadata: languageName: node linkType: hard -"@jest/types@npm:^29.6.1": - version: 29.6.1 - resolution: "@jest/types@npm:29.6.1" - dependencies: - "@jest/schemas": ^29.6.0 - "@types/istanbul-lib-coverage": ^2.0.0 - "@types/istanbul-reports": ^3.0.0 - "@types/node": "*" - "@types/yargs": ^17.0.8 - chalk: ^4.0.0 - checksum: 89fc1ccf71a84fe0da643e0675b1cfe6a6f19ea72e935b2ab1dbdb56ec547e94433fb59b3536d3832a6e156c077865b7176fe9dae707dab9c3d2f9405ba6233c - languageName: node - linkType: hard - "@jridgewell/gen-mapping@npm:^0.3.0, @jridgewell/gen-mapping@npm:^0.3.2": version: 0.3.3 resolution: "@jridgewell/gen-mapping@npm:0.3.3" @@ -1690,7 +1458,7 @@ __metadata: languageName: node linkType: hard -"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.17, @jridgewell/trace-mapping@npm:^0.3.18, @jridgewell/trace-mapping@npm:^0.3.9": +"@jridgewell/trace-mapping@npm:^0.3.17, @jridgewell/trace-mapping@npm:^0.3.9": version: 0.3.18 resolution: "@jridgewell/trace-mapping@npm:0.3.18" dependencies: @@ -2480,15 +2248,6 @@ __metadata: languageName: node linkType: hard -"@sinonjs/commons@npm:^3.0.0": - version: 3.0.0 - resolution: "@sinonjs/commons@npm:3.0.0" - dependencies: - type-detect: 4.0.8 - checksum: b4b5b73d4df4560fb8c0c7b38c7ad4aeabedd362f3373859d804c988c725889cde33550e4bcc7cd316a30f5152a2d1d43db71b6d0c38f5feef71fd8d016763f8 - languageName: node - linkType: hard - "@sinonjs/fake-timers@npm:9.1.2": version: 9.1.2 resolution: "@sinonjs/fake-timers@npm:9.1.2" @@ -2498,15 +2257,6 @@ __metadata: languageName: node linkType: hard -"@sinonjs/fake-timers@npm:^10.0.2": - version: 10.3.0 - resolution: "@sinonjs/fake-timers@npm:10.3.0" - dependencies: - "@sinonjs/commons": ^3.0.0 - checksum: 614d30cb4d5201550c940945d44c9e0b6d64a888ff2cd5b357f95ad6721070d6b8839cd10e15b76bf5e14af0bcc1d8f9ec00d49a46318f1f669a4bec1d7f3148 - languageName: node - linkType: hard - "@sinonjs/fake-timers@npm:^8.0.1": version: 8.1.0 resolution: "@sinonjs/fake-timers@npm:8.1.0" @@ -3122,13 +2872,6 @@ __metadata: languageName: node linkType: hard -"@types/core-js@npm:^2.5.0": - version: 2.5.5 - resolution: "@types/core-js@npm:2.5.5" - checksum: 54eb91dc52206d8e524771cd079be4bed6a41947d08183a7954df7a3dc25ae21c8b7176143dc7203df82a6e5ff1df8998edc8d407c4a082bdbf0ede35369c5c3 - languageName: node - linkType: hard - "@types/disposable-email-domains@npm:^1.0.1": version: 1.0.4 resolution: "@types/disposable-email-domains@npm:1.0.4" @@ -3227,15 +2970,6 @@ __metadata: languageName: node linkType: hard -"@types/form-data@npm:^2.5.0": - version: 2.5.0 - resolution: "@types/form-data@npm:2.5.0" - dependencies: - form-data: "*" - checksum: c3f6c8932726970d49d67a23410d5eef0e1ad0be418163ccc3d73a4cbaa0dcd71e0e29acbe2779aab85ed8f47cb0e8f6b67028480da3b0f7d074c5a3416b2400 - languageName: node - linkType: hard - "@types/formidable@npm:^2.0.5": version: 2.0.6 resolution: "@types/formidable@npm:2.0.6" @@ -3266,7 +3000,7 @@ __metadata: languageName: node linkType: hard -"@types/graceful-fs@npm:^4.1.2, @types/graceful-fs@npm:^4.1.3": +"@types/graceful-fs@npm:^4.1.2": version: 4.1.6 resolution: "@types/graceful-fs@npm:4.1.6" dependencies: @@ -3352,16 +3086,6 @@ __metadata: languageName: node linkType: hard -"@types/jest@npm:^29.4.0": - version: 29.5.3 - resolution: "@types/jest@npm:29.5.3" - dependencies: - expect: ^29.0.0 - pretty-format: ^29.0.0 - checksum: e36bb92e0b9e5ea7d6f8832baa42f087fc1697f6cd30ec309a07ea4c268e06ec460f1f0cfd2581daf5eff5763475190ec1ad8ac6520c49ccfe4f5c0a48bfa676 - languageName: node - linkType: hard - "@types/js-yaml@npm:4.0.5": version: 4.0.5 resolution: "@types/js-yaml@npm:4.0.5" @@ -3699,7 +3423,7 @@ __metadata: languageName: node linkType: hard -"@types/oauth@npm:0.9.1, @types/oauth@npm:^0.9.0": +"@types/oauth@npm:0.9.1": version: 0.9.1 resolution: "@types/oauth@npm:0.9.1" dependencies: @@ -3708,13 +3432,6 @@ __metadata: languageName: node linkType: hard -"@types/object-assign-deep@npm:^0.4.0": - version: 0.4.0 - resolution: "@types/object-assign-deep@npm:0.4.0" - checksum: 012429bfa3b42e8113068697a512dfaee77965377c327ab831fd092d0b6c781de6116a0b60757b22e871ff8cd9d6970ba9e362e42eb4dfe00dcd8eba6ee9272b - languageName: node - linkType: hard - "@types/offscreencanvas@npm:~2019.3.0": version: 2019.3.0 resolution: "@types/offscreencanvas@npm:2019.3.0" @@ -3729,13 +3446,6 @@ __metadata: languageName: node linkType: hard -"@types/parse-link-header@npm:^2.0.0": - version: 2.0.1 - resolution: "@types/parse-link-header@npm:2.0.1" - checksum: f76678612511365aefc23704f00f3262fcb1d6bd9c4dd83f783a38e50e3ccf26615f9a62c757952cab5af6f2bd8b3b1763ce391376458afce5fe47c6fe2b80e1 - languageName: node - linkType: hard - "@types/picomatch@npm:*": version: 2.3.0 resolution: "@types/picomatch@npm:2.3.0" @@ -3984,7 +3694,7 @@ __metadata: languageName: node linkType: hard -"@types/uuid@npm:9.0.2, @types/uuid@npm:^9.0.0": +"@types/uuid@npm:9.0.2": version: 9.0.2 resolution: "@types/uuid@npm:9.0.2" checksum: 1754bcf3444e1e3aeadd6e774fc328eb53bc956665e2e8fb6ec127aa8e1f43d9a224c3d22a9a6233dca8dd81a12dc7fed4d84b8876dd5ec82d40f574f7ff8b68 @@ -4044,7 +3754,7 @@ __metadata: languageName: node linkType: hard -"@types/ws@npm:8.5.5, @types/ws@npm:^8.5.4": +"@types/ws@npm:8.5.5": version: 8.5.5 resolution: "@types/ws@npm:8.5.5" dependencies: @@ -4069,15 +3779,6 @@ __metadata: languageName: node linkType: hard -"@types/yargs@npm:^17.0.8": - version: 17.0.24 - resolution: "@types/yargs@npm:17.0.24" - dependencies: - "@types/yargs-parser": "*" - checksum: 5f3ac4dc4f6e211c1627340160fbe2fd247ceba002190da6cf9155af1798450501d628c9165a183f30a224fc68fa5e700490d740ff4c73e2cdef95bc4e8ba7bf - languageName: node - linkType: hard - "@types/yauzl@npm:^2.9.1": version: 2.10.0 resolution: "@types/yauzl@npm:2.10.0" @@ -4087,7 +3788,7 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/eslint-plugin@npm:^5.36.2, @typescript-eslint/eslint-plugin@npm:^5.49.0": +"@typescript-eslint/eslint-plugin@npm:^5.36.2": version: 5.62.0 resolution: "@typescript-eslint/eslint-plugin@npm:5.62.0" dependencies: @@ -4137,7 +3838,7 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/parser@npm:^5.36.2, @typescript-eslint/parser@npm:^5.49.0": +"@typescript-eslint/parser@npm:^5.36.2": version: 5.62.0 resolution: "@typescript-eslint/parser@npm:5.62.0" dependencies: @@ -4936,13 +4637,6 @@ __metadata: languageName: node linkType: hard -"ansi-sequence-parser@npm:^1.1.0": - version: 1.1.1 - resolution: "ansi-sequence-parser@npm:1.1.1" - checksum: ead5b15c596e8e85ca02951a844366c6776769dcc9fd1bd3a0db11bb21364554822c6a439877fb599e7e1ffa0b5f039f1e5501423950457f3dcb2f480c30b188 - languageName: node - linkType: hard - "ansi-styles@npm:^2.2.1": version: 2.2.1 resolution: "ansi-styles@npm:2.2.1" @@ -5525,17 +5219,6 @@ __metadata: languageName: node linkType: hard -"axios@npm:1.2.2": - version: 1.2.2 - resolution: "axios@npm:1.2.2" - dependencies: - follow-redirects: ^1.15.0 - form-data: ^4.0.0 - proxy-from-env: ^1.1.0 - checksum: 6e357491b38426c5720f7328ecbafca3c643b03952c052d787570672ce7a9365717c2d64db4ce97cfbee3f830fa405101e360e14d0857ef7f96a9f4d814c4e03 - languageName: node - linkType: hard - "axios@npm:^0.24.0": version: 0.24.0 resolution: "axios@npm:0.24.0" @@ -5606,23 +5289,6 @@ __metadata: languageName: node linkType: hard -"babel-jest@npm:^29.6.2": - version: 29.6.2 - resolution: "babel-jest@npm:29.6.2" - dependencies: - "@jest/transform": ^29.6.2 - "@types/babel__core": ^7.1.14 - babel-plugin-istanbul: ^6.1.1 - babel-preset-jest: ^29.5.0 - chalk: ^4.0.0 - graceful-fs: ^4.2.9 - slash: ^3.0.0 - peerDependencies: - "@babel/core": ^7.8.0 - checksum: 3936b5d6ed6f08670c830ed919e38a4a593d0643b8e30fdeb16f4588b262ea5255fb96fd1849c02fba0b082ecfa4e788ce9a128ad1b9e654d46aac09c3a55504 - languageName: node - linkType: hard - "babel-plugin-istanbul@npm:^6.1.1": version: 6.1.1 resolution: "babel-plugin-istanbul@npm:6.1.1" @@ -5648,18 +5314,6 @@ __metadata: languageName: node linkType: hard -"babel-plugin-jest-hoist@npm:^29.5.0": - version: 29.5.0 - resolution: "babel-plugin-jest-hoist@npm:29.5.0" - dependencies: - "@babel/template": ^7.3.3 - "@babel/types": ^7.3.3 - "@types/babel__core": ^7.1.14 - "@types/babel__traverse": ^7.0.6 - checksum: 099b5254073b6bc985b6d2d045ad26fb8ed30ff8ae6404c4fe8ee7cd0e98a820f69e3dfb871c7c65aae0f4b65af77046244c07bb92d49ef9005c90eedf681539 - languageName: node - linkType: hard - "babel-preset-current-node-syntax@npm:^1.0.0": version: 1.0.1 resolution: "babel-preset-current-node-syntax@npm:1.0.1" @@ -5694,18 +5348,6 @@ __metadata: languageName: node linkType: hard -"babel-preset-jest@npm:^29.5.0": - version: 29.5.0 - resolution: "babel-preset-jest@npm:29.5.0" - dependencies: - babel-plugin-jest-hoist: ^29.5.0 - babel-preset-current-node-syntax: ^1.0.0 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 5566ca2762766c9319b4973d018d2fa08c0fcf6415c72cc54f4c8e7199e851ea8f5e6c6730f03ed7ed44fc8beefa959dd15911f2647dee47c615ff4faeddb1ad - languageName: node - linkType: hard - "babel-walk@npm:3.0.0-canary-5": version: 3.0.0-canary-5 resolution: "babel-walk@npm:3.0.0-canary-5" @@ -5855,7 +5497,6 @@ __metadata: koa-send: 5.0.1 koa-slow: 2.1.0 koa-views: 7.0.2 - megalodon: "workspace:*" meilisearch: 0.33.0 mfm-js: 0.23.3 mime-types: 2.1.35 @@ -7523,13 +7164,6 @@ __metadata: languageName: node linkType: hard -"convert-source-map@npm:^2.0.0": - version: 2.0.0 - resolution: "convert-source-map@npm:2.0.0" - checksum: 63ae9933be5a2b8d4509daca5124e20c14d023c820258e484e32dc324d34c2754e71297c94a05784064ad27615037ef677e3f0c00469fb55f409d2bb21261035 - languageName: node - linkType: hard - "cookies@npm:~0.8.0": version: 0.8.0 resolution: "cookies@npm:0.8.0" @@ -7961,7 +7595,7 @@ __metadata: languageName: node linkType: hard -"dayjs@npm:^1.10.4, dayjs@npm:^1.11.7": +"dayjs@npm:^1.10.4": version: 1.11.9 resolution: "dayjs@npm:1.11.9" checksum: a4844d83dc87f921348bb9b1b93af851c51e6f71fa259604809cfe1b49d1230e6b0212dab44d1cb01994c096ad3a77ea1cf18fa55154da6efcc9d3610526ac38 @@ -8134,18 +7768,6 @@ __metadata: languageName: node linkType: hard -"dedent@npm:^1.0.0": - version: 1.2.0 - resolution: "dedent@npm:1.2.0" - peerDependencies: - babel-plugin-macros: ^3.1.0 - peerDependenciesMeta: - babel-plugin-macros: - optional: true - checksum: 239f12ddd443a1a59b210af10c9b30985bb0c177403a53353d3c450d13acec2e532ef03bc3ba31aee1ea6cfa54c865edcd5fa249a2f34ad447e68bdb6717e67b - languageName: node - linkType: hard - "deep-email-validator@npm:0.1.21": version: 0.1.21 resolution: "deep-email-validator@npm:0.1.21" @@ -8661,13 +8283,6 @@ __metadata: languageName: node linkType: hard -"emittery@npm:^0.13.1": - version: 0.13.1 - resolution: "emittery@npm:0.13.1" - checksum: 2b089ab6306f38feaabf4f6f02792f9ec85fc054fda79f44f6790e61bbf6bc4e1616afb9b232e0c5ec5289a8a452f79bfa6d905a6fd64e94b49981f0934001c6 - languageName: node - linkType: hard - "emittery@npm:^0.8.1": version: 0.8.1 resolution: "emittery@npm:0.8.1" @@ -9108,18 +8723,6 @@ __metadata: languageName: node linkType: hard -"eslint-config-standard@npm:^16.0.3": - version: 16.0.3 - resolution: "eslint-config-standard@npm:16.0.3" - 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 - checksum: 6ae193634f289ae95dbbf2291dc1e7c5bedef2425c594db07ec58476c902e6eb51a2b1c9cd2bad3772e921f5515dc2f8fb5447f7a56c20c99801ef1296c3bfef - languageName: node - linkType: hard - "eslint-formatter-pretty@npm:^4.1.0": version: 4.1.0 resolution: "eslint-formatter-pretty@npm:4.1.0" @@ -9171,18 +8774,6 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-es@npm:^3.0.0": - version: 3.0.1 - resolution: "eslint-plugin-es@npm:3.0.1" - dependencies: - eslint-utils: ^2.0.0 - regexpp: ^3.0.0 - peerDependencies: - eslint: ">=4.19.1" - checksum: e57592c52301ee8ddc296ae44216df007f3a870bcb3be8d1fbdb909a1d3a3efe3fa3785de02066f9eba1d6466b722d3eb3cc3f8b75b3cf6a1cbded31ac6298e4 - languageName: node - linkType: hard - "eslint-plugin-es@npm:^4.1.0": version: 4.1.0 resolution: "eslint-plugin-es@npm:4.1.0" @@ -9332,22 +8923,6 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-node@npm:^11.0.0": - version: 11.1.0 - resolution: "eslint-plugin-node@npm:11.1.0" - dependencies: - eslint-plugin-es: ^3.0.0 - eslint-utils: ^2.0.0 - ignore: ^5.1.1 - minimatch: ^3.0.4 - resolve: ^1.10.1 - semver: ^6.1.0 - peerDependencies: - eslint: ">=5.16.0" - checksum: 5804c4f8a6e721f183ef31d46fbe3b4e1265832f352810060e0502aeac7de034df83352fc88643b19641bb2163f2587f1bd4119aff0fd21e8d98c57c450e013b - languageName: node - linkType: hard - "eslint-plugin-prettier@npm:^4.2.1": version: 4.2.1 resolution: "eslint-plugin-prettier@npm:4.2.1" @@ -9400,15 +8975,6 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-standard@npm:^5.0.0": - version: 5.0.0 - resolution: "eslint-plugin-standard@npm:5.0.0" - peerDependencies: - eslint: ">=5.0.0" - checksum: 58f1aba8915560535604bdfe4bf96dd86cdf5507cb8cec69345b0fba4afccf2af513336ffff0be5492f087c45fc492f4cde422857f98b9e88b2f64e25bb9316c - languageName: node - linkType: hard - "eslint-plugin-tsdoc@npm:^0.2.16, eslint-plugin-tsdoc@npm:^0.2.17": version: 0.2.17 resolution: "eslint-plugin-tsdoc@npm:0.2.17" @@ -9593,7 +9159,7 @@ __metadata: languageName: node linkType: hard -"eslint@npm:^8.32.0, eslint@npm:^8.44.0, eslint@npm:^8.45.0": +"eslint@npm:^8.44.0, eslint@npm:^8.45.0": version: 8.45.0 resolution: "eslint@npm:8.45.0" dependencies: @@ -9932,20 +9498,6 @@ __metadata: languageName: node linkType: hard -"expect@npm:^29.0.0, expect@npm:^29.6.2": - version: 29.6.2 - resolution: "expect@npm:29.6.2" - dependencies: - "@jest/expect-utils": ^29.6.2 - "@types/node": "*" - jest-get-type: ^29.4.3 - jest-matcher-utils: ^29.6.2 - jest-message-util: ^29.6.2 - jest-util: ^29.6.2 - checksum: 71f7b0c560e58bf6d27e0fded261d4bdb7ef81552a6bb4bd1ee09ce7a1f7dca67fbf83cf9b07a6645a88ef52e65085a0dcbe17f6c063b53ff7c2f0f3ea4ef69e - languageName: node - linkType: hard - "exponential-backoff@npm:^3.1.1": version: 3.1.1 resolution: "exponential-backoff@npm:3.1.1" @@ -10107,7 +9659,7 @@ __metadata: languageName: node linkType: hard -"fast-json-stable-stringify@npm:2.x, fast-json-stable-stringify@npm:^2.0.0, fast-json-stable-stringify@npm:^2.1.0": +"fast-json-stable-stringify@npm:2.x, fast-json-stable-stringify@npm:^2.0.0": version: 2.1.0 resolution: "fast-json-stable-stringify@npm:2.1.0" checksum: b191531e36c607977e5b1c47811158733c34ccb3bfde92c44798929e9b4154884378536d26ad90dfecd32e1ffc09c545d23535ad91b3161a27ddbb8ebe0cbecb @@ -10533,17 +10085,6 @@ __metadata: languageName: node linkType: hard -"form-data@npm:*, form-data@npm:^4.0.0": - version: 4.0.0 - resolution: "form-data@npm:4.0.0" - dependencies: - asynckit: ^0.4.0 - combined-stream: ^1.0.8 - mime-types: ^2.1.12 - checksum: 01135bf8675f9d5c61ff18e2e2932f719ca4de964e3be90ef4c36aacfc7b9cb2fceb5eca0b7e0190e3383fe51c5b37f4cb80b62ca06a99aaabfcfd6ac7c9328c - languageName: node - linkType: hard - "form-data@npm:^3.0.0": version: 3.0.1 resolution: "form-data@npm:3.0.1" @@ -10555,6 +10096,17 @@ __metadata: languageName: node linkType: hard +"form-data@npm:^4.0.0": + version: 4.0.0 + resolution: "form-data@npm:4.0.0" + dependencies: + asynckit: ^0.4.0 + combined-stream: ^1.0.8 + mime-types: ^2.1.12 + checksum: 01135bf8675f9d5c61ff18e2e2932f719ca4de964e3be90ef4c36aacfc7b9cb2fceb5eca0b7e0190e3383fe51c5b37f4cb80b62ca06a99aaabfcfd6ac7c9328c + languageName: node + linkType: hard + "form-data@npm:~2.3.2": version: 2.3.3 resolution: "form-data@npm:2.3.3" @@ -13002,16 +12554,6 @@ __metadata: languageName: node linkType: hard -"jest-changed-files@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-changed-files@npm:29.5.0" - dependencies: - execa: ^5.0.0 - p-limit: ^3.1.0 - checksum: a67a7cb3c11f8f92bd1b7c79e84f724cbd11a9ad51f3cdadafe3ce7ee3c79ee50dbea128f920f5fddc807e9e4e83f5462143094391feedd959a77dd20ab96cf3 - languageName: node - linkType: hard - "jest-circus@npm:^27.5.1": version: 27.5.1 resolution: "jest-circus@npm:27.5.1" @@ -13039,34 +12581,6 @@ __metadata: languageName: node linkType: hard -"jest-circus@npm:^29.6.2": - version: 29.6.2 - resolution: "jest-circus@npm:29.6.2" - dependencies: - "@jest/environment": ^29.6.2 - "@jest/expect": ^29.6.2 - "@jest/test-result": ^29.6.2 - "@jest/types": ^29.6.1 - "@types/node": "*" - chalk: ^4.0.0 - co: ^4.6.0 - dedent: ^1.0.0 - is-generator-fn: ^2.0.0 - jest-each: ^29.6.2 - jest-matcher-utils: ^29.6.2 - jest-message-util: ^29.6.2 - jest-runtime: ^29.6.2 - jest-snapshot: ^29.6.2 - jest-util: ^29.6.2 - p-limit: ^3.1.0 - pretty-format: ^29.6.2 - pure-rand: ^6.0.0 - slash: ^3.0.0 - stack-utils: ^2.0.3 - checksum: 4f5a96a68c3c808c3d5a9279a2f39a2937386e2cebba5096971f267d79562ce2133a13bc05356a39f8f1ba68fcfe1eb39c4572b3fb0f91affbd932950e89c1e3 - languageName: node - linkType: hard - "jest-cli@npm:^27.5.1": version: 27.5.1 resolution: "jest-cli@npm:27.5.1" @@ -13094,33 +12608,6 @@ __metadata: languageName: node linkType: hard -"jest-cli@npm:^29.6.2": - version: 29.6.2 - resolution: "jest-cli@npm:29.6.2" - dependencies: - "@jest/core": ^29.6.2 - "@jest/test-result": ^29.6.2 - "@jest/types": ^29.6.1 - chalk: ^4.0.0 - exit: ^0.1.2 - graceful-fs: ^4.2.9 - import-local: ^3.0.2 - jest-config: ^29.6.2 - jest-util: ^29.6.2 - jest-validate: ^29.6.2 - prompts: ^2.0.1 - yargs: ^17.3.1 - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - bin: - jest: bin/jest.js - checksum: 0b7b09ae4bd327caf1981eac5a14679ddda3c5c836c9f8ea0ecfe1e5e10e9a39a5ed783fa38d25383604c4d3405595e74b391d955e99aea7e51acb41a59ea108 - languageName: node - linkType: hard - "jest-config@npm:^27.5.1": version: 27.5.1 resolution: "jest-config@npm:27.5.1" @@ -13158,44 +12645,6 @@ __metadata: languageName: node linkType: hard -"jest-config@npm:^29.6.2": - version: 29.6.2 - resolution: "jest-config@npm:29.6.2" - dependencies: - "@babel/core": ^7.11.6 - "@jest/test-sequencer": ^29.6.2 - "@jest/types": ^29.6.1 - babel-jest: ^29.6.2 - chalk: ^4.0.0 - ci-info: ^3.2.0 - deepmerge: ^4.2.2 - glob: ^7.1.3 - graceful-fs: ^4.2.9 - jest-circus: ^29.6.2 - jest-environment-node: ^29.6.2 - jest-get-type: ^29.4.3 - jest-regex-util: ^29.4.3 - jest-resolve: ^29.6.2 - jest-runner: ^29.6.2 - jest-util: ^29.6.2 - jest-validate: ^29.6.2 - micromatch: ^4.0.4 - parse-json: ^5.2.0 - pretty-format: ^29.6.2 - slash: ^3.0.0 - strip-json-comments: ^3.1.1 - peerDependencies: - "@types/node": "*" - ts-node: ">=9.0.0" - peerDependenciesMeta: - "@types/node": - optional: true - ts-node: - optional: true - checksum: 3bd104a3ac2dd9d34986238142437606354169766dcf88359a7a12ac106d0dc17dcc6b627e4f20db97a58bac5b0502b5436c9cc4722b3629b2a114bba6da9128 - languageName: node - linkType: hard - "jest-diff@npm:^27.5.1": version: 27.5.1 resolution: "jest-diff@npm:27.5.1" @@ -13220,7 +12669,7 @@ __metadata: languageName: node linkType: hard -"jest-diff@npm:^29.0.3, jest-diff@npm:^29.6.2": +"jest-diff@npm:^29.0.3": version: 29.6.2 resolution: "jest-diff@npm:29.6.2" dependencies: @@ -13241,15 +12690,6 @@ __metadata: languageName: node linkType: hard -"jest-docblock@npm:^29.4.3": - version: 29.4.3 - resolution: "jest-docblock@npm:29.4.3" - dependencies: - detect-newline: ^3.0.0 - checksum: e0e9df1485bb8926e5b33478cdf84b3387d9caf3658e7dc1eaa6dc34cb93dea0d2d74797f6e940f0233a88f3dadd60957f2288eb8f95506361f85b84bf8661df - languageName: node - linkType: hard - "jest-each@npm:^27.5.1": version: 27.5.1 resolution: "jest-each@npm:27.5.1" @@ -13263,19 +12703,6 @@ __metadata: languageName: node linkType: hard -"jest-each@npm:^29.6.2": - version: 29.6.2 - resolution: "jest-each@npm:29.6.2" - dependencies: - "@jest/types": ^29.6.1 - chalk: ^4.0.0 - jest-get-type: ^29.4.3 - jest-util: ^29.6.2 - pretty-format: ^29.6.2 - checksum: b64194f4ca27afc6070a42b7ecccbc68be0ded19a849f8cd8f91a2abb23fadae2d38d47559a315f4d1f576927761f3ea437a75ab6cf19206332abb8527d7c165 - languageName: node - linkType: hard - "jest-environment-jsdom@npm:^27.5.1": version: 27.5.1 resolution: "jest-environment-jsdom@npm:27.5.1" @@ -13305,20 +12732,6 @@ __metadata: languageName: node linkType: hard -"jest-environment-node@npm:^29.6.2": - version: 29.6.2 - resolution: "jest-environment-node@npm:29.6.2" - dependencies: - "@jest/environment": ^29.6.2 - "@jest/fake-timers": ^29.6.2 - "@jest/types": ^29.6.1 - "@types/node": "*" - jest-mock: ^29.6.2 - jest-util: ^29.6.2 - checksum: 0b754ac2d3bdb7ce5d6fc28595b9d1c64176f20506b6f773b18b0280ab0b396ed7d927c8519779d3c560fa2b13236ee7077092ccb19a13bea23d40dd30f06450 - languageName: node - linkType: hard - "jest-fetch-mock@npm:^3.0.3": version: 3.0.3 resolution: "jest-fetch-mock@npm:3.0.3" @@ -13374,29 +12787,6 @@ __metadata: languageName: node linkType: hard -"jest-haste-map@npm:^29.6.2": - version: 29.6.2 - resolution: "jest-haste-map@npm:29.6.2" - dependencies: - "@jest/types": ^29.6.1 - "@types/graceful-fs": ^4.1.3 - "@types/node": "*" - anymatch: ^3.0.3 - fb-watchman: ^2.0.0 - fsevents: ^2.3.2 - graceful-fs: ^4.2.9 - jest-regex-util: ^29.4.3 - jest-util: ^29.6.2 - jest-worker: ^29.6.2 - micromatch: ^4.0.4 - walker: ^1.0.8 - dependenciesMeta: - fsevents: - optional: true - checksum: 726233972030eb2e5bce6c9468e497310436b455c88b40e744bd053e20a6f3ff19aec340edcbd89537c629ed5cf8916506bc895d690cc39a0862c74dcd95b7b8 - languageName: node - linkType: hard - "jest-jasmine2@npm:^27.5.1": version: 27.5.1 resolution: "jest-jasmine2@npm:27.5.1" @@ -13432,16 +12822,6 @@ __metadata: languageName: node linkType: hard -"jest-leak-detector@npm:^29.6.2": - version: 29.6.2 - resolution: "jest-leak-detector@npm:29.6.2" - dependencies: - jest-get-type: ^29.4.3 - pretty-format: ^29.6.2 - checksum: e00152acdba8aa8f9334775b77375947508051c34646fbeb702275da2b6ac6145f8cad6d5893112e76484d00fa8c0b4fd71b78ab0b4ef34950f5b6a84f37ae67 - languageName: node - linkType: hard - "jest-matcher-utils@npm:^27.0.0, jest-matcher-utils@npm:^27.5.1": version: 27.5.1 resolution: "jest-matcher-utils@npm:27.5.1" @@ -13454,18 +12834,6 @@ __metadata: languageName: node linkType: hard -"jest-matcher-utils@npm:^29.6.2": - version: 29.6.2 - resolution: "jest-matcher-utils@npm:29.6.2" - dependencies: - chalk: ^4.0.0 - jest-diff: ^29.6.2 - jest-get-type: ^29.4.3 - pretty-format: ^29.6.2 - checksum: 3e1b65dd30d05f75fe56dc45fbe4135aec2ff96a3d1e21afbf6a66f3a45a7e29cd0fd37cf80b9564e0381d6205833f77ccaf766c6f7e1aad6b7924d117be504e - languageName: node - linkType: hard - "jest-message-util@npm:^27.5.1": version: 27.5.1 resolution: "jest-message-util@npm:27.5.1" @@ -13483,23 +12851,6 @@ __metadata: languageName: node linkType: hard -"jest-message-util@npm:^29.6.2": - version: 29.6.2 - resolution: "jest-message-util@npm:29.6.2" - dependencies: - "@babel/code-frame": ^7.12.13 - "@jest/types": ^29.6.1 - "@types/stack-utils": ^2.0.0 - chalk: ^4.0.0 - graceful-fs: ^4.2.9 - micromatch: ^4.0.4 - pretty-format: ^29.6.2 - slash: ^3.0.0 - stack-utils: ^2.0.3 - checksum: e8e3c8d2301e2ca4038ed6df8cbba7fedc6949d1ede4c0e3f1f44f53afb56d77eb35983fa460140d0eadeab99a5f3ae04b703fe77cd7b316b40b361228b5aa1a - languageName: node - linkType: hard - "jest-mock@npm:^27.5.1": version: 27.5.1 resolution: "jest-mock@npm:27.5.1" @@ -13510,17 +12861,6 @@ __metadata: languageName: node linkType: hard -"jest-mock@npm:^29.6.2": - version: 29.6.2 - resolution: "jest-mock@npm:29.6.2" - dependencies: - "@jest/types": ^29.6.1 - "@types/node": "*" - jest-util: ^29.6.2 - checksum: 0bacb5d58441462c0e531ec4d2f7377eecbe21f664d8a460e72f94ba61d22635028931678e7a0f1c3e3f5894973db8e409432f7db4c01283456c8fdbd85f5b3b - languageName: node - linkType: hard - "jest-pnp-resolver@npm:^1.2.2": version: 1.2.3 resolution: "jest-pnp-resolver@npm:1.2.3" @@ -13540,13 +12880,6 @@ __metadata: languageName: node linkType: hard -"jest-regex-util@npm:^29.4.3": - version: 29.4.3 - resolution: "jest-regex-util@npm:29.4.3" - checksum: 96fc7fc28cd4dd73a63c13a526202c4bd8b351d4e5b68b1a2a2c88da3308c2a16e26feaa593083eb0bac38cca1aa9dd05025412e7de013ba963fb8e66af22b8a - languageName: node - linkType: hard - "jest-resolve-dependencies@npm:^27.5.1": version: 27.5.1 resolution: "jest-resolve-dependencies@npm:27.5.1" @@ -13558,16 +12891,6 @@ __metadata: languageName: node linkType: hard -"jest-resolve-dependencies@npm:^29.6.2": - version: 29.6.2 - resolution: "jest-resolve-dependencies@npm:29.6.2" - dependencies: - jest-regex-util: ^29.4.3 - jest-snapshot: ^29.6.2 - checksum: d40ee11af2c9d2ef0dbbcf9a5b7dda37c2b86cf4e5de1705795919fd8927907569115c502116ab56de0dca576d5faa31ec9b636240333b6830a568a63004da17 - languageName: node - linkType: hard - "jest-resolve@npm:^27.5.1": version: 27.5.1 resolution: "jest-resolve@npm:27.5.1" @@ -13586,23 +12909,6 @@ __metadata: languageName: node linkType: hard -"jest-resolve@npm:^29.6.2": - version: 29.6.2 - resolution: "jest-resolve@npm:29.6.2" - dependencies: - chalk: ^4.0.0 - graceful-fs: ^4.2.9 - jest-haste-map: ^29.6.2 - jest-pnp-resolver: ^1.2.2 - jest-util: ^29.6.2 - jest-validate: ^29.6.2 - resolve: ^1.20.0 - resolve.exports: ^2.0.0 - slash: ^3.0.0 - checksum: 01721957e61821a576b2ded043eeab8b392166e0e6d8d680f75657737e2ea7481ff29c2716b866ccd12e743f3a8da465504b1028e78b6a3c68b9561303de7ec8 - languageName: node - linkType: hard - "jest-runner@npm:^27.5.1": version: 27.5.1 resolution: "jest-runner@npm:27.5.1" @@ -13632,35 +12938,6 @@ __metadata: languageName: node linkType: hard -"jest-runner@npm:^29.6.2": - version: 29.6.2 - resolution: "jest-runner@npm:29.6.2" - dependencies: - "@jest/console": ^29.6.2 - "@jest/environment": ^29.6.2 - "@jest/test-result": ^29.6.2 - "@jest/transform": ^29.6.2 - "@jest/types": ^29.6.1 - "@types/node": "*" - chalk: ^4.0.0 - emittery: ^0.13.1 - graceful-fs: ^4.2.9 - jest-docblock: ^29.4.3 - jest-environment-node: ^29.6.2 - jest-haste-map: ^29.6.2 - jest-leak-detector: ^29.6.2 - jest-message-util: ^29.6.2 - jest-resolve: ^29.6.2 - jest-runtime: ^29.6.2 - jest-util: ^29.6.2 - jest-watcher: ^29.6.2 - jest-worker: ^29.6.2 - p-limit: ^3.1.0 - source-map-support: 0.5.13 - checksum: 46bd506a08ddf79628a509aed4105ab74c0b03727a3e24c90bbc2915531860b3da99f7ace2fd9603194440553cffac9cfb1a3b7d0ce03d5fc9c5f2d5ffbb3d3f - languageName: node - linkType: hard - "jest-runtime@npm:^27.5.1": version: 27.5.1 resolution: "jest-runtime@npm:27.5.1" @@ -13691,36 +12968,6 @@ __metadata: languageName: node linkType: hard -"jest-runtime@npm:^29.6.2": - version: 29.6.2 - resolution: "jest-runtime@npm:29.6.2" - dependencies: - "@jest/environment": ^29.6.2 - "@jest/fake-timers": ^29.6.2 - "@jest/globals": ^29.6.2 - "@jest/source-map": ^29.6.0 - "@jest/test-result": ^29.6.2 - "@jest/transform": ^29.6.2 - "@jest/types": ^29.6.1 - "@types/node": "*" - chalk: ^4.0.0 - cjs-module-lexer: ^1.0.0 - collect-v8-coverage: ^1.0.0 - glob: ^7.1.3 - graceful-fs: ^4.2.9 - jest-haste-map: ^29.6.2 - jest-message-util: ^29.6.2 - jest-mock: ^29.6.2 - jest-regex-util: ^29.4.3 - jest-resolve: ^29.6.2 - jest-snapshot: ^29.6.2 - jest-util: ^29.6.2 - slash: ^3.0.0 - strip-bom: ^4.0.0 - checksum: 8e7e4486b23b01a9c407313681bed0def39680c2ae21cf01347f111983252ec3a024c56493c5411fed53633f02863eed0816099110cbe04b3889aa5babf1042d - languageName: node - linkType: hard - "jest-serializer@npm:^27.5.1": version: 27.5.1 resolution: "jest-serializer@npm:27.5.1" @@ -13761,34 +13008,6 @@ __metadata: languageName: node linkType: hard -"jest-snapshot@npm:^29.6.2": - version: 29.6.2 - resolution: "jest-snapshot@npm:29.6.2" - dependencies: - "@babel/core": ^7.11.6 - "@babel/generator": ^7.7.2 - "@babel/plugin-syntax-jsx": ^7.7.2 - "@babel/plugin-syntax-typescript": ^7.7.2 - "@babel/types": ^7.3.3 - "@jest/expect-utils": ^29.6.2 - "@jest/transform": ^29.6.2 - "@jest/types": ^29.6.1 - babel-preset-current-node-syntax: ^1.0.0 - chalk: ^4.0.0 - expect: ^29.6.2 - graceful-fs: ^4.2.9 - jest-diff: ^29.6.2 - jest-get-type: ^29.4.3 - jest-matcher-utils: ^29.6.2 - jest-message-util: ^29.6.2 - jest-util: ^29.6.2 - natural-compare: ^1.4.0 - pretty-format: ^29.6.2 - semver: ^7.5.3 - checksum: c1c70a9dbce7fca62ed73ac38234b4ee643e8b667acf71b4417ab67776c1188bb08b8ad450e56a2889ad182903ffd416386fa8082a477724ccf8d8c29a4c6906 - languageName: node - linkType: hard - "jest-util@npm:^27.0.0, jest-util@npm:^27.5.1": version: 27.5.1 resolution: "jest-util@npm:27.5.1" @@ -13803,20 +13022,6 @@ __metadata: languageName: node linkType: hard -"jest-util@npm:^29.0.0, jest-util@npm:^29.6.2": - version: 29.6.2 - resolution: "jest-util@npm:29.6.2" - dependencies: - "@jest/types": ^29.6.1 - "@types/node": "*" - chalk: ^4.0.0 - ci-info: ^3.2.0 - graceful-fs: ^4.2.9 - picomatch: ^2.2.3 - checksum: 8aedc0c80083d0cabd6c6c4f04dea1cbcac609fd7bc3b1fc05a3999291bd6e63dd52b0c806f9378d5cae28eff5a6191709a4987861001293f8d03e53984adca4 - languageName: node - linkType: hard - "jest-validate@npm:^27.5.1": version: 27.5.1 resolution: "jest-validate@npm:27.5.1" @@ -13831,20 +13036,6 @@ __metadata: languageName: node linkType: hard -"jest-validate@npm:^29.6.2": - version: 29.6.2 - resolution: "jest-validate@npm:29.6.2" - dependencies: - "@jest/types": ^29.6.1 - camelcase: ^6.2.0 - chalk: ^4.0.0 - jest-get-type: ^29.4.3 - leven: ^3.1.0 - pretty-format: ^29.6.2 - checksum: 32648d002189c0ad8a958eace7c6b7d05ea1dc440a1b91e0f22dc1aef489899446ec80b2d527fd13713862d89dfb4606e24a3bf8a10c4ddac3c911e93b7f0374 - languageName: node - linkType: hard - "jest-watcher@npm:^27.5.1": version: 27.5.1 resolution: "jest-watcher@npm:27.5.1" @@ -13860,22 +13051,6 @@ __metadata: languageName: node linkType: hard -"jest-watcher@npm:^29.6.2": - version: 29.6.2 - resolution: "jest-watcher@npm:29.6.2" - dependencies: - "@jest/test-result": ^29.6.2 - "@jest/types": ^29.6.1 - "@types/node": "*" - ansi-escapes: ^4.2.1 - chalk: ^4.0.0 - emittery: ^0.13.1 - jest-util: ^29.6.2 - string-length: ^4.0.1 - checksum: 14624190fc8b5fbae466a2ec81458a88c15716d99f042bb4674d53e9623d305cb2905bc1dffeda05fd1a10a05c2a83efe5ac41942477e2b15eaebb08d0aaab32 - languageName: node - linkType: hard - "jest-websocket-mock@npm:^2.2.1": version: 2.4.0 resolution: "jest-websocket-mock@npm:2.4.0" @@ -13897,18 +13072,6 @@ __metadata: languageName: node linkType: hard -"jest-worker@npm:^29.4.0, jest-worker@npm:^29.6.2": - version: 29.6.2 - resolution: "jest-worker@npm:29.6.2" - dependencies: - "@types/node": "*" - jest-util: ^29.6.2 - merge-stream: ^2.0.0 - supports-color: ^8.0.0 - checksum: 11035564534bf181ead80b25be138c2d42372bd5626151a3e705200d47a74fd9da3ca79f8a7b15806cdc325ad73c3d21d23acceeed99d50941589ff02915ed38 - languageName: node - linkType: hard - "jest@npm:^27.4.5": version: 27.5.1 resolution: "jest@npm:27.5.1" @@ -13927,25 +13090,6 @@ __metadata: languageName: node linkType: hard -"jest@npm:^29.4.0": - version: 29.6.2 - resolution: "jest@npm:29.6.2" - dependencies: - "@jest/core": ^29.6.2 - "@jest/types": ^29.6.1 - import-local: ^3.0.2 - jest-cli: ^29.6.2 - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - bin: - jest: bin/jest.js - checksum: dd63facd4e6aefc35d2c42acd7e4c9fb0d8fe4705df4b3ccedd953605424d7aa89c88af8cf4c9951752709cac081d29c35b264e1794643d5688ea724ccc9a485 - languageName: node - linkType: hard - "jju@npm:~1.4.0": version: 1.4.0 resolution: "jju@npm:1.4.0" @@ -14274,7 +13418,7 @@ __metadata: languageName: node linkType: hard -"json5@npm:2.2.3, json5@npm:2.x, json5@npm:^2.1.2, json5@npm:^2.1.3, json5@npm:^2.2.2, json5@npm:^2.2.3": +"json5@npm:2.2.3, json5@npm:2.x, json5@npm:^2.1.2, json5@npm:^2.1.3, json5@npm:^2.2.2": version: 2.2.3 resolution: "json5@npm:2.2.3" bin: @@ -14306,13 +13450,6 @@ __metadata: languageName: node linkType: hard -"jsonc-parser@npm:^3.2.0": - version: 3.2.0 - resolution: "jsonc-parser@npm:3.2.0" - checksum: 946dd9a5f326b745aa326d48a7257e3f4a4b62c5e98ec8e49fa2bdd8d96cef7e6febf1399f5c7016114fd1f68a1c62c6138826d5d90bc650448e3cf0951c53c7 - languageName: node - linkType: hard - "jsonfile@npm:^4.0.0": version: 4.0.0 resolution: "jsonfile@npm:4.0.0" @@ -15094,7 +14231,7 @@ __metadata: languageName: node linkType: hard -"lodash@npm:^4.17.11, lodash@npm:^4.17.14, lodash@npm:^4.17.21, lodash@npm:^4.7.0, lodash@npm:~4.17.15": +"lodash@npm:^4.17.11, lodash@npm:^4.17.21, lodash@npm:^4.7.0, lodash@npm:~4.17.15": version: 4.17.21 resolution: "lodash@npm:4.17.21" checksum: eb835a2e51d381e561e508ce932ea50a8e5a68f4ebdd771ea240d3048244a8d13658acbd502cd4829768c56f2e16bdd4340b9ea141297d472517b83868e677f7 @@ -15186,13 +14323,6 @@ __metadata: languageName: node linkType: hard -"lunr@npm:^2.3.9": - version: 2.3.9 - resolution: "lunr@npm:2.3.9" - checksum: 176719e24fcce7d3cf1baccce9dd5633cd8bdc1f41ebe6a180112e5ee99d80373fe2454f5d4624d437e5a8319698ca6837b9950566e15d2cae5f2a543a3db4b8 - languageName: node - linkType: hard - "luxon@npm:^3.2.1": version: 3.3.0 resolution: "luxon@npm:3.3.0" @@ -15328,15 +14458,6 @@ __metadata: languageName: node linkType: hard -"marked@npm:^4.2.12": - version: 4.3.0 - resolution: "marked@npm:4.3.0" - bin: - marked: bin/marked.js - checksum: 0db6817893952c3ec710eb9ceafb8468bf5ae38cb0f92b7b083baa13d70b19774674be04db5b817681fa7c5c6a088f61300815e4dd75a59696f4716ad69f6260 - languageName: node - linkType: hard - "matchdep@npm:^2.0.0": version: 2.0.0 resolution: "matchdep@npm:2.0.0" @@ -15390,51 +14511,6 @@ __metadata: languageName: node linkType: hard -"megalodon@workspace:*, megalodon@workspace:packages/megalodon": - version: 0.0.0-use.local - resolution: "megalodon@workspace:packages/megalodon" - dependencies: - "@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": 18.11.18 - "@types/oauth": ^0.9.0 - "@types/object-assign-deep": ^0.4.0 - "@types/parse-link-header": ^2.0.0 - "@types/uuid": ^9.0.0 - "@types/ws": ^8.5.4 - "@typescript-eslint/eslint-plugin": ^5.49.0 - "@typescript-eslint/parser": ^5.49.0 - async-lock: 1.4.0 - axios: 1.2.2 - dayjs: ^1.11.7 - 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 - form-data: ^4.0.0 - https-proxy-agent: ^5.0.1 - jest: ^29.4.0 - jest-worker: ^29.4.0 - lodash: ^4.17.14 - oauth: ^0.10.0 - object-assign-deep: ^0.4.0 - parse-link-header: ^2.0.0 - prettier: ^2.8.3 - socks-proxy-agent: ^7.0.0 - ts-jest: ^29.0.5 - typedoc: ^0.23.24 - typescript: 4.9.4 - uuid: ^9.0.0 - ws: 8.12.0 - languageName: unknown - linkType: soft - "meilisearch@npm:0.33.0": version: 0.33.0 resolution: "meilisearch@npm:0.33.0" @@ -15636,15 +14712,6 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^7.1.3": - version: 7.4.6 - resolution: "minimatch@npm:7.4.6" - dependencies: - brace-expansion: ^2.0.1 - checksum: 1a6c8d22618df9d2a88aabeef1de5622eb7b558e9f8010be791cb6b0fa6e102d39b11c28d75b855a1e377b12edc7db8ff12a99c20353441caa6a05e78deb5da9 - languageName: node - linkType: hard - "minimatch@npm:^9.0.1": version: 9.0.3 resolution: "minimatch@npm:9.0.3" @@ -16515,13 +15582,6 @@ __metadata: languageName: node linkType: hard -"object-assign-deep@npm:^0.4.0": - version: 0.4.0 - resolution: "object-assign-deep@npm:0.4.0" - checksum: 3c31920ca887e507253b71fe5d38ce752b47e8cbcd2cd9dc6e5909ae6ce05a31dbc64ba7bb46037c4f5ff449ec0199db247bd9d8d768574876ed7a79fa5810ab - languageName: node - linkType: hard - "object-assign@npm:^4.0.1, object-assign@npm:^4.1.0, object-assign@npm:^4.1.1": version: 4.1.1 resolution: "object-assign@npm:4.1.1" @@ -16825,7 +15885,7 @@ __metadata: languageName: node linkType: hard -"p-limit@npm:^3.0.2, p-limit@npm:^3.1.0": +"p-limit@npm:^3.0.2": version: 3.1.0 resolution: "p-limit@npm:3.1.0" dependencies: @@ -16980,15 +16040,6 @@ __metadata: languageName: node linkType: hard -"parse-link-header@npm:^2.0.0": - version: 2.0.0 - resolution: "parse-link-header@npm:2.0.0" - dependencies: - xtend: ~4.0.1 - checksum: 0e96c6af9910e8f92084b49b8dc6a10dd58db470847d1499f562576180c1ac5e49d18007697f0d538e5f3efdc8ce1d8777641f3ae225302b74af0dd0578b628e - languageName: node - linkType: hard - "parse-node-version@npm:^1.0.0": version: 1.0.1 resolution: "parse-node-version@npm:1.0.1" @@ -17890,7 +16941,7 @@ __metadata: languageName: node linkType: hard -"prettier@npm:^2.8.1, prettier@npm:^2.8.3": +"prettier@npm:^2.8.1": version: 2.8.8 resolution: "prettier@npm:2.8.8" bin: @@ -17929,7 +16980,7 @@ __metadata: languageName: node linkType: hard -"pretty-format@npm:^29.0.0, pretty-format@npm:^29.6.2": +"pretty-format@npm:^29.6.2": version: 29.6.2 resolution: "pretty-format@npm:29.6.2" dependencies: @@ -18275,13 +17326,6 @@ __metadata: languageName: node linkType: hard -"pure-rand@npm:^6.0.0": - version: 6.0.2 - resolution: "pure-rand@npm:6.0.2" - checksum: 79de33876a4f515d759c48e98d00756bbd916b4ea260cc572d7adfa4b62cace9952e89f0241d0410214554503d25061140fe325c66f845213d2b1728ba8d413e - languageName: node - linkType: hard - "pureimage@npm:0.3.15": version: 0.3.15 resolution: "pureimage@npm:0.3.15" @@ -19026,13 +18070,6 @@ __metadata: languageName: node linkType: hard -"resolve.exports@npm:^2.0.0": - version: 2.0.2 - resolution: "resolve.exports@npm:2.0.2" - checksum: 1c7778ca1b86a94f8ab4055d196c7d87d1874b96df4d7c3e67bbf793140f0717fd506dcafd62785b079cd6086b9264424ad634fb904409764c3509c3df1653f2 - languageName: node - linkType: hard - "resolve@npm:^1.1.6, resolve@npm:^1.1.7, resolve@npm:^1.10.0, resolve@npm:^1.20.0, resolve@npm:^1.4.0, resolve@npm:~1.22.1": version: 1.22.2 resolution: "resolve@npm:1.22.2" @@ -19046,7 +18083,7 @@ __metadata: languageName: node linkType: hard -"resolve@npm:^1.10.1, resolve@npm:^1.12.0, resolve@npm:^1.15.1, resolve@npm:^1.22.1, resolve@npm:^1.22.2": +"resolve@npm:^1.12.0, resolve@npm:^1.15.1, resolve@npm:^1.22.1, resolve@npm:^1.22.2": version: 1.22.3 resolution: "resolve@npm:1.22.3" dependencies: @@ -19082,7 +18119,7 @@ __metadata: languageName: node linkType: hard -"resolve@patch:resolve@^1.10.1#~builtin, resolve@patch:resolve@^1.12.0#~builtin, resolve@patch:resolve@^1.15.1#~builtin, resolve@patch:resolve@^1.22.1#~builtin, resolve@patch:resolve@^1.22.2#~builtin": +"resolve@patch:resolve@^1.12.0#~builtin, resolve@patch:resolve@^1.15.1#~builtin, resolve@patch:resolve@^1.22.1#~builtin, resolve@patch:resolve@^1.22.2#~builtin": version: 1.22.3 resolution: "resolve@patch:resolve@npm%3A1.22.3#~builtin::version=1.22.3&hash=c3c19d" dependencies: @@ -19504,7 +18541,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:^6.0.0, semver@npm:^6.1.0, semver@npm:^6.3.0, semver@npm:^6.3.1": +"semver@npm:^6.0.0, semver@npm:^6.3.0, semver@npm:^6.3.1": version: 6.3.1 resolution: "semver@npm:6.3.1" bin: @@ -19651,18 +18688,6 @@ __metadata: languageName: node linkType: hard -"shiki@npm:^0.14.1": - version: 0.14.3 - resolution: "shiki@npm:0.14.3" - dependencies: - ansi-sequence-parser: ^1.1.0 - jsonc-parser: ^3.2.0 - vscode-oniguruma: ^1.7.0 - vscode-textmate: ^8.0.0 - checksum: a4dd98e3b2a5dd8be207448f111ffb9ad2ed6c530f215714d8b61cbf91ec3edbabb09109b8ec58a26678aacd24e8161d5a9bc0c1fa1b4f64b27ceb180cbd0c89 - languageName: node - linkType: hard - "side-channel@npm:^1.0.4": version: 1.0.4 resolution: "side-channel@npm:1.0.4" @@ -19877,16 +18902,6 @@ __metadata: languageName: node linkType: hard -"source-map-support@npm:0.5.13": - version: 0.5.13 - resolution: "source-map-support@npm:0.5.13" - dependencies: - buffer-from: ^1.0.0 - source-map: ^0.6.0 - checksum: 933550047b6c1a2328599a21d8b7666507427c0f5ef5eaadd56b5da0fd9505e239053c66fe181bf1df469a3b7af9d775778eee283cbb7ae16b902ddc09e93a97 - languageName: node - linkType: hard - "source-map-support@npm:^0.5.6, source-map-support@npm:~0.5.20": version: 0.5.21 resolution: "source-map-support@npm:0.5.21" @@ -21148,39 +20163,6 @@ __metadata: languageName: node linkType: hard -"ts-jest@npm:^29.0.5": - version: 29.1.1 - resolution: "ts-jest@npm:29.1.1" - dependencies: - bs-logger: 0.x - fast-json-stable-stringify: 2.x - jest-util: ^29.0.0 - json5: ^2.2.3 - lodash.memoize: 4.x - make-error: 1.x - semver: ^7.5.3 - yargs-parser: ^21.0.1 - peerDependencies: - "@babel/core": ">=7.0.0-beta.0 <8" - "@jest/types": ^29.0.0 - babel-jest: ^29.0.0 - jest: ^29.0.0 - typescript: ">=4.3 <6" - peerDependenciesMeta: - "@babel/core": - optional: true - "@jest/types": - optional: true - babel-jest: - optional: true - esbuild: - optional: true - bin: - ts-jest: cli.js - checksum: a8c9e284ed4f819526749f6e4dc6421ec666f20ab44d31b0f02b4ed979975f7580b18aea4813172d43e39b29464a71899f8893dd29b06b4a351a3af8ba47b402 - languageName: node - linkType: hard - "ts-loader@npm:9.4.4": version: 9.4.4 resolution: "ts-loader@npm:9.4.4" @@ -21519,22 +20501,6 @@ __metadata: languageName: node linkType: hard -"typedoc@npm:^0.23.24": - version: 0.23.28 - resolution: "typedoc@npm:0.23.28" - dependencies: - lunr: ^2.3.9 - marked: ^4.2.12 - minimatch: ^7.1.3 - shiki: ^0.14.1 - peerDependencies: - typescript: 4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x - bin: - typedoc: bin/typedoc - checksum: 40eb4e207aac1b734e09400cf03f543642cc7b11000895198dd5a0d3166315759ccf4ac30a2915153597c5c186101c72bac2f1fc12b428184a9274d3a0e44c5e - languageName: node - linkType: hard - "typeorm@npm:0.3.17": version: 0.3.17 resolution: "typeorm@npm:0.3.17" @@ -21615,16 +20581,6 @@ __metadata: languageName: node linkType: hard -"typescript@npm:4.9.4": - version: 4.9.4 - resolution: "typescript@npm:4.9.4" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: e782fb9e0031cb258a80000f6c13530288c6d63f1177ed43f770533fdc15740d271554cdae86701c1dd2c83b082cea808b07e97fd68b38a172a83dbf9e0d0ef9 - languageName: node - linkType: hard - "typescript@npm:5.1.3": version: 5.1.3 resolution: "typescript@npm:5.1.3" @@ -21655,16 +20611,6 @@ __metadata: languageName: node linkType: hard -"typescript@patch:typescript@4.9.4#~builtin": - version: 4.9.4 - resolution: "typescript@patch:typescript@npm%3A4.9.4#~builtin::version=4.9.4&hash=289587" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: 2160f7ad975c59b2f5816817d3916be1d156c5688a7517602b3b640c5015e740f4ba933996ac85371d68f7bbdd41602150fb8b68334122ac637fdb5418085e7a - languageName: node - linkType: hard - "typescript@patch:typescript@5.1.3#~builtin": version: 5.1.3 resolution: "typescript@patch:typescript@npm%3A5.1.3#~builtin::version=5.1.3&hash=5da071" @@ -22053,17 +20999,6 @@ __metadata: languageName: node linkType: hard -"v8-to-istanbul@npm:^9.0.1": - version: 9.1.0 - resolution: "v8-to-istanbul@npm:9.1.0" - dependencies: - "@jridgewell/trace-mapping": ^0.3.12 - "@types/istanbul-lib-coverage": ^2.0.1 - convert-source-map: ^1.6.0 - checksum: 2069d59ee46cf8d83b4adfd8a5c1a90834caffa9f675e4360f1157ffc8578ef0f763c8f32d128334424159bb6b01f3876acd39cd13297b2769405a9da241f8d1 - languageName: node - linkType: hard - "v8flags@npm:^3.2.0": version: 3.2.0 resolution: "v8flags@npm:3.2.0" @@ -22252,20 +21187,6 @@ __metadata: languageName: node linkType: hard -"vscode-oniguruma@npm:^1.7.0": - version: 1.7.0 - resolution: "vscode-oniguruma@npm:1.7.0" - checksum: 53519d91d90593e6fb080260892e87d447e9b200c4964d766772b5053f5699066539d92100f77f1302c91e8fc5d9c772fbe40fe4c90f3d411a96d5a9b1e63f42 - languageName: node - linkType: hard - -"vscode-textmate@npm:^8.0.0": - version: 8.0.0 - resolution: "vscode-textmate@npm:8.0.0" - checksum: 127780dfea89559d70b8326df6ec344cfd701312dd7f3f591a718693812b7852c30b6715e3cfc8b3200a4e2515b4c96f0843c0eacc0a3020969b5de262c2a4bb - languageName: node - linkType: hard - "vue-draggable-plus@npm:^0.2.2": version: 0.2.2 resolution: "vue-draggable-plus@npm:0.2.2" @@ -22397,7 +21318,7 @@ __metadata: languageName: node linkType: hard -"walker@npm:^1.0.7, walker@npm:^1.0.8": +"walker@npm:^1.0.7": version: 1.0.8 resolution: "walker@npm:1.0.8" dependencies: @@ -22822,31 +21743,6 @@ __metadata: languageName: node linkType: hard -"write-file-atomic@npm:^4.0.2": - version: 4.0.2 - resolution: "write-file-atomic@npm:4.0.2" - dependencies: - imurmurhash: ^0.1.4 - signal-exit: ^3.0.7 - checksum: 5da60bd4eeeb935eec97ead3df6e28e5917a6bd317478e4a85a5285e8480b8ed96032bbcc6ecd07b236142a24f3ca871c924ec4a6575e623ec1b11bf8c1c253c - languageName: node - linkType: hard - -"ws@npm:8.12.0": - version: 8.12.0 - resolution: "ws@npm:8.12.0" - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ">=5.0.2" - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - checksum: 818ff3f8749c172a95a114cceb8b89cedd27e43a82d65c7ad0f7882b1e96a2ee6709e3746a903c3fa88beec0c8bae9a9fcd75f20858b32a166dfb7519316a5d7 - languageName: node - linkType: hard - "ws@npm:8.13.0, ws@npm:^8.11.0": version: 8.13.0 resolution: "ws@npm:8.13.0" @@ -23028,7 +21924,7 @@ __metadata: languageName: node linkType: hard -"yargs-parser@npm:>=5.0.0-security.0, yargs-parser@npm:^21.0.1, yargs-parser@npm:^21.1.1": +"yargs-parser@npm:>=5.0.0-security.0, yargs-parser@npm:^21.1.1": version: 21.1.1 resolution: "yargs-parser@npm:21.1.1" checksum: ed2d96a616a9e3e1cc7d204c62ecc61f7aaab633dcbfab2c6df50f7f87b393993fe6640d017759fe112d0cb1e0119f2b4150a87305cc873fd90831c6a58ccf1c @@ -23101,7 +21997,7 @@ __metadata: languageName: node linkType: hard -"yargs@npm:^17.3.1, yargs@npm:^17.6.2": +"yargs@npm:^17.6.2": version: 17.7.2 resolution: "yargs@npm:17.7.2" dependencies: