refactor: Use ESM (#8358)
* wip * wip * fix * clean up * Update tsconfig.json * Update activitypub.ts * wip
This commit is contained in:
@ -1,5 +1,5 @@
|
||||
import * as crypto from 'crypto';
|
||||
import { URL } from 'url';
|
||||
import * as crypto from 'node:crypto';
|
||||
import { URL } from 'node:url';
|
||||
|
||||
type Request = {
|
||||
url: string;
|
||||
|
@ -1,9 +1,9 @@
|
||||
import { ApObject, getApIds } from './type';
|
||||
import Resolver from './resolver';
|
||||
import { resolvePerson } from './models/person';
|
||||
import { unique, concat } from '@/prelude/array';
|
||||
import { ApObject, getApIds } from './type.js';
|
||||
import Resolver from './resolver.js';
|
||||
import { resolvePerson } from './models/person.js';
|
||||
import { unique, concat } from '@/prelude/array.js';
|
||||
import * as promiseLimit from 'promise-limit';
|
||||
import { User, IRemoteUser } from '@/models/entities/user';
|
||||
import { User, IRemoteUser } from '@/models/entities/user.js';
|
||||
|
||||
type Visibility = 'public' | 'home' | 'followers' | 'specified';
|
||||
|
||||
|
@ -1,12 +1,12 @@
|
||||
import config from '@/config/index';
|
||||
import { Note } from '@/models/entities/note';
|
||||
import { User, IRemoteUser } from '@/models/entities/user';
|
||||
import { UserPublickey } from '@/models/entities/user-publickey';
|
||||
import { MessagingMessage } from '@/models/entities/messaging-message';
|
||||
import { Notes, Users, UserPublickeys, MessagingMessages } from '@/models/index';
|
||||
import { IObject, getApId } from './type';
|
||||
import { resolvePerson } from './models/person';
|
||||
import escapeRegexp = require('escape-regexp');
|
||||
import config from '@/config/index.js';
|
||||
import { Note } from '@/models/entities/note.js';
|
||||
import { User, IRemoteUser } from '@/models/entities/user.js';
|
||||
import { UserPublickey } from '@/models/entities/user-publickey.js';
|
||||
import { MessagingMessage } from '@/models/entities/messaging-message.js';
|
||||
import { Notes, Users, UserPublickeys, MessagingMessages } from '@/models/index.js';
|
||||
import { IObject, getApId } from './type.js';
|
||||
import { resolvePerson } from './models/person.js';
|
||||
import escapeRegexp from 'escape-regexp';
|
||||
|
||||
export default class DbResolver {
|
||||
constructor() {
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { Users, Followings } from '@/models/index';
|
||||
import { ILocalUser, IRemoteUser, User } from '@/models/entities/user';
|
||||
import { deliver } from '@/queue/index';
|
||||
import { Users, Followings } from '@/models/index.js';
|
||||
import { ILocalUser, IRemoteUser, User } from '@/models/entities/user.js';
|
||||
import { deliver } from '@/queue/index.js';
|
||||
|
||||
//#region types
|
||||
interface IRecipe {
|
||||
|
@ -1,8 +1,8 @@
|
||||
import { IRemoteUser } from '@/models/entities/user';
|
||||
import accept from '@/services/following/requests/accept';
|
||||
import { IFollow } from '../../type';
|
||||
import DbResolver from '../../db-resolver';
|
||||
import { relayAccepted } from '@/services/relay';
|
||||
import { IRemoteUser } from '@/models/entities/user.js';
|
||||
import accept from '@/services/following/requests/accept.js';
|
||||
import { IFollow } from '../../type.js';
|
||||
import DbResolver from '../../db-resolver.js';
|
||||
import { relayAccepted } from '@/services/relay.js';
|
||||
|
||||
export default async (actor: IRemoteUser, activity: IFollow): Promise<string> => {
|
||||
// ※ activityはこっちから投げたフォローリクエストなので、activity.actorは存在するローカルユーザーである必要がある
|
||||
|
@ -1,8 +1,8 @@
|
||||
import Resolver from '../../resolver';
|
||||
import { IRemoteUser } from '@/models/entities/user';
|
||||
import acceptFollow from './follow';
|
||||
import { IAccept, isFollow, getApType } from '../../type';
|
||||
import { apLogger } from '../../logger';
|
||||
import Resolver from '../../resolver.js';
|
||||
import { IRemoteUser } from '@/models/entities/user.js';
|
||||
import acceptFollow from './follow.js';
|
||||
import { IAccept, isFollow, getApType } from '../../type.js';
|
||||
import { apLogger } from '../../logger.js';
|
||||
|
||||
const logger = apLogger;
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
import { IRemoteUser } from '@/models/entities/user';
|
||||
import { IAdd } from '../../type';
|
||||
import { resolveNote } from '../../models/note';
|
||||
import { addPinned } from '@/services/i/pin';
|
||||
import { IRemoteUser } from '@/models/entities/user.js';
|
||||
import { IAdd } from '../../type.js';
|
||||
import { resolveNote } from '../../models/note.js';
|
||||
import { addPinned } from '@/services/i/pin.js';
|
||||
|
||||
export default async (actor: IRemoteUser, activity: IAdd): Promise<void> => {
|
||||
if ('actor' in activity && actor.uri !== activity.actor) {
|
||||
|
@ -1,8 +1,8 @@
|
||||
import Resolver from '../../resolver';
|
||||
import { IRemoteUser } from '@/models/entities/user';
|
||||
import announceNote from './note';
|
||||
import { IAnnounce, getApId } from '../../type';
|
||||
import { apLogger } from '../../logger';
|
||||
import Resolver from '../../resolver.js';
|
||||
import { IRemoteUser } from '@/models/entities/user.js';
|
||||
import announceNote from './note.js';
|
||||
import { IAnnounce, getApId } from '../../type.js';
|
||||
import { apLogger } from '../../logger.js';
|
||||
|
||||
const logger = apLogger;
|
||||
|
||||
|
@ -1,14 +1,14 @@
|
||||
import Resolver from '../../resolver';
|
||||
import post from '@/services/note/create';
|
||||
import { IRemoteUser } from '@/models/entities/user';
|
||||
import { IAnnounce, getApId } from '../../type';
|
||||
import { fetchNote, resolveNote } from '../../models/note';
|
||||
import { apLogger } from '../../logger';
|
||||
import { extractDbHost } from '@/misc/convert-host';
|
||||
import { fetchMeta } from '@/misc/fetch-meta';
|
||||
import { getApLock } from '@/misc/app-lock';
|
||||
import { parseAudience } from '../../audience';
|
||||
import { StatusError } from '@/misc/fetch';
|
||||
import Resolver from '../../resolver.js';
|
||||
import post from '@/services/note/create.js';
|
||||
import { IRemoteUser } from '@/models/entities/user.js';
|
||||
import { IAnnounce, getApId } from '../../type.js';
|
||||
import { fetchNote, resolveNote } from '../../models/note.js';
|
||||
import { apLogger } from '../../logger.js';
|
||||
import { extractDbHost } from '@/misc/convert-host.js';
|
||||
import { fetchMeta } from '@/misc/fetch-meta.js';
|
||||
import { getApLock } from '@/misc/app-lock.js';
|
||||
import { parseAudience } from '../../audience.js';
|
||||
import { StatusError } from '@/misc/fetch.js';
|
||||
|
||||
const logger = apLogger;
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
import { IBlock } from '../../type';
|
||||
import block from '@/services/blocking/create';
|
||||
import { IRemoteUser } from '@/models/entities/user';
|
||||
import DbResolver from '../../db-resolver';
|
||||
import { IBlock } from '../../type.js';
|
||||
import block from '@/services/blocking/create.js';
|
||||
import { IRemoteUser } from '@/models/entities/user.js';
|
||||
import DbResolver from '../../db-resolver.js';
|
||||
|
||||
export default async (actor: IRemoteUser, activity: IBlock): Promise<string> => {
|
||||
// ※ activity.objectにブロック対象があり、それは存在するローカルユーザーのはず
|
||||
|
@ -1,9 +1,9 @@
|
||||
import Resolver from '../../resolver';
|
||||
import { IRemoteUser } from '@/models/entities/user';
|
||||
import createNote from './note';
|
||||
import { ICreate, getApId, isPost, getApType } from '../../type';
|
||||
import { apLogger } from '../../logger';
|
||||
import { toArray, concat, unique } from '@/prelude/array';
|
||||
import Resolver from '../../resolver.js';
|
||||
import { IRemoteUser } from '@/models/entities/user.js';
|
||||
import createNote from './note.js';
|
||||
import { ICreate, getApId, isPost, getApType } from '../../type.js';
|
||||
import { apLogger } from '../../logger.js';
|
||||
import { toArray, concat, unique } from '@/prelude/array.js';
|
||||
|
||||
const logger = apLogger;
|
||||
|
||||
|
@ -1,10 +1,10 @@
|
||||
import Resolver from '../../resolver';
|
||||
import { IRemoteUser } from '@/models/entities/user';
|
||||
import { createNote, fetchNote } from '../../models/note';
|
||||
import { getApId, IObject, ICreate } from '../../type';
|
||||
import { getApLock } from '@/misc/app-lock';
|
||||
import { extractDbHost } from '@/misc/convert-host';
|
||||
import { StatusError } from '@/misc/fetch';
|
||||
import Resolver from '../../resolver.js';
|
||||
import { IRemoteUser } from '@/models/entities/user.js';
|
||||
import { createNote, fetchNote } from '../../models/note.js';
|
||||
import { getApId, IObject, ICreate } from '../../type.js';
|
||||
import { getApLock } from '@/misc/app-lock.js';
|
||||
import { extractDbHost } from '@/misc/convert-host.js';
|
||||
import { StatusError } from '@/misc/fetch.js';
|
||||
|
||||
/**
|
||||
* 投稿作成アクティビティを捌きます
|
||||
|
@ -1,7 +1,7 @@
|
||||
import { apLogger } from '../../logger';
|
||||
import { createDeleteAccountJob } from '@/queue';
|
||||
import { IRemoteUser } from '@/models/entities/user';
|
||||
import { Users } from '@/models/index';
|
||||
import { apLogger } from '../../logger.js';
|
||||
import { createDeleteAccountJob } from '@/queue/index.js';
|
||||
import { IRemoteUser } from '@/models/entities/user.js';
|
||||
import { Users } from '@/models/index.js';
|
||||
|
||||
const logger = apLogger;
|
||||
|
||||
|
@ -1,8 +1,8 @@
|
||||
import deleteNote from './note';
|
||||
import { IRemoteUser } from '@/models/entities/user';
|
||||
import { IDelete, getApId, isTombstone, IObject, validPost, validActor } from '../../type';
|
||||
import { toSingle } from '@/prelude/array';
|
||||
import { deleteActor } from './actor';
|
||||
import deleteNote from './note.js';
|
||||
import { IRemoteUser } from '@/models/entities/user.js';
|
||||
import { IDelete, getApId, isTombstone, IObject, validPost, validActor } from '../../type.js';
|
||||
import { toSingle } from '@/prelude/array.js';
|
||||
import { deleteActor } from './actor.js';
|
||||
|
||||
/**
|
||||
* 削除アクティビティを捌きます
|
||||
|
@ -1,9 +1,9 @@
|
||||
import { IRemoteUser } from '@/models/entities/user';
|
||||
import deleteNode from '@/services/note/delete';
|
||||
import { apLogger } from '../../logger';
|
||||
import DbResolver from '../../db-resolver';
|
||||
import { getApLock } from '@/misc/app-lock';
|
||||
import { deleteMessage } from '@/services/messages/delete';
|
||||
import { IRemoteUser } from '@/models/entities/user.js';
|
||||
import deleteNode from '@/services/note/delete.js';
|
||||
import { apLogger } from '../../logger.js';
|
||||
import DbResolver from '../../db-resolver.js';
|
||||
import { getApLock } from '@/misc/app-lock.js';
|
||||
import { deleteMessage } from '@/services/messages/delete.js';
|
||||
|
||||
const logger = apLogger;
|
||||
|
||||
|
@ -1,9 +1,9 @@
|
||||
import { IRemoteUser } from '@/models/entities/user';
|
||||
import config from '@/config/index';
|
||||
import { IFlag, getApIds } from '../../type';
|
||||
import { AbuseUserReports, Users } from '@/models/index';
|
||||
import { IRemoteUser } from '@/models/entities/user.js';
|
||||
import config from '@/config/index.js';
|
||||
import { IFlag, getApIds } from '../../type.js';
|
||||
import { AbuseUserReports, Users } from '@/models/index.js';
|
||||
import { In } from 'typeorm';
|
||||
import { genId } from '@/misc/gen-id';
|
||||
import { genId } from '@/misc/gen-id.js';
|
||||
|
||||
export default async (actor: IRemoteUser, activity: IFlag): Promise<string> => {
|
||||
// objectは `(User|Note) | (User|Note)[]` だけど、全パターンDBスキーマと対応させられないので
|
||||
|
@ -1,7 +1,7 @@
|
||||
import { IRemoteUser } from '@/models/entities/user';
|
||||
import follow from '@/services/following/create';
|
||||
import { IFollow } from '../type';
|
||||
import DbResolver from '../db-resolver';
|
||||
import { IRemoteUser } from '@/models/entities/user.js';
|
||||
import follow from '@/services/following/create.js';
|
||||
import { IFollow } from '../type.js';
|
||||
import DbResolver from '../db-resolver.js';
|
||||
|
||||
export default async (actor: IRemoteUser, activity: IFollow): Promise<string> => {
|
||||
const dbResolver = new DbResolver();
|
||||
|
@ -1,22 +1,22 @@
|
||||
import { IObject, isCreate, isDelete, isUpdate, isRead, isFollow, isAccept, isReject, isAdd, isRemove, isAnnounce, isLike, isUndo, isBlock, isCollectionOrOrderedCollection, isCollection, isFlag } from '../type';
|
||||
import { IRemoteUser } from '@/models/entities/user';
|
||||
import create from './create/index';
|
||||
import performDeleteActivity from './delete/index';
|
||||
import performUpdateActivity from './update/index';
|
||||
import { performReadActivity } from './read';
|
||||
import follow from './follow';
|
||||
import undo from './undo/index';
|
||||
import like from './like';
|
||||
import announce from './announce/index';
|
||||
import accept from './accept/index';
|
||||
import reject from './reject/index';
|
||||
import add from './add/index';
|
||||
import remove from './remove/index';
|
||||
import block from './block/index';
|
||||
import flag from './flag/index';
|
||||
import { apLogger } from '../logger';
|
||||
import Resolver from '../resolver';
|
||||
import { toArray } from '@/prelude/array';
|
||||
import { IObject, isCreate, isDelete, isUpdate, isRead, isFollow, isAccept, isReject, isAdd, isRemove, isAnnounce, isLike, isUndo, isBlock, isCollectionOrOrderedCollection, isCollection, isFlag } from '../type.js';
|
||||
import { IRemoteUser } from '@/models/entities/user.js';
|
||||
import create from './create/index.js';
|
||||
import performDeleteActivity from './delete/index.js';
|
||||
import performUpdateActivity from './update/index.js';
|
||||
import { performReadActivity } from './read.js';
|
||||
import follow from './follow.js';
|
||||
import undo from './undo/index.js';
|
||||
import like from './like.js';
|
||||
import announce from './announce/index.js';
|
||||
import accept from './accept/index.js';
|
||||
import reject from './reject/index.js';
|
||||
import add from './add/index.js';
|
||||
import remove from './remove/index.js';
|
||||
import block from './block/index.js';
|
||||
import flag from './flag/index.js';
|
||||
import { apLogger } from '../logger.js';
|
||||
import Resolver from '../resolver.js';
|
||||
import { toArray } from '@/prelude/array.js';
|
||||
|
||||
export async function performActivity(actor: IRemoteUser, activity: IObject) {
|
||||
if (isCollectionOrOrderedCollection(activity)) {
|
||||
|
@ -1,7 +1,7 @@
|
||||
import { IRemoteUser } from '@/models/entities/user';
|
||||
import { ILike, getApId } from '../type';
|
||||
import create from '@/services/note/reaction/create';
|
||||
import { fetchNote, extractEmojis } from '../models/note';
|
||||
import { IRemoteUser } from '@/models/entities/user.js';
|
||||
import { ILike, getApId } from '../type.js';
|
||||
import create from '@/services/note/reaction/create.js';
|
||||
import { fetchNote, extractEmojis } from '../models/note.js';
|
||||
|
||||
export default async (actor: IRemoteUser, activity: ILike) => {
|
||||
const targetUri = getApId(activity.object);
|
||||
|
@ -1,8 +1,8 @@
|
||||
import { IRemoteUser } from '@/models/entities/user';
|
||||
import { IRead, getApId } from '../type';
|
||||
import { isSelfHost, extractDbHost } from '@/misc/convert-host';
|
||||
import { MessagingMessages } from '@/models/index';
|
||||
import { readUserMessagingMessage } from '../../../server/api/common/read-messaging-message';
|
||||
import { IRemoteUser } from '@/models/entities/user.js';
|
||||
import { IRead, getApId } from '../type.js';
|
||||
import { isSelfHost, extractDbHost } from '@/misc/convert-host.js';
|
||||
import { MessagingMessages } from '@/models/index.js';
|
||||
import { readUserMessagingMessage } from '../../../server/api/common/read-messaging-message.js';
|
||||
|
||||
export const performReadActivity = async (actor: IRemoteUser, activity: IRead): Promise<string> => {
|
||||
const id = await getApId(activity.object);
|
||||
|
@ -1,9 +1,9 @@
|
||||
import { IRemoteUser } from '@/models/entities/user';
|
||||
import { remoteReject } from '@/services/following/reject';
|
||||
import { IFollow } from '../../type';
|
||||
import DbResolver from '../../db-resolver';
|
||||
import { relayRejected } from '@/services/relay';
|
||||
import { Users } from '@/models';
|
||||
import { IRemoteUser } from '@/models/entities/user.js';
|
||||
import { remoteReject } from '@/services/following/reject.js';
|
||||
import { IFollow } from '../../type.js';
|
||||
import DbResolver from '../../db-resolver.js';
|
||||
import { relayRejected } from '@/services/relay.js';
|
||||
import { Users } from '@/models/index.js';
|
||||
|
||||
export default async (actor: IRemoteUser, activity: IFollow): Promise<string> => {
|
||||
// ※ activityはこっちから投げたフォローリクエストなので、activity.actorは存在するローカルユーザーである必要がある
|
||||
|
@ -1,8 +1,8 @@
|
||||
import Resolver from '../../resolver';
|
||||
import { IRemoteUser } from '@/models/entities/user';
|
||||
import rejectFollow from './follow';
|
||||
import { IReject, isFollow, getApType } from '../../type';
|
||||
import { apLogger } from '../../logger';
|
||||
import Resolver from '../../resolver.js';
|
||||
import { IRemoteUser } from '@/models/entities/user.js';
|
||||
import rejectFollow from './follow.js';
|
||||
import { IReject, isFollow, getApType } from '../../type.js';
|
||||
import { apLogger } from '../../logger.js';
|
||||
|
||||
const logger = apLogger;
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
import { IRemoteUser } from '@/models/entities/user';
|
||||
import { IRemove } from '../../type';
|
||||
import { resolveNote } from '../../models/note';
|
||||
import { removePinned } from '@/services/i/pin';
|
||||
import { IRemoteUser } from '@/models/entities/user.js';
|
||||
import { IRemove } from '../../type.js';
|
||||
import { resolveNote } from '../../models/note.js';
|
||||
import { removePinned } from '@/services/i/pin.js';
|
||||
|
||||
export default async (actor: IRemoteUser, activity: IRemove): Promise<void> => {
|
||||
if ('actor' in activity && actor.uri !== activity.actor) {
|
||||
|
@ -1,9 +1,9 @@
|
||||
import unfollow from '@/services/following/delete';
|
||||
import cancelRequest from '@/services/following/requests/cancel';
|
||||
import {IAccept} from '../../type';
|
||||
import { IRemoteUser } from '@/models/entities/user';
|
||||
import { Followings } from '@/models/index';
|
||||
import DbResolver from '../../db-resolver';
|
||||
import unfollow from '@/services/following/delete.js';
|
||||
import cancelRequest from '@/services/following/requests/cancel.js';
|
||||
import {IAccept} from '../../type.js';
|
||||
import { IRemoteUser } from '@/models/entities/user.js';
|
||||
import { Followings } from '@/models/index.js';
|
||||
import DbResolver from '../../db-resolver.js';
|
||||
|
||||
export default async (actor: IRemoteUser, activity: IAccept): Promise<string> => {
|
||||
const dbResolver = new DbResolver();
|
||||
|
@ -1,7 +1,7 @@
|
||||
import { Notes } from '@/models/index';
|
||||
import { IRemoteUser } from '@/models/entities/user';
|
||||
import { IAnnounce, getApId } from '../../type';
|
||||
import deleteNote from '@/services/note/delete';
|
||||
import { Notes } from '@/models/index.js';
|
||||
import { IRemoteUser } from '@/models/entities/user.js';
|
||||
import { IAnnounce, getApId } from '../../type.js';
|
||||
import deleteNote from '@/services/note/delete.js';
|
||||
|
||||
export const undoAnnounce = async (actor: IRemoteUser, activity: IAnnounce): Promise<string> => {
|
||||
const uri = getApId(activity);
|
||||
|
@ -1,7 +1,7 @@
|
||||
import { IBlock } from '../../type';
|
||||
import unblock from '@/services/blocking/delete';
|
||||
import { IRemoteUser } from '@/models/entities/user';
|
||||
import DbResolver from '../../db-resolver';
|
||||
import { IBlock } from '../../type.js';
|
||||
import unblock from '@/services/blocking/delete.js';
|
||||
import { IRemoteUser } from '@/models/entities/user.js';
|
||||
import DbResolver from '../../db-resolver.js';
|
||||
|
||||
export default async (actor: IRemoteUser, activity: IBlock): Promise<string> => {
|
||||
const dbResolver = new DbResolver();
|
||||
|
@ -1,9 +1,9 @@
|
||||
import unfollow from '@/services/following/delete';
|
||||
import cancelRequest from '@/services/following/requests/cancel';
|
||||
import { IFollow } from '../../type';
|
||||
import { IRemoteUser } from '@/models/entities/user';
|
||||
import { FollowRequests, Followings } from '@/models/index';
|
||||
import DbResolver from '../../db-resolver';
|
||||
import unfollow from '@/services/following/delete.js';
|
||||
import cancelRequest from '@/services/following/requests/cancel.js';
|
||||
import { IFollow } from '../../type.js';
|
||||
import { IRemoteUser } from '@/models/entities/user.js';
|
||||
import { FollowRequests, Followings } from '@/models/index.js';
|
||||
import DbResolver from '../../db-resolver.js';
|
||||
|
||||
export default async (actor: IRemoteUser, activity: IFollow): Promise<string> => {
|
||||
const dbResolver = new DbResolver();
|
||||
|
@ -1,12 +1,12 @@
|
||||
import { IRemoteUser } from '@/models/entities/user';
|
||||
import {IUndo, isFollow, isBlock, isLike, isAnnounce, getApType, isAccept} from '../../type';
|
||||
import unfollow from './follow';
|
||||
import unblock from './block';
|
||||
import undoLike from './like';
|
||||
import undoAccept from './accept';
|
||||
import { undoAnnounce } from './announce';
|
||||
import Resolver from '../../resolver';
|
||||
import { apLogger } from '../../logger';
|
||||
import { IRemoteUser } from '@/models/entities/user.js';
|
||||
import {IUndo, isFollow, isBlock, isLike, isAnnounce, getApType, isAccept} from '../../type.js';
|
||||
import unfollow from './follow.js';
|
||||
import unblock from './block.js';
|
||||
import undoLike from './like.js';
|
||||
import undoAccept from './accept.js';
|
||||
import { undoAnnounce } from './announce.js';
|
||||
import Resolver from '../../resolver.js';
|
||||
import { apLogger } from '../../logger.js';
|
||||
|
||||
const logger = apLogger;
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
import { IRemoteUser } from '@/models/entities/user';
|
||||
import { ILike, getApId } from '../../type';
|
||||
import deleteReaction from '@/services/note/reaction/delete';
|
||||
import { fetchNote } from '../../models/note';
|
||||
import { IRemoteUser } from '@/models/entities/user.js';
|
||||
import { ILike, getApId } from '../../type.js';
|
||||
import deleteReaction from '@/services/note/reaction/delete.js';
|
||||
import { fetchNote } from '../../models/note.js';
|
||||
|
||||
/**
|
||||
* Process Undo.Like activity
|
||||
|
@ -1,9 +1,9 @@
|
||||
import { IRemoteUser } from '@/models/entities/user';
|
||||
import { getApType, IUpdate, isActor } from '../../type';
|
||||
import { apLogger } from '../../logger';
|
||||
import { updateQuestion } from '../../models/question';
|
||||
import Resolver from '../../resolver';
|
||||
import { updatePerson } from '../../models/person';
|
||||
import { IRemoteUser } from '@/models/entities/user.js';
|
||||
import { getApType, IUpdate, isActor } from '../../type.js';
|
||||
import { apLogger } from '../../logger.js';
|
||||
import { updateQuestion } from '../../models/question.js';
|
||||
import Resolver from '../../resolver.js';
|
||||
import { updatePerson } from '../../models/person.js';
|
||||
|
||||
/**
|
||||
* Updateアクティビティを捌きます
|
||||
|
@ -1,3 +1,3 @@
|
||||
import { remoteLogger } from '../logger';
|
||||
import { remoteLogger } from '../logger.js';
|
||||
|
||||
export const apLogger = remoteLogger.createSubLogger('ap', 'magenta');
|
||||
|
@ -1,6 +1,6 @@
|
||||
import * as mfm from 'mfm-js';
|
||||
import { Note } from '@/models/entities/note';
|
||||
import { toHtml } from '../../../mfm/to-html';
|
||||
import { Note } from '@/models/entities/note.js';
|
||||
import { toHtml } from '../../../mfm/to-html.js';
|
||||
|
||||
export default function(note: Note) {
|
||||
let html = note.text ? toHtml(mfm.parse(note.text), JSON.parse(note.mentionedRemoteUsers)) : null;
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { IObject } from '../type';
|
||||
import { extractApHashtagObjects } from '../models/tag';
|
||||
import { fromHtml } from '../../../mfm/from-html';
|
||||
import { IObject } from '../type.js';
|
||||
import { extractApHashtagObjects } from '../models/tag.js';
|
||||
import { fromHtml } from '../../../mfm/from-html.js';
|
||||
|
||||
export function htmlToMfm(html: string, tag?: IObject | IObject[]) {
|
||||
const hashtagNames = extractApHashtagObjects(tag).map(x => x.name).filter((x): x is string => x != null);
|
||||
|
@ -1,8 +1,8 @@
|
||||
import * as crypto from 'crypto';
|
||||
import * as crypto from 'node:crypto';
|
||||
import * as jsonld from 'jsonld';
|
||||
import { CONTEXTS } from './contexts';
|
||||
import { CONTEXTS } from './contexts.js';
|
||||
import fetch from 'node-fetch';
|
||||
import { httpAgent, httpsAgent } from '@/misc/fetch';
|
||||
import { httpAgent, httpsAgent } from '@/misc/fetch.js';
|
||||
|
||||
// RsaSignature2017 based from https://github.com/transmute-industries/RsaSignature2017
|
||||
|
||||
|
@ -1,12 +1,12 @@
|
||||
import { uploadFromUrl } from '@/services/drive/upload-from-url';
|
||||
import { IRemoteUser } from '@/models/entities/user';
|
||||
import Resolver from '../resolver';
|
||||
import { fetchMeta } from '@/misc/fetch-meta';
|
||||
import { apLogger } from '../logger';
|
||||
import { DriveFile } from '@/models/entities/drive-file';
|
||||
import { DriveFiles } from '@/models/index';
|
||||
import { truncate } from '@/misc/truncate';
|
||||
import { DB_MAX_IMAGE_COMMENT_LENGTH } from '@/misc/hard-limits';
|
||||
import { uploadFromUrl } from '@/services/drive/upload-from-url.js';
|
||||
import { IRemoteUser } from '@/models/entities/user.js';
|
||||
import Resolver from '../resolver.js';
|
||||
import { fetchMeta } from '@/misc/fetch-meta.js';
|
||||
import { apLogger } from '../logger.js';
|
||||
import { DriveFile } from '@/models/entities/drive-file.js';
|
||||
import { DriveFiles } from '@/models/index.js';
|
||||
import { truncate } from '@/misc/truncate.js';
|
||||
import { DB_MAX_IMAGE_COMMENT_LENGTH } from '@/misc/hard-limits.js';
|
||||
|
||||
const logger = apLogger;
|
||||
|
||||
|
@ -1,9 +1,9 @@
|
||||
import { toArray, unique } from '@/prelude/array';
|
||||
import { IObject, isMention, IApMention } from '../type';
|
||||
import { resolvePerson } from './person';
|
||||
import { toArray, unique } from '@/prelude/array.js';
|
||||
import { IObject, isMention, IApMention } from '../type.js';
|
||||
import { resolvePerson } from './person.js';
|
||||
import * as promiseLimit from 'promise-limit';
|
||||
import Resolver from '../resolver';
|
||||
import { User } from '@/models/entities/user';
|
||||
import Resolver from '../resolver.js';
|
||||
import { User } from '@/models/entities/user.js';
|
||||
|
||||
export async function extractApMentions(tags: IObject | IObject[] | null | undefined) {
|
||||
const hrefs = unique(extractApMentionObjects(tags).map(x => x.href as string));
|
||||
|
@ -1,32 +1,32 @@
|
||||
import * as promiseLimit from 'promise-limit';
|
||||
|
||||
import config from '@/config/index';
|
||||
import Resolver from '../resolver';
|
||||
import post from '@/services/note/create';
|
||||
import { resolvePerson, updatePerson } from './person';
|
||||
import { resolveImage } from './image';
|
||||
import { IRemoteUser } from '@/models/entities/user';
|
||||
import { htmlToMfm } from '../misc/html-to-mfm';
|
||||
import { extractApHashtags } from './tag';
|
||||
import { unique, toArray, toSingle } from '@/prelude/array';
|
||||
import { extractPollFromQuestion } from './question';
|
||||
import vote from '@/services/note/polls/vote';
|
||||
import { apLogger } from '../logger';
|
||||
import { DriveFile } from '@/models/entities/drive-file';
|
||||
import { deliverQuestionUpdate } from '@/services/note/polls/update';
|
||||
import { extractDbHost, toPuny } from '@/misc/convert-host';
|
||||
import { Emojis, Polls, MessagingMessages } from '@/models/index';
|
||||
import { Note } from '@/models/entities/note';
|
||||
import { IObject, getOneApId, getApId, getOneApHrefNullable, validPost, IPost, isEmoji, getApType } from '../type';
|
||||
import { Emoji } from '@/models/entities/emoji';
|
||||
import { genId } from '@/misc/gen-id';
|
||||
import { fetchMeta } from '@/misc/fetch-meta';
|
||||
import { getApLock } from '@/misc/app-lock';
|
||||
import { createMessage } from '@/services/messages/create';
|
||||
import { parseAudience } from '../audience';
|
||||
import { extractApMentions } from './mention';
|
||||
import DbResolver from '../db-resolver';
|
||||
import { StatusError } from '@/misc/fetch';
|
||||
import config from '@/config/index.js';
|
||||
import Resolver from '../resolver.js';
|
||||
import post from '@/services/note/create.js';
|
||||
import { resolvePerson, updatePerson } from './person.js';
|
||||
import { resolveImage } from './image.js';
|
||||
import { IRemoteUser } from '@/models/entities/user.js';
|
||||
import { htmlToMfm } from '../misc/html-to-mfm.js';
|
||||
import { extractApHashtags } from './tag.js';
|
||||
import { unique, toArray, toSingle } from '@/prelude/array.js';
|
||||
import { extractPollFromQuestion } from './question.js';
|
||||
import vote from '@/services/note/polls/vote.js';
|
||||
import { apLogger } from '../logger.js';
|
||||
import { DriveFile } from '@/models/entities/drive-file.js';
|
||||
import { deliverQuestionUpdate } from '@/services/note/polls/update.js';
|
||||
import { extractDbHost, toPuny } from '@/misc/convert-host.js';
|
||||
import { Emojis, Polls, MessagingMessages } from '@/models/index.js';
|
||||
import { Note } from '@/models/entities/note.js';
|
||||
import { IObject, getOneApId, getApId, getOneApHrefNullable, validPost, IPost, isEmoji, getApType } from '../type.js';
|
||||
import { Emoji } from '@/models/entities/emoji.js';
|
||||
import { genId } from '@/misc/gen-id.js';
|
||||
import { fetchMeta } from '@/misc/fetch-meta.js';
|
||||
import { getApLock } from '@/misc/app-lock.js';
|
||||
import { createMessage } from '@/services/messages/create.js';
|
||||
import { parseAudience } from '../audience.js';
|
||||
import { extractApMentions } from './mention.js';
|
||||
import DbResolver from '../db-resolver.js';
|
||||
import { StatusError } from '@/misc/fetch.js';
|
||||
|
||||
const logger = apLogger;
|
||||
|
||||
|
@ -1,35 +1,35 @@
|
||||
import { URL } from 'url';
|
||||
import { URL } from 'node:url';
|
||||
import * as promiseLimit from 'promise-limit';
|
||||
|
||||
import $, { Context } from 'cafy';
|
||||
import config from '@/config/index';
|
||||
import Resolver from '../resolver';
|
||||
import { resolveImage } from './image';
|
||||
import { isCollectionOrOrderedCollection, isCollection, IActor, getApId, getOneApHrefNullable, IObject, isPropertyValue, IApPropertyValue, getApType, isActor } from '../type';
|
||||
import { fromHtml } from '../../../mfm/from-html';
|
||||
import { htmlToMfm } from '../misc/html-to-mfm';
|
||||
import { resolveNote, extractEmojis } from './note';
|
||||
import { registerOrFetchInstanceDoc } from '@/services/register-or-fetch-instance-doc';
|
||||
import { extractApHashtags } from './tag';
|
||||
import { apLogger } from '../logger';
|
||||
import { Note } from '@/models/entities/note';
|
||||
import { updateUsertags } from '@/services/update-hashtag';
|
||||
import { Users, Instances, DriveFiles, Followings, UserProfiles, UserPublickeys } from '@/models/index';
|
||||
import { User, IRemoteUser } from '@/models/entities/user';
|
||||
import { Emoji } from '@/models/entities/emoji';
|
||||
import { UserNotePining } from '@/models/entities/user-note-pining';
|
||||
import { genId } from '@/misc/gen-id';
|
||||
import { instanceChart, usersChart } from '@/services/chart/index';
|
||||
import { UserPublickey } from '@/models/entities/user-publickey';
|
||||
import { isDuplicateKeyValueError } from '@/misc/is-duplicate-key-value-error';
|
||||
import { toPuny } from '@/misc/convert-host';
|
||||
import { UserProfile } from '@/models/entities/user-profile';
|
||||
import config from '@/config/index.js';
|
||||
import Resolver from '../resolver.js';
|
||||
import { resolveImage } from './image.js';
|
||||
import { isCollectionOrOrderedCollection, isCollection, IActor, getApId, getOneApHrefNullable, IObject, isPropertyValue, IApPropertyValue, getApType, isActor } from '../type.js';
|
||||
import { fromHtml } from '../../../mfm/from-html.js';
|
||||
import { htmlToMfm } from '../misc/html-to-mfm.js';
|
||||
import { resolveNote, extractEmojis } from './note.js';
|
||||
import { registerOrFetchInstanceDoc } from '@/services/register-or-fetch-instance-doc.js';
|
||||
import { extractApHashtags } from './tag.js';
|
||||
import { apLogger } from '../logger.js';
|
||||
import { Note } from '@/models/entities/note.js';
|
||||
import { updateUsertags } from '@/services/update-hashtag.js';
|
||||
import { Users, Instances, DriveFiles, Followings, UserProfiles, UserPublickeys } from '@/models/index.js';
|
||||
import { User, IRemoteUser } from '@/models/entities/user.js';
|
||||
import { Emoji } from '@/models/entities/emoji.js';
|
||||
import { UserNotePining } from '@/models/entities/user-note-pining.js';
|
||||
import { genId } from '@/misc/gen-id.js';
|
||||
import { instanceChart, usersChart } from '@/services/chart/index.js';
|
||||
import { UserPublickey } from '@/models/entities/user-publickey.js';
|
||||
import { isDuplicateKeyValueError } from '@/misc/is-duplicate-key-value-error.js';
|
||||
import { toPuny } from '@/misc/convert-host.js';
|
||||
import { UserProfile } from '@/models/entities/user-profile.js';
|
||||
import { getConnection } from 'typeorm';
|
||||
import { toArray } from '@/prelude/array';
|
||||
import { fetchInstanceMetadata } from '@/services/fetch-instance-metadata';
|
||||
import { normalizeForSearch } from '@/misc/normalize-for-search';
|
||||
import { truncate } from '@/misc/truncate';
|
||||
import { StatusError } from '@/misc/fetch';
|
||||
import { toArray } from '@/prelude/array.js';
|
||||
import { fetchInstanceMetadata } from '@/services/fetch-instance-metadata.js';
|
||||
import { normalizeForSearch } from '@/misc/normalize-for-search.js';
|
||||
import { truncate } from '@/misc/truncate.js';
|
||||
import { StatusError } from '@/misc/fetch.js';
|
||||
|
||||
const logger = apLogger;
|
||||
|
||||
|
@ -1,9 +1,9 @@
|
||||
import config from '@/config/index';
|
||||
import Resolver from '../resolver';
|
||||
import { IObject, IQuestion, isQuestion } from '../type';
|
||||
import { apLogger } from '../logger';
|
||||
import { Notes, Polls } from '@/models/index';
|
||||
import { IPoll } from '@/models/entities/poll';
|
||||
import config from '@/config/index.js';
|
||||
import Resolver from '../resolver.js';
|
||||
import { IObject, IQuestion, isQuestion } from '../type.js';
|
||||
import { apLogger } from '../logger.js';
|
||||
import { Notes, Polls } from '@/models/index.js';
|
||||
import { IPoll } from '@/models/entities/poll.js';
|
||||
|
||||
export async function extractPollFromQuestion(source: string | IObject, resolver?: Resolver): Promise<IPoll> {
|
||||
if (resolver == null) resolver = new Resolver();
|
||||
|
@ -1,5 +1,5 @@
|
||||
import { toArray } from '@/prelude/array';
|
||||
import { IObject, isHashtag, IApHashtag } from '../type';
|
||||
import { toArray } from '@/prelude/array.js';
|
||||
import { IObject, isHashtag, IApHashtag } from '../type.js';
|
||||
|
||||
export function extractApHashtags(tags: IObject | IObject[] | null | undefined) {
|
||||
if (tags == null) return [];
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { IObject } from './type';
|
||||
import { IRemoteUser } from '@/models/entities/user';
|
||||
import { performActivity } from './kernel/index';
|
||||
import { IObject } from './type.js';
|
||||
import { IRemoteUser } from '@/models/entities/user.js';
|
||||
import { performActivity } from './kernel/index.js';
|
||||
|
||||
export default async (actor: IRemoteUser, activity: IObject): Promise<void> => {
|
||||
await performActivity(actor, activity);
|
||||
|
@ -1,5 +1,5 @@
|
||||
import config from '@/config/index';
|
||||
import { User } from '@/models/entities/user';
|
||||
import config from '@/config/index.js';
|
||||
import { User } from '@/models/entities/user.js';
|
||||
|
||||
export default (object: any, user: { id: User['id']; host: null }) => ({
|
||||
type: 'Accept',
|
||||
|
@ -1,5 +1,5 @@
|
||||
import config from '@/config/index';
|
||||
import { ILocalUser } from '@/models/entities/user';
|
||||
import config from '@/config/index.js';
|
||||
import { ILocalUser } from '@/models/entities/user.js';
|
||||
|
||||
export default (user: ILocalUser, target: any, object: any) => ({
|
||||
type: 'Add',
|
||||
|
@ -1,5 +1,5 @@
|
||||
import config from '@/config/index';
|
||||
import { Note } from '@/models/entities/note';
|
||||
import config from '@/config/index.js';
|
||||
import { Note } from '@/models/entities/note.js';
|
||||
|
||||
export default (object: any, note: Note) => {
|
||||
const attributedTo = `${config.url}/users/${note.userId}`;
|
||||
|
@ -1,5 +1,5 @@
|
||||
import config from '@/config/index';
|
||||
import { ILocalUser, IRemoteUser } from '@/models/entities/user';
|
||||
import config from '@/config/index.js';
|
||||
import { ILocalUser, IRemoteUser } from '@/models/entities/user.js';
|
||||
|
||||
export default (blocker: ILocalUser, blockee: IRemoteUser) => ({
|
||||
type: 'Block',
|
||||
|
@ -1,5 +1,5 @@
|
||||
import config from '@/config/index';
|
||||
import { Note } from '@/models/entities/note';
|
||||
import config from '@/config/index.js';
|
||||
import { Note } from '@/models/entities/note.js';
|
||||
|
||||
export default (object: any, note: Note) => {
|
||||
const activity = {
|
||||
|
@ -1,5 +1,5 @@
|
||||
import config from '@/config/index';
|
||||
import { User } from '@/models/entities/user';
|
||||
import config from '@/config/index.js';
|
||||
import { User } from '@/models/entities/user.js';
|
||||
|
||||
export default (object: any, user: { id: User['id']; host: null }) => ({
|
||||
type: 'Delete',
|
||||
|
@ -1,5 +1,5 @@
|
||||
import { DriveFile } from '@/models/entities/drive-file';
|
||||
import { DriveFiles } from '@/models/index';
|
||||
import { DriveFile } from '@/models/entities/drive-file.js';
|
||||
import { DriveFiles } from '@/models/index.js';
|
||||
|
||||
export default (file: DriveFile) => ({
|
||||
type: 'Document',
|
||||
|
@ -1,5 +1,5 @@
|
||||
import config from '@/config/index';
|
||||
import { Emoji } from '@/models/entities/emoji';
|
||||
import config from '@/config/index.js';
|
||||
import { Emoji } from '@/models/entities/emoji.js';
|
||||
|
||||
export default (emoji: Emoji) => ({
|
||||
id: `${config.url}/emojis/${emoji.name}`,
|
||||
|
@ -1,7 +1,7 @@
|
||||
import config from '@/config/index';
|
||||
import { IObject, IActivity } from '@/remote/activitypub/type';
|
||||
import { ILocalUser, IRemoteUser } from '@/models/entities/user';
|
||||
import { getInstanceActor } from '@/services/instance-actor';
|
||||
import config from '@/config/index.js';
|
||||
import { IObject, IActivity } from '@/remote/activitypub/type.js';
|
||||
import { ILocalUser, IRemoteUser } from '@/models/entities/user.js';
|
||||
import { getInstanceActor } from '@/services/instance-actor.js';
|
||||
|
||||
// to anonymise reporters, the reporting actor must be a system user
|
||||
// object has to be a uri or array of uris
|
||||
|
@ -1,6 +1,6 @@
|
||||
import config from '@/config/index';
|
||||
import { Relay } from '@/models/entities/relay';
|
||||
import { ILocalUser } from '@/models/entities/user';
|
||||
import config from '@/config/index.js';
|
||||
import { Relay } from '@/models/entities/relay.js';
|
||||
import { ILocalUser } from '@/models/entities/user.js';
|
||||
|
||||
export function renderFollowRelay(relay: Relay, relayActor: ILocalUser) {
|
||||
const follow = {
|
||||
|
@ -1,6 +1,6 @@
|
||||
import config from '@/config/index';
|
||||
import { Users } from '@/models/index';
|
||||
import { User } from '@/models/entities/user';
|
||||
import config from '@/config/index.js';
|
||||
import { Users } from '@/models/index.js';
|
||||
import { User } from '@/models/entities/user.js';
|
||||
|
||||
/**
|
||||
* Convert (local|remote)(Follower|Followee)ID to URL
|
||||
|
@ -1,6 +1,6 @@
|
||||
import config from '@/config/index';
|
||||
import { User } from '@/models/entities/user';
|
||||
import { Users } from '@/models/index';
|
||||
import config from '@/config/index.js';
|
||||
import { User } from '@/models/entities/user.js';
|
||||
import { Users } from '@/models/index.js';
|
||||
|
||||
export default (follower: { id: User['id']; host: User['host']; uri: User['host'] }, followee: { id: User['id']; host: User['host']; uri: User['host'] }, requestId?: string) => {
|
||||
const follow = {
|
||||
|
@ -1,4 +1,4 @@
|
||||
import config from '@/config/index';
|
||||
import config from '@/config/index.js';
|
||||
|
||||
export default (tag: string) => ({
|
||||
type: 'Hashtag',
|
||||
|
@ -1,5 +1,5 @@
|
||||
import { DriveFile } from '@/models/entities/drive-file';
|
||||
import { DriveFiles } from '@/models/index';
|
||||
import { DriveFile } from '@/models/entities/drive-file.js';
|
||||
import { DriveFiles } from '@/models/index.js';
|
||||
|
||||
export default (file: DriveFile) => ({
|
||||
type: 'Image',
|
||||
|
@ -1,9 +1,9 @@
|
||||
import config from '@/config/index';
|
||||
import config from '@/config/index.js';
|
||||
import { v4 as uuid } from 'uuid';
|
||||
import { IActivity } from '../type';
|
||||
import { LdSignature } from '../misc/ld-signature';
|
||||
import { getUserKeypair } from '@/misc/keypair-store';
|
||||
import { User } from '@/models/entities/user';
|
||||
import { IActivity } from '../type.js';
|
||||
import { LdSignature } from '../misc/ld-signature.js';
|
||||
import { getUserKeypair } from '@/misc/keypair-store.js';
|
||||
import { User } from '@/models/entities/user.js';
|
||||
|
||||
export const renderActivity = (x: any): IActivity | null => {
|
||||
if (x == null) return null;
|
||||
|
@ -1,7 +1,7 @@
|
||||
import config from '@/config/index';
|
||||
import { ILocalUser } from '@/models/entities/user';
|
||||
import { UserKeypair } from '@/models/entities/user-keypair';
|
||||
import { createPublicKey } from 'crypto';
|
||||
import config from '@/config/index.js';
|
||||
import { ILocalUser } from '@/models/entities/user.js';
|
||||
import { UserKeypair } from '@/models/entities/user-keypair.js';
|
||||
import { createPublicKey } from 'node:crypto';
|
||||
|
||||
export default (user: ILocalUser, key: UserKeypair, postfix?: string) => ({
|
||||
id: `${config.url}/users/${user.id}${postfix || '/publickey'}`,
|
||||
|
@ -1,8 +1,8 @@
|
||||
import config from '@/config/index';
|
||||
import { NoteReaction } from '@/models/entities/note-reaction';
|
||||
import { Note } from '@/models/entities/note';
|
||||
import { Emojis } from '@/models/index';
|
||||
import renderEmoji from './emoji';
|
||||
import config from '@/config/index.js';
|
||||
import { NoteReaction } from '@/models/entities/note-reaction.js';
|
||||
import { Note } from '@/models/entities/note.js';
|
||||
import { Emojis } from '@/models/index.js';
|
||||
import renderEmoji from './emoji.js';
|
||||
|
||||
export const renderLike = async (noteReaction: NoteReaction, note: Note) => {
|
||||
const reaction = noteReaction.reaction;
|
||||
|
@ -1,6 +1,6 @@
|
||||
import config from '@/config/index';
|
||||
import { User, ILocalUser } from '@/models/entities/user';
|
||||
import { Users } from '@/models/index';
|
||||
import config from '@/config/index.js';
|
||||
import { User, ILocalUser } from '@/models/entities/user.js';
|
||||
import { Users } from '@/models/index.js';
|
||||
|
||||
export default (mention: User) => ({
|
||||
type: 'Mention',
|
||||
|
@ -1,15 +1,15 @@
|
||||
import renderDocument from './document';
|
||||
import renderHashtag from './hashtag';
|
||||
import renderMention from './mention';
|
||||
import renderEmoji from './emoji';
|
||||
import config from '@/config/index';
|
||||
import toHtml from '../misc/get-note-html';
|
||||
import { Note, IMentionedRemoteUsers } from '@/models/entities/note';
|
||||
import { DriveFile } from '@/models/entities/drive-file';
|
||||
import { DriveFiles, Notes, Users, Emojis, Polls } from '@/models/index';
|
||||
import renderDocument from './document.js';
|
||||
import renderHashtag from './hashtag.js';
|
||||
import renderMention from './mention.js';
|
||||
import renderEmoji from './emoji.js';
|
||||
import config from '@/config/index.js';
|
||||
import toHtml from '../misc/get-note-html.js';
|
||||
import { Note, IMentionedRemoteUsers } from '@/models/entities/note.js';
|
||||
import { DriveFile } from '@/models/entities/drive-file.js';
|
||||
import { DriveFiles, Notes, Users, Emojis, Polls } from '@/models/index.js';
|
||||
import { In } from 'typeorm';
|
||||
import { Emoji } from '@/models/entities/emoji';
|
||||
import { Poll } from '@/models/entities/poll';
|
||||
import { Emoji } from '@/models/entities/emoji.js';
|
||||
import { Poll } from '@/models/entities/poll.js';
|
||||
|
||||
export default async function renderNote(note: Note, dive = true, isTalk = false): Promise<Record<string, unknown>> {
|
||||
const getPromisedFiles = async (ids: string[]) => {
|
||||
|
@ -1,16 +1,16 @@
|
||||
import { URL } from 'url';
|
||||
import { URL } from 'node:url';
|
||||
import * as mfm from 'mfm-js';
|
||||
import renderImage from './image';
|
||||
import renderKey from './key';
|
||||
import config from '@/config/index';
|
||||
import { ILocalUser } from '@/models/entities/user';
|
||||
import { toHtml } from '../../../mfm/to-html';
|
||||
import { getEmojis } from './note';
|
||||
import renderEmoji from './emoji';
|
||||
import { IIdentifier } from '../models/identifier';
|
||||
import renderHashtag from './hashtag';
|
||||
import { DriveFiles, UserProfiles } from '@/models/index';
|
||||
import { getUserKeypair } from '@/misc/keypair-store';
|
||||
import renderImage from './image.js';
|
||||
import renderKey from './key.js';
|
||||
import config from '@/config/index.js';
|
||||
import { ILocalUser } from '@/models/entities/user.js';
|
||||
import { toHtml } from '../../../mfm/to-html.js';
|
||||
import { getEmojis } from './note.js';
|
||||
import renderEmoji from './emoji.js';
|
||||
import { IIdentifier } from '../models/identifier.js';
|
||||
import renderHashtag from './hashtag.js';
|
||||
import { DriveFiles, UserProfiles } from '@/models/index.js';
|
||||
import { getUserKeypair } from '@/misc/keypair-store.js';
|
||||
|
||||
export async function renderPerson(user: ILocalUser) {
|
||||
const id = `${config.url}/users/${user.id}`;
|
||||
|
@ -1,7 +1,7 @@
|
||||
import config from '@/config/index';
|
||||
import { User } from '@/models/entities/user';
|
||||
import { Note } from '@/models/entities/note';
|
||||
import { Poll } from '@/models/entities/poll';
|
||||
import config from '@/config/index.js';
|
||||
import { User } from '@/models/entities/user.js';
|
||||
import { Note } from '@/models/entities/note.js';
|
||||
import { Poll } from '@/models/entities/poll.js';
|
||||
|
||||
export default async function renderQuestion(user: { id: User['id'] }, note: Note, poll: Poll) {
|
||||
const question = {
|
||||
|
@ -1,6 +1,6 @@
|
||||
import config from '@/config/index';
|
||||
import { User } from '@/models/entities/user';
|
||||
import { MessagingMessage } from '@/models/entities/messaging-message';
|
||||
import config from '@/config/index.js';
|
||||
import { User } from '@/models/entities/user.js';
|
||||
import { MessagingMessage } from '@/models/entities/messaging-message.js';
|
||||
|
||||
export const renderReadActivity = (user: { id: User['id'] }, message: MessagingMessage) => ({
|
||||
type: 'Read',
|
||||
|
@ -1,5 +1,5 @@
|
||||
import config from '@/config/index';
|
||||
import { User } from '@/models/entities/user';
|
||||
import config from '@/config/index.js';
|
||||
import { User } from '@/models/entities/user.js';
|
||||
|
||||
export default (object: any, user: { id: User['id'] }) => ({
|
||||
type: 'Reject',
|
||||
|
@ -1,5 +1,5 @@
|
||||
import config from '@/config/index';
|
||||
import { User } from '@/models/entities/user';
|
||||
import config from '@/config/index.js';
|
||||
import { User } from '@/models/entities/user.js';
|
||||
|
||||
export default (user: { id: User['id'] }, target: any, object: any) => ({
|
||||
type: 'Remove',
|
||||
|
@ -1,5 +1,5 @@
|
||||
import config from '@/config/index';
|
||||
import { ILocalUser, User } from '@/models/entities/user';
|
||||
import config from '@/config/index.js';
|
||||
import { ILocalUser, User } from '@/models/entities/user.js';
|
||||
|
||||
export default (object: any, user: { id: User['id'] }) => {
|
||||
if (object == null) return null;
|
||||
|
@ -1,5 +1,5 @@
|
||||
import config from '@/config/index';
|
||||
import { User } from '@/models/entities/user';
|
||||
import config from '@/config/index.js';
|
||||
import { User } from '@/models/entities/user.js';
|
||||
|
||||
export default (object: any, user: { id: User['id'] }) => {
|
||||
const activity = {
|
||||
|
@ -1,8 +1,8 @@
|
||||
import config from '@/config/index';
|
||||
import { Note } from '@/models/entities/note';
|
||||
import { IRemoteUser, User } from '@/models/entities/user';
|
||||
import { PollVote } from '@/models/entities/poll-vote';
|
||||
import { Poll } from '@/models/entities/poll';
|
||||
import config from '@/config/index.js';
|
||||
import { Note } from '@/models/entities/note.js';
|
||||
import { IRemoteUser, User } from '@/models/entities/user.js';
|
||||
import { PollVote } from '@/models/entities/poll-vote.js';
|
||||
import { Poll } from '@/models/entities/poll.js';
|
||||
|
||||
export default async function renderVote(user: { id: User['id'] }, vote: PollVote, note: Note, poll: Poll, pollOwner: IRemoteUser): Promise<any> {
|
||||
return {
|
||||
|
@ -1,8 +1,8 @@
|
||||
import config from '@/config/index';
|
||||
import { getUserKeypair } from '@/misc/keypair-store';
|
||||
import { User } from '@/models/entities/user';
|
||||
import { getResponse } from '../../misc/fetch';
|
||||
import { createSignedPost, createSignedGet } from './ap-request';
|
||||
import config from '@/config/index.js';
|
||||
import { getUserKeypair } from '@/misc/keypair-store.js';
|
||||
import { User } from '@/models/entities/user.js';
|
||||
import { getResponse } from '../../misc/fetch.js';
|
||||
import { createSignedPost, createSignedGet } from './ap-request.js';
|
||||
|
||||
export default async (user: { id: User['id'] }, url: string, object: any) => {
|
||||
const body = JSON.stringify(object);
|
||||
|
@ -1,11 +1,11 @@
|
||||
import config from '@/config/index';
|
||||
import { getJson } from '@/misc/fetch';
|
||||
import { ILocalUser } from '@/models/entities/user';
|
||||
import { getInstanceActor } from '@/services/instance-actor';
|
||||
import { signedGet } from './request';
|
||||
import { IObject, isCollectionOrOrderedCollection, ICollection, IOrderedCollection } from './type';
|
||||
import { fetchMeta } from '@/misc/fetch-meta';
|
||||
import { extractDbHost } from '@/misc/convert-host';
|
||||
import config from '@/config/index.js';
|
||||
import { getJson } from '@/misc/fetch.js';
|
||||
import { ILocalUser } from '@/models/entities/user.js';
|
||||
import { getInstanceActor } from '@/services/instance-actor.js';
|
||||
import { signedGet } from './request.js';
|
||||
import { IObject, isCollectionOrOrderedCollection, ICollection, IOrderedCollection } from './type.js';
|
||||
import { fetchMeta } from '@/misc/fetch-meta.js';
|
||||
import { extractDbHost } from '@/misc/convert-host.js';
|
||||
|
||||
export default class Resolver {
|
||||
private history: Set<string>;
|
||||
|
@ -1,3 +1,3 @@
|
||||
import Logger from '@/services/logger';
|
||||
import Logger from '@/services/logger.js';
|
||||
|
||||
export const remoteLogger = new Logger('remote', 'cyan');
|
||||
|
@ -1,12 +1,12 @@
|
||||
import { URL } from 'url';
|
||||
import webFinger from './webfinger';
|
||||
import config from '@/config/index';
|
||||
import { createPerson, updatePerson } from './activitypub/models/person';
|
||||
import { remoteLogger } from './logger';
|
||||
import * as chalk from 'chalk';
|
||||
import { User, IRemoteUser } from '@/models/entities/user';
|
||||
import { Users } from '@/models/index';
|
||||
import { toPuny } from '@/misc/convert-host';
|
||||
import { URL } from 'node:url';
|
||||
import webFinger from './webfinger.js';
|
||||
import config from '@/config/index.js';
|
||||
import { createPerson, updatePerson } from './activitypub/models/person.js';
|
||||
import { remoteLogger } from './logger.js';
|
||||
import chalk from 'chalk';
|
||||
import { User, IRemoteUser } from '@/models/entities/user.js';
|
||||
import { Users } from '@/models/index.js';
|
||||
import { toPuny } from '@/misc/convert-host.js';
|
||||
|
||||
const logger = remoteLogger.createSubLogger('resolve-user');
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { URL } from 'url';
|
||||
import { getJson } from '@/misc/fetch';
|
||||
import { query as urlQuery } from '@/prelude/url';
|
||||
import { URL } from 'node:url';
|
||||
import { getJson } from '@/misc/fetch.js';
|
||||
import { query as urlQuery } from '@/prelude/url.js';
|
||||
|
||||
type ILink = {
|
||||
href: string;
|
||||
|
Reference in New Issue
Block a user