chore: add tiny definition for redis-lock (#9971)
* add tiny definition for redis-lock * Update packages/backend/src/@types/redis-lock.d.ts Co-authored-by: Acid Chicken (硫酸鶏) <root@acid-chicken.com> * fix type name * add @typescript-eslint/naming-convention * define taskToPerform type * chore: use default settings for `@typescript-eslint/naming-convention` * set `format:none` to typeParameter (default) * ignore lines to be treated as exceptions * chore: fix naming --------- Co-authored-by: Acid Chicken (硫酸鶏) <root@acid-chicken.com> Co-authored-by: syuilo <Syuilotan@yahoo.co.jp>
This commit is contained in:
		
							parent
							
								
									b9ee14fe5b
								
							
						
					
					
						commit
						a6fb6150a3
					
				
					 5 changed files with 25 additions and 6 deletions
				
			
		
							
								
								
									
										8
									
								
								packages/backend/src/@types/redis-lock.d.ts
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								packages/backend/src/@types/redis-lock.d.ts
									
										
									
									
										vendored
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,8 @@
 | 
			
		|||
declare module 'redis-lock' {
 | 
			
		||||
	import type Redis from 'ioredis';
 | 
			
		||||
 | 
			
		||||
	type Lock = (lockName: string, timeout?: number, taskToPerform?: () => Promise<void>) => void;
 | 
			
		||||
	function redisLock(client: Redis.Redis, retryDelay: number): Lock;
 | 
			
		||||
 | 
			
		||||
	export = redisLock;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -9,7 +9,7 @@ import { MetaService } from '@/core/MetaService.js';
 | 
			
		|||
import { bindThis } from '@/decorators.js';
 | 
			
		||||
 | 
			
		||||
// Defined also packages/sw/types.ts#L13
 | 
			
		||||
type pushNotificationsTypes = {
 | 
			
		||||
type PushNotificationsTypes = {
 | 
			
		||||
	'notification': Packed<'Notification'>;
 | 
			
		||||
	'unreadAntennaNote': {
 | 
			
		||||
		antenna: { id: string, name: string };
 | 
			
		||||
| 
						 | 
				
			
			@ -56,7 +56,7 @@ export class PushNotificationService {
 | 
			
		|||
	}
 | 
			
		||||
 | 
			
		||||
	@bindThis
 | 
			
		||||
	public async pushNotification<T extends keyof pushNotificationsTypes>(userId: string, type: T, body: pushNotificationsTypes[T]) {
 | 
			
		||||
	public async pushNotification<T extends keyof PushNotificationsTypes>(userId: string, type: T, body: PushNotificationsTypes[T]) {
 | 
			
		||||
		const meta = await this.metaService.fetch();
 | 
			
		||||
	
 | 
			
		||||
		if (!meta.enableServiceWorker || meta.swPublicKey == null || meta.swPrivateKey == null) return;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
export type obj = { [x: string]: any };
 | 
			
		||||
export type Obj = { [x: string]: any };
 | 
			
		||||
export type ApObject = IObject | string | (IObject | string)[];
 | 
			
		||||
 | 
			
		||||
export interface IObject {
 | 
			
		||||
	'@context'?: string | string[] | obj | obj[];
 | 
			
		||||
	'@context'?: string | string[] | Obj | Obj[];
 | 
			
		||||
	type: string | string[];
 | 
			
		||||
	id?: string;
 | 
			
		||||
	name?: string | null;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,14 +20,14 @@ type File = {
 | 
			
		|||
};
 | 
			
		||||
 | 
			
		||||
// TODO: paramsの型をT['params']のスキーマ定義から推論する
 | 
			
		||||
type executor<T extends IEndpointMeta, Ps extends Schema> =
 | 
			
		||||
type Executor<T extends IEndpointMeta, Ps extends Schema> =
 | 
			
		||||
	(params: SchemaType<Ps>, user: T['requireCredential'] extends true ? LocalUser : LocalUser | null, token: AccessToken | null, file?: File, cleanup?: () => any, ip?: string | null, headers?: Record<string, string> | null) =>
 | 
			
		||||
		Promise<T['res'] extends undefined ? Response : SchemaType<NonNullable<T['res']>>>;
 | 
			
		||||
 | 
			
		||||
export abstract class Endpoint<T extends IEndpointMeta, Ps extends Schema> {
 | 
			
		||||
	public exec: (params: any, user: T['requireCredential'] extends true ? LocalUser : LocalUser | null, token: AccessToken | null, file?: File, ip?: string | null, headers?: Record<string, string> | null) => Promise<any>;
 | 
			
		||||
 | 
			
		||||
	constructor(meta: T, paramDef: Ps, cb: executor<T, Ps>) {
 | 
			
		||||
	constructor(meta: T, paramDef: Ps, cb: Executor<T, Ps>) {
 | 
			
		||||
		const validate = ajv.compile(paramDef);
 | 
			
		||||
 | 
			
		||||
		this.exec = (params: any, user: T['requireCredential'] extends true ? LocalUser : LocalUser | null, token: AccessToken | null, file?: File, ip?: string | null, headers?: Record<string, string> | null) => {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -77,6 +77,17 @@ module.exports = {
 | 
			
		|||
		'@typescript-eslint/prefer-nullish-coalescing': [
 | 
			
		||||
			'error',
 | 
			
		||||
		],
 | 
			
		||||
		'@typescript-eslint/naming-convention': [
 | 
			
		||||
			'error',
 | 
			
		||||
			{
 | 
			
		||||
				"selector": "typeLike",
 | 
			
		||||
				"format": ["PascalCase"]
 | 
			
		||||
			},
 | 
			
		||||
			{
 | 
			
		||||
				"selector": "typeParameter",
 | 
			
		||||
				"format": []
 | 
			
		||||
			}
 | 
			
		||||
		],
 | 
			
		||||
		'import/no-unresolved': ['off'],
 | 
			
		||||
		'import/no-default-export': ['warn'],
 | 
			
		||||
		'import/order': ['warn', {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue