diff --git a/packages/backend/src/boot/index.ts b/packages/backend/src/boot/index.ts index 997c78b3ef..056dc9a51d 100644 --- a/packages/backend/src/boot/index.ts +++ b/packages/backend/src/boot/index.ts @@ -18,62 +18,62 @@ const ev = new Xev(); * Init process */ export default async function() { - process.title = `Calckey (${cluster.isPrimary ? 'master' : 'worker'})`; - - if (cluster.isPrimary || envOption.disableClustering) { - await masterMain(); - - if (cluster.isPrimary) { - ev.mount(); - } - } - - if (cluster.isWorker || envOption.disableClustering) { - await workerMain(); - } - - // For when Calckey is started in a child process during unit testing. - // Otherwise, process.send cannot be used, so start it. - if (process.send) { - process.send('ok'); + process.title = `Calckey (${cluster.isPrimary ? 'master' : 'worker'})`; + + if (cluster.isPrimary || envOption.disableClustering) { + await masterMain(); + + if (cluster.isPrimary) { + ev.mount(); } + } + + if (cluster.isWorker || envOption.disableClustering) { + await workerMain(); + } + + // For when Calckey is started in a child process during unit testing. + // Otherwise, process.send cannot be used, so start it. + if (process.send) { + process.send('ok'); + } } //#region Events // Listen new workers cluster.on('fork', worker => { - clusterLogger.debug(`Process forked: [${worker.id}]`); + clusterLogger.debug(`Process forked: [${worker.id}]`); }); // Listen online workers cluster.on('online', worker => { - clusterLogger.debug(`Process is now online: [${worker.id}]`); + clusterLogger.debug(`Process is now online: [${worker.id}]`); }); // Listen for dying workers cluster.on('exit', worker => { - // Replace the dead worker, - // we're not sentimental - clusterLogger.error(chalk.red(`[${worker.id}] died :(`)); - cluster.fork(); + // Replace the dead worker, + // we're not sentimental + clusterLogger.error(chalk.red(`[${worker.id}] died :(`)); + cluster.fork(); }); // Display detail of unhandled promise rejection if (!envOption.quiet) { - process.on('unhandledRejection', console.dir); + process.on('unhandledRejection', console.dir); } // Display detail of uncaught exception process.on('uncaughtException', err => { - try { - logger.error(err); - } catch { } + try { + logger.error(err); + } catch { } }); // Dying away... process.on('exit', code => { - logger.info(`The process is going to exit with code ${code}`); + logger.info(`The process is going to exit with code ${code}`); }); //#endregion diff --git a/packages/backend/src/remote/activitypub/kernel/delete/index.ts b/packages/backend/src/remote/activitypub/kernel/delete/index.ts index ac778c05b4..fc0ff8ad51 100644 --- a/packages/backend/src/remote/activitypub/kernel/delete/index.ts +++ b/packages/backend/src/remote/activitypub/kernel/delete/index.ts @@ -8,44 +8,44 @@ import { deleteActor } from './actor.js'; * Handle delete activity */ export default async (actor: CacheableRemoteUser, activity: IDelete): Promise => { - if ('actor' in activity && actor.uri !== activity.actor) { - throw new Error('invalid actor'); - } - - // Type of object to be deleted - let formerType: string | undefined; - + if ('actor' in activity && actor.uri !== activity.actor) { + throw new Error('invalid actor'); + } + + // Type of object to be deleted + let formerType: string | undefined; + if (typeof activity.object === 'string') { // The type is unknown, but it has disappeared // anyway, so it does not remote resolve - formerType = undefined; + formerType = undefined; } else { - const object = activity.object as IObject; - if (isTombstone(object)) { - formerType = toSingle(object.formerType); - } else { - formerType = toSingle(object.type); - } + const object = activity.object as IObject; + if (isTombstone(object)) { + formerType = toSingle(object.formerType); + } else { + formerType = toSingle(object.type); + } } - - const uri = getApId(activity.object); - + + const uri = getApId(activity.object); + // Even if type is unknown, if actor and object are the same, // it must be `Person`. - if (!formerType && actor.uri === uri) { - formerType = 'Person'; - } + if (!formerType && actor.uri === uri) { + formerType = 'Person'; + } // If not, fallback to `Note`. - if (!formerType) { - formerType = 'Note'; - } + if (!formerType) { + formerType = 'Note'; + } - if (validPost.includes(formerType)) { - return await deleteNote(actor, uri); - } else if (validActor.includes(formerType)) { - return await deleteActor(actor, uri); - } else { - return `Unknown type ${formerType}`; - } + if (validPost.includes(formerType)) { + return await deleteNote(actor, uri); + } else if (validActor.includes(formerType)) { + return await deleteActor(actor, uri); + } else { + return `Unknown type ${formerType}`; + } }; diff --git a/packages/backend/src/remote/activitypub/models/image.ts b/packages/backend/src/remote/activitypub/models/image.ts index 1022b17ecf..111cd25647 100644 --- a/packages/backend/src/remote/activitypub/models/image.ts +++ b/packages/backend/src/remote/activitypub/models/image.ts @@ -55,11 +55,11 @@ export async function createImage(actor: CacheableRemoteUser, value: any): Promi } /** - * Resolve Image. - * - * If the target Image is registered in Calckey, return it, otherwise - * Fetch from remote server, register with Calckey and return it. - */ + * Resolve Image. + * + * If the target Image is registered in Calckey, return it, otherwise + * Fetch from remote server, register with Calckey and return it. + */ export async function resolveImage(actor: CacheableRemoteUser, value: any): Promise { // TODO diff --git a/packages/backend/src/remote/activitypub/models/note.ts b/packages/backend/src/remote/activitypub/models/note.ts index 8d700b14d0..64dc965ec3 100644 --- a/packages/backend/src/remote/activitypub/models/note.ts +++ b/packages/backend/src/remote/activitypub/models/note.ts @@ -53,10 +53,10 @@ export function validateNote(object: any, uri: string) { } /** - * Fetch Notes. - * - * If the target Note is registered in Calckey, it will be returned. - */ + * Fetch Notes. + * + * If the target Note is registered in Calckey, it will be returned. + */ export async function fetchNote(object: string | IObject): Promise { const dbResolver = new DbResolver(); return await dbResolver.getNoteFromApId(object); @@ -265,11 +265,11 @@ export async function createNote(value: string | IObject, resolver?: Resolver, s } /** - * Resolve Note. - * - * If the target Note is registered in Calckey, return it, otherwise - * Fetch from remote server, register with Calckey and return it. - */ + * Resolve Note. + * + * If the target Note is registered in Calckey, return it, otherwise + * Fetch from remote server, register with Calckey and return it. + */ export async function resolveNote(value: string | IObject, resolver?: Resolver): Promise { const uri = typeof value === 'string' ? value : value.id; if (uri == null) throw new Error('missing uri');