diff --git a/packages/backend/src/boot/master.ts b/packages/backend/src/boot/master.ts
index ec09b4350bb06fb0be8d62c8976d8e7204281415..fc07510ffbf94236d1a5f7f56f4163188a6bbf21 100644
--- a/packages/backend/src/boot/master.ts
+++ b/packages/backend/src/boot/master.ts
@@ -119,8 +119,7 @@ function loadConfigBoot(): Config {
 		if (typeof exception === 'string') {
 			configLogger.error(exception);
 			process.exit(1);
-		}
-		if (exception.code === 'ENOENT') {
+		} else if ((exception as any).code === 'ENOENT') {
 			configLogger.error('Configuration file not found', null, true);
 			process.exit(1);
 		}
diff --git a/packages/backend/src/core/AntennaService.ts b/packages/backend/src/core/AntennaService.ts
index 0146f959e625c332538a2c51c685e80e2d3a4681..af76767f31842fb121e0e1d36c58cf4edc788078 100644
--- a/packages/backend/src/core/AntennaService.ts
+++ b/packages/backend/src/core/AntennaService.ts
@@ -60,7 +60,7 @@ export class AntennaService implements OnApplicationShutdown {
 		this.redisSubscriber.off('message', this.onRedisMessage);
 	}
 
-	private async onRedisMessage(_, data) {
+	private async onRedisMessage(_: string, data: string): Promise<void> {
 		const obj = JSON.parse(data);
 
 		if (obj.channel === 'internal') {
diff --git a/packages/backend/src/queue/ObjectStorageQueueProcessorsService.ts b/packages/backend/src/queue/ObjectStorageQueueProcessorsService.ts
index e031581488487626482f17f7d849b23df1e40f4a..097e4448a590ad5bf52578cddf5164c97587d729 100644
--- a/packages/backend/src/queue/ObjectStorageQueueProcessorsService.ts
+++ b/packages/backend/src/queue/ObjectStorageQueueProcessorsService.ts
@@ -20,7 +20,7 @@ export class ObjectStorageQueueProcessorsService {
 	public start(q: Bull.Queue) {
 		const jobs = {
 			deleteFile: (job) => this.deleteFileProcessorService.process(job),
-			cleanRemoteFiles: (job) => this.cleanRemoteFilesProcessorService.process(job),
+			cleanRemoteFiles: (job, done) => this.cleanRemoteFilesProcessorService.process(job, done),
 		} as Record<string, Bull.ProcessCallbackFunction<ObjectStorageJobData | Bull.ProcessPromiseFunction<ObjectStorageJobData>>>;
 		
 		for (const [k, v] of Object.entries(jobs)) {
diff --git a/packages/backend/src/server/NodeinfoServerService.ts b/packages/backend/src/server/NodeinfoServerService.ts
index b07dc4cf8f7d6f76c69700b4a5164e9e038ae545..ef4ec74a35a1c41f6bd437b294006d66e18a6533 100644
--- a/packages/backend/src/server/NodeinfoServerService.ts
+++ b/packages/backend/src/server/NodeinfoServerService.ts
@@ -118,7 +118,7 @@ export class NodeinfoServerService {
 		router.get(nodeinfo2_0path, async ctx => {
 			const base = await cache.fetch(null, () => nodeinfo2());
 
-			delete base.software.repository;
+			delete (base as any).software.repository;
 
 			ctx.body = { version: '2.0', ...base };
 			ctx.set('Cache-Control', 'public, max-age=600');
diff --git a/packages/backend/src/server/api/StreamingApiServerService.ts b/packages/backend/src/server/api/StreamingApiServerService.ts
index 8a6906e5fe816923e2b48c3588e7bfcb218ade94..46eaf8566e1512483657da481ebff1b50bc7c671 100644
--- a/packages/backend/src/server/api/StreamingApiServerService.ts
+++ b/packages/backend/src/server/api/StreamingApiServerService.ts
@@ -72,7 +72,7 @@ export class StreamingApiServerService {
 
 			const ev = new EventEmitter();
 
-			async function onRedisMessage(_: string, data: string) {
+			async function onRedisMessage(_: string, data: string): Promise<void> {
 				const parsed = JSON.parse(data);
 				ev.emit(parsed.channel, parsed.message);
 			}
diff --git a/packages/backend/src/server/api/endpoints/admin/abuse-user-reports.ts b/packages/backend/src/server/api/endpoints/admin/abuse-user-reports.ts
index 30183ed88b3604445337b3d02010ff9dce545149..9bba16166fe21cb38611a0d932ec108b107f4ad6 100644
--- a/packages/backend/src/server/api/endpoints/admin/abuse-user-reports.ts
+++ b/packages/backend/src/server/api/endpoints/admin/abuse-user-reports.ts
@@ -3,6 +3,7 @@ import { Endpoint } from '@/server/api/endpoint-base.js';
 import type { AbuseUserReportsRepository } from '@/models/index.js';
 import { QueryService } from '@/core/QueryService.js';
 import { DI } from '@/di-symbols.js';
+import { AbuseUserReportEntityService } from '@/core/entities/AbuseUserReportEntityService.js';
 
 export const meta = {
 	tags: ['admin'],
@@ -93,6 +94,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> {
 		@Inject(DI.abuseUserReportsRepository)
 		private abuseUserReportsRepository: AbuseUserReportsRepository,
 
+		private abuseUserReportEntityService: AbuseUserReportEntityService,
 		private queryService: QueryService,
 	) {
 		super(meta, paramDef, async (ps, me) => {
diff --git a/packages/backend/src/server/api/endpoints/admin/accounts/delete.ts b/packages/backend/src/server/api/endpoints/admin/accounts/delete.ts
index dc2d499191e59e274ac046c30196d9ecefd23e3f..b7081987cadd985a87fa3be6ab0fafb76131dfce 100644
--- a/packages/backend/src/server/api/endpoints/admin/accounts/delete.ts
+++ b/packages/backend/src/server/api/endpoints/admin/accounts/delete.ts
@@ -5,6 +5,7 @@ import { QueueService } from '@/core/QueueService.js';
 import { GlobalEventService } from '@/core/GlobalEventService.js';
 import { UserSuspendService } from '@/core/UserSuspendService.js';
 import { DI } from '@/di-symbols.js';
+import { UserEntityService } from '@/core/entities/UserEntityService.js';
 
 export const meta = {
 	tags: ['admin'],
@@ -28,6 +29,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> {
 		@Inject(DI.usersRepository)
 		private usersRepository: UsersRepository,
 
+		private userEntityService: UserEntityService,
 		private queueService: QueueService,
 		private globalEventService: GlobalEventService,
 		private userSuspendService: UserSuspendService,
diff --git a/packages/backend/src/server/api/endpoints/admin/drive-capacity-override.ts b/packages/backend/src/server/api/endpoints/admin/drive-capacity-override.ts
index f4d39cd872200fd261b7925e1936ba0f3a23ff65..665e2a8cce6dfc67ae295880ebb2bd51297066ae 100644
--- a/packages/backend/src/server/api/endpoints/admin/drive-capacity-override.ts
+++ b/packages/backend/src/server/api/endpoints/admin/drive-capacity-override.ts
@@ -3,6 +3,7 @@ import { Endpoint } from '@/server/api/endpoint-base.js';
 import type { UsersRepository } from '@/models/index.js';
 import { ModerationLogService } from '@/core/ModerationLogService.js';
 import { DI } from '@/di-symbols.js';
+import { UserEntityService } from '@/core/entities/UserEntityService.js';
 
 export const meta = {
 	tags: ['admin'],
@@ -27,6 +28,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> {
 		@Inject(DI.usersRepository)
 		private usersRepository: UsersRepository,
 
+		private userEntityService: UserEntityService,
 		private moderationLogService: ModerationLogService,
 	) {
 		super(meta, paramDef, async (ps, me) => {
diff --git a/packages/backend/src/server/api/endpoints/admin/drive/files.ts b/packages/backend/src/server/api/endpoints/admin/drive/files.ts
index 2459a479ab504192cd7eadb3cdd6b66a9286f055..53a37cb6914e8b9b1cbd1b25ea199743690e84e7 100644
--- a/packages/backend/src/server/api/endpoints/admin/drive/files.ts
+++ b/packages/backend/src/server/api/endpoints/admin/drive/files.ts
@@ -3,6 +3,7 @@ import type { DriveFilesRepository } from '@/models/index.js';
 import { Endpoint } from '@/server/api/endpoint-base.js';
 import { QueryService } from '@/core/QueryService.js';
 import { DI } from '@/di-symbols.js';
+import { DriveFileEntityService } from '@/core/entities/DriveFileEntityService.js';
 
 export const meta = {
 	tags: ['admin'],
@@ -47,6 +48,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> {
 		@Inject(DI.driveFilesRepository)
 		private driveFilesRepository: DriveFilesRepository,
 
+		private driveFileEntityService: DriveFileEntityService,
 		private queryService: QueryService,
 	) {
 		super(meta, paramDef, async (ps, me) => {
diff --git a/packages/backend/src/server/api/endpoints/admin/drive/show-file.ts b/packages/backend/src/server/api/endpoints/admin/drive/show-file.ts
index c17f67cf2bd2fc197d691d36af479eb98ad7f655..25d13d13a388321f7a441957669adfc926b15b91 100644
--- a/packages/backend/src/server/api/endpoints/admin/drive/show-file.ts
+++ b/packages/backend/src/server/api/endpoints/admin/drive/show-file.ts
@@ -192,12 +192,14 @@ export default class extends Endpoint<typeof meta, typeof paramDef> {
 				throw new ApiError(meta.errors.noSuchFile);
 			}
 
+			const res = file as Partial<typeof file>;
+
 			if (!me.isAdmin) {
-				delete file.requestIp;
-				delete file.requestHeaders;
+				delete res.requestIp;
+				delete res.requestHeaders;
 			}
 
-			return file;
+			return res;
 		});
 	}
 }
diff --git a/packages/backend/src/server/api/endpoints/admin/emoji/list.ts b/packages/backend/src/server/api/endpoints/admin/emoji/list.ts
index e50f92404458c28f4e05cbfee981af0f3e1d3ba2..8624229db82f4b8fd952bf86d2b433b33a2e9906 100644
--- a/packages/backend/src/server/api/endpoints/admin/emoji/list.ts
+++ b/packages/backend/src/server/api/endpoints/admin/emoji/list.ts
@@ -4,6 +4,7 @@ import type { EmojisRepository } from '@/models/index.js';
 import type { Emoji } from '@/models/entities/Emoji.js';
 import { QueryService } from '@/core/QueryService.js';
 import { DI } from '@/di-symbols.js';
+import { EmojiEntityService } from '@/core/entities/EmojiEntityService.js';
 
 export const meta = {
 	tags: ['admin'],
@@ -71,6 +72,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> {
 		@Inject(DI.emojisRepository)
 		private emojisRepository: EmojisRepository,
 
+		private emojiEntityService: EmojiEntityService,
 		private queryService: QueryService,
 	) {
 		super(meta, paramDef, async (ps, me) => {
diff --git a/packages/backend/src/server/api/endpoints/admin/queue/deliver-delayed.ts b/packages/backend/src/server/api/endpoints/admin/queue/deliver-delayed.ts
index 4b5be70d56c9b685aa5d15510c9b07f53ce4159f..526efa9f9dc988fe98e74d921224a991024087c7 100644
--- a/packages/backend/src/server/api/endpoints/admin/queue/deliver-delayed.ts
+++ b/packages/backend/src/server/api/endpoints/admin/queue/deliver-delayed.ts
@@ -1,7 +1,7 @@
 import { URL } from 'node:url';
 import { Inject, Injectable } from '@nestjs/common';
 import { Endpoint } from '@/server/api/endpoint-base.js';
-import { DeliverQueue } from '@/core/queue/QueueModule.js';
+import type { DeliverQueue } from '@/core/queue/QueueModule.js';
 
 export const meta = {
 	tags: ['admin'],
diff --git a/packages/backend/src/server/api/endpoints/admin/queue/inbox-delayed.ts b/packages/backend/src/server/api/endpoints/admin/queue/inbox-delayed.ts
index 715974e917e254063c8ecdbae7dbf6b514a931a3..b8934428c30e0ab74350c9c3850d3b8500b32f12 100644
--- a/packages/backend/src/server/api/endpoints/admin/queue/inbox-delayed.ts
+++ b/packages/backend/src/server/api/endpoints/admin/queue/inbox-delayed.ts
@@ -1,7 +1,7 @@
 import { URL } from 'node:url';
 import { Inject, Injectable } from '@nestjs/common';
 import { Endpoint } from '@/server/api/endpoint-base.js';
-import { InboxQueue } from '@/core/queue/QueueModule.js';
+import type { InboxQueue } from '@/core/queue/QueueModule.js';
 
 export const meta = {
 	tags: ['admin'],
diff --git a/packages/backend/src/server/api/endpoints/admin/queue/stats.ts b/packages/backend/src/server/api/endpoints/admin/queue/stats.ts
index f2ca81a8daea780d595007b4a05619cce85a5170..605ea3d042ad819478e4dbf4acc2c135fe829687 100644
--- a/packages/backend/src/server/api/endpoints/admin/queue/stats.ts
+++ b/packages/backend/src/server/api/endpoints/admin/queue/stats.ts
@@ -1,6 +1,6 @@
 import { Inject, Injectable } from '@nestjs/common';
 import { Endpoint } from '@/server/api/endpoint-base.js';
-import { DbQueue, DeliverQueue, EndedPollNotificationQueue, InboxQueue, ObjectStorageQueue, SystemQueue, WebhookDeliverQueue } from '@/core/queue/QueueModule.js';
+import type { DbQueue, DeliverQueue, EndedPollNotificationQueue, InboxQueue, ObjectStorageQueue, SystemQueue, WebhookDeliverQueue } from '@/core/queue/QueueModule.js';
 
 export const meta = {
 	tags: ['admin'],
diff --git a/packages/backend/src/server/api/endpoints/admin/suspend-user.ts b/packages/backend/src/server/api/endpoints/admin/suspend-user.ts
index d30facd125fa6444758a4cfef70e215ffdaf2612..53de8d9495f7a632142b5a7fd6e5d74f528a6a31 100644
--- a/packages/backend/src/server/api/endpoints/admin/suspend-user.ts
+++ b/packages/backend/src/server/api/endpoints/admin/suspend-user.ts
@@ -7,6 +7,7 @@ import { ModerationLogService } from '@/core/ModerationLogService.js';
 import { UserSuspendService } from '@/core/UserSuspendService.js';
 import { UserFollowingService } from '@/core/UserFollowingService.js';
 import { DI } from '@/di-symbols.js';
+import { UserEntityService } from '@/core/entities/UserEntityService.js';
 
 export const meta = {
 	tags: ['admin'],
@@ -36,6 +37,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> {
 		@Inject(DI.notificationsRepository)
 		private notificationsRepository: NotificationsRepository,
 
+		private userEntityService: UserEntityService,
 		private userFollowingService: UserFollowingService,
 		private userSuspendService: UserSuspendService,
 		private moderationLogService: ModerationLogService,
diff --git a/packages/backend/src/server/api/endpoints/antennas/notes.ts b/packages/backend/src/server/api/endpoints/antennas/notes.ts
index fb3c7131542e287411d0fe2ddb7d28cd5e8ce1d5..fbb5acf6172072e5ef5701f0866e86ce663778d2 100644
--- a/packages/backend/src/server/api/endpoints/antennas/notes.ts
+++ b/packages/backend/src/server/api/endpoints/antennas/notes.ts
@@ -1,6 +1,6 @@
 import { Inject, Injectable } from '@nestjs/common';
 import { Endpoint } from '@/server/api/endpoint-base.js';
-import type { NotesRepository, AntennaNotesRepository } from '@/models/index.js';
+import type { NotesRepository, AntennaNotesRepository, AntennasRepository } from '@/models/index.js';
 import { QueryService } from '@/core/QueryService.js';
 import { NoteReadService } from '@/core/NoteReadService.js';
 import { DI } from '@/di-symbols.js';
diff --git a/packages/backend/src/server/api/endpoints/channels/follow.ts b/packages/backend/src/server/api/endpoints/channels/follow.ts
index 871d3927bc873871c480452081c65249a1e7881b..91693918f2a7d8c7621836589af51290f9a79ccd 100644
--- a/packages/backend/src/server/api/endpoints/channels/follow.ts
+++ b/packages/backend/src/server/api/endpoints/channels/follow.ts
@@ -44,7 +44,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> {
 		private globalEventService: GlobalEventService,
 	) {
 		super(meta, paramDef, async (ps, me) => {
-			const channel = await Channels.findOneBy({
+			const channel = await this.channelsRepository.findOneBy({
 				id: ps.channelId,
 			});
 
diff --git a/packages/backend/src/server/api/endpoints/stats.ts b/packages/backend/src/server/api/endpoints/stats.ts
index 3adf0a4bb8420d5552157971b4fe267120d428a4..96b22b0261d9ddc0be468466a0615cfaeaf2e2ea 100644
--- a/packages/backend/src/server/api/endpoints/stats.ts
+++ b/packages/backend/src/server/api/endpoints/stats.ts
@@ -1,6 +1,6 @@
 import { Inject, Injectable } from '@nestjs/common';
 import { IsNull } from 'typeorm';
-import type { InstancesRepository, NotesRepository, UsersRepository } from '@/models/index.js';
+import type { InstancesRepository, NoteReactionsRepository, NotesRepository, UsersRepository } from '@/models/index.js';
 import { Endpoint } from '@/server/api/endpoint-base.js';
 import { DI } from '@/di-symbols.js';
 
diff --git a/packages/backend/src/server/api/integration/DiscordServerService.ts b/packages/backend/src/server/api/integration/DiscordServerService.ts
index 79ce9c897375d27f35418d6080fdb312ad7fafe6..8e4f595adad3a2608c2e4bd796ae43c0a51fb0df 100644
--- a/packages/backend/src/server/api/integration/DiscordServerService.ts
+++ b/packages/backend/src/server/api/integration/DiscordServerService.ts
@@ -159,6 +159,7 @@ export class DiscordServerService {
 
 				const { redirect_uri, state } = await new Promise<any>((res, rej) => {
 					this.redisClient.get(sessid, async (_, state) => {
+						if (state == null) throw new Error('empty state');
 						res(JSON.parse(state));
 					});
 				});
@@ -169,22 +170,22 @@ export class DiscordServerService {
 				}
 
 				const { accessToken, refreshToken, expiresDate } = await new Promise<any>((res, rej) =>
-			oauth2!.getOAuthAccessToken(code, {
-				grant_type: 'authorization_code',
-				redirect_uri,
-			}, (err, accessToken, refreshToken, result) => {
-				if (err) {
-					rej(err);
-				} else if (result.error) {
-					rej(result.error);
-				} else {
-					res({
-						accessToken,
-						refreshToken,
-						expiresDate: Date.now() + Number(result.expires_in) * 1000,
-					});
-				}
-			}));
+					oauth2!.getOAuthAccessToken(code, {
+						grant_type: 'authorization_code',
+						redirect_uri,
+					}, (err, accessToken, refreshToken, result) => {
+						if (err) {
+							rej(err);
+						} else if (result.error) {
+							rej(result.error);
+						} else {
+							res({
+								accessToken,
+								refreshToken,
+								expiresDate: Date.now() + Number(result.expires_in) * 1000,
+							});
+						}
+					}));
 
 				const { id, username, discriminator } = (await this.httpRequestService.getJson('https://discord.com/api/users/@me', '*/*', 10 * 1000, {
 					'Authorization': `Bearer ${accessToken}`,
@@ -230,6 +231,7 @@ export class DiscordServerService {
 
 				const { redirect_uri, state } = await new Promise<any>((res, rej) => {
 					this.redisClient.get(userToken, async (_, state) => {
+						if (state == null) throw new Error('empty state');
 						res(JSON.parse(state));
 					});
 				});
@@ -240,22 +242,22 @@ export class DiscordServerService {
 				}
 
 				const { accessToken, refreshToken, expiresDate } = await new Promise<any>((res, rej) =>
-			oauth2!.getOAuthAccessToken(code, {
-				grant_type: 'authorization_code',
-				redirect_uri,
-			}, (err, accessToken, refreshToken, result) => {
-				if (err) {
-					rej(err);
-				} else if (result.error) {
-					rej(result.error);
-				} else {
-					res({
-						accessToken,
-						refreshToken,
-						expiresDate: Date.now() + Number(result.expires_in) * 1000,
-					});
-				}
-			}));
+					oauth2!.getOAuthAccessToken(code, {
+						grant_type: 'authorization_code',
+						redirect_uri,
+					}, (err, accessToken, refreshToken, result) => {
+						if (err) {
+							rej(err);
+						} else if (result.error) {
+							rej(result.error);
+						} else {
+							res({
+								accessToken,
+								refreshToken,
+								expiresDate: Date.now() + Number(result.expires_in) * 1000,
+							});
+						}
+					}));
 
 				const { id, username, discriminator } = (await this.httpRequestService.getJson('https://discord.com/api/users/@me', '*/*', 10 * 1000, {
 					'Authorization': `Bearer ${accessToken}`,
diff --git a/packages/backend/src/server/api/integration/GithubServerService.ts b/packages/backend/src/server/api/integration/GithubServerService.ts
index 7fb31c39a25bbee015aad61b772941a6704b332e..2ccea36dc4829c590e4ae7f1c0f280cfd6a34264 100644
--- a/packages/backend/src/server/api/integration/GithubServerService.ts
+++ b/packages/backend/src/server/api/integration/GithubServerService.ts
@@ -157,6 +157,7 @@ export class GithubServerService {
 
 				const { redirect_uri, state } = await new Promise<any>((res, rej) => {
 					this.redisClient.get(sessid, async (_, state) => {
+						if (state == null) throw new Error('empty state');
 						res(JSON.parse(state));
 					});
 				});
@@ -167,17 +168,17 @@ export class GithubServerService {
 				}
 
 				const { accessToken } = await new Promise<any>((res, rej) =>
-			oauth2!.getOAuthAccessToken(code, {
-				redirect_uri,
-			}, (err, accessToken, refresh, result) => {
-				if (err) {
-					rej(err);
-				} else if (result.error) {
-					rej(result.error);
-				} else {
-					res({ accessToken });
-				}
-			}));
+					oauth2!.getOAuthAccessToken(code, {
+						redirect_uri,
+					}, (err, accessToken, refresh, result) => {
+						if (err) {
+							rej(err);
+						} else if (result.error) {
+							rej(result.error);
+						} else {
+							res({ accessToken });
+						}
+					}));
 
 				const { login, id } = (await this.httpRequestService.getJson('https://api.github.com/user', 'application/vnd.github.v3+json', 10 * 1000, {
 					'Authorization': `bearer ${accessToken}`,
@@ -208,6 +209,7 @@ export class GithubServerService {
 
 				const { redirect_uri, state } = await new Promise<any>((res, rej) => {
 					this.redisClient.get(userToken, async (_, state) => {
+						if (state == null) throw new Error('empty state');
 						res(JSON.parse(state));
 					});
 				});
@@ -218,18 +220,18 @@ export class GithubServerService {
 				}
 
 				const { accessToken } = await new Promise<any>((res, rej) =>
-			oauth2!.getOAuthAccessToken(
-				code,
-				{ redirect_uri },
-				(err, accessToken, refresh, result) => {
-					if (err) {
-						rej(err);
-					} else if (result.error) {
-						rej(result.error);
-					} else {
-						res({ accessToken });
-					}
-				}));
+					oauth2!.getOAuthAccessToken(
+						code,
+						{ redirect_uri },
+						(err, accessToken, refresh, result) => {
+							if (err) {
+								rej(err);
+							} else if (result.error) {
+								rej(result.error);
+							} else {
+								res({ accessToken });
+							}
+						}));
 
 				const { login, id } = (await this.httpRequestService.getJson('https://api.github.com/user', 'application/vnd.github.v3+json', 10 * 1000, {
 					'Authorization': `bearer ${accessToken}`,
diff --git a/packages/backend/tsconfig.json b/packages/backend/tsconfig.json
index 0c959257440cb9e1f538b4bc47fcdb6772090946..2c8adf7708938f3c17ee8789c1b6400d28985306 100644
--- a/packages/backend/tsconfig.json
+++ b/packages/backend/tsconfig.json
@@ -18,6 +18,7 @@
 		"strict": true,
 		"strictNullChecks": true,
 		"strictPropertyInitialization": false,
+		"skipLibCheck": true,
 		"experimentalDecorators": true,
 		"emitDecoratorMetadata": true,
 		"resolveJsonModule": true,