Formatting
This commit is contained in:
parent
845dfc3838
commit
9894b203c9
|
@ -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
|
||||
|
|
|
@ -8,44 +8,44 @@ import { deleteActor } from './actor.js';
|
|||
* Handle delete activity
|
||||
*/
|
||||
export default async (actor: CacheableRemoteUser, activity: IDelete): Promise<string> => {
|
||||
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}`;
|
||||
}
|
||||
};
|
||||
|
|
|
@ -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<DriveFile> {
|
||||
// TODO
|
||||
|
||||
|
|
|
@ -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<Note | null> {
|
||||
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<Note | null> {
|
||||
const uri = typeof value === 'string' ? value : value.id;
|
||||
if (uri == null) throw new Error('missing uri');
|
||||
|
|
Loading…
Reference in New Issue