refactor: refactoring imports
将来ESMに移行しやすいように Related: #7658 なんかmochaが起動しなくなってるけど理由不明 すぐ直したい
This commit is contained in:
		
							parent
							
								
									31e3aaeda0
								
							
						
					
					
						commit
						b9cb6d1c10
					
				
					 663 changed files with 3194 additions and 3134 deletions
				
			
		
							
								
								
									
										10
									
								
								index.js
									
										
									
									
									
								
							
							
						
						
									
										10
									
								
								index.js
									
										
									
									
									
								
							|  | @ -1,3 +1,13 @@ | |||
| /* | ||||
| import * as fs from 'fs'; | ||||
| 
 | ||||
| if (fs.existsSync('./built')) { | ||||
| 	import('./built/index.js').then(built => built()); | ||||
| } else { | ||||
| 	console.log('Built code is not found. Probably an error occurred during a build or you just forgot to build.'); | ||||
| } | ||||
| */ | ||||
| 
 | ||||
| const fs = require('fs'); | ||||
| 
 | ||||
| if (fs.existsSync('./built')) { | ||||
|  |  | |||
|  | @ -10,8 +10,8 @@ | |||
| 	"main": "./index.js", | ||||
| 	"private": true, | ||||
| 	"scripts": { | ||||
| 		"start": "node ./index.js", | ||||
| 		"start:test": "cross-env NODE_ENV=test node ./index.js", | ||||
| 		"start": "node --experimental-json-modules ./index.js", | ||||
| 		"start:test": "cross-env NODE_ENV=test node --experimental-json-modules ./index.js", | ||||
| 		"init": "npm run migrate", | ||||
| 		"ormconfig": "node ./built/ormconfig.js", | ||||
| 		"migrate": "ts-node ./node_modules/typeorm/cli.js migration:run", | ||||
|  |  | |||
							
								
								
									
										25
									
								
								src/argv.ts
									
										
									
									
									
								
							
							
						
						
									
										25
									
								
								src/argv.ts
									
										
									
									
									
								
							|  | @ -1,20 +1,19 @@ | |||
| import { Command } from 'commander'; | ||||
| import config from '@/config'; | ||||
| import config from '@/config/index.js'; | ||||
| 
 | ||||
| const program = new Command(); | ||||
| 
 | ||||
| program | ||||
| 	.version(config.version) | ||||
| 	.option('--no-daemons', 'Disable daemon processes (for debbuging)') | ||||
| 	.option('--disable-clustering', 'Disable clustering') | ||||
| 	.option('--only-server', 'Run server only (without job queue processing)') | ||||
| 	.option('--only-queue', 'Pocessing job queue only (without server)') | ||||
| 	.option('--quiet', 'Suppress all logs') | ||||
| 	.option('--verbose', 'Enable all logs') | ||||
| 	.option('--with-log-time', 'Include timestamp for each logs') | ||||
| 	.option('--slow', 'Delay all requests (for debbuging)') | ||||
| 	.option('--color', 'This option is a dummy for some external program\'s (e.g. forever) issue.') | ||||
| 	.parse(process.argv); | ||||
| program.version(config.version); | ||||
| program.option('--no-daemons', 'Disable daemon processes (for debbuging)'); | ||||
| program.option('--disable-clustering', 'Disable clustering'); | ||||
| program.option('--only-server', 'Run server only (without job queue processing)'); | ||||
| program.option('--only-queue', 'Pocessing job queue only (without server)'); | ||||
| program.option('--quiet', 'Suppress all logs'); | ||||
| program.option('--verbose', 'Enable all logs'); | ||||
| program.option('--with-log-time', 'Include timestamp for each logs'); | ||||
| program.option('--slow', 'Delay all requests (for debbuging)'); | ||||
| program.option('--color', 'This option is a dummy for some external program\'s (e.g. forever) issue.'); | ||||
| program.parse(process.argv); | ||||
| 
 | ||||
| if (process.env.MK_ONLY_QUEUE) program.onlyQueue = true; | ||||
| if (process.env.NODE_ENV === 'test') program.disableClustering = true; | ||||
|  |  | |||
|  | @ -2,13 +2,13 @@ import * as cluster from 'cluster'; | |||
| import * as chalk from 'chalk'; | ||||
| import Xev from 'xev'; | ||||
| 
 | ||||
| import Logger from '../services/logger'; | ||||
| import { program } from '../argv'; | ||||
| import Logger from '@/services/logger.js'; | ||||
| import { program } from '../argv.js'; | ||||
| 
 | ||||
| // for typeorm
 | ||||
| import 'reflect-metadata'; | ||||
| import { masterMain } from './master'; | ||||
| import { workerMain } from './worker'; | ||||
| import { masterMain } from './master.js'; | ||||
| import { workerMain } from './worker.js'; | ||||
| 
 | ||||
| const logger = new Logger('core', 'cyan'); | ||||
| const clusterLogger = logger.createSubLogger('cluster', 'orange', false); | ||||
|  |  | |||
|  | @ -5,14 +5,14 @@ import * as portscanner from 'portscanner'; | |||
| import * as isRoot from 'is-root'; | ||||
| import { getConnection } from 'typeorm'; | ||||
| 
 | ||||
| import Logger from '../services/logger'; | ||||
| import loadConfig from '@/config/load'; | ||||
| import { Config } from '@/config/types'; | ||||
| import { lessThan } from '../prelude/array'; | ||||
| import { program } from '../argv'; | ||||
| import { showMachineInfo } from '@/misc/show-machine-info'; | ||||
| import { initDb } from '../db/postgre'; | ||||
| const meta = require('../meta.json'); | ||||
| import Logger from '@/services/logger.js'; | ||||
| import loadConfig from '@/config/load.js'; | ||||
| import { Config } from '@/config/types.js'; | ||||
| import { lessThan } from '../prelude/array.js'; | ||||
| import { program } from '../argv.js'; | ||||
| import { showMachineInfo } from '@/misc/show-machine-info.js'; | ||||
| import { initDb } from '../db/postgre.js'; | ||||
| import * as meta from '../meta.json'; | ||||
| 
 | ||||
| const logger = new Logger('core', 'cyan'); | ||||
| const bootLogger = logger.createSubLogger('boot', 'magenta', false); | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| import * as cluster from 'cluster'; | ||||
| import { initDb } from '../db/postgre'; | ||||
| import { initDb } from '../db/postgre.js'; | ||||
| 
 | ||||
| /** | ||||
|  * Init worker process | ||||
|  |  | |||
|  | @ -1,3 +1,3 @@ | |||
| import load from './load'; | ||||
| import load from './load.js'; | ||||
| 
 | ||||
| export default load(); | ||||
|  |  | |||
|  | @ -3,14 +3,20 @@ | |||
|  */ | ||||
| 
 | ||||
| import * as fs from 'fs'; | ||||
| import { fileURLToPath } from 'url'; | ||||
| import { dirname } from 'path'; | ||||
| import * as yaml from 'js-yaml'; | ||||
| import { Source, Mixin } from './types'; | ||||
| const meta = require('../meta.json'); | ||||
| import { Source, Mixin } from './types.js'; | ||||
| import * as meta from '../meta.json'; | ||||
| 
 | ||||
| //const _filename = fileURLToPath(import.meta.url);
 | ||||
| const _filename = __filename; | ||||
| const _dirname = dirname(_filename); | ||||
| 
 | ||||
| /** | ||||
|  * Path of configuration directory | ||||
|  */ | ||||
| const dir = `${__dirname}/../../.config`; | ||||
| const dir = `${_dirname}/../../.config`; | ||||
| 
 | ||||
| /** | ||||
|  * Path of configuration file | ||||
|  |  | |||
|  | @ -1,7 +1,7 @@ | |||
| // TODO: 消したい
 | ||||
| 
 | ||||
| const interval = 30 * 60 * 1000; | ||||
| import { AttestationChallenges } from '../models'; | ||||
| import { AttestationChallenges } from '@/models/index.js'; | ||||
| import { LessThan } from 'typeorm'; | ||||
| 
 | ||||
| /** | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| import Xev from 'xev'; | ||||
| import { deliverQueue, inboxQueue } from '../queue/queues'; | ||||
| import { deliverQueue, inboxQueue } from '../queue/queues.js'; | ||||
| 
 | ||||
| const ev = new Xev(); | ||||
| 
 | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| import * as elasticsearch from '@elastic/elasticsearch'; | ||||
| import config from '@/config'; | ||||
| import config from '@/config/index.js'; | ||||
| 
 | ||||
| const index = { | ||||
| 	settings: { | ||||
|  |  | |||
|  | @ -1,3 +1,3 @@ | |||
| import Logger from '../services/logger'; | ||||
| import Logger from '@/services/logger.js'; | ||||
| 
 | ||||
| export const dbLogger = new Logger('db'); | ||||
|  |  | |||
|  | @ -3,75 +3,75 @@ const types = require('pg').types; | |||
| types.setTypeParser(20, Number); | ||||
| 
 | ||||
| import { createConnection, Logger, getConnection } from 'typeorm'; | ||||
| import config from '@/config'; | ||||
| import { entities as charts } from '../services/chart/entities'; | ||||
| import { dbLogger } from './logger'; | ||||
| import config from '@/config/index.js'; | ||||
| import { entities as charts } from '@/services/chart/entities.js'; | ||||
| import { dbLogger } from './logger.js'; | ||||
| import * as highlight from 'cli-highlight'; | ||||
| 
 | ||||
| import { Log } from '../models/entities/log'; | ||||
| import { User } from '../models/entities/user'; | ||||
| import { DriveFile } from '../models/entities/drive-file'; | ||||
| import { DriveFolder } from '../models/entities/drive-folder'; | ||||
| import { AccessToken } from '../models/entities/access-token'; | ||||
| import { App } from '../models/entities/app'; | ||||
| import { PollVote } from '../models/entities/poll-vote'; | ||||
| import { Note } from '../models/entities/note'; | ||||
| import { NoteReaction } from '../models/entities/note-reaction'; | ||||
| import { NoteWatching } from '../models/entities/note-watching'; | ||||
| import { NoteUnread } from '../models/entities/note-unread'; | ||||
| import { Notification } from '../models/entities/notification'; | ||||
| import { Meta } from '../models/entities/meta'; | ||||
| import { Following } from '../models/entities/following'; | ||||
| import { Instance } from '../models/entities/instance'; | ||||
| import { Muting } from '../models/entities/muting'; | ||||
| import { SwSubscription } from '../models/entities/sw-subscription'; | ||||
| import { Blocking } from '../models/entities/blocking'; | ||||
| import { UserList } from '../models/entities/user-list'; | ||||
| import { UserListJoining } from '../models/entities/user-list-joining'; | ||||
| import { UserGroup } from '../models/entities/user-group'; | ||||
| import { UserGroupJoining } from '../models/entities/user-group-joining'; | ||||
| import { UserGroupInvitation } from '../models/entities/user-group-invitation'; | ||||
| import { Hashtag } from '../models/entities/hashtag'; | ||||
| import { NoteFavorite } from '../models/entities/note-favorite'; | ||||
| import { AbuseUserReport } from '../models/entities/abuse-user-report'; | ||||
| import { RegistrationTicket } from '../models/entities/registration-tickets'; | ||||
| import { MessagingMessage } from '../models/entities/messaging-message'; | ||||
| import { Signin } from '../models/entities/signin'; | ||||
| import { AuthSession } from '../models/entities/auth-session'; | ||||
| import { FollowRequest } from '../models/entities/follow-request'; | ||||
| import { Emoji } from '../models/entities/emoji'; | ||||
| import { ReversiGame } from '../models/entities/games/reversi/game'; | ||||
| import { ReversiMatching } from '../models/entities/games/reversi/matching'; | ||||
| import { UserNotePining } from '../models/entities/user-note-pining'; | ||||
| import { Poll } from '../models/entities/poll'; | ||||
| import { UserKeypair } from '../models/entities/user-keypair'; | ||||
| import { UserPublickey } from '../models/entities/user-publickey'; | ||||
| import { UserProfile } from '../models/entities/user-profile'; | ||||
| import { UserSecurityKey } from '../models/entities/user-security-key'; | ||||
| import { AttestationChallenge } from '../models/entities/attestation-challenge'; | ||||
| import { Page } from '../models/entities/page'; | ||||
| import { PageLike } from '../models/entities/page-like'; | ||||
| import { GalleryPost } from '../models/entities/gallery-post'; | ||||
| import { GalleryLike } from '../models/entities/gallery-like'; | ||||
| import { ModerationLog } from '../models/entities/moderation-log'; | ||||
| import { UsedUsername } from '../models/entities/used-username'; | ||||
| import { Announcement } from '../models/entities/announcement'; | ||||
| import { AnnouncementRead } from '../models/entities/announcement-read'; | ||||
| import { Clip } from '../models/entities/clip'; | ||||
| import { ClipNote } from '../models/entities/clip-note'; | ||||
| import { Antenna } from '../models/entities/antenna'; | ||||
| import { AntennaNote } from '../models/entities/antenna-note'; | ||||
| import { PromoNote } from '../models/entities/promo-note'; | ||||
| import { PromoRead } from '../models/entities/promo-read'; | ||||
| import { program } from '../argv'; | ||||
| import { Relay } from '../models/entities/relay'; | ||||
| import { MutedNote } from '../models/entities/muted-note'; | ||||
| import { Channel } from '../models/entities/channel'; | ||||
| import { ChannelFollowing } from '../models/entities/channel-following'; | ||||
| import { ChannelNotePining } from '../models/entities/channel-note-pining'; | ||||
| import { RegistryItem } from '../models/entities/registry-item'; | ||||
| import { Ad } from '../models/entities/ad'; | ||||
| import { PasswordResetRequest } from '@/models/entities/password-reset-request'; | ||||
| import { Log } from '@/models/entities/log.js'; | ||||
| import { User } from '@/models/entities/user.js'; | ||||
| import { DriveFile } from '@/models/entities/drive-file.js'; | ||||
| import { DriveFolder } from '@/models/entities/drive-folder.js'; | ||||
| import { AccessToken } from '@/models/entities/access-token.js'; | ||||
| import { App } from '@/models/entities/app.js'; | ||||
| import { PollVote } from '@/models/entities/poll-vote.js'; | ||||
| import { Note } from '@/models/entities/note.js'; | ||||
| import { NoteReaction } from '@/models/entities/note-reaction.js'; | ||||
| import { NoteWatching } from '@/models/entities/note-watching.js'; | ||||
| import { NoteUnread } from '@/models/entities/note-unread.js'; | ||||
| import { Notification } from '@/models/entities/notification.js'; | ||||
| import { Meta } from '@/models/entities/meta.js'; | ||||
| import { Following } from '@/models/entities/following.js'; | ||||
| import { Instance } from '@/models/entities/instance.js'; | ||||
| import { Muting } from '@/models/entities/muting.js'; | ||||
| import { SwSubscription } from '@/models/entities/sw-subscription.js'; | ||||
| import { Blocking } from '@/models/entities/blocking.js'; | ||||
| import { UserList } from '@/models/entities/user-list.js'; | ||||
| import { UserListJoining } from '@/models/entities/user-list-joining.js'; | ||||
| import { UserGroup } from '@/models/entities/user-group.js'; | ||||
| import { UserGroupJoining } from '@/models/entities/user-group-joining.js'; | ||||
| import { UserGroupInvitation } from '@/models/entities/user-group-invitation.js'; | ||||
| import { Hashtag } from '@/models/entities/hashtag.js'; | ||||
| import { NoteFavorite } from '@/models/entities/note-favorite.js'; | ||||
| import { AbuseUserReport } from '@/models/entities/abuse-user-report.js'; | ||||
| import { RegistrationTicket } from '@/models/entities/registration-tickets.js'; | ||||
| import { MessagingMessage } from '@/models/entities/messaging-message.js'; | ||||
| import { Signin } from '@/models/entities/signin.js'; | ||||
| import { AuthSession } from '@/models/entities/auth-session.js'; | ||||
| import { FollowRequest } from '@/models/entities/follow-request.js'; | ||||
| import { Emoji } from '@/models/entities/emoji.js'; | ||||
| import { ReversiGame } from '@/models/entities/games/reversi/game.js'; | ||||
| import { ReversiMatching } from '@/models/entities/games/reversi/matching.js'; | ||||
| import { UserNotePining } from '@/models/entities/user-note-pining.js'; | ||||
| import { Poll } from '@/models/entities/poll.js'; | ||||
| import { UserKeypair } from '@/models/entities/user-keypair.js'; | ||||
| import { UserPublickey } from '@/models/entities/user-publickey.js'; | ||||
| import { UserProfile } from '@/models/entities/user-profile.js'; | ||||
| import { UserSecurityKey } from '@/models/entities/user-security-key.js'; | ||||
| import { AttestationChallenge } from '@/models/entities/attestation-challenge.js'; | ||||
| import { Page } from '@/models/entities/page.js'; | ||||
| import { PageLike } from '@/models/entities/page-like.js'; | ||||
| import { GalleryPost } from '@/models/entities/gallery-post.js'; | ||||
| import { GalleryLike } from '@/models/entities/gallery-like.js'; | ||||
| import { ModerationLog } from '@/models/entities/moderation-log.js'; | ||||
| import { UsedUsername } from '@/models/entities/used-username.js'; | ||||
| import { Announcement } from '@/models/entities/announcement.js'; | ||||
| import { AnnouncementRead } from '@/models/entities/announcement-read.js'; | ||||
| import { Clip } from '@/models/entities/clip.js'; | ||||
| import { ClipNote } from '@/models/entities/clip-note.js'; | ||||
| import { Antenna } from '@/models/entities/antenna.js'; | ||||
| import { AntennaNote } from '@/models/entities/antenna-note.js'; | ||||
| import { PromoNote } from '@/models/entities/promo-note.js'; | ||||
| import { PromoRead } from '@/models/entities/promo-read.js'; | ||||
| import { program } from '../argv.js'; | ||||
| import { Relay } from '@/models/entities/relay.js'; | ||||
| import { MutedNote } from '@/models/entities/muted-note.js'; | ||||
| import { Channel } from '@/models/entities/channel.js'; | ||||
| import { ChannelFollowing } from '@/models/entities/channel-following.js'; | ||||
| import { ChannelNotePining } from '@/models/entities/channel-note-pining.js'; | ||||
| import { RegistryItem } from '@/models/entities/registry-item.js'; | ||||
| import { Ad } from '@/models/entities/ad.js'; | ||||
| import { PasswordResetRequest } from '@/models/entities/password-reset-request.js'; | ||||
| 
 | ||||
| const sqlLogger = dbLogger.createSubLogger('sql', 'white', false); | ||||
| 
 | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| import * as redis from 'redis'; | ||||
| import config from '@/config'; | ||||
| import config from '@/config/index.js'; | ||||
| 
 | ||||
| export function createConnection() { | ||||
| 	return redis.createClient( | ||||
|  |  | |||
|  | @ -6,7 +6,7 @@ Error.stackTraceLimit = Infinity; | |||
| 
 | ||||
| require('events').EventEmitter.defaultMaxListeners = 128; | ||||
| 
 | ||||
| import boot from './boot'; | ||||
| import boot from './boot/index.js'; | ||||
| 
 | ||||
| export default function() { | ||||
| 	return boot(); | ||||
|  |  | |||
|  | @ -1,9 +1,9 @@ | |||
| import { JSDOM } from 'jsdom'; | ||||
| import * as mfm from 'mfm-js'; | ||||
| import config from '@/config'; | ||||
| import { intersperse } from '../prelude/array'; | ||||
| import { IMentionedRemoteUsers } from '../models/entities/note'; | ||||
| import { wellKnownServices } from '../well-known-services'; | ||||
| import config from '@/config/index.js'; | ||||
| import { intersperse } from '../prelude/array.js'; | ||||
| import { IMentionedRemoteUsers } from '@/models/entities/note.js'; | ||||
| import { wellKnownServices } from '../well-known-services.js'; | ||||
| 
 | ||||
| export function toHtml(nodes: mfm.MfmNode[] | null, mentionedRemoteUsers: IMentionedRemoteUsers = []) { | ||||
| 	if (nodes == null) { | ||||
|  |  | |||
|  | @ -1,6 +1,6 @@ | |||
| import { Antennas } from '../models'; | ||||
| import { Antenna } from '../models/entities/antenna'; | ||||
| import { subsdcriber } from '../db/redis'; | ||||
| import { Antennas } from '@/models/index.js'; | ||||
| import { Antenna } from '@/models/entities/antenna.js'; | ||||
| import { subsdcriber } from '../db/redis.js'; | ||||
| 
 | ||||
| let antennasFetched = false; | ||||
| let antennas: Antenna[] = []; | ||||
|  |  | |||
|  | @ -1,5 +1,6 @@ | |||
| import { redisClient } from '../db/redis'; | ||||
| import { redisClient } from '../db/redis.js'; | ||||
| import { promisify } from 'util'; | ||||
| import * as redisLock from 'redis-lock'; | ||||
| 
 | ||||
| /** | ||||
|  * Retry delay (ms) for lock acquisition | ||||
|  | @ -8,7 +9,7 @@ const retryDelay = 100; | |||
| 
 | ||||
| const lock: (key: string, timeout?: number) => Promise<() => void> | ||||
| 	= redisClient | ||||
| 	? promisify(require('redis-lock')(redisClient, retryDelay)) | ||||
| 	? promisify(redisLock(redisClient, retryDelay)) | ||||
| 	: async () => () => { }; | ||||
| 
 | ||||
| /** | ||||
|  |  | |||
|  | @ -1,7 +1,7 @@ | |||
| import fetch from 'node-fetch'; | ||||
| import { URLSearchParams } from 'url'; | ||||
| import { getAgentByUrl } from './fetch'; | ||||
| import config from '@/config'; | ||||
| import { getAgentByUrl } from './fetch.js'; | ||||
| import config from '@/config/index.js'; | ||||
| 
 | ||||
| export async function verifyRecaptcha(secret: string, response: string) { | ||||
| 	const result = await getCaptchaResponse('https://www.recaptcha.net/recaptcha/api/siteverify', secret, response).catch(e => { | ||||
|  |  | |||
|  | @ -1,10 +1,10 @@ | |||
| import { Antenna } from '../models/entities/antenna'; | ||||
| import { Note } from '../models/entities/note'; | ||||
| import { User } from '../models/entities/user'; | ||||
| import { UserListJoinings, UserGroupJoinings } from '../models'; | ||||
| import { getFullApAccount } from './convert-host'; | ||||
| import { PackedNote } from '../models/repositories/note'; | ||||
| import { parseAcct } from '@/misc/acct'; | ||||
| import { Antenna } from '@/models/entities/antenna.js'; | ||||
| import { Note } from '@/models/entities/note.js'; | ||||
| import { User } from '@/models/entities/user.js'; | ||||
| import { UserListJoinings, UserGroupJoinings } from '@/models/index.js'; | ||||
| import { getFullApAccount } from './convert-host.js'; | ||||
| import { PackedNote } from '../models/repositories/note.js'; | ||||
| import { parseAcct } from '@/misc/acct.js'; | ||||
| 
 | ||||
| /** | ||||
|  * noteUserFollowers / antennaUserFollowing はどちらか一方が指定されていればよい | ||||
|  |  | |||
|  | @ -1,6 +1,6 @@ | |||
| const RE2 = require('re2'); | ||||
| import { Note } from '../models/entities/note'; | ||||
| import { User } from '../models/entities/user'; | ||||
| import { Note } from '@/models/entities/note.js'; | ||||
| import { User } from '@/models/entities/user.js'; | ||||
| 
 | ||||
| type NoteLike = { | ||||
| 	userId: Note['userId']; | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| import { URL } from 'url'; | ||||
| import config from '@/config'; | ||||
| import config from '@/config/index.js'; | ||||
| import { toASCII } from 'punycode/'; | ||||
| 
 | ||||
| export function getFullApAccount(username: string, host: string | null) { | ||||
|  |  | |||
|  | @ -1,4 +1,4 @@ | |||
| import { Notes } from '../models'; | ||||
| import { Notes } from '@/models/index.js'; | ||||
| 
 | ||||
| export async function countSameRenotes(userId: string, renoteId: string, excludeNoteId: string | undefined): Promise<number> { | ||||
| 	// 指定したユーザーの指定したノートのリノートがいくつあるか数える
 | ||||
|  |  | |||
|  | @ -1,6 +1,6 @@ | |||
| import { createTemp } from './create-temp'; | ||||
| import { downloadUrl } from './download-url'; | ||||
| import { detectType } from './get-file-info'; | ||||
| import { createTemp } from './create-temp.js'; | ||||
| import { downloadUrl } from './download-url.js'; | ||||
| import { detectType } from './get-file-info.js'; | ||||
| 
 | ||||
| export async function detectUrlMime(url: string) { | ||||
| 	const [path, cleanup] = await createTemp(); | ||||
|  |  | |||
|  | @ -1,8 +1,8 @@ | |||
| import * as fs from 'fs'; | ||||
| import * as util from 'util'; | ||||
| import Logger from '../services/logger'; | ||||
| import { createTemp } from './create-temp'; | ||||
| import { downloadUrl } from './download-url'; | ||||
| import Logger from '@/services/logger.js'; | ||||
| import { createTemp } from './create-temp.js'; | ||||
| import { downloadUrl } from './download-url.js'; | ||||
| 
 | ||||
| const logger = new Logger('download-text-file'); | ||||
| 
 | ||||
|  |  | |||
|  | @ -3,11 +3,11 @@ import * as stream from 'stream'; | |||
| import * as util from 'util'; | ||||
| import { URL } from 'url'; | ||||
| import fetch from 'node-fetch'; | ||||
| import { getAgentByUrl } from './fetch'; | ||||
| import { getAgentByUrl } from './fetch.js'; | ||||
| import { AbortController } from 'abort-controller'; | ||||
| import config from '@/config'; | ||||
| import config from '@/config/index.js'; | ||||
| import * as chalk from 'chalk'; | ||||
| import Logger from '../services/logger'; | ||||
| import Logger from '@/services/logger.js'; | ||||
| 
 | ||||
| const pipeline = util.promisify(stream.pipeline); | ||||
| 
 | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| import * as mfm from 'mfm-js'; | ||||
| import { unique } from '@/prelude/array'; | ||||
| import { unique } from '@/prelude/array.js'; | ||||
| 
 | ||||
| export function extractCustomEmojisFromMfm(nodes: mfm.MfmNode[]): string[] { | ||||
| 	const emojiNodes = mfm.extract(nodes, (node) => { | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| import * as mfm from 'mfm-js'; | ||||
| import { unique } from '@/prelude/array'; | ||||
| import { unique } from '@/prelude/array.js'; | ||||
| 
 | ||||
| export function extractHashtags(nodes: mfm.MfmNode[]): string[] { | ||||
| 	const hashtagNodes = mfm.extract(nodes, (node) => node.type === 'hashtag'); | ||||
|  |  | |||
|  | @ -1,4 +1,4 @@ | |||
| import { Meta } from '../models/entities/meta'; | ||||
| import { Meta } from '@/models/entities/meta.js'; | ||||
| import { getConnection } from 'typeorm'; | ||||
| 
 | ||||
| let cache: Meta; | ||||
|  |  | |||
|  | @ -1,6 +1,6 @@ | |||
| import { fetchMeta } from './fetch-meta'; | ||||
| import { ILocalUser } from '../models/entities/user'; | ||||
| import { Users } from '../models'; | ||||
| import { fetchMeta } from './fetch-meta.js'; | ||||
| import { ILocalUser } from '@/models/entities/user.js'; | ||||
| import { Users } from '@/models/index.js'; | ||||
| 
 | ||||
| export async function fetchProxyAccount(): Promise<ILocalUser | null> { | ||||
| 	const meta = await fetchMeta(); | ||||
|  |  | |||
|  | @ -3,7 +3,7 @@ import * as https from 'https'; | |||
| import CacheableLookup from 'cacheable-lookup'; | ||||
| import fetch, { HeadersInit } from 'node-fetch'; | ||||
| import { HttpProxyAgent, HttpsProxyAgent } from 'hpagent'; | ||||
| import config from '@/config'; | ||||
| import config from '@/config/index.js'; | ||||
| import { URL } from 'url'; | ||||
| 
 | ||||
| export async function getJson(url: string, accept = 'application/json, */*', timeout = 10000, headers?: HeadersInit) { | ||||
|  |  | |||
|  | @ -2,7 +2,7 @@ | |||
|  * Random avatar generator | ||||
|  */ | ||||
| 
 | ||||
| const p = require('pureimage'); | ||||
| import * as p from 'pureimage'; | ||||
| import * as gen from 'random-seed'; | ||||
| import { WriteStream } from 'fs'; | ||||
| 
 | ||||
|  |  | |||
|  | @ -1,9 +1,9 @@ | |||
| import { ulid } from 'ulid'; | ||||
| import { genAid } from './id/aid'; | ||||
| import { genMeid } from './id/meid'; | ||||
| import { genMeidg } from './id/meidg'; | ||||
| import { genObjectId } from './id/object-id'; | ||||
| import config from '@/config'; | ||||
| import { genAid } from './id/aid.js'; | ||||
| import { genMeid } from './id/meid.js'; | ||||
| import { genMeidg } from './id/meidg.js'; | ||||
| import { genObjectId } from './id/object-id.js'; | ||||
| import config from '@/config/index.js'; | ||||
| 
 | ||||
| const metohd = config.id.toLowerCase(); | ||||
| 
 | ||||
|  |  | |||
|  | @ -1,4 +1,4 @@ | |||
| import { User } from '../models/entities/user'; | ||||
| import { User } from '@/models/entities/user.js'; | ||||
| 
 | ||||
| export default function(user: User): string { | ||||
| 	return user.name || user.username; | ||||
|  |  | |||
|  | @ -1,4 +1,4 @@ | |||
| import { Note } from '../models/entities/note'; | ||||
| import { Note } from '@/models/entities/note.js'; | ||||
| 
 | ||||
| export default function(note: Note): boolean { | ||||
| 	return note.renoteId != null && (note.text != null || note.hasPoll || (note.fileIds != null && note.fileIds.length > 0)); | ||||
|  |  | |||
|  | @ -1,7 +1,7 @@ | |||
| import { UserKeypairs } from '../models'; | ||||
| import { User } from '../models/entities/user'; | ||||
| import { UserKeypair } from '../models/entities/user-keypair'; | ||||
| import { Cache } from './cache'; | ||||
| import { UserKeypairs } from '@/models/index.js'; | ||||
| import { User } from '@/models/entities/user.js'; | ||||
| import { UserKeypair } from '@/models/entities/user-keypair.js'; | ||||
| import { Cache } from './cache.js'; | ||||
| 
 | ||||
| const cache = new Cache<UserKeypair>(Infinity); | ||||
| 
 | ||||
|  |  | |||
|  | @ -1,6 +1,12 @@ | |||
| import * as fs from 'fs'; | ||||
| import { fileURLToPath } from 'url'; | ||||
| import { dirname } from 'path'; | ||||
| 
 | ||||
| const license = fs.readFileSync(__dirname + '/../../LICENSE', 'utf-8'); | ||||
| //const _filename = fileURLToPath(import.meta.url);
 | ||||
| const _filename = __filename; | ||||
| const _dirname = dirname(_filename); | ||||
| 
 | ||||
| const license = fs.readFileSync(_dirname + '/../../LICENSE', 'utf-8'); | ||||
| 
 | ||||
| const licenseHtml = license | ||||
| 	.replace(/\r\n/g, '\n') | ||||
|  |  | |||
|  | @ -1,12 +1,12 @@ | |||
| import { In } from 'typeorm'; | ||||
| import { Emojis } from '../models'; | ||||
| import { Emoji } from '../models/entities/emoji'; | ||||
| import { Note } from '../models/entities/note'; | ||||
| import { Cache } from './cache'; | ||||
| import { isSelfHost, toPunyNullable } from './convert-host'; | ||||
| import { decodeReaction } from './reaction-lib'; | ||||
| import config from '@/config'; | ||||
| import { query } from '@/prelude/url'; | ||||
| import { Emojis } from '@/models/index.js'; | ||||
| import { Emoji } from '@/models/entities/emoji.js'; | ||||
| import { Note } from '@/models/entities/note.js'; | ||||
| import { Cache } from './cache.js'; | ||||
| import { isSelfHost, toPunyNullable } from './convert-host.js'; | ||||
| import { decodeReaction } from './reaction-lib.js'; | ||||
| import config from '@/config/index.js'; | ||||
| import { query } from '@/prelude/url.js'; | ||||
| 
 | ||||
| const cache = new Cache<Emoji | null>(1000 * 60 * 60 * 12); | ||||
| 
 | ||||
|  |  | |||
|  | @ -1,7 +1,7 @@ | |||
| import { emojiRegex } from './emoji-regex'; | ||||
| import { fetchMeta } from './fetch-meta'; | ||||
| import { Emojis } from '../models'; | ||||
| import { toPunyNullable } from './convert-host'; | ||||
| import { emojiRegex } from './emoji-regex.js'; | ||||
| import { fetchMeta } from './fetch-meta.js'; | ||||
| import { Emojis } from '@/models/index.js'; | ||||
| import { toPunyNullable } from './convert-host.js'; | ||||
| 
 | ||||
| const legacies: Record<string, string> = { | ||||
| 	'like':     '👍', | ||||
|  |  | |||
|  | @ -1,6 +1,6 @@ | |||
| import * as os from 'os'; | ||||
| import * as sysUtils from 'systeminformation'; | ||||
| import Logger from '../services/logger'; | ||||
| import Logger from '@/services/logger.js'; | ||||
| 
 | ||||
| export async function showMachineInfo(parentLogger: Logger) { | ||||
| 	const logger = parentLogger.createSubLogger('machine'); | ||||
|  |  | |||
|  | @ -1,6 +1,6 @@ | |||
| import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm'; | ||||
| import { User } from './user'; | ||||
| import { id } from '../id'; | ||||
| import { User } from './user.js'; | ||||
| import { id } from '../id.js'; | ||||
| 
 | ||||
| @Entity() | ||||
| export class AbuseUserReport { | ||||
|  |  | |||
|  | @ -1,7 +1,7 @@ | |||
| import { Entity, PrimaryColumn, Index, Column, ManyToOne, JoinColumn } from 'typeorm'; | ||||
| import { User } from './user'; | ||||
| import { App } from './app'; | ||||
| import { id } from '../id'; | ||||
| import { User } from './user.js'; | ||||
| import { App } from './app.js'; | ||||
| import { id } from '../id.js'; | ||||
| 
 | ||||
| @Entity() | ||||
| export class AccessToken { | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| import { Entity, Index, Column, PrimaryColumn } from 'typeorm'; | ||||
| import { id } from '../id'; | ||||
| import { id } from '../id.js'; | ||||
| 
 | ||||
| @Entity() | ||||
| export class Ad { | ||||
|  |  | |||
|  | @ -1,7 +1,7 @@ | |||
| import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm'; | ||||
| import { User } from './user'; | ||||
| import { Announcement } from './announcement'; | ||||
| import { id } from '../id'; | ||||
| import { User } from './user.js'; | ||||
| import { Announcement } from './announcement.js'; | ||||
| import { id } from '../id.js'; | ||||
| 
 | ||||
| @Entity() | ||||
| @Index(['userId', 'announcementId'], { unique: true }) | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| import { Entity, Index, Column, PrimaryColumn } from 'typeorm'; | ||||
| import { id } from '../id'; | ||||
| import { id } from '../id.js'; | ||||
| 
 | ||||
| @Entity() | ||||
| export class Announcement { | ||||
|  |  | |||
|  | @ -1,7 +1,7 @@ | |||
| import { Entity, Index, JoinColumn, Column, ManyToOne, PrimaryColumn } from 'typeorm'; | ||||
| import { Note } from './note'; | ||||
| import { Antenna } from './antenna'; | ||||
| import { id } from '../id'; | ||||
| import { Note } from './note.js'; | ||||
| import { Antenna } from './antenna.js'; | ||||
| import { id } from '../id.js'; | ||||
| 
 | ||||
| @Entity() | ||||
| @Index(['noteId', 'antennaId'], { unique: true }) | ||||
|  |  | |||
|  | @ -1,8 +1,8 @@ | |||
| import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm'; | ||||
| import { User } from './user'; | ||||
| import { id } from '../id'; | ||||
| import { UserList } from './user-list'; | ||||
| import { UserGroupJoining } from './user-group-joining'; | ||||
| import { User } from './user.js'; | ||||
| import { id } from '../id.js'; | ||||
| import { UserList } from './user-list.js'; | ||||
| import { UserGroupJoining } from './user-group-joining.js'; | ||||
| 
 | ||||
| @Entity() | ||||
| export class Antenna { | ||||
|  |  | |||
|  | @ -1,6 +1,6 @@ | |||
| import { Entity, PrimaryColumn, Column, Index, ManyToOne } from 'typeorm'; | ||||
| import { User } from './user'; | ||||
| import { id } from '../id'; | ||||
| import { User } from './user.js'; | ||||
| import { id } from '../id.js'; | ||||
| 
 | ||||
| @Entity() | ||||
| export class App { | ||||
|  |  | |||
|  | @ -1,6 +1,6 @@ | |||
| import { PrimaryColumn, Entity, JoinColumn, Column, ManyToOne, Index } from 'typeorm'; | ||||
| import { User } from './user'; | ||||
| import { id } from '../id'; | ||||
| import { User } from './user.js'; | ||||
| import { id } from '../id.js'; | ||||
| 
 | ||||
| @Entity() | ||||
| export class AttestationChallenge { | ||||
|  |  | |||
|  | @ -1,7 +1,7 @@ | |||
| import { Entity, PrimaryColumn, Index, Column, ManyToOne, JoinColumn } from 'typeorm'; | ||||
| import { User } from './user'; | ||||
| import { App } from './app'; | ||||
| import { id } from '../id'; | ||||
| import { User } from './user.js'; | ||||
| import { App } from './app.js'; | ||||
| import { id } from '../id.js'; | ||||
| 
 | ||||
| @Entity() | ||||
| export class AuthSession { | ||||
|  |  | |||
|  | @ -1,6 +1,6 @@ | |||
| import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm'; | ||||
| import { User } from './user'; | ||||
| import { id } from '../id'; | ||||
| import { User } from './user.js'; | ||||
| import { id } from '../id.js'; | ||||
| 
 | ||||
| @Entity() | ||||
| @Index(['blockerId', 'blockeeId'], { unique: true }) | ||||
|  |  | |||
|  | @ -1,7 +1,7 @@ | |||
| import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm'; | ||||
| import { User } from './user'; | ||||
| import { id } from '../id'; | ||||
| import { Channel } from './channel'; | ||||
| import { User } from './user.js'; | ||||
| import { id } from '../id.js'; | ||||
| import { Channel } from './channel.js'; | ||||
| 
 | ||||
| @Entity() | ||||
| @Index(['followerId', 'followeeId'], { unique: true }) | ||||
|  |  | |||
|  | @ -1,7 +1,7 @@ | |||
| import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm'; | ||||
| import { Note } from './note'; | ||||
| import { Channel } from './channel'; | ||||
| import { id } from '../id'; | ||||
| import { Note } from './note.js'; | ||||
| import { Channel } from './channel.js'; | ||||
| import { id } from '../id.js'; | ||||
| 
 | ||||
| @Entity() | ||||
| @Index(['channelId', 'noteId'], { unique: true }) | ||||
|  |  | |||
|  | @ -1,7 +1,7 @@ | |||
| import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm'; | ||||
| import { User } from './user'; | ||||
| import { id } from '../id'; | ||||
| import { DriveFile } from './drive-file'; | ||||
| import { User } from './user.js'; | ||||
| import { id } from '../id.js'; | ||||
| import { DriveFile } from './drive-file.js'; | ||||
| 
 | ||||
| @Entity() | ||||
| export class Channel { | ||||
|  |  | |||
|  | @ -1,7 +1,7 @@ | |||
| import { Entity, Index, JoinColumn, Column, ManyToOne, PrimaryColumn } from 'typeorm'; | ||||
| import { Note } from './note'; | ||||
| import { Clip } from './clip'; | ||||
| import { id } from '../id'; | ||||
| import { Note } from './note.js'; | ||||
| import { Clip } from './clip.js'; | ||||
| import { id } from '../id.js'; | ||||
| 
 | ||||
| @Entity() | ||||
| @Index(['noteId', 'clipId'], { unique: true }) | ||||
|  |  | |||
|  | @ -1,6 +1,6 @@ | |||
| import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm'; | ||||
| import { User } from './user'; | ||||
| import { id } from '../id'; | ||||
| import { User } from './user.js'; | ||||
| import { id } from '../id.js'; | ||||
| 
 | ||||
| @Entity() | ||||
| export class Clip { | ||||
|  |  | |||
|  | @ -1,7 +1,7 @@ | |||
| import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm'; | ||||
| import { User } from './user'; | ||||
| import { DriveFolder } from './drive-folder'; | ||||
| import { id } from '../id'; | ||||
| import { User } from './user.js'; | ||||
| import { DriveFolder } from './drive-folder.js'; | ||||
| import { id } from '../id.js'; | ||||
| 
 | ||||
| @Entity() | ||||
| @Index(['userId', 'folderId', 'id']) | ||||
|  |  | |||
|  | @ -1,6 +1,6 @@ | |||
| import { JoinColumn, ManyToOne, Entity, PrimaryColumn, Index, Column } from 'typeorm'; | ||||
| import { User } from './user'; | ||||
| import { id } from '../id'; | ||||
| import { User } from './user.js'; | ||||
| import { id } from '../id.js'; | ||||
| 
 | ||||
| @Entity() | ||||
| export class DriveFolder { | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| import { PrimaryColumn, Entity, Index, Column } from 'typeorm'; | ||||
| import { id } from '../id'; | ||||
| import { id } from '../id.js'; | ||||
| 
 | ||||
| @Entity() | ||||
| @Index(['name', 'host'], { unique: true }) | ||||
|  |  | |||
|  | @ -1,6 +1,6 @@ | |||
| import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm'; | ||||
| import { User } from './user'; | ||||
| import { id } from '../id'; | ||||
| import { User } from './user.js'; | ||||
| import { id } from '../id.js'; | ||||
| 
 | ||||
| @Entity() | ||||
| @Index(['followerId', 'followeeId'], { unique: true }) | ||||
|  |  | |||
|  | @ -1,6 +1,6 @@ | |||
| import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm'; | ||||
| import { User } from './user'; | ||||
| import { id } from '../id'; | ||||
| import { User } from './user.js'; | ||||
| import { id } from '../id.js'; | ||||
| 
 | ||||
| @Entity() | ||||
| @Index(['followerId', 'followeeId'], { unique: true }) | ||||
|  |  | |||
|  | @ -1,7 +1,7 @@ | |||
| import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm'; | ||||
| import { User } from './user'; | ||||
| import { id } from '../id'; | ||||
| import { GalleryPost } from './gallery-post'; | ||||
| import { User } from './user.js'; | ||||
| import { id } from '../id.js'; | ||||
| import { GalleryPost } from './gallery-post.js'; | ||||
| 
 | ||||
| @Entity() | ||||
| @Index(['userId', 'postId'], { unique: true }) | ||||
|  |  | |||
|  | @ -1,7 +1,7 @@ | |||
| import { Entity, Index, JoinColumn, Column, PrimaryColumn, ManyToOne } from 'typeorm'; | ||||
| import { User } from './user'; | ||||
| import { id } from '../id'; | ||||
| import { DriveFile } from './drive-file'; | ||||
| import { User } from './user.js'; | ||||
| import { id } from '../id.js'; | ||||
| import { DriveFile } from './drive-file.js'; | ||||
| 
 | ||||
| @Entity() | ||||
| export class GalleryPost { | ||||
|  |  | |||
|  | @ -1,6 +1,6 @@ | |||
| import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm'; | ||||
| import { User } from '../../user'; | ||||
| import { id } from '../../../id'; | ||||
| import { User } from '../../user.js'; | ||||
| import { id } from '../../../id.js'; | ||||
| 
 | ||||
| @Entity() | ||||
| export class ReversiGame { | ||||
|  |  | |||
|  | @ -1,6 +1,6 @@ | |||
| import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm'; | ||||
| import { User } from '../../user'; | ||||
| import { id } from '../../../id'; | ||||
| import { User } from '../../user.js'; | ||||
| import { id } from '../../../id.js'; | ||||
| 
 | ||||
| @Entity() | ||||
| export class ReversiMatching { | ||||
|  |  | |||
|  | @ -1,6 +1,6 @@ | |||
| import { Entity, PrimaryColumn, Index, Column } from 'typeorm'; | ||||
| import { User } from './user'; | ||||
| import { id } from '../id'; | ||||
| import { User } from './user.js'; | ||||
| import { id } from '../id.js'; | ||||
| 
 | ||||
| @Entity() | ||||
| export class Hashtag { | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| import { Entity, PrimaryColumn, Index, Column } from 'typeorm'; | ||||
| import { id } from '../id'; | ||||
| import { id } from '../id.js'; | ||||
| 
 | ||||
| @Entity() | ||||
| export class Instance { | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| import { Entity, PrimaryColumn, Index, Column } from 'typeorm'; | ||||
| import { id } from '../id'; | ||||
| import { id } from '../id.js'; | ||||
| 
 | ||||
| @Entity() | ||||
| export class Log { | ||||
|  |  | |||
|  | @ -1,8 +1,8 @@ | |||
| import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm'; | ||||
| import { User } from './user'; | ||||
| import { DriveFile } from './drive-file'; | ||||
| import { id } from '../id'; | ||||
| import { UserGroup } from './user-group'; | ||||
| import { User } from './user.js'; | ||||
| import { DriveFile } from './drive-file.js'; | ||||
| import { id } from '../id.js'; | ||||
| import { UserGroup } from './user-group.js'; | ||||
| 
 | ||||
| @Entity() | ||||
| export class MessagingMessage { | ||||
|  |  | |||
|  | @ -1,7 +1,7 @@ | |||
| import { Entity, Column, PrimaryColumn, ManyToOne, JoinColumn } from 'typeorm'; | ||||
| import { User } from './user'; | ||||
| import { id } from '../id'; | ||||
| import { Clip } from './clip'; | ||||
| import { User } from './user.js'; | ||||
| import { id } from '../id.js'; | ||||
| import { Clip } from './clip.js'; | ||||
| 
 | ||||
| @Entity() | ||||
| export class Meta { | ||||
|  |  | |||
|  | @ -1,6 +1,6 @@ | |||
| import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm'; | ||||
| import { User } from './user'; | ||||
| import { id } from '../id'; | ||||
| import { User } from './user.js'; | ||||
| import { id } from '../id.js'; | ||||
| 
 | ||||
| @Entity() | ||||
| export class ModerationLog { | ||||
|  |  | |||
|  | @ -1,8 +1,8 @@ | |||
| import { Entity, Index, JoinColumn, Column, ManyToOne, PrimaryColumn } from 'typeorm'; | ||||
| import { Note } from './note'; | ||||
| import { User } from './user'; | ||||
| import { id } from '../id'; | ||||
| import { mutedNoteReasons } from '../../types'; | ||||
| import { Note } from './note.js'; | ||||
| import { User } from './user.js'; | ||||
| import { id } from '../id.js'; | ||||
| import { mutedNoteReasons } from '../../types.js'; | ||||
| 
 | ||||
| @Entity() | ||||
| @Index(['noteId', 'userId'], { unique: true }) | ||||
|  |  | |||
|  | @ -1,6 +1,6 @@ | |||
| import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm'; | ||||
| import { User } from './user'; | ||||
| import { id } from '../id'; | ||||
| import { User } from './user.js'; | ||||
| import { id } from '../id.js'; | ||||
| 
 | ||||
| @Entity() | ||||
| @Index(['muterId', 'muteeId'], { unique: true }) | ||||
|  |  | |||
|  | @ -1,7 +1,7 @@ | |||
| import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm'; | ||||
| import { Note } from './note'; | ||||
| import { User } from './user'; | ||||
| import { id } from '../id'; | ||||
| import { Note } from './note.js'; | ||||
| import { User } from './user.js'; | ||||
| import { id } from '../id.js'; | ||||
| 
 | ||||
| @Entity() | ||||
| @Index(['userId', 'noteId'], { unique: true }) | ||||
|  |  | |||
|  | @ -1,7 +1,7 @@ | |||
| import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm'; | ||||
| import { User } from './user'; | ||||
| import { Note } from './note'; | ||||
| import { id } from '../id'; | ||||
| import { User } from './user.js'; | ||||
| import { Note } from './note.js'; | ||||
| import { id } from '../id.js'; | ||||
| 
 | ||||
| @Entity() | ||||
| @Index(['userId', 'noteId'], { unique: true }) | ||||
|  |  | |||
|  | @ -1,8 +1,8 @@ | |||
| import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm'; | ||||
| import { User } from './user'; | ||||
| import { Note } from './note'; | ||||
| import { id } from '../id'; | ||||
| import { Channel } from './channel'; | ||||
| import { User } from './user.js'; | ||||
| import { Note } from './note.js'; | ||||
| import { id } from '../id.js'; | ||||
| import { Channel } from './channel.js'; | ||||
| 
 | ||||
| @Entity() | ||||
| @Index(['userId', 'noteId'], { unique: true }) | ||||
|  |  | |||
|  | @ -1,7 +1,7 @@ | |||
| import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm'; | ||||
| import { User } from './user'; | ||||
| import { Note } from './note'; | ||||
| import { id } from '../id'; | ||||
| import { User } from './user.js'; | ||||
| import { Note } from './note.js'; | ||||
| import { id } from '../id.js'; | ||||
| 
 | ||||
| @Entity() | ||||
| @Index(['userId', 'noteId'], { unique: true }) | ||||
|  |  | |||
|  | @ -1,9 +1,9 @@ | |||
| import { Entity, Index, JoinColumn, Column, PrimaryColumn, ManyToOne } from 'typeorm'; | ||||
| import { User } from './user'; | ||||
| import { DriveFile } from './drive-file'; | ||||
| import { id } from '../id'; | ||||
| import { noteVisibilities } from '../../types'; | ||||
| import { Channel } from './channel'; | ||||
| import { User } from './user.js'; | ||||
| import { DriveFile } from './drive-file.js'; | ||||
| import { id } from '../id.js'; | ||||
| import { noteVisibilities } from '../../types.js'; | ||||
| import { Channel } from './channel.js'; | ||||
| 
 | ||||
| @Entity() | ||||
| @Index('IDX_NOTE_TAGS', { synchronize: false }) | ||||
|  |  | |||
|  | @ -1,11 +1,11 @@ | |||
| import { Entity, Index, JoinColumn, ManyToOne, Column, PrimaryColumn } from 'typeorm'; | ||||
| import { User } from './user'; | ||||
| import { id } from '../id'; | ||||
| import { Note } from './note'; | ||||
| import { FollowRequest } from './follow-request'; | ||||
| import { UserGroupInvitation } from './user-group-invitation'; | ||||
| import { AccessToken } from './access-token'; | ||||
| import { notificationTypes } from '../../types'; | ||||
| import { User } from './user.js'; | ||||
| import { id } from '../id.js'; | ||||
| import { Note } from './note.js'; | ||||
| import { FollowRequest } from './follow-request.js'; | ||||
| import { UserGroupInvitation } from './user-group-invitation.js'; | ||||
| import { AccessToken } from './access-token.js'; | ||||
| import { notificationTypes } from '../../types.js'; | ||||
| 
 | ||||
| @Entity() | ||||
| export class Notification { | ||||
|  |  | |||
|  | @ -1,7 +1,7 @@ | |||
| import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm'; | ||||
| import { User } from './user'; | ||||
| import { id } from '../id'; | ||||
| import { Page } from './page'; | ||||
| import { User } from './user.js'; | ||||
| import { id } from '../id.js'; | ||||
| import { Page } from './page.js'; | ||||
| 
 | ||||
| @Entity() | ||||
| @Index(['userId', 'pageId'], { unique: true }) | ||||
|  |  | |||
|  | @ -1,7 +1,7 @@ | |||
| import { Entity, Index, JoinColumn, Column, PrimaryColumn, ManyToOne } from 'typeorm'; | ||||
| import { User } from './user'; | ||||
| import { id } from '../id'; | ||||
| import { DriveFile } from './drive-file'; | ||||
| import { User } from './user.js'; | ||||
| import { id } from '../id.js'; | ||||
| import { DriveFile } from './drive-file.js'; | ||||
| 
 | ||||
| @Entity() | ||||
| @Index(['userId', 'name'], { unique: true }) | ||||
|  |  | |||
|  | @ -1,6 +1,6 @@ | |||
| import { PrimaryColumn, Entity, Index, Column, ManyToOne, JoinColumn } from 'typeorm'; | ||||
| import { id } from '../id'; | ||||
| import { User } from './user'; | ||||
| import { id } from '../id.js'; | ||||
| import { User } from './user.js'; | ||||
| 
 | ||||
| @Entity() | ||||
| export class PasswordResetRequest { | ||||
|  |  | |||
|  | @ -1,7 +1,7 @@ | |||
| import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm'; | ||||
| import { User } from './user'; | ||||
| import { Note } from './note'; | ||||
| import { id } from '../id'; | ||||
| import { User } from './user.js'; | ||||
| import { Note } from './note.js'; | ||||
| import { id } from '../id.js'; | ||||
| 
 | ||||
| @Entity() | ||||
| @Index(['userId', 'noteId', 'choice'], { unique: true }) | ||||
|  |  | |||
|  | @ -1,8 +1,8 @@ | |||
| import { PrimaryColumn, Entity, Index, JoinColumn, Column, OneToOne } from 'typeorm'; | ||||
| import { id } from '../id'; | ||||
| import { Note } from './note'; | ||||
| import { User } from './user'; | ||||
| import { noteVisibilities } from '../../types'; | ||||
| import { id } from '../id.js'; | ||||
| import { Note } from './note.js'; | ||||
| import { User } from './user.js'; | ||||
| import { noteVisibilities } from '../../types.js'; | ||||
| 
 | ||||
| @Entity() | ||||
| export class Poll { | ||||
|  |  | |||
|  | @ -1,7 +1,7 @@ | |||
| import { PrimaryColumn, Entity, Index, JoinColumn, Column, OneToOne } from 'typeorm'; | ||||
| import { Note } from './note'; | ||||
| import { User } from './user'; | ||||
| import { id } from '../id'; | ||||
| import { Note } from './note.js'; | ||||
| import { User } from './user.js'; | ||||
| import { id } from '../id.js'; | ||||
| 
 | ||||
| @Entity() | ||||
| export class PromoNote { | ||||
|  |  | |||
|  | @ -1,7 +1,7 @@ | |||
| import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm'; | ||||
| import { Note } from './note'; | ||||
| import { User } from './user'; | ||||
| import { id } from '../id'; | ||||
| import { Note } from './note.js'; | ||||
| import { User } from './user.js'; | ||||
| import { id } from '../id.js'; | ||||
| 
 | ||||
| @Entity() | ||||
| @Index(['userId', 'noteId'], { unique: true }) | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| import { PrimaryColumn, Entity, Index, Column } from 'typeorm'; | ||||
| import { id } from '../id'; | ||||
| import { id } from '../id.js'; | ||||
| 
 | ||||
| @Entity() | ||||
| export class RegistrationTicket { | ||||
|  |  | |||
|  | @ -1,6 +1,6 @@ | |||
| import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm'; | ||||
| import { User } from './user'; | ||||
| import { id } from '../id'; | ||||
| import { User } from './user.js'; | ||||
| import { id } from '../id.js'; | ||||
| 
 | ||||
| // TODO: 同じdomain、同じscope、同じkeyのレコードは二つ以上存在しないように制約付けたい
 | ||||
| @Entity() | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| import { PrimaryColumn, Entity, Index, Column } from 'typeorm'; | ||||
| import { id } from '../id'; | ||||
| import { id } from '../id.js'; | ||||
| 
 | ||||
| @Entity() | ||||
| export class Relay { | ||||
|  |  | |||
|  | @ -1,6 +1,6 @@ | |||
| import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm'; | ||||
| import { User } from './user'; | ||||
| import { id } from '../id'; | ||||
| import { User } from './user.js'; | ||||
| import { id } from '../id.js'; | ||||
| 
 | ||||
| @Entity() | ||||
| export class Signin { | ||||
|  |  | |||
|  | @ -1,6 +1,6 @@ | |||
| import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm'; | ||||
| import { User } from './user'; | ||||
| import { id } from '../id'; | ||||
| import { User } from './user.js'; | ||||
| import { id } from '../id.js'; | ||||
| 
 | ||||
| @Entity() | ||||
| export class SwSubscription { | ||||
|  |  | |||
|  | @ -1,7 +1,7 @@ | |||
| import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm'; | ||||
| import { User } from './user'; | ||||
| import { UserGroup } from './user-group'; | ||||
| import { id } from '../id'; | ||||
| import { User } from './user.js'; | ||||
| import { UserGroup } from './user-group.js'; | ||||
| import { id } from '../id.js'; | ||||
| 
 | ||||
| @Entity() | ||||
| @Index(['userId', 'userGroupId'], { unique: true }) | ||||
|  |  | |||
|  | @ -1,7 +1,7 @@ | |||
| import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm'; | ||||
| import { User } from './user'; | ||||
| import { UserGroup } from './user-group'; | ||||
| import { id } from '../id'; | ||||
| import { User } from './user.js'; | ||||
| import { UserGroup } from './user-group.js'; | ||||
| import { id } from '../id.js'; | ||||
| 
 | ||||
| @Entity() | ||||
| @Index(['userId', 'userGroupId'], { unique: true }) | ||||
|  |  | |||
|  | @ -1,6 +1,6 @@ | |||
| import { Entity, Index, JoinColumn, Column, PrimaryColumn, ManyToOne } from 'typeorm'; | ||||
| import { User } from './user'; | ||||
| import { id } from '../id'; | ||||
| import { User } from './user.js'; | ||||
| import { id } from '../id.js'; | ||||
| 
 | ||||
| @Entity() | ||||
| export class UserGroup { | ||||
|  |  | |||
|  | @ -1,6 +1,6 @@ | |||
| import { PrimaryColumn, Entity, JoinColumn, Column, OneToOne } from 'typeorm'; | ||||
| import { User } from './user'; | ||||
| import { id } from '../id'; | ||||
| import { User } from './user.js'; | ||||
| import { id } from '../id.js'; | ||||
| 
 | ||||
| @Entity() | ||||
| export class UserKeypair { | ||||
|  |  | |||
|  | @ -1,7 +1,7 @@ | |||
| import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm'; | ||||
| import { User } from './user'; | ||||
| import { UserList } from './user-list'; | ||||
| import { id } from '../id'; | ||||
| import { User } from './user.js'; | ||||
| import { UserList } from './user-list.js'; | ||||
| import { id } from '../id.js'; | ||||
| 
 | ||||
| @Entity() | ||||
| @Index(['userId', 'userListId'], { unique: true }) | ||||
|  |  | |||
|  | @ -1,6 +1,6 @@ | |||
| import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm'; | ||||
| import { User } from './user'; | ||||
| import { id } from '../id'; | ||||
| import { User } from './user.js'; | ||||
| import { id } from '../id.js'; | ||||
| 
 | ||||
| @Entity() | ||||
| export class UserList { | ||||
|  |  | |||
|  | @ -1,7 +1,7 @@ | |||
| import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm'; | ||||
| import { Note } from './note'; | ||||
| import { User } from './user'; | ||||
| import { id } from '../id'; | ||||
| import { Note } from './note.js'; | ||||
| import { User } from './user.js'; | ||||
| import { id } from '../id.js'; | ||||
| 
 | ||||
| @Entity() | ||||
| @Index(['userId', 'noteId'], { unique: true }) | ||||
|  |  | |||
|  | @ -1,8 +1,8 @@ | |||
| import { Entity, Column, Index, OneToOne, JoinColumn, PrimaryColumn } from 'typeorm'; | ||||
| import { id } from '../id'; | ||||
| import { User } from './user'; | ||||
| import { Page } from './page'; | ||||
| import { notificationTypes } from '../../types'; | ||||
| import { id } from '../id.js'; | ||||
| import { User } from './user.js'; | ||||
| import { Page } from './page.js'; | ||||
| import { notificationTypes } from '../../types.js'; | ||||
| 
 | ||||
| // TODO: このテーブルで管理している情報すべてレジストリで管理するようにしても良いかも
 | ||||
| //       ただ、「emailVerified が true なユーザーを find する」のようなクエリは書けなくなるからウーン
 | ||||
|  |  | |||
|  | @ -1,6 +1,6 @@ | |||
| import { PrimaryColumn, Entity, Index, JoinColumn, Column, OneToOne } from 'typeorm'; | ||||
| import { User } from './user'; | ||||
| import { id } from '../id'; | ||||
| import { User } from './user.js'; | ||||
| import { id } from '../id.js'; | ||||
| 
 | ||||
| @Entity() | ||||
| export class UserPublickey { | ||||
|  |  | |||
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