mirror of
https://github.com/versia-pub/server.git
synced 2025-12-06 16:38:19 +01:00
Fix build errors and testing errors
This commit is contained in:
parent
f02344fa0d
commit
d6f1cd1347
5
build.ts
5
build.ts
|
|
@ -44,6 +44,9 @@ await cp(process.cwd() + "/pages/dist", process.cwd() + "/dist/pages/", {
|
|||
});
|
||||
|
||||
// Copy the Bee Movie script from pages
|
||||
await cp(process.cwd() + "/pages/beemovie.txt", process.cwd() + "/dist/pages/");
|
||||
await cp(
|
||||
process.cwd() + "/pages/beemovie.txt",
|
||||
process.cwd() + "/dist/pages/beemovie.txt"
|
||||
);
|
||||
|
||||
console.log(`Built!`);
|
||||
|
|
|
|||
|
|
@ -61,7 +61,7 @@ export const getUrl = (name: string, config: ConfigType) => {
|
|||
// eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison
|
||||
if (config.media.backend === MediaBackendType.LOCAL) {
|
||||
return `${config.http.base_url}/media/${name}`;
|
||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison
|
||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison, @typescript-eslint/no-unnecessary-condition
|
||||
} else if (config.media.backend === MediaBackendType.S3) {
|
||||
return `${config.s3.public_url}/${name}`;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,10 +1,5 @@
|
|||
// import { Worker } from "bullmq";
|
||||
import { client /* federationQueue */ } from "~database/datasource";
|
||||
import {
|
||||
statusAndUserRelations,
|
||||
statusToLysand,
|
||||
type StatusWithRelations,
|
||||
} from "./Status";
|
||||
import { statusToLysand, type StatusWithRelations } from "./Status";
|
||||
import type { User } from "@prisma/client";
|
||||
import { ConfigManager } from "config-manager";
|
||||
|
||||
|
|
@ -157,7 +152,7 @@ export const federateStatusTo = async (
|
|||
);
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
||||
const userInbox = new URL((user.endpoints as any).inbox);
|
||||
const userInbox = new URL(user.endpoints.inbox);
|
||||
|
||||
const date = new Date();
|
||||
|
||||
|
|
|
|||
|
|
@ -1,11 +1,6 @@
|
|||
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
|
||||
import type { UserWithRelations } from "./User";
|
||||
import {
|
||||
fetchRemoteUser,
|
||||
parseMentionsUris,
|
||||
userRelations,
|
||||
userToAPI,
|
||||
} from "./User";
|
||||
import { fetchRemoteUser, parseMentionsUris, userToAPI } from "./User";
|
||||
import { client } from "~database/datasource";
|
||||
import type { LysandPublication, Note } from "~types/lysand/Object";
|
||||
import { htmlToText } from "html-to-text";
|
||||
|
|
@ -29,104 +24,10 @@ import linkifyStr from "linkify-string";
|
|||
import linkifyHtml from "linkify-html";
|
||||
import { addStausToMeilisearch } from "@meilisearch";
|
||||
import { ConfigManager } from "config-manager";
|
||||
import { statusAndUserRelations, userRelations } from "./relations";
|
||||
|
||||
const config = await new ConfigManager({}).getConfig();
|
||||
|
||||
export const statusAndUserRelations: Prisma.StatusInclude = {
|
||||
author: {
|
||||
include: userRelations,
|
||||
},
|
||||
application: true,
|
||||
emojis: true,
|
||||
inReplyToPost: {
|
||||
include: {
|
||||
author: {
|
||||
include: userRelations,
|
||||
},
|
||||
application: true,
|
||||
emojis: true,
|
||||
inReplyToPost: {
|
||||
include: {
|
||||
author: true,
|
||||
},
|
||||
},
|
||||
instance: true,
|
||||
mentions: true,
|
||||
pinnedBy: true,
|
||||
_count: {
|
||||
select: {
|
||||
replies: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
reblogs: true,
|
||||
attachments: true,
|
||||
instance: true,
|
||||
mentions: {
|
||||
include: userRelations,
|
||||
},
|
||||
pinnedBy: true,
|
||||
_count: {
|
||||
select: {
|
||||
replies: true,
|
||||
likes: true,
|
||||
reblogs: true,
|
||||
},
|
||||
},
|
||||
reblog: {
|
||||
include: {
|
||||
author: {
|
||||
include: userRelations,
|
||||
},
|
||||
application: true,
|
||||
emojis: true,
|
||||
inReplyToPost: {
|
||||
include: {
|
||||
author: true,
|
||||
},
|
||||
},
|
||||
instance: true,
|
||||
mentions: {
|
||||
include: userRelations,
|
||||
},
|
||||
pinnedBy: true,
|
||||
_count: {
|
||||
select: {
|
||||
replies: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
quotingPost: {
|
||||
include: {
|
||||
author: {
|
||||
include: userRelations,
|
||||
},
|
||||
application: true,
|
||||
emojis: true,
|
||||
inReplyToPost: {
|
||||
include: {
|
||||
author: true,
|
||||
},
|
||||
},
|
||||
instance: true,
|
||||
mentions: true,
|
||||
pinnedBy: true,
|
||||
_count: {
|
||||
select: {
|
||||
replies: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
likes: {
|
||||
include: {
|
||||
liker: true,
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
const statusRelations = Prisma.validator<Prisma.StatusDefaultArgs>()({
|
||||
include: statusAndUserRelations,
|
||||
});
|
||||
|
|
|
|||
|
|
@ -9,6 +9,8 @@ import { addInstanceIfNotExists } from "./Instance";
|
|||
import type { APISource } from "~types/entities/source";
|
||||
import { addUserToMeilisearch } from "@meilisearch";
|
||||
import { ConfigManager, type ConfigType } from "config-manager";
|
||||
import { userRelations } from "./relations";
|
||||
import { MediaBackendType } from "~packages/media-manager";
|
||||
|
||||
const configManager = new ConfigManager({});
|
||||
const config = await configManager.getConfig();
|
||||
|
|
@ -23,21 +25,6 @@ export interface AuthData {
|
|||
* Stores local and remote users
|
||||
*/
|
||||
|
||||
export const userRelations: Prisma.UserInclude = {
|
||||
emojis: true,
|
||||
instance: true,
|
||||
likes: true,
|
||||
relationships: true,
|
||||
relationshipSubjects: true,
|
||||
pinnedNotes: true,
|
||||
_count: {
|
||||
select: {
|
||||
statuses: true,
|
||||
likes: true,
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
const userRelations2 = Prisma.validator<Prisma.UserDefaultArgs>()({
|
||||
include: userRelations,
|
||||
});
|
||||
|
|
@ -51,9 +38,10 @@ export type UserWithRelations = Prisma.UserGetPayload<typeof userRelations2>;
|
|||
*/
|
||||
export const getAvatarUrl = (user: User, config: ConfigType) => {
|
||||
if (!user.avatar) return config.defaults.avatar;
|
||||
if (config.media.backend === "local") {
|
||||
if (config.media.backend === MediaBackendType.LOCAL) {
|
||||
return `${config.http.base_url}/media/${user.avatar}`;
|
||||
} else if (config.media.backend === "s3") {
|
||||
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
||||
} else if (config.media.backend === MediaBackendType.S3) {
|
||||
return `${config.s3.public_url}/${user.avatar}`;
|
||||
}
|
||||
return "";
|
||||
|
|
@ -66,9 +54,10 @@ export const getAvatarUrl = (user: User, config: ConfigType) => {
|
|||
*/
|
||||
export const getHeaderUrl = (user: User, config: ConfigType) => {
|
||||
if (!user.header) return config.defaults.header;
|
||||
if (config.media.backend === "local") {
|
||||
if (config.media.backend === MediaBackendType.LOCAL) {
|
||||
return `${config.http.base_url}/media/${user.header}`;
|
||||
} else if (config.media.backend === "s3") {
|
||||
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
||||
} else if (config.media.backend === MediaBackendType.S3) {
|
||||
return `${config.s3.public_url}/${user.header}`;
|
||||
}
|
||||
return "";
|
||||
|
|
@ -366,7 +355,7 @@ export const userToAPI = (
|
|||
bot: user.isBot,
|
||||
source:
|
||||
isOwnAccount && user.source
|
||||
? (user.source as any as APISource)
|
||||
? (user.source as APISource)
|
||||
: undefined,
|
||||
// TODO: Add static avatar and header
|
||||
avatar_static: "",
|
||||
|
|
|
|||
111
database/entities/relations.ts
Normal file
111
database/entities/relations.ts
Normal file
|
|
@ -0,0 +1,111 @@
|
|||
import type { Prisma } from "@prisma/client";
|
||||
|
||||
export const userRelations: Prisma.UserInclude = {
|
||||
emojis: true,
|
||||
instance: true,
|
||||
likes: true,
|
||||
relationships: true,
|
||||
relationshipSubjects: true,
|
||||
pinnedNotes: true,
|
||||
_count: {
|
||||
select: {
|
||||
statuses: true,
|
||||
likes: true,
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
export const statusAndUserRelations: Prisma.StatusInclude = {
|
||||
author: {
|
||||
include: userRelations,
|
||||
},
|
||||
application: true,
|
||||
emojis: true,
|
||||
inReplyToPost: {
|
||||
include: {
|
||||
author: {
|
||||
include: userRelations,
|
||||
},
|
||||
application: true,
|
||||
emojis: true,
|
||||
inReplyToPost: {
|
||||
include: {
|
||||
author: true,
|
||||
},
|
||||
},
|
||||
instance: true,
|
||||
mentions: true,
|
||||
pinnedBy: true,
|
||||
_count: {
|
||||
select: {
|
||||
replies: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
reblogs: true,
|
||||
attachments: true,
|
||||
instance: true,
|
||||
mentions: {
|
||||
include: userRelations,
|
||||
},
|
||||
pinnedBy: true,
|
||||
_count: {
|
||||
select: {
|
||||
replies: true,
|
||||
likes: true,
|
||||
reblogs: true,
|
||||
},
|
||||
},
|
||||
reblog: {
|
||||
include: {
|
||||
author: {
|
||||
include: userRelations,
|
||||
},
|
||||
application: true,
|
||||
emojis: true,
|
||||
inReplyToPost: {
|
||||
include: {
|
||||
author: true,
|
||||
},
|
||||
},
|
||||
instance: true,
|
||||
mentions: {
|
||||
include: userRelations,
|
||||
},
|
||||
pinnedBy: true,
|
||||
_count: {
|
||||
select: {
|
||||
replies: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
quotingPost: {
|
||||
include: {
|
||||
author: {
|
||||
include: userRelations,
|
||||
},
|
||||
application: true,
|
||||
emojis: true,
|
||||
inReplyToPost: {
|
||||
include: {
|
||||
author: true,
|
||||
},
|
||||
},
|
||||
instance: true,
|
||||
mentions: true,
|
||||
pinnedBy: true,
|
||||
_count: {
|
||||
select: {
|
||||
replies: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
likes: {
|
||||
include: {
|
||||
liker: true,
|
||||
},
|
||||
},
|
||||
};
|
||||
12
package.json
12
package.json
|
|
@ -19,6 +19,7 @@
|
|||
"activitypub",
|
||||
"bun"
|
||||
],
|
||||
"workspaces": ["packages/*"],
|
||||
"maintainers": [
|
||||
{
|
||||
"email": "contact@cpluspatch.com",
|
||||
|
|
@ -85,14 +86,13 @@
|
|||
"@aws-sdk/client-s3": "^3.461.0",
|
||||
"@iarna/toml": "^2.2.5",
|
||||
"@json2csv/plainjs": "^7.0.6",
|
||||
"@jsr/bradenmacdonald__s3-lite-client": "npm:@jsr/bradenmacdonald__s3-lite-client",
|
||||
"cli-parser": "workspace:*",
|
||||
"@prisma/client": "^5.6.0",
|
||||
"blurhash": "^2.0.5",
|
||||
"bullmq": "latest",
|
||||
"chalk": "^5.3.0",
|
||||
"cli-parser": "file:packages/cli-parser",
|
||||
"cli-table": "^0.3.11",
|
||||
"config-manager": "file:packages/config-manager",
|
||||
"config-manager": "workspace:*",
|
||||
"eventemitter3": "^5.0.1",
|
||||
"extract-zip": "^2.0.1",
|
||||
"html-to-text": "^9.0.5",
|
||||
|
|
@ -104,9 +104,9 @@
|
|||
"linkify-html": "^4.1.3",
|
||||
"linkify-string": "^4.1.3",
|
||||
"linkifyjs": "^4.1.3",
|
||||
"log-manager": "file:packages/log-manager",
|
||||
"log-manager": "workspace:*",
|
||||
"marked": "latest",
|
||||
"media-manager": "file:packages/media-manager",
|
||||
"media-manager": "workspace:*",
|
||||
"megalodon": "^9.1.1",
|
||||
"meilisearch": "latest",
|
||||
"merge-deep-ts": "^1.2.6",
|
||||
|
|
@ -115,7 +115,7 @@
|
|||
"prisma": "^5.6.0",
|
||||
"prisma-json-types-generator": "^3.0.4",
|
||||
"prisma-redis-middleware": "^4.8.0",
|
||||
"request-parser": "file:packages/request-parser",
|
||||
"request-parser": "workspace:*",
|
||||
"semver": "^7.5.4",
|
||||
"sharp": "^0.33.0-rc.2",
|
||||
"strip-ansi": "^7.1.0"
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "arg-parser",
|
||||
"name": "cli-parser",
|
||||
"version": "0.0.0",
|
||||
"main": "index.ts",
|
||||
"dependencies": { }
|
||||
"dependencies": { "chalk": "^5.3.0", "strip-ansi": "^7.1.0" }
|
||||
}
|
||||
|
|
@ -26,7 +26,11 @@ export class ConfigManager {
|
|||
const config = await this.readConfig<T>();
|
||||
const internalConfig = await this.readInternalConfig<T>();
|
||||
|
||||
return this.mergeConfigs<T>(configDefaults as T, config, internalConfig);
|
||||
return this.mergeConfigs<T>(
|
||||
configDefaults as T,
|
||||
config,
|
||||
internalConfig
|
||||
);
|
||||
}
|
||||
|
||||
getConfigPath() {
|
||||
|
|
|
|||
|
|
@ -2,5 +2,5 @@
|
|||
"name": "config-manager",
|
||||
"version": "0.0.0",
|
||||
"main": "index.ts",
|
||||
"dependencies": {}
|
||||
"dependencies": { "@iarna/toml": "^2.2.5", "merge-deep-ts": "^1.2.6" }
|
||||
}
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
import { S3Client } from "@bradenmacdonald/s3-lite-client";
|
||||
import { S3Client } from "@jsr/bradenmacdonald__s3-lite-client";
|
||||
import type { ConvertableMediaFormats } from "../media-converter";
|
||||
import { MediaConverter } from "../media-converter";
|
||||
import { MediaBackend, MediaBackendType, MediaHasher } from "..";
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -2,5 +2,8 @@
|
|||
"name": "media-manager",
|
||||
"version": "0.0.0",
|
||||
"main": "index.ts",
|
||||
"dependencies": {}
|
||||
"dependencies": {
|
||||
"@jsr/bradenmacdonald__s3-lite-client": "npm:@jsr/bradenmacdonald__s3-lite-client",
|
||||
"config-manager": "workspace:*"
|
||||
}
|
||||
}
|
||||
|
|
@ -2,5 +2,8 @@
|
|||
"name": "protocol-translator",
|
||||
"version": "0.0.0",
|
||||
"main": "index.ts",
|
||||
"dependencies": {}
|
||||
"dependencies": {},
|
||||
"devDependencies": {
|
||||
"activitypub-types": "^1.1.0"
|
||||
}
|
||||
}
|
||||
|
|
@ -1,6 +1,7 @@
|
|||
<template>
|
||||
<div class="flex min-h-screen relative flex-col justify-center px-6 py-12 lg:px-8">
|
||||
<div class="absolute inset-x-0 -top-40 -z-10 transform-gpu overflow-hidden blur-3xl sm:-top-80" aria-hidden="true">
|
||||
<div class="absolute inset-x-0 -top-40 -z-10 transform-gpu overflow-hidden blur-3xl sm:-top-80"
|
||||
aria-hidden="true">
|
||||
<div class="relative left-[calc(50%-11rem)] aspect-[1155/678] w-[36.125rem] -translate-x-1/2 rotate-[30deg] bg-gradient-to-tr from-[#ff80b5] to-[#9089fc] opacity-30 sm:left-[calc(50%-30rem)] sm:w-[72.1875rem]"
|
||||
style="clip-path: polygon(74.1% 44.1%, 100% 61.6%, 97.5% 26.9%, 85.5% 0.1%, 80.7% 2%, 72.5% 32.5%, 60.2% 62.4%, 52.4% 68.1%, 47.5% 58.3%, 45.2% 34.5%, 27.5% 76.7%, 0.1% 64.9%, 17.9% 100%, 27.6% 76.8%, 76.1% 97.7%, 74.1% 44.1%)" />
|
||||
</div>
|
||||
|
|
@ -11,7 +12,8 @@
|
|||
<h1 class="font-bold text-2xl text-center tracking-tight">Login to your account</h1>
|
||||
</div>
|
||||
|
||||
<div v-if="error && error !== 'undefined'" class="rounded bg-purple-100 ring-1 ring-purple-800 py-2 px-4">
|
||||
<div v-if="error && error !== 'undefined'"
|
||||
class="rounded bg-purple-100 ring-1 ring-purple-800 py-2 px-4">
|
||||
<h3 class="font-bold">An error occured:</h3>
|
||||
<p>{{ error }}</p>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,8 +1,9 @@
|
|||
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
|
||||
import { errorResponse, jsonResponse } from "@response";
|
||||
import { userRelations, userToAPI } from "~database/entities/User";
|
||||
import { userToAPI } from "~database/entities/User";
|
||||
import { apiRoute, applyConfig } from "@api";
|
||||
import { client } from "~database/datasource";
|
||||
import { userRelations } from "~database/entities/relations";
|
||||
|
||||
export const meta = applyConfig({
|
||||
allowedMethods: ["GET"],
|
||||
|
|
|
|||
|
|
@ -1,8 +1,9 @@
|
|||
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
|
||||
import { errorResponse, jsonResponse } from "@response";
|
||||
import { userRelations, userToAPI } from "~database/entities/User";
|
||||
import { userToAPI } from "~database/entities/User";
|
||||
import { apiRoute, applyConfig } from "@api";
|
||||
import { client } from "~database/datasource";
|
||||
import { userRelations } from "~database/entities/relations";
|
||||
|
||||
export const meta = applyConfig({
|
||||
allowedMethods: ["GET"],
|
||||
|
|
|
|||
|
|
@ -1,8 +1,9 @@
|
|||
import { errorResponse, jsonResponse } from "@response";
|
||||
import type { UserWithRelations } from "~database/entities/User";
|
||||
import { userRelations, userToAPI } from "~database/entities/User";
|
||||
import { userToAPI } from "~database/entities/User";
|
||||
import { apiRoute, applyConfig } from "@api";
|
||||
import { client } from "~database/datasource";
|
||||
import { userRelations } from "~database/entities/relations";
|
||||
|
||||
export const meta = applyConfig({
|
||||
allowedMethods: ["GET"],
|
||||
|
|
|
|||
|
|
@ -1,9 +1,12 @@
|
|||
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
|
||||
import { errorResponse, jsonResponse } from "@response";
|
||||
import { statusAndUserRelations, statusToAPI } from "~database/entities/Status";
|
||||
import { userRelations } from "~database/entities/User";
|
||||
import { statusToAPI } from "~database/entities/Status";
|
||||
import { apiRoute, applyConfig } from "@api";
|
||||
import { client } from "~database/datasource";
|
||||
import {
|
||||
userRelations,
|
||||
statusAndUserRelations,
|
||||
} from "~database/entities/relations";
|
||||
|
||||
export const meta = applyConfig({
|
||||
allowedMethods: ["GET"],
|
||||
|
|
|
|||
|
|
@ -1,7 +1,8 @@
|
|||
import { errorResponse, jsonResponse } from "@response";
|
||||
import { userRelations, userToAPI } from "~database/entities/User";
|
||||
import { userToAPI } from "~database/entities/User";
|
||||
import { apiRoute, applyConfig } from "@api";
|
||||
import { client } from "~database/datasource";
|
||||
import { userRelations } from "~database/entities/relations";
|
||||
|
||||
export const meta = applyConfig({
|
||||
allowedMethods: ["GET"],
|
||||
|
|
|
|||
|
|
@ -1,7 +1,8 @@
|
|||
import { errorResponse, jsonResponse } from "@response";
|
||||
import { userRelations, userToAPI } from "~database/entities/User";
|
||||
import { userToAPI } from "~database/entities/User";
|
||||
import { apiRoute, applyConfig } from "@api";
|
||||
import { client } from "~database/datasource";
|
||||
import { userRelations } from "~database/entities/relations";
|
||||
|
||||
export const meta = applyConfig({
|
||||
allowedMethods: ["GET"],
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import { errorResponse, jsonResponse } from "@response";
|
||||
import { userRelations, userToAPI } from "~database/entities/User";
|
||||
import { userToAPI } from "~database/entities/User";
|
||||
import { apiRoute, applyConfig } from "@api";
|
||||
import { sanitize } from "isomorphic-dompurify";
|
||||
import { sanitizeHtml } from "@sanitization";
|
||||
|
|
@ -13,6 +13,7 @@ import type { MediaBackend } from "media-manager";
|
|||
import { LocalMediaBackend } from "~packages/media-manager/backends/local";
|
||||
import { S3MediaBackend } from "~packages/media-manager/backends/s3";
|
||||
import { getUrl } from "~database/entities/Attachment";
|
||||
import { userRelations } from "~database/entities/relations";
|
||||
|
||||
export const meta = applyConfig({
|
||||
allowedMethods: ["PATCH"],
|
||||
|
|
|
|||
|
|
@ -1,7 +1,8 @@
|
|||
import { errorResponse, jsonResponse } from "@response";
|
||||
import { userRelations, userToAPI } from "~database/entities/User";
|
||||
import { userToAPI } from "~database/entities/User";
|
||||
import { apiRoute, applyConfig } from "@api";
|
||||
import { client } from "~database/datasource";
|
||||
import { userRelations } from "~database/entities/relations";
|
||||
|
||||
export const meta = applyConfig({
|
||||
allowedMethods: ["GET"],
|
||||
|
|
|
|||
|
|
@ -1,7 +1,8 @@
|
|||
import { errorResponse, jsonResponse } from "@response";
|
||||
import { apiRoute, applyConfig } from "@api";
|
||||
import { client } from "~database/datasource";
|
||||
import { statusAndUserRelations, statusToAPI } from "~database/entities/Status";
|
||||
import { statusAndUserRelations } from "~database/entities/relations";
|
||||
import { statusToAPI } from "~database/entities/Status";
|
||||
|
||||
export const meta = applyConfig({
|
||||
allowedMethods: ["GET"],
|
||||
|
|
|
|||
|
|
@ -1,11 +1,11 @@
|
|||
import { errorResponse, jsonResponse } from "@response";
|
||||
import { userRelations } from "~database/entities/User";
|
||||
import { apiRoute, applyConfig } from "@api";
|
||||
import { client } from "~database/datasource";
|
||||
import {
|
||||
checkForBidirectionalRelationships,
|
||||
relationshipToAPI,
|
||||
} from "~database/entities/Relationship";
|
||||
import { userRelations } from "~database/entities/relations";
|
||||
|
||||
export const meta = applyConfig({
|
||||
allowedMethods: ["POST"],
|
||||
|
|
|
|||
|
|
@ -1,11 +1,11 @@
|
|||
import { errorResponse, jsonResponse } from "@response";
|
||||
import { userRelations } from "~database/entities/User";
|
||||
import { apiRoute, applyConfig } from "@api";
|
||||
import { client } from "~database/datasource";
|
||||
import {
|
||||
checkForBidirectionalRelationships,
|
||||
relationshipToAPI,
|
||||
} from "~database/entities/Relationship";
|
||||
import { userRelations } from "~database/entities/relations";
|
||||
|
||||
export const meta = applyConfig({
|
||||
allowedMethods: ["POST"],
|
||||
|
|
|
|||
|
|
@ -1,7 +1,8 @@
|
|||
import { errorResponse, jsonResponse } from "@response";
|
||||
import { userRelations, userToAPI } from "~database/entities/User";
|
||||
import { userToAPI } from "~database/entities/User";
|
||||
import { apiRoute, applyConfig } from "@api";
|
||||
import { client } from "~database/datasource";
|
||||
import { userRelations } from "~database/entities/relations";
|
||||
|
||||
export const meta = applyConfig({
|
||||
allowedMethods: ["GET"],
|
||||
|
|
|
|||
|
|
@ -1,9 +1,10 @@
|
|||
import { apiRoute, applyConfig } from "@api";
|
||||
import { jsonResponse } from "@response";
|
||||
import { client } from "~database/datasource";
|
||||
import { userRelations, userToAPI } from "~database/entities/User";
|
||||
import { userToAPI } from "~database/entities/User";
|
||||
import type { APIInstance } from "~types/entities/instance";
|
||||
import manifest from "~package.json";
|
||||
import { userRelations } from "~database/entities/relations";
|
||||
|
||||
export const meta = applyConfig({
|
||||
allowedMethods: ["GET"],
|
||||
|
|
|
|||
|
|
@ -1,7 +1,8 @@
|
|||
import { errorResponse, jsonResponse } from "@response";
|
||||
import { userRelations, userToAPI } from "~database/entities/User";
|
||||
import { userToAPI } from "~database/entities/User";
|
||||
import { apiRoute, applyConfig } from "@api";
|
||||
import { client } from "~database/datasource";
|
||||
import { userRelations } from "~database/entities/relations";
|
||||
|
||||
export const meta = applyConfig({
|
||||
allowedMethods: ["GET"],
|
||||
|
|
|
|||
|
|
@ -1,9 +1,11 @@
|
|||
import { errorResponse, jsonResponse } from "@response";
|
||||
import { userRelations } from "~database/entities/User";
|
||||
import { apiRoute, applyConfig } from "@api";
|
||||
import { client } from "~database/datasource";
|
||||
import { statusAndUserRelations } from "~database/entities/Status";
|
||||
import { notificationToAPI } from "~database/entities/Notification";
|
||||
import {
|
||||
userRelations,
|
||||
statusAndUserRelations,
|
||||
} from "~database/entities/relations";
|
||||
|
||||
export const meta = applyConfig({
|
||||
allowedMethods: ["GET"],
|
||||
|
|
|
|||
|
|
@ -1,7 +1,8 @@
|
|||
import { apiRoute, applyConfig } from "@api";
|
||||
import { errorResponse, jsonResponse } from "@response";
|
||||
import { client } from "~database/datasource";
|
||||
import { userRelations, userToAPI } from "~database/entities/User";
|
||||
import { userToAPI } from "~database/entities/User";
|
||||
import { userRelations } from "~database/entities/relations";
|
||||
|
||||
export const meta = applyConfig({
|
||||
allowedMethods: ["DELETE"],
|
||||
|
|
|
|||
|
|
@ -1,7 +1,8 @@
|
|||
import { apiRoute, applyConfig } from "@api";
|
||||
import { errorResponse, jsonResponse } from "@response";
|
||||
import { client } from "~database/datasource";
|
||||
import { userRelations, userToAPI } from "~database/entities/User";
|
||||
import { userToAPI } from "~database/entities/User";
|
||||
import { userRelations } from "~database/entities/relations";
|
||||
|
||||
export const meta = applyConfig({
|
||||
allowedMethods: ["DELETE"],
|
||||
|
|
|
|||
|
|
@ -4,9 +4,9 @@ import { client } from "~database/datasource";
|
|||
import {
|
||||
getAncestors,
|
||||
getDescendants,
|
||||
statusAndUserRelations,
|
||||
statusToAPI,
|
||||
} from "~database/entities/Status";
|
||||
import { statusAndUserRelations } from "~database/entities/relations";
|
||||
|
||||
export const meta = applyConfig({
|
||||
allowedMethods: ["GET"],
|
||||
|
|
|
|||
|
|
@ -3,11 +3,8 @@ import { apiRoute, applyConfig } from "@api";
|
|||
import { errorResponse, jsonResponse } from "@response";
|
||||
import { client } from "~database/datasource";
|
||||
import { createLike } from "~database/entities/Like";
|
||||
import {
|
||||
isViewableByUser,
|
||||
statusAndUserRelations,
|
||||
statusToAPI,
|
||||
} from "~database/entities/Status";
|
||||
import { isViewableByUser, statusToAPI } from "~database/entities/Status";
|
||||
import { statusAndUserRelations } from "~database/entities/relations";
|
||||
import type { APIStatus } from "~types/entities/status";
|
||||
|
||||
export const meta = applyConfig({
|
||||
|
|
|
|||
|
|
@ -1,11 +1,12 @@
|
|||
import { apiRoute, applyConfig } from "@api";
|
||||
import { errorResponse, jsonResponse } from "@response";
|
||||
import { client } from "~database/datasource";
|
||||
import { isViewableByUser } from "~database/entities/Status";
|
||||
import { userToAPI } from "~database/entities/User";
|
||||
import {
|
||||
isViewableByUser,
|
||||
statusAndUserRelations,
|
||||
} from "~database/entities/Status";
|
||||
import { userRelations, userToAPI } from "~database/entities/User";
|
||||
userRelations,
|
||||
} from "~database/entities/relations";
|
||||
|
||||
export const meta = applyConfig({
|
||||
allowedMethods: ["GET"],
|
||||
|
|
|
|||
|
|
@ -6,9 +6,9 @@ import { client } from "~database/datasource";
|
|||
import {
|
||||
editStatus,
|
||||
isViewableByUser,
|
||||
statusAndUserRelations,
|
||||
statusToAPI,
|
||||
} from "~database/entities/Status";
|
||||
import { statusAndUserRelations } from "~database/entities/relations";
|
||||
|
||||
export const meta = applyConfig({
|
||||
allowedMethods: ["GET", "DELETE", "PUT"],
|
||||
|
|
|
|||
|
|
@ -2,7 +2,8 @@
|
|||
import { apiRoute, applyConfig } from "@api";
|
||||
import { errorResponse, jsonResponse } from "@response";
|
||||
import { client } from "~database/datasource";
|
||||
import { statusAndUserRelations, statusToAPI } from "~database/entities/Status";
|
||||
import { statusToAPI } from "~database/entities/Status";
|
||||
import { statusAndUserRelations } from "~database/entities/relations";
|
||||
|
||||
export const meta = applyConfig({
|
||||
allowedMethods: ["POST"],
|
||||
|
|
|
|||
|
|
@ -2,12 +2,9 @@
|
|||
import { apiRoute, applyConfig } from "@api";
|
||||
import { errorResponse, jsonResponse } from "@response";
|
||||
import { client } from "~database/datasource";
|
||||
import {
|
||||
isViewableByUser,
|
||||
statusAndUserRelations,
|
||||
statusToAPI,
|
||||
} from "~database/entities/Status";
|
||||
import { isViewableByUser, statusToAPI } from "~database/entities/Status";
|
||||
import { type UserWithRelations } from "~database/entities/User";
|
||||
import { statusAndUserRelations } from "~database/entities/relations";
|
||||
|
||||
export const meta = applyConfig({
|
||||
allowedMethods: ["POST"],
|
||||
|
|
|
|||
|
|
@ -1,11 +1,12 @@
|
|||
import { apiRoute, applyConfig } from "@api";
|
||||
import { errorResponse, jsonResponse } from "@response";
|
||||
import { client } from "~database/datasource";
|
||||
import { isViewableByUser } from "~database/entities/Status";
|
||||
import { userToAPI } from "~database/entities/User";
|
||||
import {
|
||||
isViewableByUser,
|
||||
statusAndUserRelations,
|
||||
} from "~database/entities/Status";
|
||||
import { userRelations, userToAPI } from "~database/entities/User";
|
||||
userRelations,
|
||||
} from "~database/entities/relations";
|
||||
|
||||
export const meta = applyConfig({
|
||||
allowedMethods: ["GET"],
|
||||
|
|
|
|||
|
|
@ -1,10 +1,8 @@
|
|||
import { apiRoute, applyConfig } from "@api";
|
||||
import { errorResponse } from "@response";
|
||||
import { client } from "~database/datasource";
|
||||
import {
|
||||
isViewableByUser,
|
||||
statusAndUserRelations,
|
||||
} from "~database/entities/Status";
|
||||
import { isViewableByUser } from "~database/entities/Status";
|
||||
import { statusAndUserRelations } from "~database/entities/relations";
|
||||
|
||||
export const meta = applyConfig({
|
||||
allowedMethods: ["GET"],
|
||||
|
|
|
|||
|
|
@ -3,11 +3,8 @@ import { apiRoute, applyConfig } from "@api";
|
|||
import { errorResponse, jsonResponse } from "@response";
|
||||
import { client } from "~database/datasource";
|
||||
import { deleteLike } from "~database/entities/Like";
|
||||
import {
|
||||
isViewableByUser,
|
||||
statusAndUserRelations,
|
||||
statusToAPI,
|
||||
} from "~database/entities/Status";
|
||||
import { isViewableByUser, statusToAPI } from "~database/entities/Status";
|
||||
import { statusAndUserRelations } from "~database/entities/relations";
|
||||
import type { APIStatus } from "~types/entities/status";
|
||||
|
||||
export const meta = applyConfig({
|
||||
|
|
|
|||
|
|
@ -1,7 +1,8 @@
|
|||
import { apiRoute, applyConfig } from "@api";
|
||||
import { errorResponse, jsonResponse } from "@response";
|
||||
import { client } from "~database/datasource";
|
||||
import { statusAndUserRelations, statusToAPI } from "~database/entities/Status";
|
||||
import { statusToAPI } from "~database/entities/Status";
|
||||
import { statusAndUserRelations } from "~database/entities/relations";
|
||||
|
||||
export const meta = applyConfig({
|
||||
allowedMethods: ["POST"],
|
||||
|
|
|
|||
|
|
@ -1,11 +1,8 @@
|
|||
import { apiRoute, applyConfig } from "@api";
|
||||
import { errorResponse, jsonResponse } from "@response";
|
||||
import { client } from "~database/datasource";
|
||||
import {
|
||||
isViewableByUser,
|
||||
statusAndUserRelations,
|
||||
statusToAPI,
|
||||
} from "~database/entities/Status";
|
||||
import { isViewableByUser, statusToAPI } from "~database/entities/Status";
|
||||
import { statusAndUserRelations } from "~database/entities/relations";
|
||||
import type { APIStatus } from "~types/entities/status";
|
||||
|
||||
export const meta = applyConfig({
|
||||
|
|
|
|||
|
|
@ -5,12 +5,9 @@ import { parse } from "marked";
|
|||
import { client } from "~database/datasource";
|
||||
import { getFromToken } from "~database/entities/Application";
|
||||
import type { StatusWithRelations } from "~database/entities/Status";
|
||||
import {
|
||||
createNewStatus,
|
||||
statusAndUserRelations,
|
||||
statusToAPI,
|
||||
} from "~database/entities/Status";
|
||||
import { createNewStatus, statusToAPI } from "~database/entities/Status";
|
||||
import type { UserWithRelations } from "~database/entities/User";
|
||||
import { statusAndUserRelations } from "~database/entities/relations";
|
||||
|
||||
export const meta = applyConfig({
|
||||
allowedMethods: ["POST"],
|
||||
|
|
|
|||
|
|
@ -1,7 +1,8 @@
|
|||
import { apiRoute, applyConfig } from "@api";
|
||||
import { errorResponse, jsonResponse } from "@response";
|
||||
import { client } from "~database/datasource";
|
||||
import { statusAndUserRelations, statusToAPI } from "~database/entities/Status";
|
||||
import { statusToAPI } from "~database/entities/Status";
|
||||
import { statusAndUserRelations } from "~database/entities/relations";
|
||||
|
||||
export const meta = applyConfig({
|
||||
allowedMethods: ["GET"],
|
||||
|
|
|
|||
|
|
@ -1,7 +1,8 @@
|
|||
import { apiRoute, applyConfig } from "@api";
|
||||
import { errorResponse, jsonResponse } from "@response";
|
||||
import { client } from "~database/datasource";
|
||||
import { statusAndUserRelations, statusToAPI } from "~database/entities/Status";
|
||||
import { statusToAPI } from "~database/entities/Status";
|
||||
import { statusAndUserRelations } from "~database/entities/relations";
|
||||
|
||||
export const meta = applyConfig({
|
||||
allowedMethods: ["GET"],
|
||||
|
|
|
|||
|
|
@ -2,8 +2,12 @@ import { apiRoute, applyConfig } from "@api";
|
|||
import { MeiliIndexType, meilisearch } from "@meilisearch";
|
||||
import { errorResponse, jsonResponse } from "@response";
|
||||
import { client } from "~database/datasource";
|
||||
import { statusAndUserRelations, statusToAPI } from "~database/entities/Status";
|
||||
import { userRelations, userToAPI } from "~database/entities/User";
|
||||
import { statusToAPI } from "~database/entities/Status";
|
||||
import { userToAPI } from "~database/entities/User";
|
||||
import {
|
||||
statusAndUserRelations,
|
||||
userRelations,
|
||||
} from "~database/entities/relations";
|
||||
|
||||
export const meta = applyConfig({
|
||||
allowedMethods: ["GET"],
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ import { apiRoute, applyConfig } from "@api";
|
|||
import { randomBytes } from "crypto";
|
||||
import { client } from "~database/datasource";
|
||||
import { TokenType } from "~database/entities/Token";
|
||||
import { userRelations } from "~database/entities/User";
|
||||
import { userRelations } from "~database/entities/relations";
|
||||
|
||||
export const meta = applyConfig({
|
||||
allowedMethods: ["POST"],
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import { apiRoute, applyConfig } from "@api";
|
||||
import { client } from "~database/datasource";
|
||||
import { userRelations } from "~database/entities/User";
|
||||
import { userRelations } from "~database/entities/relations";
|
||||
|
||||
export const meta = applyConfig({
|
||||
allowedMethods: ["POST"],
|
||||
|
|
|
|||
|
|
@ -6,12 +6,12 @@ import { client } from "~database/datasource";
|
|||
import { parseEmojis } from "~database/entities/Emoji";
|
||||
import { createLike, deleteLike } from "~database/entities/Like";
|
||||
import { createFromObject } from "~database/entities/Object";
|
||||
import { createNewStatus, fetchFromRemote } from "~database/entities/Status";
|
||||
import { parseMentionsUris } from "~database/entities/User";
|
||||
import {
|
||||
createNewStatus,
|
||||
fetchFromRemote,
|
||||
userRelations,
|
||||
statusAndUserRelations,
|
||||
} from "~database/entities/Status";
|
||||
import { parseMentionsUris, userRelations } from "~database/entities/User";
|
||||
} from "~database/entities/relations";
|
||||
import type {
|
||||
Announce,
|
||||
Like,
|
||||
|
|
|
|||
|
|
@ -1,7 +1,8 @@
|
|||
import { apiRoute, applyConfig } from "@api";
|
||||
import { errorResponse, jsonResponse } from "@response";
|
||||
import { client } from "~database/datasource";
|
||||
import { userRelations, userToLysand } from "~database/entities/User";
|
||||
import { userToLysand } from "~database/entities/User";
|
||||
import { userRelations } from "~database/entities/relations";
|
||||
|
||||
export const meta = applyConfig({
|
||||
allowedMethods: ["POST"],
|
||||
|
|
|
|||
|
|
@ -1,10 +1,8 @@
|
|||
import { jsonResponse } from "@response";
|
||||
import { apiRoute, applyConfig } from "@api";
|
||||
import {
|
||||
statusAndUserRelations,
|
||||
statusToLysand,
|
||||
} from "~database/entities/Status";
|
||||
import { statusToLysand } from "~database/entities/Status";
|
||||
import { client } from "~database/datasource";
|
||||
import { statusAndUserRelations } from "~database/entities/relations";
|
||||
|
||||
export const meta = applyConfig({
|
||||
allowedMethods: ["GET"],
|
||||
|
|
|
|||
|
|
@ -83,11 +83,14 @@ describe("POST /auth/login/", () => {
|
|||
|
||||
expect(response.status).toBe(302);
|
||||
expect(response.headers.get("Location")).toMatch(
|
||||
/https:\/\/example.com\?code=/
|
||||
/^\/oauth\/redirect\?redirect_uri=https%3A%2F%2Fexample.com&code=[a-f0-9]+&client_id=[a-zA-Z0-9_-]+&application=Test\+Application&website=https%3A%2F%2Fexample.com&scope=read\+write$/
|
||||
);
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access
|
||||
code = response.headers.get("location")?.split("=")[1] || "";
|
||||
code =
|
||||
new URL(
|
||||
response.headers.get("Location") ?? "",
|
||||
"http://lysand.localhost:8080"
|
||||
).searchParams.get("code") ?? "";
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue