Merge branch 'develop' into pr/ThatOneCalculator/8764
This commit is contained in:
		
						commit
						13f4e92b0f
					
				
					 419 changed files with 656 additions and 534 deletions
				
			
		
							
								
								
									
										15
									
								
								packages/backend/.swcrc
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								packages/backend/.swcrc
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,15 @@ | ||||||
|  | { | ||||||
|  |   "$schema": "https://json.schemastore.org/swcrc", | ||||||
|  |   "jsc": { | ||||||
|  |     "parser": { | ||||||
|  |       "syntax": "typescript", | ||||||
|  |       "dynamicImport": true, | ||||||
|  |       "decorators": true | ||||||
|  |     }, | ||||||
|  |     "transform": { | ||||||
|  |       "legacyDecorator": true, | ||||||
|  |       "decoratorMetadata": true | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   "minify": false | ||||||
|  | } | ||||||
|  | @ -61,13 +61,6 @@ module.exports = { | ||||||
| 
 | 
 | ||||||
| 	// A set of global variables that need to be available in all test environments
 | 	// A set of global variables that need to be available in all test environments
 | ||||||
| 	globals: { | 	globals: { | ||||||
| 		"ts-jest": { |  | ||||||
| 			"useESM": true, |  | ||||||
| 			tsconfig: "test/tsconfig.json", |  | ||||||
| 			diagnostics: { |  | ||||||
|         exclude: ['**'], |  | ||||||
|       }, |  | ||||||
| 		} |  | ||||||
| 	}, | 	}, | ||||||
| 
 | 
 | ||||||
| 	// The maximum amount of workers used to run your tests. Can be specified as % or a number. E.g. maxWorkers: 10% will use 10% of your CPU amount + 1 as the maximum worker number. maxWorkers: 2 will use a maximum of 2 workers.
 | 	// The maximum amount of workers used to run your tests. Can be specified as % or a number. E.g. maxWorkers: 10% will use 10% of your CPU amount + 1 as the maximum worker number. maxWorkers: 2 will use a maximum of 2 workers.
 | ||||||
|  | @ -104,7 +97,7 @@ module.exports = { | ||||||
| 	// notifyMode: "failure-change",
 | 	// notifyMode: "failure-change",
 | ||||||
| 
 | 
 | ||||||
| 	// A preset that is used as a base for Jest's configuration
 | 	// A preset that is used as a base for Jest's configuration
 | ||||||
| 	preset: "ts-jest/presets/js-with-ts-esm", | 	//preset: "ts-jest/presets/js-with-ts-esm",
 | ||||||
| 
 | 
 | ||||||
| 	// Run tests from one or more projects
 | 	// Run tests from one or more projects
 | ||||||
| 	// projects: undefined,
 | 	// projects: undefined,
 | ||||||
|  | @ -184,12 +177,7 @@ module.exports = { | ||||||
| 
 | 
 | ||||||
| 	// A map from regular expressions to paths to transformers
 | 	// A map from regular expressions to paths to transformers
 | ||||||
| 	transform: { | 	transform: { | ||||||
| 		"<regex_match_files>": [ | 		"^.+\\.(t|j)sx?$": ["@swc/jest"], | ||||||
| 			"ts-jest", |  | ||||||
| 			{ |  | ||||||
| 				"useESM": true |  | ||||||
| 			} |  | ||||||
| 		] |  | ||||||
| 	}, | 	}, | ||||||
| 
 | 
 | ||||||
| 	// An array of regexp pattern strings that are matched against all source file paths, matched files will skip transformation
 | 	// An array of regexp pattern strings that are matched against all source file paths, matched files will skip transformation
 | ||||||
|  |  | ||||||
|  | @ -12,6 +12,7 @@ | ||||||
| 		"lint": "eslint --quiet \"src/**/*.ts\"", | 		"lint": "eslint --quiet \"src/**/*.ts\"", | ||||||
| 		"jest": "cross-env NODE_ENV=test node --experimental-vm-modules --experimental-import-meta-resolve node_modules/jest/bin/jest.js --forceExit --detectOpenHandles --runInBand", | 		"jest": "cross-env NODE_ENV=test node --experimental-vm-modules --experimental-import-meta-resolve node_modules/jest/bin/jest.js --forceExit --detectOpenHandles --runInBand", | ||||||
| 		"jest-and-coverage": "cross-env NODE_ENV=test node --experimental-vm-modules --experimental-import-meta-resolve node_modules/jest/bin/jest.js --coverage --forceExit --detectOpenHandles --runInBand", | 		"jest-and-coverage": "cross-env NODE_ENV=test node --experimental-vm-modules --experimental-import-meta-resolve node_modules/jest/bin/jest.js --coverage --forceExit --detectOpenHandles --runInBand", | ||||||
|  | 		"jest-clear": "cross-env NODE_ENV=test node --experimental-vm-modules --experimental-import-meta-resolve node_modules/jest/bin/jest.js --clearCache", | ||||||
| 		"test": "yarn jest", | 		"test": "yarn jest", | ||||||
| 		"test-and-coverage": "yarn jest-and-coverage" | 		"test-and-coverage": "yarn jest-and-coverage" | ||||||
| 	}, | 	}, | ||||||
|  | @ -136,6 +137,8 @@ | ||||||
| 	}, | 	}, | ||||||
| 	"devDependencies": { | 	"devDependencies": { | ||||||
| 		"@redocly/openapi-core": "1.0.0-beta.108", | 		"@redocly/openapi-core": "1.0.0-beta.108", | ||||||
|  | 		"@swc/core": "1.3.2", | ||||||
|  | 		"@swc/jest": "0.2.22", | ||||||
| 		"@types/bcryptjs": "2.4.2", | 		"@types/bcryptjs": "2.4.2", | ||||||
| 		"@types/bull": "3.15.9", | 		"@types/bull": "3.15.9", | ||||||
| 		"@types/cbor": "6.0.0", | 		"@types/cbor": "6.0.0", | ||||||
|  | @ -186,7 +189,6 @@ | ||||||
| 		"eslint-plugin-import": "2.26.0", | 		"eslint-plugin-import": "2.26.0", | ||||||
| 		"execa": "6.1.0", | 		"execa": "6.1.0", | ||||||
| 		"jest": "29.0.3", | 		"jest": "29.0.3", | ||||||
| 		"ts-jest": "29.0.1", |  | ||||||
| 		"typescript": "4.8.3" | 		"typescript": "4.8.3" | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -17,27 +17,30 @@ const $config: Provider = { | ||||||
| 
 | 
 | ||||||
| const $db: Provider = { | const $db: Provider = { | ||||||
| 	provide: DI.db, | 	provide: DI.db, | ||||||
| 	useFactory: async () => { | 	useFactory: async (config) => { | ||||||
| 		const db = createPostgreDataSource(); | 		const db = createPostgreDataSource(config); | ||||||
| 		return await db.initialize(); | 		return await db.initialize(); | ||||||
| 	}, | 	}, | ||||||
|  | 	inject: [DI.config], | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| const $redis: Provider = { | const $redis: Provider = { | ||||||
| 	provide: DI.redis, | 	provide: DI.redis, | ||||||
| 	useFactory: () => { | 	useFactory: (config) => { | ||||||
| 		const redisClient = createRedisConnection(); | 		const redisClient = createRedisConnection(config); | ||||||
| 		return redisClient; | 		return redisClient; | ||||||
| 	}, | 	}, | ||||||
|  | 	inject: [DI.config], | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| const $redisSubscriber: Provider = { | const $redisSubscriber: Provider = { | ||||||
| 	provide: DI.redisSubscriber, | 	provide: DI.redisSubscriber, | ||||||
| 	useFactory: () => { | 	useFactory: (config) => { | ||||||
| 		const redisSubscriber = createRedisConnection(); | 		const redisSubscriber = createRedisConnection(config); | ||||||
| 		redisSubscriber.subscribe(config.host); | 		redisSubscriber.subscribe(config.host); | ||||||
| 		return redisSubscriber; | 		return redisSubscriber; | ||||||
| 	}, | 	}, | ||||||
|  | 	inject: [DI.config], | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| @Global() | @Global() | ||||||
|  | @ -49,8 +52,8 @@ const $redisSubscriber: Provider = { | ||||||
| export class GlobalModule implements OnApplicationShutdown { | export class GlobalModule implements OnApplicationShutdown { | ||||||
| 	constructor( | 	constructor( | ||||||
| 		@Inject(DI.db) private db: DataSource, | 		@Inject(DI.db) private db: DataSource, | ||||||
| 		@Inject(DI.redis) private redisClient: Redis, | 		@Inject(DI.redis) private redisClient: Redis.Redis, | ||||||
| 		@Inject(DI.redisSubscriber) private redisSubscriber: Redis, | 		@Inject(DI.redisSubscriber) private redisSubscriber: Redis.Redis, | ||||||
| 	) {} | 	) {} | ||||||
| 
 | 
 | ||||||
| 	async onApplicationShutdown(signal: string): Promise<void> { | 	async onApplicationShutdown(signal: string): Promise<void> { | ||||||
|  |  | ||||||
|  | @ -1,7 +1,7 @@ | ||||||
| import { Inject, Injectable } from '@nestjs/common'; | import { Inject, Injectable } from '@nestjs/common'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import { UsersRepository } from '@/models/index.js'; | import type { UsersRepository } from '@/models/index.js'; | ||||||
| import { Config } from '@/config.js'; | import type { Config } from '@/config.js'; | ||||||
| import type { User } from '@/models/entities/User.js'; | import type { User } from '@/models/entities/User.js'; | ||||||
| import { ApRendererService } from '@/core/remote/activitypub/ApRendererService.js'; | import { ApRendererService } from '@/core/remote/activitypub/ApRendererService.js'; | ||||||
| import { RelayService } from '@/core/RelayService.js'; | import { RelayService } from '@/core/RelayService.js'; | ||||||
|  |  | ||||||
|  | @ -4,7 +4,7 @@ import { dirname } from 'node:path'; | ||||||
| import { Inject, Injectable } from '@nestjs/common'; | import { Inject, Injectable } from '@nestjs/common'; | ||||||
| import * as nsfw from 'nsfwjs'; | import * as nsfw from 'nsfwjs'; | ||||||
| import si from 'systeminformation'; | import si from 'systeminformation'; | ||||||
| import { Config } from '@/config.js'; | import type { Config } from '@/config.js'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| 
 | 
 | ||||||
| const _filename = fileURLToPath(import.meta.url); | const _filename = fileURLToPath(import.meta.url); | ||||||
|  |  | ||||||
|  | @ -10,7 +10,7 @@ import * as Acct from '@/misc/acct.js'; | ||||||
| import { Cache } from '@/misc/cache.js'; | import { Cache } from '@/misc/cache.js'; | ||||||
| import type { Packed } from '@/misc/schema.js'; | import type { Packed } from '@/misc/schema.js'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import { MutingsRepository, BlockingsRepository, NotesRepository, AntennaNotesRepository, AntennasRepository, UserGroupJoiningsRepository, UserListJoiningsRepository } from '@/models/index.js'; | import type { MutingsRepository, BlockingsRepository, NotesRepository, AntennaNotesRepository, AntennasRepository, UserGroupJoiningsRepository, UserListJoiningsRepository } from '@/models/index.js'; | ||||||
| import { UtilityService } from './UtilityService.js'; | import { UtilityService } from './UtilityService.js'; | ||||||
| import type { OnApplicationShutdown } from '@nestjs/common'; | import type { OnApplicationShutdown } from '@nestjs/common'; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1,7 +1,7 @@ | ||||||
| import { Inject, Injectable } from '@nestjs/common'; | import { Inject, Injectable } from '@nestjs/common'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import type { UsersRepository } from '@/models/index.js'; | import type { UsersRepository } from '@/models/index.js'; | ||||||
| import { Config } from '@/config.js'; | import type { Config } from '@/config.js'; | ||||||
| import { HttpRequestService } from './HttpRequestService.js'; | import { HttpRequestService } from './HttpRequestService.js'; | ||||||
| 
 | 
 | ||||||
| type CaptchaResponse = { | type CaptchaResponse = { | ||||||
|  |  | ||||||
|  | @ -1,5 +1,5 @@ | ||||||
| import { Inject, Injectable } from '@nestjs/common'; | import { Inject, Injectable } from '@nestjs/common'; | ||||||
| import { MutingsRepository, NotificationsRepository, UserProfilesRepository, UsersRepository } from '@/models/index.js'; | import type { MutingsRepository, NotificationsRepository, UserProfilesRepository, UsersRepository } from '@/models/index.js'; | ||||||
| import type { User } from '@/models/entities/User.js'; | import type { User } from '@/models/entities/User.js'; | ||||||
| import type { Notification } from '@/models/entities/Notification.js'; | import type { Notification } from '@/models/entities/Notification.js'; | ||||||
| import { GlobalEventService } from '@/core/GlobalEventService.js'; | import { GlobalEventService } from '@/core/GlobalEventService.js'; | ||||||
|  |  | ||||||
|  | @ -2,14 +2,14 @@ import { Inject, Injectable } from '@nestjs/common'; | ||||||
| import { DataSource, In, IsNull } from 'typeorm'; | import { DataSource, In, IsNull } from 'typeorm'; | ||||||
| import { GlobalEventService } from '@/core/GlobalEventService.js'; | import { GlobalEventService } from '@/core/GlobalEventService.js'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import { Config } from '@/config.js'; | import type { Config } from '@/config.js'; | ||||||
| import { IdService } from '@/core/IdService.js'; | import { IdService } from '@/core/IdService.js'; | ||||||
| import type { DriveFile } from '@/models/entities/DriveFile.js'; | import type { DriveFile } from '@/models/entities/DriveFile.js'; | ||||||
| import type { Emoji } from '@/models/entities/Emoji.js'; | import type { Emoji } from '@/models/entities/Emoji.js'; | ||||||
| import { Cache } from '@/misc/cache.js'; | import { Cache } from '@/misc/cache.js'; | ||||||
| import { query } from '@/misc/prelude/url.js'; | import { query } from '@/misc/prelude/url.js'; | ||||||
| import type { Note } from '@/models/entities/Note.js'; | import type { Note } from '@/models/entities/Note.js'; | ||||||
| import { EmojisRepository } from '@/models/index.js'; | import type { EmojisRepository } from '@/models/index.js'; | ||||||
| import { UtilityService } from './UtilityService.js'; | import { UtilityService } from './UtilityService.js'; | ||||||
| import { ReactionService } from './ReactionService.js'; | import { ReactionService } from './ReactionService.js'; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1,5 +1,5 @@ | ||||||
| import { Inject, Injectable } from '@nestjs/common'; | import { Inject, Injectable } from '@nestjs/common'; | ||||||
| import { UsersRepository } from '@/models/index.js'; | import type { UsersRepository } from '@/models/index.js'; | ||||||
| import { QueueService } from '@/core/QueueService.js'; | import { QueueService } from '@/core/QueueService.js'; | ||||||
| import { UserSuspendService } from '@/core/UserSuspendService.js'; | import { UserSuspendService } from '@/core/UserSuspendService.js'; | ||||||
| import { GlobalEventService } from '@/core/GlobalEventService.js'; | import { GlobalEventService } from '@/core/GlobalEventService.js'; | ||||||
|  |  | ||||||
|  | @ -7,7 +7,7 @@ import PrivateIp from 'private-ip'; | ||||||
| import got, * as Got from 'got'; | import got, * as Got from 'got'; | ||||||
| import chalk from 'chalk'; | import chalk from 'chalk'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import { Config } from '@/config.js'; | import type { Config } from '@/config.js'; | ||||||
| import { HttpRequestService } from '@/core/HttpRequestService.js'; | import { HttpRequestService } from '@/core/HttpRequestService.js'; | ||||||
| import { createTemp } from '@/misc/create-temp.js'; | import { createTemp } from '@/misc/create-temp.js'; | ||||||
| import { StatusError } from '@/misc/status-error.js'; | import { StatusError } from '@/misc/status-error.js'; | ||||||
|  |  | ||||||
|  | @ -4,8 +4,8 @@ import { v4 as uuid } from 'uuid'; | ||||||
| import sharp from 'sharp'; | import sharp from 'sharp'; | ||||||
| import { IsNull } from 'typeorm'; | import { IsNull } from 'typeorm'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import { DriveFilesRepository, UsersRepository, DriveFoldersRepository, UserProfilesRepository } from '@/models/index.js'; | import type { DriveFilesRepository, UsersRepository, DriveFoldersRepository, UserProfilesRepository } from '@/models/index.js'; | ||||||
| import { Config } from '@/config.js'; | import type { Config } from '@/config.js'; | ||||||
| import Logger from '@/logger.js'; | import Logger from '@/logger.js'; | ||||||
| import type { IRemoteUser, User } from '@/models/entities/User.js'; | import type { IRemoteUser, User } from '@/models/entities/User.js'; | ||||||
| import { MetaService } from '@/core/MetaService.js'; | import { MetaService } from '@/core/MetaService.js'; | ||||||
|  |  | ||||||
|  | @ -3,9 +3,9 @@ import { Inject, Injectable } from '@nestjs/common'; | ||||||
| import { validate as validateEmail } from 'deep-email-validator'; | import { validate as validateEmail } from 'deep-email-validator'; | ||||||
| import { MetaService } from '@/core/MetaService.js'; | import { MetaService } from '@/core/MetaService.js'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import { Config } from '@/config.js'; | import type { Config } from '@/config.js'; | ||||||
| import type Logger from '@/logger.js'; | import type Logger from '@/logger.js'; | ||||||
| import { UserProfilesRepository } from '@/models/index.js'; | import type { UserProfilesRepository } from '@/models/index.js'; | ||||||
| import { LoggerService } from '@/core/LoggerService.js'; | import { LoggerService } from '@/core/LoggerService.js'; | ||||||
| 
 | 
 | ||||||
| @Injectable() | @Injectable() | ||||||
|  |  | ||||||
|  | @ -1,5 +1,5 @@ | ||||||
| import { Inject, Injectable } from '@nestjs/common'; | import { Inject, Injectable } from '@nestjs/common'; | ||||||
| import { InstancesRepository } from '@/models/index.js'; | import type { InstancesRepository } from '@/models/index.js'; | ||||||
| import type { Instance } from '@/models/entities/Instance.js'; | import type { Instance } from '@/models/entities/Instance.js'; | ||||||
| import { Cache } from '@/misc/cache.js'; | import { Cache } from '@/misc/cache.js'; | ||||||
| import { IdService } from '@/core/IdService.js'; | import { IdService } from '@/core/IdService.js'; | ||||||
|  |  | ||||||
|  | @ -4,7 +4,7 @@ import { JSDOM } from 'jsdom'; | ||||||
| import fetch from 'node-fetch'; | import fetch from 'node-fetch'; | ||||||
| import tinycolor from 'tinycolor2'; | import tinycolor from 'tinycolor2'; | ||||||
| import type { Instance } from '@/models/entities/Instance.js'; | import type { Instance } from '@/models/entities/Instance.js'; | ||||||
| import { InstancesRepository } from '@/models/index.js'; | import type { InstancesRepository } from '@/models/index.js'; | ||||||
| import { AppLockService } from '@/core/AppLockService.js'; | import { AppLockService } from '@/core/AppLockService.js'; | ||||||
| import type Logger from '@/logger.js'; | import type Logger from '@/logger.js'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
|  |  | ||||||
|  | @ -24,7 +24,7 @@ import type { | ||||||
| } from '@/server/api/stream/types.js'; | } from '@/server/api/stream/types.js'; | ||||||
| import type { Packed } from '@/misc/schema.js'; | import type { Packed } from '@/misc/schema.js'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import { Config } from '@/config.js'; | import type { Config } from '@/config.js'; | ||||||
| 
 | 
 | ||||||
| @Injectable() | @Injectable() | ||||||
| export class GlobalEventService { | export class GlobalEventService { | ||||||
|  |  | ||||||
|  | @ -5,7 +5,7 @@ import { normalizeForSearch } from '@/misc/normalize-for-search.js'; | ||||||
| import { IdService } from '@/core/IdService.js'; | import { IdService } from '@/core/IdService.js'; | ||||||
| import type { Hashtag } from '@/models/entities/Hashtag.js'; | import type { Hashtag } from '@/models/entities/Hashtag.js'; | ||||||
| import HashtagChart from '@/core/chart/charts/hashtag.js'; | import HashtagChart from '@/core/chart/charts/hashtag.js'; | ||||||
| import { HashtagsRepository, UsersRepository } from '@/models/index.js'; | import type { HashtagsRepository, UsersRepository } from '@/models/index.js'; | ||||||
| import { UserEntityService } from './entities/UserEntityService.js'; | import { UserEntityService } from './entities/UserEntityService.js'; | ||||||
| 
 | 
 | ||||||
| @Injectable() | @Injectable() | ||||||
|  |  | ||||||
|  | @ -5,7 +5,7 @@ import fetch from 'node-fetch'; | ||||||
| import { HttpProxyAgent, HttpsProxyAgent } from 'hpagent'; | import { HttpProxyAgent, HttpsProxyAgent } from 'hpagent'; | ||||||
| import { Inject, Injectable } from '@nestjs/common'; | import { Inject, Injectable } from '@nestjs/common'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import { Config } from '@/config.js'; | import type { Config } from '@/config.js'; | ||||||
| import { StatusError } from '@/misc/status-error.js'; | import { StatusError } from '@/misc/status-error.js'; | ||||||
| import type { Response } from 'node-fetch'; | import type { Response } from 'node-fetch'; | ||||||
| import type { URL } from 'node:url'; | import type { URL } from 'node:url'; | ||||||
|  |  | ||||||
|  | @ -1,7 +1,7 @@ | ||||||
| import { Inject, Injectable } from '@nestjs/common'; | import { Inject, Injectable } from '@nestjs/common'; | ||||||
| import { ulid } from 'ulid'; | import { ulid } from 'ulid'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import { Config } from '@/config.js'; | import type { Config } from '@/config.js'; | ||||||
| import { genAid } from '@/misc/id/aid.js'; | import { genAid } from '@/misc/id/aid.js'; | ||||||
| import { genMeid } from '@/misc/id/meid.js'; | import { genMeid } from '@/misc/id/meid.js'; | ||||||
| import { genMeidg } from '@/misc/id/meidg.js'; | import { genMeidg } from '@/misc/id/meidg.js'; | ||||||
|  |  | ||||||
|  | @ -1,7 +1,7 @@ | ||||||
| import { Inject, Injectable } from '@nestjs/common'; | import { Inject, Injectable } from '@nestjs/common'; | ||||||
| import sharp from 'sharp'; | import sharp from 'sharp'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import { Config } from '@/config.js'; | import type { Config } from '@/config.js'; | ||||||
| 
 | 
 | ||||||
| export type IImage = { | export type IImage = { | ||||||
| 	data: Buffer; | 	data: Buffer; | ||||||
|  |  | ||||||
|  | @ -1,7 +1,7 @@ | ||||||
| import { Inject, Injectable } from '@nestjs/common'; | import { Inject, Injectable } from '@nestjs/common'; | ||||||
| import { IsNull } from 'typeorm'; | import { IsNull } from 'typeorm'; | ||||||
| import type { ILocalUser } from '@/models/entities/User.js'; | import type { ILocalUser } from '@/models/entities/User.js'; | ||||||
| import { UsersRepository } from '@/models/index.js'; | import type { UsersRepository } from '@/models/index.js'; | ||||||
| import { Cache } from '@/misc/cache.js'; | import { Cache } from '@/misc/cache.js'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import { CreateSystemUserService } from './CreateSystemUserService.js'; | import { CreateSystemUserService } from './CreateSystemUserService.js'; | ||||||
|  |  | ||||||
|  | @ -4,7 +4,7 @@ import { fileURLToPath } from 'node:url'; | ||||||
| import { dirname } from 'node:path'; | import { dirname } from 'node:path'; | ||||||
| import { Inject, Injectable } from '@nestjs/common'; | import { Inject, Injectable } from '@nestjs/common'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import { Config } from '@/config.js'; | import type { Config } from '@/config.js'; | ||||||
| 
 | 
 | ||||||
| const _filename = fileURLToPath(import.meta.url); | const _filename = fileURLToPath(import.meta.url); | ||||||
| const _dirname = dirname(_filename); | const _dirname = dirname(_filename); | ||||||
|  |  | ||||||
|  | @ -1,7 +1,7 @@ | ||||||
| import { Inject, Injectable } from '@nestjs/common'; | import { Inject, Injectable } from '@nestjs/common'; | ||||||
| import * as SyslogPro from 'syslog-pro'; | import * as SyslogPro from 'syslog-pro'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import { Config } from '@/config.js'; | import type { Config } from '@/config.js'; | ||||||
| import Logger from '@/logger.js'; | import Logger from '@/logger.js'; | ||||||
| 
 | 
 | ||||||
| @Injectable() | @Injectable() | ||||||
|  |  | ||||||
|  | @ -1,7 +1,7 @@ | ||||||
| import { Inject, Injectable } from '@nestjs/common'; | import { Inject, Injectable } from '@nestjs/common'; | ||||||
| import { In, Not } from 'typeorm'; | import { In, Not } from 'typeorm'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import { Config } from '@/config.js'; | import type { Config } from '@/config.js'; | ||||||
| import type { DriveFile } from '@/models/entities/DriveFile.js'; | import type { DriveFile } from '@/models/entities/DriveFile.js'; | ||||||
| import type { MessagingMessage } from '@/models/entities/MessagingMessage.js'; | import type { MessagingMessage } from '@/models/entities/MessagingMessage.js'; | ||||||
| import type { Note } from '@/models/entities/Note.js'; | import type { Note } from '@/models/entities/Note.js'; | ||||||
|  | @ -10,7 +10,7 @@ import type { UserGroup } from '@/models/entities/UserGroup.js'; | ||||||
| import { QueueService } from '@/core/QueueService.js'; | import { QueueService } from '@/core/QueueService.js'; | ||||||
| import { toArray } from '@/misc/prelude/array.js'; | import { toArray } from '@/misc/prelude/array.js'; | ||||||
| import { IdentifiableError } from '@/misc/identifiable-error.js'; | import { IdentifiableError } from '@/misc/identifiable-error.js'; | ||||||
| import { MessagingMessagesRepository, MutingsRepository, UserGroupJoiningsRepository, UsersRepository } from '@/models/index.js'; | import type { MessagingMessagesRepository, MutingsRepository, UserGroupJoiningsRepository, UsersRepository } from '@/models/index.js'; | ||||||
| import { IdService } from './IdService.js'; | import { IdService } from './IdService.js'; | ||||||
| import { GlobalEventService } from './GlobalEventService.js'; | import { GlobalEventService } from './GlobalEventService.js'; | ||||||
| import { UserEntityService } from './entities/UserEntityService.js'; | import { UserEntityService } from './entities/UserEntityService.js'; | ||||||
|  |  | ||||||
|  | @ -1,8 +1,9 @@ | ||||||
| import { Inject, Injectable } from '@nestjs/common'; | import { Inject, Injectable } from '@nestjs/common'; | ||||||
| import { DataSource } from 'typeorm'; | import { DataSource } from 'typeorm'; | ||||||
| import type { UsersRepository } from '@/models/index.js'; | import Redis from 'ioredis'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import { Meta } from '@/models/entities/Meta.js'; | import { Meta } from '@/models/entities/Meta.js'; | ||||||
|  | import { GlobalEventService } from '@/core/GlobalEventService.js'; | ||||||
| import type { OnApplicationShutdown } from '@nestjs/common'; | import type { OnApplicationShutdown } from '@nestjs/common'; | ||||||
| 
 | 
 | ||||||
| @Injectable() | @Injectable() | ||||||
|  | @ -11,19 +12,45 @@ export class MetaService implements OnApplicationShutdown { | ||||||
| 	private intervalId: NodeJS.Timer; | 	private intervalId: NodeJS.Timer; | ||||||
| 
 | 
 | ||||||
| 	constructor( | 	constructor( | ||||||
|  | 		@Inject(DI.redisSubscriber) | ||||||
|  | 		private redisSubscriber: Redis.Redis, | ||||||
|  | 
 | ||||||
| 		@Inject(DI.db) | 		@Inject(DI.db) | ||||||
| 		private db: DataSource, | 		private db: DataSource, | ||||||
|  | 
 | ||||||
|  | 		private globalEventService: GlobalEventService, | ||||||
| 	) { | 	) { | ||||||
|  | 		this.onMessage = this.onMessage.bind(this); | ||||||
|  | 
 | ||||||
| 		if (process.env.NODE_ENV !== 'test') { | 		if (process.env.NODE_ENV !== 'test') { | ||||||
| 			this.intervalId = setInterval(() => { | 			this.intervalId = setInterval(() => { | ||||||
| 				this.fetch(true).then(meta => { | 				this.fetch(true).then(meta => { | ||||||
|  | 					// fetch内でもセットしてるけど仕様変更の可能性もあるため一応
 | ||||||
| 					this.cache = meta; | 					this.cache = meta; | ||||||
| 				}); | 				}); | ||||||
| 			}, 1000 * 10); | 			}, 1000 * 60 * 5); | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		this.redisSubscriber.on('message', this.onMessage); | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	private async onMessage(_, data): Promise<void> { | ||||||
|  | 		const obj = JSON.parse(data); | ||||||
|  | 
 | ||||||
|  | 		if (obj.channel === 'internal') { | ||||||
|  | 			const { type, body } = obj.message; | ||||||
|  | 			switch (type) { | ||||||
|  | 				case 'metaUpdated': { | ||||||
|  | 					this.cache = body; | ||||||
|  | 					break; | ||||||
|  | 				} | ||||||
|  | 				default: | ||||||
|  | 					break; | ||||||
|  | 			} | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	async fetch(noCache = false): Promise<Meta> { | 	public async fetch(noCache = false): Promise<Meta> { | ||||||
| 		if (!noCache && this.cache) return this.cache; | 		if (!noCache && this.cache) return this.cache; | ||||||
| 	 | 	 | ||||||
| 		return await this.db.transaction(async transactionalEntityManager => { | 		return await this.db.transaction(async transactionalEntityManager => { | ||||||
|  | @ -56,8 +83,39 @@ export class MetaService implements OnApplicationShutdown { | ||||||
| 			} | 			} | ||||||
| 		}); | 		}); | ||||||
| 	} | 	} | ||||||
| 	 | 
 | ||||||
|  | 	public async update(data: Partial<Meta>): Promise<Meta> { | ||||||
|  | 		const updated = await this.db.transaction(async transactionalEntityManager => { | ||||||
|  | 			const metas = await transactionalEntityManager.find(Meta, { | ||||||
|  | 				order: { | ||||||
|  | 					id: 'DESC', | ||||||
|  | 				}, | ||||||
|  | 			}); | ||||||
|  | 
 | ||||||
|  | 			const meta = metas[0]; | ||||||
|  | 
 | ||||||
|  | 			if (meta) { | ||||||
|  | 				await transactionalEntityManager.update(Meta, meta.id, data); | ||||||
|  | 
 | ||||||
|  | 				const metas = await transactionalEntityManager.find(Meta, { | ||||||
|  | 					order: { | ||||||
|  | 						id: 'DESC', | ||||||
|  | 					}, | ||||||
|  | 				}); | ||||||
|  | 
 | ||||||
|  | 				return metas[0]; | ||||||
|  | 			} else { | ||||||
|  | 				return await transactionalEntityManager.save(Meta, data); | ||||||
|  | 			} | ||||||
|  | 		}); | ||||||
|  | 
 | ||||||
|  | 		this.globalEventService.publishInternalEvent('metaUpdated', updated); | ||||||
|  | 
 | ||||||
|  | 		return updated; | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
| 	public onApplicationShutdown(signal?: string | undefined) { | 	public onApplicationShutdown(signal?: string | undefined) { | ||||||
| 		clearInterval(this.intervalId); | 		clearInterval(this.intervalId); | ||||||
|  | 		this.redisSubscriber.off('message', this.onMessage); | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -4,7 +4,7 @@ import * as parse5 from 'parse5'; | ||||||
| import { JSDOM } from 'jsdom'; | import { JSDOM } from 'jsdom'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import type { UsersRepository } from '@/models/index.js'; | import type { UsersRepository } from '@/models/index.js'; | ||||||
| import { Config } from '@/config.js'; | import type { Config } from '@/config.js'; | ||||||
| import { intersperse } from '@/misc/prelude/array.js'; | import { intersperse } from '@/misc/prelude/array.js'; | ||||||
| import type { IMentionedRemoteUsers } from '@/models/entities/Note.js'; | import type { IMentionedRemoteUsers } from '@/models/entities/Note.js'; | ||||||
| import * as TreeAdapter from '../../node_modules/parse5/dist/tree-adapters/default.js'; | import * as TreeAdapter from '../../node_modules/parse5/dist/tree-adapters/default.js'; | ||||||
|  |  | ||||||
|  | @ -1,6 +1,6 @@ | ||||||
| import { Inject, Injectable } from '@nestjs/common'; | import { Inject, Injectable } from '@nestjs/common'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import { ModerationLogsRepository } from '@/models/index.js'; | import type { ModerationLogsRepository } from '@/models/index.js'; | ||||||
| import type { User } from '@/models/entities/User.js'; | import type { User } from '@/models/entities/User.js'; | ||||||
| import { IdService } from '@/core/IdService.js'; | import { IdService } from '@/core/IdService.js'; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -6,7 +6,7 @@ import { extractCustomEmojisFromMfm } from '@/misc/extract-custom-emojis-from-mf | ||||||
| import { extractHashtags } from '@/misc/extract-hashtags.js'; | import { extractHashtags } from '@/misc/extract-hashtags.js'; | ||||||
| import type { IMentionedRemoteUsers } from '@/models/entities/Note.js'; | import type { IMentionedRemoteUsers } from '@/models/entities/Note.js'; | ||||||
| import { Note } from '@/models/entities/Note.js'; | import { Note } from '@/models/entities/Note.js'; | ||||||
| import { ChannelFollowingsRepository, ChannelsRepository, InstancesRepository, MutedNotesRepository, MutingsRepository, NotesRepository, NoteThreadMutingsRepository, UserProfilesRepository, UsersRepository } from '@/models/index.js'; | import type { ChannelFollowingsRepository, ChannelsRepository, InstancesRepository, MutedNotesRepository, MutingsRepository, NotesRepository, NoteThreadMutingsRepository, UserProfilesRepository, UsersRepository } from '@/models/index.js'; | ||||||
| import type { DriveFile } from '@/models/entities/DriveFile.js'; | import type { DriveFile } from '@/models/entities/DriveFile.js'; | ||||||
| import type { App } from '@/models/entities/App.js'; | import type { App } from '@/models/entities/App.js'; | ||||||
| import { concat } from '@/misc/prelude/array.js'; | import { concat } from '@/misc/prelude/array.js'; | ||||||
|  | @ -23,7 +23,7 @@ import type { UserProfile } from '@/models/entities/UserProfile.js'; | ||||||
| import { RelayService } from '@/core/RelayService.js'; | import { RelayService } from '@/core/RelayService.js'; | ||||||
| import { FederatedInstanceService } from '@/core/FederatedInstanceService.js'; | import { FederatedInstanceService } from '@/core/FederatedInstanceService.js'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import { Config } from '@/config.js'; | import type { Config } from '@/config.js'; | ||||||
| import NotesChart from '@/core/chart/charts/notes.js'; | import NotesChart from '@/core/chart/charts/notes.js'; | ||||||
| import PerUserNotesChart from '@/core/chart/charts/per-user-notes.js'; | import PerUserNotesChart from '@/core/chart/charts/per-user-notes.js'; | ||||||
| import InstanceChart from '@/core/chart/charts/instance.js'; | import InstanceChart from '@/core/chart/charts/instance.js'; | ||||||
|  |  | ||||||
|  | @ -2,11 +2,11 @@ import { Brackets, In } from 'typeorm'; | ||||||
| import { Injectable, Inject } from '@nestjs/common'; | import { Injectable, Inject } from '@nestjs/common'; | ||||||
| import type { User, ILocalUser, IRemoteUser } from '@/models/entities/User.js'; | import type { User, ILocalUser, IRemoteUser } from '@/models/entities/User.js'; | ||||||
| import type { Note, IMentionedRemoteUsers } from '@/models/entities/Note.js'; | import type { Note, IMentionedRemoteUsers } from '@/models/entities/Note.js'; | ||||||
| import { InstancesRepository, NotesRepository, UsersRepository } from '@/models/index.js'; | import type { InstancesRepository, NotesRepository, UsersRepository } from '@/models/index.js'; | ||||||
| import { RelayService } from '@/core/RelayService.js'; | import { RelayService } from '@/core/RelayService.js'; | ||||||
| import { FederatedInstanceService } from '@/core/FederatedInstanceService.js'; | import { FederatedInstanceService } from '@/core/FederatedInstanceService.js'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import { Config } from '@/config.js'; | import type { Config } from '@/config.js'; | ||||||
| import NotesChart from '@/core/chart/charts/notes.js'; | import NotesChart from '@/core/chart/charts/notes.js'; | ||||||
| import PerUserNotesChart from '@/core/chart/charts/per-user-notes.js'; | import PerUserNotesChart from '@/core/chart/charts/per-user-notes.js'; | ||||||
| import InstanceChart from '@/core/chart/charts/instance.js'; | import InstanceChart from '@/core/chart/charts/instance.js'; | ||||||
|  | @ -14,6 +14,7 @@ import { GlobalEventService } from '@/core/GlobalEventService.js'; | ||||||
| import { ApRendererService } from './remote/activitypub/ApRendererService.js'; | import { ApRendererService } from './remote/activitypub/ApRendererService.js'; | ||||||
| import { ApDeliverManagerService } from './remote/activitypub/ApDeliverManagerService.js'; | import { ApDeliverManagerService } from './remote/activitypub/ApDeliverManagerService.js'; | ||||||
| import { UserEntityService } from './entities/UserEntityService.js'; | import { UserEntityService } from './entities/UserEntityService.js'; | ||||||
|  | import { NoteEntityService } from './entities/NoteEntityService.js'; | ||||||
| 
 | 
 | ||||||
| @Injectable() | @Injectable() | ||||||
| export class NoteDeleteService { | export class NoteDeleteService { | ||||||
|  | @ -31,6 +32,7 @@ export class NoteDeleteService { | ||||||
| 		private instancesRepository: InstancesRepository, | 		private instancesRepository: InstancesRepository, | ||||||
| 
 | 
 | ||||||
| 		private userEntityService: UserEntityService, | 		private userEntityService: UserEntityService, | ||||||
|  | 		private noteEntityService: NoteEntityService, | ||||||
| 		private globalEventServie: GlobalEventService, | 		private globalEventServie: GlobalEventService, | ||||||
| 		private relayService: RelayService, | 		private relayService: RelayService, | ||||||
| 		private federatedInstanceService: FederatedInstanceService, | 		private federatedInstanceService: FederatedInstanceService, | ||||||
|  | @ -42,10 +44,10 @@ export class NoteDeleteService { | ||||||
| 	) {} | 	) {} | ||||||
| 	 | 	 | ||||||
| 	/** | 	/** | ||||||
|  * 投稿を削除します。 | 	 * 投稿を削除します。 | ||||||
|  * @param user 投稿者 | 	 * @param user 投稿者 | ||||||
|  * @param note 投稿 | 	 * @param note 投稿 | ||||||
|  */ | 	 */ | ||||||
| 	async delete(user: { id: User['id']; uri: User['uri']; host: User['host']; }, note: Note, quiet = false) { | 	async delete(user: { id: User['id']; uri: User['uri']; host: User['host']; }, note: Note, quiet = false) { | ||||||
| 		const deletedAt = new Date(); | 		const deletedAt = new Date(); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1,13 +1,13 @@ | ||||||
| import { Inject, Injectable } from '@nestjs/common'; | import { Inject, Injectable } from '@nestjs/common'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import { UsersRepository } from '@/models/index.js'; | import type { UsersRepository } from '@/models/index.js'; | ||||||
| import { IdentifiableError } from '@/misc/identifiable-error.js'; | import { IdentifiableError } from '@/misc/identifiable-error.js'; | ||||||
| import type { User } from '@/models/entities/User.js'; | import type { User } from '@/models/entities/User.js'; | ||||||
| import type { Note } from '@/models/entities/Note.js'; | import type { Note } from '@/models/entities/Note.js'; | ||||||
| import { IdService } from '@/core/IdService.js'; | import { IdService } from '@/core/IdService.js'; | ||||||
| import type { UserNotePining } from '@/models/entities/UserNotePining.js'; | import type { UserNotePining } from '@/models/entities/UserNotePining.js'; | ||||||
| import { RelayService } from '@/core/RelayService.js'; | import { RelayService } from '@/core/RelayService.js'; | ||||||
| import { Config } from '@/config.js'; | import type { Config } from '@/config.js'; | ||||||
| import { UserEntityService } from './entities/UserEntityService.js'; | import { UserEntityService } from './entities/UserEntityService.js'; | ||||||
| import { ApDeliverManagerService } from './remote/activitypub/ApDeliverManagerService.js'; | import { ApDeliverManagerService } from './remote/activitypub/ApDeliverManagerService.js'; | ||||||
| import { ApRendererService } from './remote/activitypub/ApRendererService.js'; | import { ApRendererService } from './remote/activitypub/ApRendererService.js'; | ||||||
|  |  | ||||||
|  | @ -1,7 +1,7 @@ | ||||||
| import { Inject, Injectable } from '@nestjs/common'; | import { Inject, Injectable } from '@nestjs/common'; | ||||||
| import { In } from 'typeorm'; | import { In } from 'typeorm'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import { NotificationsRepository } from '@/models/index.js'; | import type { NotificationsRepository } from '@/models/index.js'; | ||||||
| import type { UsersRepository } from '@/models/index.js'; | import type { UsersRepository } from '@/models/index.js'; | ||||||
| import type { User } from '@/models/entities/User.js'; | import type { User } from '@/models/entities/User.js'; | ||||||
| import type { Notification } from '@/models/entities/Notification.js'; | import type { Notification } from '@/models/entities/Notification.js'; | ||||||
|  |  | ||||||
|  | @ -1,7 +1,7 @@ | ||||||
| import { Inject, Injectable } from '@nestjs/common'; | import { Inject, Injectable } from '@nestjs/common'; | ||||||
| import { Not } from 'typeorm'; | import { Not } from 'typeorm'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import { NotesRepository, UsersRepository, BlockingsRepository } from '@/models/index.js'; | import type { NotesRepository, UsersRepository, BlockingsRepository } from '@/models/index.js'; | ||||||
| import type { Note } from '@/models/entities/Note.js'; | import type { Note } from '@/models/entities/Note.js'; | ||||||
| import { RelayService } from '@/core/RelayService.js'; | import { RelayService } from '@/core/RelayService.js'; | ||||||
| import type { CacheableUser } from '@/models/entities/User.js'; | import type { CacheableUser } from '@/models/entities/User.js'; | ||||||
|  |  | ||||||
|  | @ -1,5 +1,5 @@ | ||||||
| import { Inject, Injectable } from '@nestjs/common'; | import { Inject, Injectable } from '@nestjs/common'; | ||||||
| import { UsersRepository } from '@/models/index.js'; | import type { UsersRepository } from '@/models/index.js'; | ||||||
| import type { ILocalUser, User } from '@/models/entities/User.js'; | import type { ILocalUser, User } from '@/models/entities/User.js'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import { MetaService } from './MetaService.js'; | import { MetaService } from './MetaService.js'; | ||||||
|  |  | ||||||
|  | @ -1,10 +1,10 @@ | ||||||
| import { Inject, Injectable } from '@nestjs/common'; | import { Inject, Injectable } from '@nestjs/common'; | ||||||
| import push from 'web-push'; | import push from 'web-push'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import { Config } from '@/config.js'; | import type { Config } from '@/config.js'; | ||||||
| import type { Packed } from '@/misc/schema'; | import type { Packed } from '@/misc/schema'; | ||||||
| import { getNoteSummary } from '@/misc/get-note-summary.js'; | import { getNoteSummary } from '@/misc/get-note-summary.js'; | ||||||
| import { SwSubscriptionsRepository } from '@/models/index.js'; | import type { SwSubscriptionsRepository } from '@/models/index.js'; | ||||||
| import { MetaService } from './MetaService.js'; | import { MetaService } from './MetaService.js'; | ||||||
| 
 | 
 | ||||||
| // Defined also packages/sw/types.ts#L14-L21
 | // Defined also packages/sw/types.ts#L14-L21
 | ||||||
|  |  | ||||||
|  | @ -3,9 +3,9 @@ import { v4 as uuid } from 'uuid'; | ||||||
| import type { IActivity } from '@/core/remote/activitypub/type.js'; | import type { IActivity } from '@/core/remote/activitypub/type.js'; | ||||||
| import type { DriveFile } from '@/models/entities/DriveFile.js'; | import type { DriveFile } from '@/models/entities/DriveFile.js'; | ||||||
| import type { Webhook, webhookEventTypes } from '@/models/entities/Webhook.js'; | import type { Webhook, webhookEventTypes } from '@/models/entities/Webhook.js'; | ||||||
| import { Config } from '@/config.js'; | import type { Config } from '@/config.js'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import { DbQueue, DeliverQueue, EndedPollNotificationQueue, InboxQueue, ObjectStorageQueue, SystemQueue, WebhookDeliverQueue } from './queue/QueueModule.js'; | import type { DbQueue, DeliverQueue, EndedPollNotificationQueue, InboxQueue, ObjectStorageQueue, SystemQueue, WebhookDeliverQueue } from './queue/QueueModule.js'; | ||||||
| import type { ThinUser } from '../queue/types.js'; | import type { ThinUser } from '../queue/types.js'; | ||||||
| import type httpSignature from '@peertube/http-signature'; | import type httpSignature from '@peertube/http-signature'; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1,7 +1,7 @@ | ||||||
| import { Inject, Injectable } from '@nestjs/common'; | import { Inject, Injectable } from '@nestjs/common'; | ||||||
| import { IsNull } from 'typeorm'; | import { IsNull } from 'typeorm'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import { EmojisRepository, BlockingsRepository, NoteReactionsRepository, UsersRepository, NotesRepository } from '@/models/index.js'; | import type { EmojisRepository, BlockingsRepository, NoteReactionsRepository, UsersRepository, NotesRepository } from '@/models/index.js'; | ||||||
| import { IdentifiableError } from '@/misc/identifiable-error.js'; | import { IdentifiableError } from '@/misc/identifiable-error.js'; | ||||||
| import type { IRemoteUser, User } from '@/models/entities/User.js'; | import type { IRemoteUser, User } from '@/models/entities/User.js'; | ||||||
| import type { Note } from '@/models/entities/Note.js'; | import type { Note } from '@/models/entities/Note.js'; | ||||||
|  |  | ||||||
|  | @ -1,7 +1,7 @@ | ||||||
| import { Inject, Injectable } from '@nestjs/common'; | import { Inject, Injectable } from '@nestjs/common'; | ||||||
| import { IsNull } from 'typeorm'; | import { IsNull } from 'typeorm'; | ||||||
| import type { ILocalUser, User } from '@/models/entities/User.js'; | import type { ILocalUser, User } from '@/models/entities/User.js'; | ||||||
| import { RelaysRepository, UsersRepository } from '@/models/index.js'; | import type { RelaysRepository, UsersRepository } from '@/models/index.js'; | ||||||
| import { IdService } from '@/core/IdService.js'; | import { IdService } from '@/core/IdService.js'; | ||||||
| import { Cache } from '@/misc/cache.js'; | import { Cache } from '@/misc/cache.js'; | ||||||
| import type { Relay } from '@/models/entities/Relay.js'; | import type { Relay } from '@/models/entities/Relay.js'; | ||||||
|  |  | ||||||
|  | @ -2,7 +2,7 @@ import { URL } from 'node:url'; | ||||||
| import { Inject, Injectable } from '@nestjs/common'; | import { Inject, Injectable } from '@nestjs/common'; | ||||||
| import S3 from 'aws-sdk/clients/s3.js'; | import S3 from 'aws-sdk/clients/s3.js'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import { Config } from '@/config.js'; | import type { Config } from '@/config.js'; | ||||||
| import type { Meta } from '@/models/entities/Meta.js'; | import type { Meta } from '@/models/entities/Meta.js'; | ||||||
| import { HttpRequestService } from './HttpRequestService.js'; | import { HttpRequestService } from './HttpRequestService.js'; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -3,8 +3,8 @@ import { Inject, Injectable } from '@nestjs/common'; | ||||||
| import bcrypt from 'bcryptjs'; | import bcrypt from 'bcryptjs'; | ||||||
| import { DataSource, IsNull } from 'typeorm'; | import { DataSource, IsNull } from 'typeorm'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import { UsedUsernamesRepository } from '@/models/index.js'; | import type { UsedUsernamesRepository } from '@/models/index.js'; | ||||||
| import { Config } from '@/config.js'; | import type { Config } from '@/config.js'; | ||||||
| import { User } from '@/models/entities/User.js'; | import { User } from '@/models/entities/User.js'; | ||||||
| import { UserProfile } from '@/models/entities/UserProfile.js'; | import { UserProfile } from '@/models/entities/UserProfile.js'; | ||||||
| import { IdService } from '@/core/IdService.js'; | import { IdService } from '@/core/IdService.js'; | ||||||
|  |  | ||||||
|  | @ -2,8 +2,8 @@ import * as crypto from 'node:crypto'; | ||||||
| import { Inject, Injectable } from '@nestjs/common'; | import { Inject, Injectable } from '@nestjs/common'; | ||||||
| import * as jsrsasign from 'jsrsasign'; | import * as jsrsasign from 'jsrsasign'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import { UsersRepository } from '@/models/index.js'; | import type { UsersRepository } from '@/models/index.js'; | ||||||
| import { Config } from '@/config.js'; | import type { Config } from '@/config.js'; | ||||||
| 
 | 
 | ||||||
| const ECC_PRELUDE = Buffer.from([0x04]); | const ECC_PRELUDE = Buffer.from([0x04]); | ||||||
| const NULL_BYTE = Buffer.from([0]); | const NULL_BYTE = Buffer.from([0]); | ||||||
|  |  | ||||||
|  | @ -1,6 +1,6 @@ | ||||||
| import { Inject, Injectable } from '@nestjs/common'; | import { Inject, Injectable } from '@nestjs/common'; | ||||||
| import Redis from 'ioredis'; | import Redis from 'ioredis'; | ||||||
| import { UsersRepository } from '@/models/index.js'; | import type { UsersRepository } from '@/models/index.js'; | ||||||
| import { Cache } from '@/misc/cache.js'; | import { Cache } from '@/misc/cache.js'; | ||||||
| import type { CacheableLocalUser, CacheableUser, ILocalUser } from '@/models/entities/User.js'; | import type { CacheableLocalUser, CacheableUser, ILocalUser } from '@/models/entities/User.js'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
|  |  | ||||||
|  | @ -1,6 +1,6 @@ | ||||||
| import { Inject, Injectable } from '@nestjs/common'; | import { Inject, Injectable } from '@nestjs/common'; | ||||||
| import type { User } from '@/models/entities/User.js'; | import type { User } from '@/models/entities/User.js'; | ||||||
| import { UserKeypairsRepository } from '@/models/index.js'; | import type { UserKeypairsRepository } from '@/models/index.js'; | ||||||
| import { Cache } from '@/misc/cache.js'; | import { Cache } from '@/misc/cache.js'; | ||||||
| import type { UserKeypair } from '@/models/entities/UserKeypair.js'; | import type { UserKeypair } from '@/models/entities/UserKeypair.js'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
|  |  | ||||||
|  | @ -1,5 +1,5 @@ | ||||||
| import { Inject, Injectable } from '@nestjs/common'; | import { Inject, Injectable } from '@nestjs/common'; | ||||||
| import { UserListJoiningsRepository, UsersRepository } from '@/models/index.js'; | import type { UserListJoiningsRepository, UsersRepository } from '@/models/index.js'; | ||||||
| import type { User } from '@/models/entities/User.js'; | import type { User } from '@/models/entities/User.js'; | ||||||
| import type { UserList } from '@/models/entities/UserList.js'; | import type { UserList } from '@/models/entities/UserList.js'; | ||||||
| import type { UserListJoining } from '@/models/entities/UserListJoining.js'; | import type { UserListJoining } from '@/models/entities/UserListJoining.js'; | ||||||
|  |  | ||||||
|  | @ -1,5 +1,5 @@ | ||||||
| import { Inject, Injectable } from '@nestjs/common'; | import { Inject, Injectable } from '@nestjs/common'; | ||||||
| import { UsersRepository, MutingsRepository } from '@/models/index.js'; | import type { UsersRepository, MutingsRepository } from '@/models/index.js'; | ||||||
| import { IdService } from '@/core/IdService.js'; | import { IdService } from '@/core/IdService.js'; | ||||||
| import { QueueService } from '@/core/QueueService.js'; | import { QueueService } from '@/core/QueueService.js'; | ||||||
| import { GlobalEventService } from '@/core/GlobalEventService.js'; | import { GlobalEventService } from '@/core/GlobalEventService.js'; | ||||||
|  |  | ||||||
|  | @ -1,11 +1,11 @@ | ||||||
| import { Inject, Injectable } from '@nestjs/common'; | import { Inject, Injectable } from '@nestjs/common'; | ||||||
| import { Not, IsNull } from 'typeorm'; | import { Not, IsNull } from 'typeorm'; | ||||||
| import { FollowingsRepository, UsersRepository } from '@/models/index.js'; | import type { FollowingsRepository, UsersRepository } from '@/models/index.js'; | ||||||
| import type { User } from '@/models/entities/User.js'; | import type { User } from '@/models/entities/User.js'; | ||||||
| import { QueueService } from '@/core/QueueService.js'; | import { QueueService } from '@/core/QueueService.js'; | ||||||
| import { GlobalEventService } from '@/core/GlobalEventService.js'; | import { GlobalEventService } from '@/core/GlobalEventService.js'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import { Config } from '@/config.js'; | import type { Config } from '@/config.js'; | ||||||
| import { ApRendererService } from './remote/activitypub/ApRendererService.js'; | import { ApRendererService } from './remote/activitypub/ApRendererService.js'; | ||||||
| import { UserEntityService } from './entities/UserEntityService.js'; | import { UserEntityService } from './entities/UserEntityService.js'; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -2,7 +2,7 @@ import { URL } from 'node:url'; | ||||||
| import { toASCII } from 'punycode'; | import { toASCII } from 'punycode'; | ||||||
| import { Inject, Injectable } from '@nestjs/common'; | import { Inject, Injectable } from '@nestjs/common'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import { Config } from '@/config.js'; | import type { Config } from '@/config.js'; | ||||||
| 
 | 
 | ||||||
| @Injectable() | @Injectable() | ||||||
| export class UtilityService { | export class UtilityService { | ||||||
|  |  | ||||||
|  | @ -1,7 +1,7 @@ | ||||||
| import { Inject, Injectable } from '@nestjs/common'; | import { Inject, Injectable } from '@nestjs/common'; | ||||||
| import FFmpeg from 'fluent-ffmpeg'; | import FFmpeg from 'fluent-ffmpeg'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import { Config } from '@/config.js'; | import type { Config } from '@/config.js'; | ||||||
| import { ImageProcessingService } from '@/core/ImageProcessingService.js'; | import { ImageProcessingService } from '@/core/ImageProcessingService.js'; | ||||||
| import type { IImage } from '@/core/ImageProcessingService.js'; | import type { IImage } from '@/core/ImageProcessingService.js'; | ||||||
| import { createTempDir } from '@/misc/create-temp.js'; | import { createTempDir } from '@/misc/create-temp.js'; | ||||||
|  |  | ||||||
|  | @ -1,6 +1,6 @@ | ||||||
| import { Inject, Injectable } from '@nestjs/common'; | import { Inject, Injectable } from '@nestjs/common'; | ||||||
| import Redis from 'ioredis'; | import Redis from 'ioredis'; | ||||||
| import { WebhooksRepository } from '@/models/index.js'; | import type { WebhooksRepository } from '@/models/index.js'; | ||||||
| import type { Webhook } from '@/models/entities/Webhook.js'; | import type { Webhook } from '@/models/entities/Webhook.js'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import type { OnApplicationShutdown } from '@nestjs/common'; | import type { OnApplicationShutdown } from '@nestjs/common'; | ||||||
|  |  | ||||||
|  | @ -1,6 +1,6 @@ | ||||||
| import { Injectable, Inject } from '@nestjs/common'; | import { Injectable, Inject } from '@nestjs/common'; | ||||||
| import { DataSource } from 'typeorm'; | import { DataSource } from 'typeorm'; | ||||||
| import { FollowingsRepository, InstancesRepository } from '@/models/index.js'; | import type { FollowingsRepository, InstancesRepository } from '@/models/index.js'; | ||||||
| import { AppLockService } from '@/core/AppLockService.js'; | import { AppLockService } from '@/core/AppLockService.js'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import { MetaService } from '@/core/MetaService.js'; | import { MetaService } from '@/core/MetaService.js'; | ||||||
|  |  | ||||||
|  | @ -1,6 +1,6 @@ | ||||||
| import { Injectable, Inject } from '@nestjs/common'; | import { Injectable, Inject } from '@nestjs/common'; | ||||||
| import { DataSource } from 'typeorm'; | import { DataSource } from 'typeorm'; | ||||||
| import { DriveFilesRepository, FollowingsRepository, UsersRepository, NotesRepository } from '@/models/index.js'; | import type { DriveFilesRepository, FollowingsRepository, UsersRepository, NotesRepository } from '@/models/index.js'; | ||||||
| import type { DriveFile } from '@/models/entities/DriveFile.js'; | import type { DriveFile } from '@/models/entities/DriveFile.js'; | ||||||
| import type { Note } from '@/models/entities/Note.js'; | import type { Note } from '@/models/entities/Note.js'; | ||||||
| import { AppLockService } from '@/core/AppLockService.js'; | import { AppLockService } from '@/core/AppLockService.js'; | ||||||
|  |  | ||||||
|  | @ -1,6 +1,6 @@ | ||||||
| import { Injectable, Inject } from '@nestjs/common'; | import { Injectable, Inject } from '@nestjs/common'; | ||||||
| import { Not, IsNull, DataSource } from 'typeorm'; | import { Not, IsNull, DataSource } from 'typeorm'; | ||||||
| import { NotesRepository } from '@/models/index.js'; | import type { NotesRepository } from '@/models/index.js'; | ||||||
| import type { Note } from '@/models/entities/Note.js'; | import type { Note } from '@/models/entities/Note.js'; | ||||||
| import { AppLockService } from '@/core/AppLockService.js'; | import { AppLockService } from '@/core/AppLockService.js'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
|  |  | ||||||
|  | @ -1,6 +1,6 @@ | ||||||
| import { Injectable, Inject } from '@nestjs/common'; | import { Injectable, Inject } from '@nestjs/common'; | ||||||
| import { DataSource } from 'typeorm'; | import { DataSource } from 'typeorm'; | ||||||
| import { DriveFilesRepository } from '@/models/index.js'; | import type { DriveFilesRepository } from '@/models/index.js'; | ||||||
| import type { DriveFile } from '@/models/entities/DriveFile.js'; | import type { DriveFile } from '@/models/entities/DriveFile.js'; | ||||||
| import { AppLockService } from '@/core/AppLockService.js'; | import { AppLockService } from '@/core/AppLockService.js'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
|  |  | ||||||
|  | @ -4,7 +4,7 @@ import type { User } from '@/models/entities/User.js'; | ||||||
| import { AppLockService } from '@/core/AppLockService.js'; | import { AppLockService } from '@/core/AppLockService.js'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import { UserEntityService } from '@/core/entities/UserEntityService.js'; | import { UserEntityService } from '@/core/entities/UserEntityService.js'; | ||||||
| import { FollowingsRepository } from '@/models/index.js'; | import type { FollowingsRepository } from '@/models/index.js'; | ||||||
| import Chart from '../core.js'; | import Chart from '../core.js'; | ||||||
| import { ChartLoggerService } from '../ChartLoggerService.js'; | import { ChartLoggerService } from '../ChartLoggerService.js'; | ||||||
| import { name, schema } from './entities/per-user-following.js'; | import { name, schema } from './entities/per-user-following.js'; | ||||||
|  |  | ||||||
|  | @ -4,7 +4,7 @@ import type { User } from '@/models/entities/User.js'; | ||||||
| import type { Note } from '@/models/entities/Note.js'; | import type { Note } from '@/models/entities/Note.js'; | ||||||
| import { AppLockService } from '@/core/AppLockService.js'; | import { AppLockService } from '@/core/AppLockService.js'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import { NotesRepository } from '@/models/index.js'; | import type { NotesRepository } from '@/models/index.js'; | ||||||
| import Chart from '../core.js'; | import Chart from '../core.js'; | ||||||
| import { ChartLoggerService } from '../ChartLoggerService.js'; | import { ChartLoggerService } from '../ChartLoggerService.js'; | ||||||
| import { name, schema } from './entities/per-user-notes.js'; | import { name, schema } from './entities/per-user-notes.js'; | ||||||
|  |  | ||||||
|  | @ -4,7 +4,7 @@ import type { User } from '@/models/entities/User.js'; | ||||||
| import { AppLockService } from '@/core/AppLockService.js'; | import { AppLockService } from '@/core/AppLockService.js'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import { UserEntityService } from '@/core/entities/UserEntityService.js'; | import { UserEntityService } from '@/core/entities/UserEntityService.js'; | ||||||
| import { UsersRepository } from '@/models/index.js'; | import type { UsersRepository } from '@/models/index.js'; | ||||||
| import Chart from '../core.js'; | import Chart from '../core.js'; | ||||||
| import { ChartLoggerService } from '../ChartLoggerService.js'; | import { ChartLoggerService } from '../ChartLoggerService.js'; | ||||||
| import { name, schema } from './entities/users.js'; | import { name, schema } from './entities/users.js'; | ||||||
|  |  | ||||||
|  | @ -1,6 +1,6 @@ | ||||||
| import { Inject, Injectable } from '@nestjs/common'; | import { Inject, Injectable } from '@nestjs/common'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import { AbuseUserReportsRepository } from '@/models/index.js'; | import type { AbuseUserReportsRepository } from '@/models/index.js'; | ||||||
| import { awaitAll } from '@/misc/prelude/await-all.js'; | import { awaitAll } from '@/misc/prelude/await-all.js'; | ||||||
| import type { AbuseUserReport } from '@/models/entities/AbuseUserReport.js'; | import type { AbuseUserReport } from '@/models/entities/AbuseUserReport.js'; | ||||||
| import { UserEntityService } from './UserEntityService.js'; | import { UserEntityService } from './UserEntityService.js'; | ||||||
|  |  | ||||||
|  | @ -1,6 +1,6 @@ | ||||||
| import { Inject, Injectable } from '@nestjs/common'; | import { Inject, Injectable } from '@nestjs/common'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import { AntennaNotesRepository, AntennasRepository, UserGroupJoiningsRepository } from '@/models/index.js'; | import type { AntennaNotesRepository, AntennasRepository, UserGroupJoiningsRepository } from '@/models/index.js'; | ||||||
| import { awaitAll } from '@/misc/prelude/await-all.js'; | import { awaitAll } from '@/misc/prelude/await-all.js'; | ||||||
| import type { Packed } from '@/misc/schema.js'; | import type { Packed } from '@/misc/schema.js'; | ||||||
| import type { Antenna } from '@/models/entities/Antenna.js'; | import type { Antenna } from '@/models/entities/Antenna.js'; | ||||||
|  |  | ||||||
|  | @ -1,6 +1,6 @@ | ||||||
| import { Inject, Injectable } from '@nestjs/common'; | import { Inject, Injectable } from '@nestjs/common'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import { AccessTokensRepository, AppsRepository } from '@/models/index.js'; | import type { AccessTokensRepository, AppsRepository } from '@/models/index.js'; | ||||||
| import { awaitAll } from '@/misc/prelude/await-all.js'; | import { awaitAll } from '@/misc/prelude/await-all.js'; | ||||||
| import type { Packed } from '@/misc/schema.js'; | import type { Packed } from '@/misc/schema.js'; | ||||||
| import type { App } from '@/models/entities/App.js'; | import type { App } from '@/models/entities/App.js'; | ||||||
|  |  | ||||||
|  | @ -1,6 +1,6 @@ | ||||||
| import { Inject, Injectable } from '@nestjs/common'; | import { Inject, Injectable } from '@nestjs/common'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import { AuthSessionsRepository } from '@/models/index.js'; | import type { AuthSessionsRepository } from '@/models/index.js'; | ||||||
| import { awaitAll } from '@/misc/prelude/await-all.js'; | import { awaitAll } from '@/misc/prelude/await-all.js'; | ||||||
| import type { Packed } from '@/misc/schema.js'; | import type { Packed } from '@/misc/schema.js'; | ||||||
| import type { AuthSession } from '@/models/entities/AuthSession.js'; | import type { AuthSession } from '@/models/entities/AuthSession.js'; | ||||||
|  |  | ||||||
|  | @ -1,6 +1,6 @@ | ||||||
| import { Inject, Injectable } from '@nestjs/common'; | import { Inject, Injectable } from '@nestjs/common'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import { BlockingsRepository } from '@/models/index.js'; | import type { BlockingsRepository } from '@/models/index.js'; | ||||||
| import { awaitAll } from '@/misc/prelude/await-all.js'; | import { awaitAll } from '@/misc/prelude/await-all.js'; | ||||||
| import type { Packed } from '@/misc/schema.js'; | import type { Packed } from '@/misc/schema.js'; | ||||||
| import type { Blocking } from '@/models/entities/Blocking.js'; | import type { Blocking } from '@/models/entities/Blocking.js'; | ||||||
|  |  | ||||||
|  | @ -1,6 +1,6 @@ | ||||||
| import { Inject, Injectable } from '@nestjs/common'; | import { Inject, Injectable } from '@nestjs/common'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import { ChannelFollowingsRepository, ChannelsRepository, DriveFilesRepository, NoteUnreadsRepository } from '@/models/index.js'; | import type { ChannelFollowingsRepository, ChannelsRepository, DriveFilesRepository, NoteUnreadsRepository } from '@/models/index.js'; | ||||||
| import { awaitAll } from '@/misc/prelude/await-all.js'; | import { awaitAll } from '@/misc/prelude/await-all.js'; | ||||||
| import type { Packed } from '@/misc/schema.js'; | import type { Packed } from '@/misc/schema.js'; | ||||||
| import type { } from '@/models/entities/Blocking.js'; | import type { } from '@/models/entities/Blocking.js'; | ||||||
|  |  | ||||||
|  | @ -1,6 +1,6 @@ | ||||||
| import { Inject, Injectable } from '@nestjs/common'; | import { Inject, Injectable } from '@nestjs/common'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import { ClipsRepository } from '@/models/index.js'; | import type { ClipsRepository } from '@/models/index.js'; | ||||||
| import { awaitAll } from '@/misc/prelude/await-all.js'; | import { awaitAll } from '@/misc/prelude/await-all.js'; | ||||||
| import type { Packed } from '@/misc/schema.js'; | import type { Packed } from '@/misc/schema.js'; | ||||||
| import type { } from '@/models/entities/Blocking.js'; | import type { } from '@/models/entities/Blocking.js'; | ||||||
|  |  | ||||||
|  | @ -2,8 +2,8 @@ import { forwardRef, Inject, Injectable } from '@nestjs/common'; | ||||||
| import { DataSource, In } from 'typeorm'; | import { DataSource, In } from 'typeorm'; | ||||||
| import * as mfm from 'mfm-js'; | import * as mfm from 'mfm-js'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import { NotesRepository, DriveFilesRepository } from '@/models/index.js'; | import type { NotesRepository, DriveFilesRepository } from '@/models/index.js'; | ||||||
| import { Config } from '@/config.js'; | import type { Config } from '@/config.js'; | ||||||
| import type { Packed } from '@/misc/schema.js'; | import type { Packed } from '@/misc/schema.js'; | ||||||
| import { awaitAll } from '@/misc/prelude/await-all.js'; | import { awaitAll } from '@/misc/prelude/await-all.js'; | ||||||
| import type { User } from '@/models/entities/User.js'; | import type { User } from '@/models/entities/User.js'; | ||||||
|  |  | ||||||
|  | @ -1,6 +1,6 @@ | ||||||
| import { Inject, Injectable } from '@nestjs/common'; | import { Inject, Injectable } from '@nestjs/common'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import { DriveFilesRepository, DriveFoldersRepository } from '@/models/index.js'; | import type { DriveFilesRepository, DriveFoldersRepository } from '@/models/index.js'; | ||||||
| import { awaitAll } from '@/misc/prelude/await-all.js'; | import { awaitAll } from '@/misc/prelude/await-all.js'; | ||||||
| import type { Packed } from '@/misc/schema.js'; | import type { Packed } from '@/misc/schema.js'; | ||||||
| import type { } from '@/models/entities/Blocking.js'; | import type { } from '@/models/entities/Blocking.js'; | ||||||
|  |  | ||||||
|  | @ -1,6 +1,6 @@ | ||||||
| import { Inject, Injectable } from '@nestjs/common'; | import { Inject, Injectable } from '@nestjs/common'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import { EmojisRepository } from '@/models/index.js'; | import type { EmojisRepository } from '@/models/index.js'; | ||||||
| import { awaitAll } from '@/misc/prelude/await-all.js'; | import { awaitAll } from '@/misc/prelude/await-all.js'; | ||||||
| import type { Packed } from '@/misc/schema.js'; | import type { Packed } from '@/misc/schema.js'; | ||||||
| import type { } from '@/models/entities/Blocking.js'; | import type { } from '@/models/entities/Blocking.js'; | ||||||
|  |  | ||||||
|  | @ -1,6 +1,6 @@ | ||||||
| import { Inject, Injectable } from '@nestjs/common'; | import { Inject, Injectable } from '@nestjs/common'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import { FollowRequestsRepository } from '@/models/index.js'; | import type { FollowRequestsRepository } from '@/models/index.js'; | ||||||
| import { awaitAll } from '@/misc/prelude/await-all.js'; | import { awaitAll } from '@/misc/prelude/await-all.js'; | ||||||
| import type { Packed } from '@/misc/schema.js'; | import type { Packed } from '@/misc/schema.js'; | ||||||
| import type { } from '@/models/entities/Blocking.js'; | import type { } from '@/models/entities/Blocking.js'; | ||||||
|  |  | ||||||
|  | @ -1,6 +1,6 @@ | ||||||
| import { Inject, Injectable } from '@nestjs/common'; | import { Inject, Injectable } from '@nestjs/common'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import { FollowingsRepository } from '@/models/index.js'; | import type { FollowingsRepository } from '@/models/index.js'; | ||||||
| import { awaitAll } from '@/misc/prelude/await-all.js'; | import { awaitAll } from '@/misc/prelude/await-all.js'; | ||||||
| import type { Packed } from '@/misc/schema.js'; | import type { Packed } from '@/misc/schema.js'; | ||||||
| import type { } from '@/models/entities/Blocking.js'; | import type { } from '@/models/entities/Blocking.js'; | ||||||
|  |  | ||||||
|  | @ -1,6 +1,6 @@ | ||||||
| import { Inject, Injectable } from '@nestjs/common'; | import { Inject, Injectable } from '@nestjs/common'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import { GalleryPosts, GalleryLikesRepository } from '@/models/index.js'; | import type { GalleryPosts, GalleryLikesRepository } from '@/models/index.js'; | ||||||
| import { awaitAll } from '@/misc/prelude/await-all.js'; | import { awaitAll } from '@/misc/prelude/await-all.js'; | ||||||
| import type { Packed } from '@/misc/schema.js'; | import type { Packed } from '@/misc/schema.js'; | ||||||
| import type { } from '@/models/entities/Blocking.js'; | import type { } from '@/models/entities/Blocking.js'; | ||||||
|  |  | ||||||
|  | @ -1,6 +1,6 @@ | ||||||
| import { Inject, Injectable } from '@nestjs/common'; | import { Inject, Injectable } from '@nestjs/common'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import { GalleryLikesRepository, GalleryPostsRepository } from '@/models/index.js'; | import type { GalleryLikesRepository, GalleryPostsRepository } from '@/models/index.js'; | ||||||
| import { awaitAll } from '@/misc/prelude/await-all.js'; | import { awaitAll } from '@/misc/prelude/await-all.js'; | ||||||
| import type { Packed } from '@/misc/schema.js'; | import type { Packed } from '@/misc/schema.js'; | ||||||
| import type { } from '@/models/entities/Blocking.js'; | import type { } from '@/models/entities/Blocking.js'; | ||||||
|  |  | ||||||
|  | @ -1,6 +1,6 @@ | ||||||
| import { Inject, Injectable } from '@nestjs/common'; | import { Inject, Injectable } from '@nestjs/common'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import { HashtagsRepository } from '@/models/index.js'; | import type { HashtagsRepository } from '@/models/index.js'; | ||||||
| import { awaitAll } from '@/misc/prelude/await-all.js'; | import { awaitAll } from '@/misc/prelude/await-all.js'; | ||||||
| import type { Packed } from '@/misc/schema.js'; | import type { Packed } from '@/misc/schema.js'; | ||||||
| import type { } from '@/models/entities/Blocking.js'; | import type { } from '@/models/entities/Blocking.js'; | ||||||
|  |  | ||||||
|  | @ -1,6 +1,6 @@ | ||||||
| import { Inject, Injectable } from '@nestjs/common'; | import { Inject, Injectable } from '@nestjs/common'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import { InstancesRepository } from '@/models/index.js'; | import type { InstancesRepository } from '@/models/index.js'; | ||||||
| import { awaitAll } from '@/misc/prelude/await-all.js'; | import { awaitAll } from '@/misc/prelude/await-all.js'; | ||||||
| import type { Packed } from '@/misc/schema.js'; | import type { Packed } from '@/misc/schema.js'; | ||||||
| import type { } from '@/models/entities/Blocking.js'; | import type { } from '@/models/entities/Blocking.js'; | ||||||
|  |  | ||||||
|  | @ -1,6 +1,6 @@ | ||||||
| import { Inject, Injectable } from '@nestjs/common'; | import { Inject, Injectable } from '@nestjs/common'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import { MessagingMessagesRepository } from '@/models/index.js'; | import type { MessagingMessagesRepository } from '@/models/index.js'; | ||||||
| import { awaitAll } from '@/misc/prelude/await-all.js'; | import { awaitAll } from '@/misc/prelude/await-all.js'; | ||||||
| import type { Packed } from '@/misc/schema.js'; | import type { Packed } from '@/misc/schema.js'; | ||||||
| import type { } from '@/models/entities/Blocking.js'; | import type { } from '@/models/entities/Blocking.js'; | ||||||
|  |  | ||||||
|  | @ -1,6 +1,6 @@ | ||||||
| import { Inject, Injectable } from '@nestjs/common'; | import { Inject, Injectable } from '@nestjs/common'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import { ModerationLogsRepository } from '@/models/index.js'; | import type { ModerationLogsRepository } from '@/models/index.js'; | ||||||
| import { awaitAll } from '@/misc/prelude/await-all.js'; | import { awaitAll } from '@/misc/prelude/await-all.js'; | ||||||
| import type { Packed } from '@/misc/schema.js'; | import type { Packed } from '@/misc/schema.js'; | ||||||
| import type { } from '@/models/entities/Blocking.js'; | import type { } from '@/models/entities/Blocking.js'; | ||||||
|  |  | ||||||
|  | @ -1,6 +1,6 @@ | ||||||
| import { Inject, Injectable } from '@nestjs/common'; | import { Inject, Injectable } from '@nestjs/common'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import { MutingsRepository } from '@/models/index.js'; | import type { MutingsRepository } from '@/models/index.js'; | ||||||
| import { awaitAll } from '@/misc/prelude/await-all.js'; | import { awaitAll } from '@/misc/prelude/await-all.js'; | ||||||
| import type { Packed } from '@/misc/schema.js'; | import type { Packed } from '@/misc/schema.js'; | ||||||
| import type { } from '@/models/entities/Blocking.js'; | import type { } from '@/models/entities/Blocking.js'; | ||||||
|  |  | ||||||
|  | @ -4,7 +4,7 @@ import * as mfm from 'mfm-js'; | ||||||
| import { ModuleRef } from '@nestjs/core'; | import { ModuleRef } from '@nestjs/core'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import type { Notes, Polls, PollVotes, DriveFiles, Channels, Followings, Users, NoteReactions } from '@/models/index.js'; | import type { Notes, Polls, PollVotes, DriveFiles, Channels, Followings, Users, NoteReactions } from '@/models/index.js'; | ||||||
| import { Config } from '@/config.js'; | import type { Config } from '@/config.js'; | ||||||
| import type { Packed } from '@/misc/schema.js'; | import type { Packed } from '@/misc/schema.js'; | ||||||
| import { nyaize } from '@/misc/nyaize.js'; | import { nyaize } from '@/misc/nyaize.js'; | ||||||
| import { awaitAll } from '@/misc/prelude/await-all.js'; | import { awaitAll } from '@/misc/prelude/await-all.js'; | ||||||
|  |  | ||||||
|  | @ -1,6 +1,6 @@ | ||||||
| import { Inject, Injectable } from '@nestjs/common'; | import { Inject, Injectable } from '@nestjs/common'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import { NoteFavoritesRepository } from '@/models/index.js'; | import type { NoteFavoritesRepository } from '@/models/index.js'; | ||||||
| import { awaitAll } from '@/misc/prelude/await-all.js'; | import { awaitAll } from '@/misc/prelude/await-all.js'; | ||||||
| import type { Packed } from '@/misc/schema.js'; | import type { Packed } from '@/misc/schema.js'; | ||||||
| import type { } from '@/models/entities/Blocking.js'; | import type { } from '@/models/entities/Blocking.js'; | ||||||
|  |  | ||||||
|  | @ -1,6 +1,6 @@ | ||||||
| import { Inject, Injectable } from '@nestjs/common'; | import { Inject, Injectable } from '@nestjs/common'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import { NoteReactionsRepository } from '@/models/index.js'; | import type { NoteReactionsRepository } from '@/models/index.js'; | ||||||
| import { awaitAll } from '@/misc/prelude/await-all.js'; | import { awaitAll } from '@/misc/prelude/await-all.js'; | ||||||
| import type { Packed } from '@/misc/schema.js'; | import type { Packed } from '@/misc/schema.js'; | ||||||
| import type { OnModuleInit } from '@nestjs/common'; | import type { OnModuleInit } from '@nestjs/common'; | ||||||
|  |  | ||||||
|  | @ -2,7 +2,7 @@ import { Inject, Injectable } from '@nestjs/common'; | ||||||
| import { In } from 'typeorm'; | import { In } from 'typeorm'; | ||||||
| import { ModuleRef } from '@nestjs/core'; | import { ModuleRef } from '@nestjs/core'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import { AccessTokensRepository, NoteReactionsRepository, NotificationsRepository } from '@/models/index.js'; | import type { AccessTokensRepository, NoteReactionsRepository, NotificationsRepository } from '@/models/index.js'; | ||||||
| import { awaitAll } from '@/misc/prelude/await-all.js'; | import { awaitAll } from '@/misc/prelude/await-all.js'; | ||||||
| import type { Notification } from '@/models/entities/Notification.js'; | import type { Notification } from '@/models/entities/Notification.js'; | ||||||
| import type { NoteReaction } from '@/models/entities/NoteReaction.js'; | import type { NoteReaction } from '@/models/entities/NoteReaction.js'; | ||||||
|  |  | ||||||
|  | @ -1,6 +1,6 @@ | ||||||
| import { Inject, Injectable } from '@nestjs/common'; | import { Inject, Injectable } from '@nestjs/common'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import { DriveFilesRepository, PagesRepository, PageLikesRepository } from '@/models/index.js'; | import type { DriveFilesRepository, PagesRepository, PageLikesRepository } from '@/models/index.js'; | ||||||
| import { awaitAll } from '@/misc/prelude/await-all.js'; | import { awaitAll } from '@/misc/prelude/await-all.js'; | ||||||
| import type { Packed } from '@/misc/schema.js'; | import type { Packed } from '@/misc/schema.js'; | ||||||
| import type { } from '@/models/entities/Blocking.js'; | import type { } from '@/models/entities/Blocking.js'; | ||||||
|  |  | ||||||
|  | @ -1,6 +1,6 @@ | ||||||
| import { Inject, Injectable } from '@nestjs/common'; | import { Inject, Injectable } from '@nestjs/common'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import { PageLikesRepository } from '@/models/index.js'; | import type { PageLikesRepository } from '@/models/index.js'; | ||||||
| import { awaitAll } from '@/misc/prelude/await-all.js'; | import { awaitAll } from '@/misc/prelude/await-all.js'; | ||||||
| import type { Packed } from '@/misc/schema.js'; | import type { Packed } from '@/misc/schema.js'; | ||||||
| import type { } from '@/models/entities/Blocking.js'; | import type { } from '@/models/entities/Blocking.js'; | ||||||
|  |  | ||||||
|  | @ -1,6 +1,6 @@ | ||||||
| import { Inject, Injectable } from '@nestjs/common'; | import { Inject, Injectable } from '@nestjs/common'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import { SigninsRepository } from '@/models/index.js'; | import type { SigninsRepository } from '@/models/index.js'; | ||||||
| import { awaitAll } from '@/misc/prelude/await-all.js'; | import { awaitAll } from '@/misc/prelude/await-all.js'; | ||||||
| import type { Packed } from '@/misc/schema.js'; | import type { Packed } from '@/misc/schema.js'; | ||||||
| import type { } from '@/models/entities/Blocking.js'; | import type { } from '@/models/entities/Blocking.js'; | ||||||
|  |  | ||||||
|  | @ -3,7 +3,7 @@ import { EntityRepository, Repository, In, Not } from 'typeorm'; | ||||||
| import Ajv from 'ajv'; | import Ajv from 'ajv'; | ||||||
| import { ModuleRef } from '@nestjs/core'; | import { ModuleRef } from '@nestjs/core'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import { Config } from '@/config.js'; | import type { Config } from '@/config.js'; | ||||||
| import type { Packed } from '@/misc/schema.js'; | import type { Packed } from '@/misc/schema.js'; | ||||||
| import type { Promiseable } from '@/misc/prelude/await-all.js'; | import type { Promiseable } from '@/misc/prelude/await-all.js'; | ||||||
| import { awaitAll } from '@/misc/prelude/await-all.js'; | import { awaitAll } from '@/misc/prelude/await-all.js'; | ||||||
|  |  | ||||||
|  | @ -1,6 +1,6 @@ | ||||||
| import { Inject, Injectable } from '@nestjs/common'; | import { Inject, Injectable } from '@nestjs/common'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import { UserGroupJoiningsRepository, UserGroupsRepository } from '@/models/index.js'; | import type { UserGroupJoiningsRepository, UserGroupsRepository } from '@/models/index.js'; | ||||||
| import { awaitAll } from '@/misc/prelude/await-all.js'; | import { awaitAll } from '@/misc/prelude/await-all.js'; | ||||||
| import type { Packed } from '@/misc/schema.js'; | import type { Packed } from '@/misc/schema.js'; | ||||||
| import type { } from '@/models/entities/Blocking.js'; | import type { } from '@/models/entities/Blocking.js'; | ||||||
|  |  | ||||||
|  | @ -1,6 +1,6 @@ | ||||||
| import { Inject, Injectable } from '@nestjs/common'; | import { Inject, Injectable } from '@nestjs/common'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import { UserGroupInvitationsRepository } from '@/models/index.js'; | import type { UserGroupInvitationsRepository } from '@/models/index.js'; | ||||||
| import { awaitAll } from '@/misc/prelude/await-all.js'; | import { awaitAll } from '@/misc/prelude/await-all.js'; | ||||||
| import type { Packed } from '@/misc/schema.js'; | import type { Packed } from '@/misc/schema.js'; | ||||||
| import type { } from '@/models/entities/Blocking.js'; | import type { } from '@/models/entities/Blocking.js'; | ||||||
|  |  | ||||||
|  | @ -1,6 +1,6 @@ | ||||||
| import { Inject, Injectable } from '@nestjs/common'; | import { Inject, Injectable } from '@nestjs/common'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import { UserListJoiningsRepository, UserListsRepository } from '@/models/index.js'; | import type { UserListJoiningsRepository, UserListsRepository } from '@/models/index.js'; | ||||||
| import { awaitAll } from '@/misc/prelude/await-all.js'; | import { awaitAll } from '@/misc/prelude/await-all.js'; | ||||||
| import type { Packed } from '@/misc/schema.js'; | import type { Packed } from '@/misc/schema.js'; | ||||||
| import type { } from '@/models/entities/Blocking.js'; | import type { } from '@/models/entities/Blocking.js'; | ||||||
|  |  | ||||||
|  | @ -3,9 +3,9 @@ import { Inject, Injectable } from '@nestjs/common'; | ||||||
| import chalk from 'chalk'; | import chalk from 'chalk'; | ||||||
| import { IsNull } from 'typeorm'; | import { IsNull } from 'typeorm'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import { UsersRepository } from '@/models/index.js'; | import type { UsersRepository } from '@/models/index.js'; | ||||||
| import type { IRemoteUser, User } from '@/models/entities/User.js'; | import type { IRemoteUser, User } from '@/models/entities/User.js'; | ||||||
| import { Config } from '@/config.js'; | import type { Config } from '@/config.js'; | ||||||
| import type Logger from '@/logger.js'; | import type Logger from '@/logger.js'; | ||||||
| import { UtilityService } from '../UtilityService.js'; | import { UtilityService } from '../UtilityService.js'; | ||||||
| import { WebfingerService } from './WebfingerService.js'; | import { WebfingerService } from './WebfingerService.js'; | ||||||
|  |  | ||||||
|  | @ -1,7 +1,7 @@ | ||||||
| import { URL } from 'node:url'; | import { URL } from 'node:url'; | ||||||
| import { Inject, Injectable } from '@nestjs/common'; | import { Inject, Injectable } from '@nestjs/common'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import { Config } from '@/config.js'; | import type { Config } from '@/config.js'; | ||||||
| import { query as urlQuery } from '@/misc/prelude/url.js'; | import { query as urlQuery } from '@/misc/prelude/url.js'; | ||||||
| import { HttpRequestService } from '@/core/HttpRequestService.js'; | import { HttpRequestService } from '@/core/HttpRequestService.js'; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1,8 +1,8 @@ | ||||||
| import { Inject, Injectable } from '@nestjs/common'; | import { Inject, Injectable } from '@nestjs/common'; | ||||||
| import escapeRegexp from 'escape-regexp'; | import escapeRegexp from 'escape-regexp'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import { MessagingMessagesRepository, NotesRepository, UserPublickeysRepository, UsersRepository } from '@/models/index.js'; | import type { MessagingMessagesRepository, NotesRepository, UserPublickeysRepository, UsersRepository } from '@/models/index.js'; | ||||||
| import { Config } from '@/config.js'; | import type { Config } from '@/config.js'; | ||||||
| import type { CacheableRemoteUser, CacheableUser } from '@/models/entities/User.js'; | import type { CacheableRemoteUser, CacheableUser } from '@/models/entities/User.js'; | ||||||
| import { Cache } from '@/misc/cache.js'; | import { Cache } from '@/misc/cache.js'; | ||||||
| import type { UserPublickey } from '@/models/entities/UserPublickey.js'; | import type { UserPublickey } from '@/models/entities/UserPublickey.js'; | ||||||
|  |  | ||||||
|  | @ -1,8 +1,8 @@ | ||||||
| import { Inject, Injectable } from '@nestjs/common'; | import { Inject, Injectable } from '@nestjs/common'; | ||||||
| import { IsNull, Not } from 'typeorm'; | import { IsNull, Not } from 'typeorm'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import { FollowingsRepository, UsersRepository } from '@/models/index.js'; | import type { FollowingsRepository, UsersRepository } from '@/models/index.js'; | ||||||
| import { Config } from '@/config.js'; | import type { Config } from '@/config.js'; | ||||||
| import type { ILocalUser, IRemoteUser, User } from '@/models/entities/User.js'; | import type { ILocalUser, IRemoteUser, User } from '@/models/entities/User.js'; | ||||||
| import { QueueService } from '@/core/QueueService.js'; | import { QueueService } from '@/core/QueueService.js'; | ||||||
| import { UserEntityService } from '@/core/entities/UserEntityService.js'; | import { UserEntityService } from '@/core/entities/UserEntityService.js'; | ||||||
|  |  | ||||||
|  | @ -1,7 +1,7 @@ | ||||||
| import { Inject, Injectable } from '@nestjs/common'; | import { Inject, Injectable } from '@nestjs/common'; | ||||||
| import { In } from 'typeorm'; | import { In } from 'typeorm'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import { Config } from '@/config.js'; | import type { Config } from '@/config.js'; | ||||||
| import type { CacheableRemoteUser } from '@/models/entities/User.js'; | import type { CacheableRemoteUser } from '@/models/entities/User.js'; | ||||||
| import { UserFollowingService } from '@/core/UserFollowingService.js'; | import { UserFollowingService } from '@/core/UserFollowingService.js'; | ||||||
| import { ReactionService } from '@/core/ReactionService.js'; | import { ReactionService } from '@/core/ReactionService.js'; | ||||||
|  |  | ||||||
|  | @ -1,7 +1,7 @@ | ||||||
| import { Inject, Injectable } from '@nestjs/common'; | import { Inject, Injectable } from '@nestjs/common'; | ||||||
| import * as mfm from 'mfm-js'; | import * as mfm from 'mfm-js'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import { Config } from '@/config.js'; | import type { Config } from '@/config.js'; | ||||||
| import { MfmService } from '@/core/MfmService.js'; | import { MfmService } from '@/core/MfmService.js'; | ||||||
| import type { Note } from '@/models/entities/Note.js'; | import type { Note } from '@/models/entities/Note.js'; | ||||||
| import { extractApHashtagObjects } from './models/tag.js'; | import { extractApHashtagObjects } from './models/tag.js'; | ||||||
|  |  | ||||||
|  | @ -4,7 +4,7 @@ import { In, IsNull } from 'typeorm'; | ||||||
| import { v4 as uuid } from 'uuid'; | import { v4 as uuid } from 'uuid'; | ||||||
| import * as mfm from 'mfm-js'; | import * as mfm from 'mfm-js'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import { Config } from '@/config.js'; | import type { Config } from '@/config.js'; | ||||||
| import type { ILocalUser, IRemoteUser, User } from '@/models/entities/User.js'; | import type { ILocalUser, IRemoteUser, User } from '@/models/entities/User.js'; | ||||||
| import type { IMentionedRemoteUsers, Note } from '@/models/entities/Note.js'; | import type { IMentionedRemoteUsers, Note } from '@/models/entities/Note.js'; | ||||||
| import type { Blocking } from '@/models/entities/Blocking.js'; | import type { Blocking } from '@/models/entities/Blocking.js'; | ||||||
|  |  | ||||||
|  | @ -2,7 +2,7 @@ import * as crypto from 'node:crypto'; | ||||||
| import { URL } from 'node:url'; | import { URL } from 'node:url'; | ||||||
| import { Inject, Injectable } from '@nestjs/common'; | import { Inject, Injectable } from '@nestjs/common'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import { Config } from '@/config.js'; | import type { Config } from '@/config.js'; | ||||||
| import type { User } from '@/models/entities/User.js'; | import type { User } from '@/models/entities/User.js'; | ||||||
| import { UserKeypairStoreService } from '@/core/UserKeypairStoreService.js'; | import { UserKeypairStoreService } from '@/core/UserKeypairStoreService.js'; | ||||||
| import { HttpRequestService } from '@/core/HttpRequestService.js'; | import { HttpRequestService } from '@/core/HttpRequestService.js'; | ||||||
|  |  | ||||||
|  | @ -1,8 +1,8 @@ | ||||||
| import { Inject, Injectable } from '@nestjs/common'; | import { Inject, Injectable } from '@nestjs/common'; | ||||||
| import type { ILocalUser } from '@/models/entities/User.js'; | import type { ILocalUser } from '@/models/entities/User.js'; | ||||||
| import { InstanceActorService } from '@/core/InstanceActorService.js'; | import { InstanceActorService } from '@/core/InstanceActorService.js'; | ||||||
| import { NotesRepository, PollsRepository, NoteReactionsRepository, UsersRepository } from '@/models/index.js'; | import type { NotesRepository, PollsRepository, NoteReactionsRepository, UsersRepository } from '@/models/index.js'; | ||||||
| import { Config } from '@/config.js'; | import type { Config } from '@/config.js'; | ||||||
| import { MetaService } from '@/core/MetaService.js'; | import { MetaService } from '@/core/MetaService.js'; | ||||||
| import { HttpRequestService } from '@/core/HttpRequestService.js'; | import { HttpRequestService } from '@/core/HttpRequestService.js'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
|  |  | ||||||
|  | @ -1,7 +1,7 @@ | ||||||
| import { Inject, Injectable } from '@nestjs/common'; | import { Inject, Injectable } from '@nestjs/common'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import { DriveFilesRepository } from '@/models/index.js'; | import type { DriveFilesRepository } from '@/models/index.js'; | ||||||
| import { Config } from '@/config.js'; | import type { Config } from '@/config.js'; | ||||||
| import type { CacheableRemoteUser } from '@/models/entities/User.js'; | import type { CacheableRemoteUser } from '@/models/entities/User.js'; | ||||||
| import type { DriveFile } from '@/models/entities/DriveFile.js'; | import type { DriveFile } from '@/models/entities/DriveFile.js'; | ||||||
| import { MetaService } from '@/core/MetaService.js'; | import { MetaService } from '@/core/MetaService.js'; | ||||||
|  |  | ||||||
|  | @ -2,7 +2,7 @@ import { Inject, Injectable } from '@nestjs/common'; | ||||||
| import promiseLimit from 'promise-limit'; | import promiseLimit from 'promise-limit'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import type { UsersRepository } from '@/models/index.js'; | import type { UsersRepository } from '@/models/index.js'; | ||||||
| import { Config } from '@/config.js'; | import type { Config } from '@/config.js'; | ||||||
| import { toArray, unique } from '@/misc/prelude/array.js'; | import { toArray, unique } from '@/misc/prelude/array.js'; | ||||||
| import type { CacheableUser } from '@/models/entities/User.js'; | import type { CacheableUser } from '@/models/entities/User.js'; | ||||||
| import { isMention } from '../type.js'; | import { isMention } from '../type.js'; | ||||||
|  |  | ||||||
|  | @ -1,9 +1,9 @@ | ||||||
| import { forwardRef, Inject, Injectable } from '@nestjs/common'; | import { forwardRef, Inject, Injectable } from '@nestjs/common'; | ||||||
| import promiseLimit from 'promise-limit'; | import promiseLimit from 'promise-limit'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import { MessagingMessagesRepository, PollsRepository, EmojisRepository } from '@/models/index.js'; | import type { MessagingMessagesRepository, PollsRepository, EmojisRepository } from '@/models/index.js'; | ||||||
| import type { UsersRepository } from '@/models/index.js'; | import type { UsersRepository } from '@/models/index.js'; | ||||||
| import { Config } from '@/config.js'; | import type { Config } from '@/config.js'; | ||||||
| import type { CacheableRemoteUser } from '@/models/entities/User.js'; | import type { CacheableRemoteUser } from '@/models/entities/User.js'; | ||||||
| import type { Note } from '@/models/entities/Note.js'; | import type { Note } from '@/models/entities/Note.js'; | ||||||
| import { toArray, toSingle, unique } from '@/misc/prelude/array.js'; | import { toArray, toSingle, unique } from '@/misc/prelude/array.js'; | ||||||
|  |  | ||||||
|  | @ -3,8 +3,8 @@ import promiseLimit from 'promise-limit'; | ||||||
| import { DataSource } from 'typeorm'; | import { DataSource } from 'typeorm'; | ||||||
| import { ModuleRef } from '@nestjs/core'; | import { ModuleRef } from '@nestjs/core'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import { FollowingsRepository, InstancesRepository, UserProfilesRepository, UserPublickeysRepository, UsersRepository } from '@/models/index.js'; | import type { FollowingsRepository, InstancesRepository, UserProfilesRepository, UserPublickeysRepository, UsersRepository } from '@/models/index.js'; | ||||||
| import { Config } from '@/config.js'; | import type { Config } from '@/config.js'; | ||||||
| import type { CacheableUser, IRemoteUser } from '@/models/entities/User.js'; | import type { CacheableUser, IRemoteUser } from '@/models/entities/User.js'; | ||||||
| import { User } from '@/models/entities/User.js'; | import { User } from '@/models/entities/User.js'; | ||||||
| import { truncate } from '@/misc/truncate.js'; | import { truncate } from '@/misc/truncate.js'; | ||||||
|  |  | ||||||
|  | @ -1,7 +1,7 @@ | ||||||
| import { Inject, Injectable } from '@nestjs/common'; | import { Inject, Injectable } from '@nestjs/common'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import { NotesRepository, PollsRepository } from '@/models/index.js'; | import type { NotesRepository, PollsRepository } from '@/models/index.js'; | ||||||
| import { Config } from '@/config.js'; | import type { Config } from '@/config.js'; | ||||||
| import type { IPoll } from '@/models/entities/Poll.js'; | import type { IPoll } from '@/models/entities/Poll.js'; | ||||||
| import type Logger from '@/logger.js'; | import type Logger from '@/logger.js'; | ||||||
| import { isQuestion } from '../type.js'; | import { isQuestion } from '../type.js'; | ||||||
|  |  | ||||||
Some files were not shown because too many files have changed in this diff Show more
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue