refactor: refactoring imports

将来ESMに移行しやすいように
Related: #7658

なんかmochaが起動しなくなってるけど理由不明
すぐ直したい
This commit is contained in:
syuilo 2021-08-19 18:33:41 +09:00
parent d57776b931
commit d2b5b67b44
663 changed files with 3194 additions and 3134 deletions

View File

@ -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'); const fs = require('fs');
if (fs.existsSync('./built')) { if (fs.existsSync('./built')) {

View File

@ -10,8 +10,8 @@
"main": "./index.js", "main": "./index.js",
"private": true, "private": true,
"scripts": { "scripts": {
"start": "node ./index.js", "start": "node --experimental-json-modules ./index.js",
"start:test": "cross-env NODE_ENV=test node ./index.js", "start:test": "cross-env NODE_ENV=test node --experimental-json-modules ./index.js",
"init": "npm run migrate", "init": "npm run migrate",
"ormconfig": "node ./built/ormconfig.js", "ormconfig": "node ./built/ormconfig.js",
"migrate": "ts-node ./node_modules/typeorm/cli.js migration:run", "migrate": "ts-node ./node_modules/typeorm/cli.js migration:run",

View File

@ -1,20 +1,19 @@
import { Command } from 'commander'; import { Command } from 'commander';
import config from '@/config'; import config from '@/config/index.js';
const program = new Command(); const program = new Command();
program program.version(config.version);
.version(config.version) program.option('--no-daemons', 'Disable daemon processes (for debbuging)');
.option('--no-daemons', 'Disable daemon processes (for debbuging)') program.option('--disable-clustering', 'Disable clustering');
.option('--disable-clustering', 'Disable clustering') program.option('--only-server', 'Run server only (without job queue processing)');
.option('--only-server', 'Run server only (without job queue processing)') program.option('--only-queue', 'Pocessing job queue only (without server)');
.option('--only-queue', 'Pocessing job queue only (without server)') program.option('--quiet', 'Suppress all logs');
.option('--quiet', 'Suppress all logs') program.option('--verbose', 'Enable all logs');
.option('--verbose', 'Enable all logs') program.option('--with-log-time', 'Include timestamp for each logs');
.option('--with-log-time', 'Include timestamp for each logs') program.option('--slow', 'Delay all requests (for debbuging)');
.option('--slow', 'Delay all requests (for debbuging)') program.option('--color', 'This option is a dummy for some external program\'s (e.g. forever) issue.');
.option('--color', 'This option is a dummy for some external program\'s (e.g. forever) issue.') program.parse(process.argv);
.parse(process.argv);
if (process.env.MK_ONLY_QUEUE) program.onlyQueue = true; if (process.env.MK_ONLY_QUEUE) program.onlyQueue = true;
if (process.env.NODE_ENV === 'test') program.disableClustering = true; if (process.env.NODE_ENV === 'test') program.disableClustering = true;

View File

@ -2,13 +2,13 @@ import * as cluster from 'cluster';
import * as chalk from 'chalk'; import * as chalk from 'chalk';
import Xev from 'xev'; import Xev from 'xev';
import Logger from '../services/logger'; import Logger from '@/services/logger.js';
import { program } from '../argv'; import { program } from '../argv.js';
// for typeorm // for typeorm
import 'reflect-metadata'; import 'reflect-metadata';
import { masterMain } from './master'; import { masterMain } from './master.js';
import { workerMain } from './worker'; import { workerMain } from './worker.js';
const logger = new Logger('core', 'cyan'); const logger = new Logger('core', 'cyan');
const clusterLogger = logger.createSubLogger('cluster', 'orange', false); const clusterLogger = logger.createSubLogger('cluster', 'orange', false);

View File

@ -5,14 +5,14 @@ import * as portscanner from 'portscanner';
import * as isRoot from 'is-root'; import * as isRoot from 'is-root';
import { getConnection } from 'typeorm'; import { getConnection } from 'typeorm';
import Logger from '../services/logger'; import Logger from '@/services/logger.js';
import loadConfig from '@/config/load'; import loadConfig from '@/config/load.js';
import { Config } from '@/config/types'; import { Config } from '@/config/types.js';
import { lessThan } from '../prelude/array'; import { lessThan } from '../prelude/array.js';
import { program } from '../argv'; import { program } from '../argv.js';
import { showMachineInfo } from '@/misc/show-machine-info'; import { showMachineInfo } from '@/misc/show-machine-info.js';
import { initDb } from '../db/postgre'; import { initDb } from '../db/postgre.js';
const meta = require('../meta.json'); import * as meta from '../meta.json';
const logger = new Logger('core', 'cyan'); const logger = new Logger('core', 'cyan');
const bootLogger = logger.createSubLogger('boot', 'magenta', false); const bootLogger = logger.createSubLogger('boot', 'magenta', false);

View File

@ -1,5 +1,5 @@
import * as cluster from 'cluster'; import * as cluster from 'cluster';
import { initDb } from '../db/postgre'; import { initDb } from '../db/postgre.js';
/** /**
* Init worker process * Init worker process

View File

@ -1,3 +1,3 @@
import load from './load'; import load from './load.js';
export default load(); export default load();

View File

@ -3,14 +3,20 @@
*/ */
import * as fs from 'fs'; import * as fs from 'fs';
import { fileURLToPath } from 'url';
import { dirname } from 'path';
import * as yaml from 'js-yaml'; import * as yaml from 'js-yaml';
import { Source, Mixin } from './types'; import { Source, Mixin } from './types.js';
const meta = require('../meta.json'); import * as meta from '../meta.json';
//const _filename = fileURLToPath(import.meta.url);
const _filename = __filename;
const _dirname = dirname(_filename);
/** /**
* Path of configuration directory * Path of configuration directory
*/ */
const dir = `${__dirname}/../../.config`; const dir = `${_dirname}/../../.config`;
/** /**
* Path of configuration file * Path of configuration file

View File

@ -1,7 +1,7 @@
// TODO: 消したい // TODO: 消したい
const interval = 30 * 60 * 1000; const interval = 30 * 60 * 1000;
import { AttestationChallenges } from '../models'; import { AttestationChallenges } from '@/models/index.js';
import { LessThan } from 'typeorm'; import { LessThan } from 'typeorm';
/** /**

View File

@ -1,5 +1,5 @@
import Xev from 'xev'; import Xev from 'xev';
import { deliverQueue, inboxQueue } from '../queue/queues'; import { deliverQueue, inboxQueue } from '../queue/queues.js';
const ev = new Xev(); const ev = new Xev();

View File

@ -1,5 +1,5 @@
import * as elasticsearch from '@elastic/elasticsearch'; import * as elasticsearch from '@elastic/elasticsearch';
import config from '@/config'; import config from '@/config/index.js';
const index = { const index = {
settings: { settings: {

View File

@ -1,3 +1,3 @@
import Logger from '../services/logger'; import Logger from '@/services/logger.js';
export const dbLogger = new Logger('db'); export const dbLogger = new Logger('db');

View File

@ -3,75 +3,75 @@ const types = require('pg').types;
types.setTypeParser(20, Number); types.setTypeParser(20, Number);
import { createConnection, Logger, getConnection } from 'typeorm'; import { createConnection, Logger, getConnection } from 'typeorm';
import config from '@/config'; import config from '@/config/index.js';
import { entities as charts } from '../services/chart/entities'; import { entities as charts } from '@/services/chart/entities.js';
import { dbLogger } from './logger'; import { dbLogger } from './logger.js';
import * as highlight from 'cli-highlight'; import * as highlight from 'cli-highlight';
import { Log } from '../models/entities/log'; import { Log } from '@/models/entities/log.js';
import { User } from '../models/entities/user'; import { User } from '@/models/entities/user.js';
import { DriveFile } from '../models/entities/drive-file'; import { DriveFile } from '@/models/entities/drive-file.js';
import { DriveFolder } from '../models/entities/drive-folder'; import { DriveFolder } from '@/models/entities/drive-folder.js';
import { AccessToken } from '../models/entities/access-token'; import { AccessToken } from '@/models/entities/access-token.js';
import { App } from '../models/entities/app'; import { App } from '@/models/entities/app.js';
import { PollVote } from '../models/entities/poll-vote'; import { PollVote } from '@/models/entities/poll-vote.js';
import { Note } from '../models/entities/note'; import { Note } from '@/models/entities/note.js';
import { NoteReaction } from '../models/entities/note-reaction'; import { NoteReaction } from '@/models/entities/note-reaction.js';
import { NoteWatching } from '../models/entities/note-watching'; import { NoteWatching } from '@/models/entities/note-watching.js';
import { NoteUnread } from '../models/entities/note-unread'; import { NoteUnread } from '@/models/entities/note-unread.js';
import { Notification } from '../models/entities/notification'; import { Notification } from '@/models/entities/notification.js';
import { Meta } from '../models/entities/meta'; import { Meta } from '@/models/entities/meta.js';
import { Following } from '../models/entities/following'; import { Following } from '@/models/entities/following.js';
import { Instance } from '../models/entities/instance'; import { Instance } from '@/models/entities/instance.js';
import { Muting } from '../models/entities/muting'; import { Muting } from '@/models/entities/muting.js';
import { SwSubscription } from '../models/entities/sw-subscription'; import { SwSubscription } from '@/models/entities/sw-subscription.js';
import { Blocking } from '../models/entities/blocking'; import { Blocking } from '@/models/entities/blocking.js';
import { UserList } from '../models/entities/user-list'; import { UserList } from '@/models/entities/user-list.js';
import { UserListJoining } from '../models/entities/user-list-joining'; import { UserListJoining } from '@/models/entities/user-list-joining.js';
import { UserGroup } from '../models/entities/user-group'; import { UserGroup } from '@/models/entities/user-group.js';
import { UserGroupJoining } from '../models/entities/user-group-joining'; import { UserGroupJoining } from '@/models/entities/user-group-joining.js';
import { UserGroupInvitation } from '../models/entities/user-group-invitation'; import { UserGroupInvitation } from '@/models/entities/user-group-invitation.js';
import { Hashtag } from '../models/entities/hashtag'; import { Hashtag } from '@/models/entities/hashtag.js';
import { NoteFavorite } from '../models/entities/note-favorite'; import { NoteFavorite } from '@/models/entities/note-favorite.js';
import { AbuseUserReport } from '../models/entities/abuse-user-report'; import { AbuseUserReport } from '@/models/entities/abuse-user-report.js';
import { RegistrationTicket } from '../models/entities/registration-tickets'; import { RegistrationTicket } from '@/models/entities/registration-tickets.js';
import { MessagingMessage } from '../models/entities/messaging-message'; import { MessagingMessage } from '@/models/entities/messaging-message.js';
import { Signin } from '../models/entities/signin'; import { Signin } from '@/models/entities/signin.js';
import { AuthSession } from '../models/entities/auth-session'; import { AuthSession } from '@/models/entities/auth-session.js';
import { FollowRequest } from '../models/entities/follow-request'; import { FollowRequest } from '@/models/entities/follow-request.js';
import { Emoji } from '../models/entities/emoji'; import { Emoji } from '@/models/entities/emoji.js';
import { ReversiGame } from '../models/entities/games/reversi/game'; import { ReversiGame } from '@/models/entities/games/reversi/game.js';
import { ReversiMatching } from '../models/entities/games/reversi/matching'; import { ReversiMatching } from '@/models/entities/games/reversi/matching.js';
import { UserNotePining } from '../models/entities/user-note-pining'; import { UserNotePining } from '@/models/entities/user-note-pining.js';
import { Poll } from '../models/entities/poll'; import { Poll } from '@/models/entities/poll.js';
import { UserKeypair } from '../models/entities/user-keypair'; import { UserKeypair } from '@/models/entities/user-keypair.js';
import { UserPublickey } from '../models/entities/user-publickey'; import { UserPublickey } from '@/models/entities/user-publickey.js';
import { UserProfile } from '../models/entities/user-profile'; import { UserProfile } from '@/models/entities/user-profile.js';
import { UserSecurityKey } from '../models/entities/user-security-key'; import { UserSecurityKey } from '@/models/entities/user-security-key.js';
import { AttestationChallenge } from '../models/entities/attestation-challenge'; import { AttestationChallenge } from '@/models/entities/attestation-challenge.js';
import { Page } from '../models/entities/page'; import { Page } from '@/models/entities/page.js';
import { PageLike } from '../models/entities/page-like'; import { PageLike } from '@/models/entities/page-like.js';
import { GalleryPost } from '../models/entities/gallery-post'; import { GalleryPost } from '@/models/entities/gallery-post.js';
import { GalleryLike } from '../models/entities/gallery-like'; import { GalleryLike } from '@/models/entities/gallery-like.js';
import { ModerationLog } from '../models/entities/moderation-log'; import { ModerationLog } from '@/models/entities/moderation-log.js';
import { UsedUsername } from '../models/entities/used-username'; import { UsedUsername } from '@/models/entities/used-username.js';
import { Announcement } from '../models/entities/announcement'; import { Announcement } from '@/models/entities/announcement.js';
import { AnnouncementRead } from '../models/entities/announcement-read'; import { AnnouncementRead } from '@/models/entities/announcement-read.js';
import { Clip } from '../models/entities/clip'; import { Clip } from '@/models/entities/clip.js';
import { ClipNote } from '../models/entities/clip-note'; import { ClipNote } from '@/models/entities/clip-note.js';
import { Antenna } from '../models/entities/antenna'; import { Antenna } from '@/models/entities/antenna.js';
import { AntennaNote } from '../models/entities/antenna-note'; import { AntennaNote } from '@/models/entities/antenna-note.js';
import { PromoNote } from '../models/entities/promo-note'; import { PromoNote } from '@/models/entities/promo-note.js';
import { PromoRead } from '../models/entities/promo-read'; import { PromoRead } from '@/models/entities/promo-read.js';
import { program } from '../argv'; import { program } from '../argv.js';
import { Relay } from '../models/entities/relay'; import { Relay } from '@/models/entities/relay.js';
import { MutedNote } from '../models/entities/muted-note'; import { MutedNote } from '@/models/entities/muted-note.js';
import { Channel } from '../models/entities/channel'; import { Channel } from '@/models/entities/channel.js';
import { ChannelFollowing } from '../models/entities/channel-following'; import { ChannelFollowing } from '@/models/entities/channel-following.js';
import { ChannelNotePining } from '../models/entities/channel-note-pining'; import { ChannelNotePining } from '@/models/entities/channel-note-pining.js';
import { RegistryItem } from '../models/entities/registry-item'; import { RegistryItem } from '@/models/entities/registry-item.js';
import { Ad } from '../models/entities/ad'; import { Ad } from '@/models/entities/ad.js';
import { PasswordResetRequest } from '@/models/entities/password-reset-request'; import { PasswordResetRequest } from '@/models/entities/password-reset-request.js';
const sqlLogger = dbLogger.createSubLogger('sql', 'white', false); const sqlLogger = dbLogger.createSubLogger('sql', 'white', false);

View File

@ -1,5 +1,5 @@
import * as redis from 'redis'; import * as redis from 'redis';
import config from '@/config'; import config from '@/config/index.js';
export function createConnection() { export function createConnection() {
return redis.createClient( return redis.createClient(

View File

@ -6,7 +6,7 @@ Error.stackTraceLimit = Infinity;
require('events').EventEmitter.defaultMaxListeners = 128; require('events').EventEmitter.defaultMaxListeners = 128;
import boot from './boot'; import boot from './boot/index.js';
export default function() { export default function() {
return boot(); return boot();

View File

@ -1,9 +1,9 @@
import { JSDOM } from 'jsdom'; import { JSDOM } from 'jsdom';
import * as mfm from 'mfm-js'; import * as mfm from 'mfm-js';
import config from '@/config'; import config from '@/config/index.js';
import { intersperse } from '../prelude/array'; import { intersperse } from '../prelude/array.js';
import { IMentionedRemoteUsers } from '../models/entities/note'; import { IMentionedRemoteUsers } from '@/models/entities/note.js';
import { wellKnownServices } from '../well-known-services'; import { wellKnownServices } from '../well-known-services.js';
export function toHtml(nodes: mfm.MfmNode[] | null, mentionedRemoteUsers: IMentionedRemoteUsers = []) { export function toHtml(nodes: mfm.MfmNode[] | null, mentionedRemoteUsers: IMentionedRemoteUsers = []) {
if (nodes == null) { if (nodes == null) {

View File

@ -1,6 +1,6 @@
import { Antennas } from '../models'; import { Antennas } from '@/models/index.js';
import { Antenna } from '../models/entities/antenna'; import { Antenna } from '@/models/entities/antenna.js';
import { subsdcriber } from '../db/redis'; import { subsdcriber } from '../db/redis.js';
let antennasFetched = false; let antennasFetched = false;
let antennas: Antenna[] = []; let antennas: Antenna[] = [];

View File

@ -1,5 +1,6 @@
import { redisClient } from '../db/redis'; import { redisClient } from '../db/redis.js';
import { promisify } from 'util'; import { promisify } from 'util';
import * as redisLock from 'redis-lock';
/** /**
* Retry delay (ms) for lock acquisition * Retry delay (ms) for lock acquisition
@ -8,7 +9,7 @@ const retryDelay = 100;
const lock: (key: string, timeout?: number) => Promise<() => void> const lock: (key: string, timeout?: number) => Promise<() => void>
= redisClient = redisClient
? promisify(require('redis-lock')(redisClient, retryDelay)) ? promisify(redisLock(redisClient, retryDelay))
: async () => () => { }; : async () => () => { };
/** /**

View File

@ -1,7 +1,7 @@
import fetch from 'node-fetch'; import fetch from 'node-fetch';
import { URLSearchParams } from 'url'; import { URLSearchParams } from 'url';
import { getAgentByUrl } from './fetch'; import { getAgentByUrl } from './fetch.js';
import config from '@/config'; import config from '@/config/index.js';
export async function verifyRecaptcha(secret: string, response: string) { export async function verifyRecaptcha(secret: string, response: string) {
const result = await getCaptchaResponse('https://www.recaptcha.net/recaptcha/api/siteverify', secret, response).catch(e => { const result = await getCaptchaResponse('https://www.recaptcha.net/recaptcha/api/siteverify', secret, response).catch(e => {

View File

@ -1,10 +1,10 @@
import { Antenna } from '../models/entities/antenna'; import { Antenna } from '@/models/entities/antenna.js';
import { Note } from '../models/entities/note'; import { Note } from '@/models/entities/note.js';
import { User } from '../models/entities/user'; import { User } from '@/models/entities/user.js';
import { UserListJoinings, UserGroupJoinings } from '../models'; import { UserListJoinings, UserGroupJoinings } from '@/models/index.js';
import { getFullApAccount } from './convert-host'; import { getFullApAccount } from './convert-host.js';
import { PackedNote } from '../models/repositories/note'; import { PackedNote } from '../models/repositories/note.js';
import { parseAcct } from '@/misc/acct'; import { parseAcct } from '@/misc/acct.js';
/** /**
* noteUserFollowers / antennaUserFollowing * noteUserFollowers / antennaUserFollowing

View File

@ -1,6 +1,6 @@
const RE2 = require('re2'); const RE2 = require('re2');
import { Note } from '../models/entities/note'; import { Note } from '@/models/entities/note.js';
import { User } from '../models/entities/user'; import { User } from '@/models/entities/user.js';
type NoteLike = { type NoteLike = {
userId: Note['userId']; userId: Note['userId'];

View File

@ -1,5 +1,5 @@
import { URL } from 'url'; import { URL } from 'url';
import config from '@/config'; import config from '@/config/index.js';
import { toASCII } from 'punycode/'; import { toASCII } from 'punycode/';
export function getFullApAccount(username: string, host: string | null) { export function getFullApAccount(username: string, host: string | null) {

View File

@ -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> { export async function countSameRenotes(userId: string, renoteId: string, excludeNoteId: string | undefined): Promise<number> {
// 指定したユーザーの指定したノートのリノートがいくつあるか数える // 指定したユーザーの指定したノートのリノートがいくつあるか数える

View File

@ -1,6 +1,6 @@
import { createTemp } from './create-temp'; import { createTemp } from './create-temp.js';
import { downloadUrl } from './download-url'; import { downloadUrl } from './download-url.js';
import { detectType } from './get-file-info'; import { detectType } from './get-file-info.js';
export async function detectUrlMime(url: string) { export async function detectUrlMime(url: string) {
const [path, cleanup] = await createTemp(); const [path, cleanup] = await createTemp();

View File

@ -1,8 +1,8 @@
import * as fs from 'fs'; import * as fs from 'fs';
import * as util from 'util'; import * as util from 'util';
import Logger from '../services/logger'; import Logger from '@/services/logger.js';
import { createTemp } from './create-temp'; import { createTemp } from './create-temp.js';
import { downloadUrl } from './download-url'; import { downloadUrl } from './download-url.js';
const logger = new Logger('download-text-file'); const logger = new Logger('download-text-file');

View File

@ -3,11 +3,11 @@ import * as stream from 'stream';
import * as util from 'util'; import * as util from 'util';
import { URL } from 'url'; import { URL } from 'url';
import fetch from 'node-fetch'; import fetch from 'node-fetch';
import { getAgentByUrl } from './fetch'; import { getAgentByUrl } from './fetch.js';
import { AbortController } from 'abort-controller'; import { AbortController } from 'abort-controller';
import config from '@/config'; import config from '@/config/index.js';
import * as chalk from 'chalk'; import * as chalk from 'chalk';
import Logger from '../services/logger'; import Logger from '@/services/logger.js';
const pipeline = util.promisify(stream.pipeline); const pipeline = util.promisify(stream.pipeline);

View File

@ -1,5 +1,5 @@
import * as mfm from 'mfm-js'; import * as mfm from 'mfm-js';
import { unique } from '@/prelude/array'; import { unique } from '@/prelude/array.js';
export function extractCustomEmojisFromMfm(nodes: mfm.MfmNode[]): string[] { export function extractCustomEmojisFromMfm(nodes: mfm.MfmNode[]): string[] {
const emojiNodes = mfm.extract(nodes, (node) => { const emojiNodes = mfm.extract(nodes, (node) => {

View File

@ -1,5 +1,5 @@
import * as mfm from 'mfm-js'; import * as mfm from 'mfm-js';
import { unique } from '@/prelude/array'; import { unique } from '@/prelude/array.js';
export function extractHashtags(nodes: mfm.MfmNode[]): string[] { export function extractHashtags(nodes: mfm.MfmNode[]): string[] {
const hashtagNodes = mfm.extract(nodes, (node) => node.type === 'hashtag'); const hashtagNodes = mfm.extract(nodes, (node) => node.type === 'hashtag');

View File

@ -1,4 +1,4 @@
import { Meta } from '../models/entities/meta'; import { Meta } from '@/models/entities/meta.js';
import { getConnection } from 'typeorm'; import { getConnection } from 'typeorm';
let cache: Meta; let cache: Meta;

View File

@ -1,6 +1,6 @@
import { fetchMeta } from './fetch-meta'; import { fetchMeta } from './fetch-meta.js';
import { ILocalUser } from '../models/entities/user'; import { ILocalUser } from '@/models/entities/user.js';
import { Users } from '../models'; import { Users } from '@/models/index.js';
export async function fetchProxyAccount(): Promise<ILocalUser | null> { export async function fetchProxyAccount(): Promise<ILocalUser | null> {
const meta = await fetchMeta(); const meta = await fetchMeta();

View File

@ -3,7 +3,7 @@ import * as https from 'https';
import CacheableLookup from 'cacheable-lookup'; import CacheableLookup from 'cacheable-lookup';
import fetch, { HeadersInit } from 'node-fetch'; import fetch, { HeadersInit } from 'node-fetch';
import { HttpProxyAgent, HttpsProxyAgent } from 'hpagent'; import { HttpProxyAgent, HttpsProxyAgent } from 'hpagent';
import config from '@/config'; import config from '@/config/index.js';
import { URL } from 'url'; import { URL } from 'url';
export async function getJson(url: string, accept = 'application/json, */*', timeout = 10000, headers?: HeadersInit) { export async function getJson(url: string, accept = 'application/json, */*', timeout = 10000, headers?: HeadersInit) {

View File

@ -2,7 +2,7 @@
* Random avatar generator * Random avatar generator
*/ */
const p = require('pureimage'); import * as p from 'pureimage';
import * as gen from 'random-seed'; import * as gen from 'random-seed';
import { WriteStream } from 'fs'; import { WriteStream } from 'fs';

View File

@ -1,9 +1,9 @@
import { ulid } from 'ulid'; import { ulid } from 'ulid';
import { genAid } from './id/aid'; import { genAid } from './id/aid.js';
import { genMeid } from './id/meid'; import { genMeid } from './id/meid.js';
import { genMeidg } from './id/meidg'; import { genMeidg } from './id/meidg.js';
import { genObjectId } from './id/object-id'; import { genObjectId } from './id/object-id.js';
import config from '@/config'; import config from '@/config/index.js';
const metohd = config.id.toLowerCase(); const metohd = config.id.toLowerCase();

View File

@ -1,4 +1,4 @@
import { User } from '../models/entities/user'; import { User } from '@/models/entities/user.js';
export default function(user: User): string { export default function(user: User): string {
return user.name || user.username; return user.name || user.username;

View File

@ -1,4 +1,4 @@
import { Note } from '../models/entities/note'; import { Note } from '@/models/entities/note.js';
export default function(note: Note): boolean { export default function(note: Note): boolean {
return note.renoteId != null && (note.text != null || note.hasPoll || (note.fileIds != null && note.fileIds.length > 0)); return note.renoteId != null && (note.text != null || note.hasPoll || (note.fileIds != null && note.fileIds.length > 0));

View File

@ -1,7 +1,7 @@
import { UserKeypairs } from '../models'; import { UserKeypairs } from '@/models/index.js';
import { User } from '../models/entities/user'; import { User } from '@/models/entities/user.js';
import { UserKeypair } from '../models/entities/user-keypair'; import { UserKeypair } from '@/models/entities/user-keypair.js';
import { Cache } from './cache'; import { Cache } from './cache.js';
const cache = new Cache<UserKeypair>(Infinity); const cache = new Cache<UserKeypair>(Infinity);

View File

@ -1,6 +1,12 @@
import * as fs from 'fs'; 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 const licenseHtml = license
.replace(/\r\n/g, '\n') .replace(/\r\n/g, '\n')

View File

@ -1,12 +1,12 @@
import { In } from 'typeorm'; import { In } from 'typeorm';
import { Emojis } from '../models'; import { Emojis } from '@/models/index.js';
import { Emoji } from '../models/entities/emoji'; import { Emoji } from '@/models/entities/emoji.js';
import { Note } from '../models/entities/note'; import { Note } from '@/models/entities/note.js';
import { Cache } from './cache'; import { Cache } from './cache.js';
import { isSelfHost, toPunyNullable } from './convert-host'; import { isSelfHost, toPunyNullable } from './convert-host.js';
import { decodeReaction } from './reaction-lib'; import { decodeReaction } from './reaction-lib.js';
import config from '@/config'; import config from '@/config/index.js';
import { query } from '@/prelude/url'; import { query } from '@/prelude/url.js';
const cache = new Cache<Emoji | null>(1000 * 60 * 60 * 12); const cache = new Cache<Emoji | null>(1000 * 60 * 60 * 12);

View File

@ -1,7 +1,7 @@
import { emojiRegex } from './emoji-regex'; import { emojiRegex } from './emoji-regex.js';
import { fetchMeta } from './fetch-meta'; import { fetchMeta } from './fetch-meta.js';
import { Emojis } from '../models'; import { Emojis } from '@/models/index.js';
import { toPunyNullable } from './convert-host'; import { toPunyNullable } from './convert-host.js';
const legacies: Record<string, string> = { const legacies: Record<string, string> = {
'like': '👍', 'like': '👍',

View File

@ -1,6 +1,6 @@
import * as os from 'os'; import * as os from 'os';
import * as sysUtils from 'systeminformation'; import * as sysUtils from 'systeminformation';
import Logger from '../services/logger'; import Logger from '@/services/logger.js';
export async function showMachineInfo(parentLogger: Logger) { export async function showMachineInfo(parentLogger: Logger) {
const logger = parentLogger.createSubLogger('machine'); const logger = parentLogger.createSubLogger('machine');

View File

@ -1,6 +1,6 @@
import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm'; import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm';
import { User } from './user'; import { User } from './user.js';
import { id } from '../id'; import { id } from '../id.js';
@Entity() @Entity()
export class AbuseUserReport { export class AbuseUserReport {

View File

@ -1,7 +1,7 @@
import { Entity, PrimaryColumn, Index, Column, ManyToOne, JoinColumn } from 'typeorm'; import { Entity, PrimaryColumn, Index, Column, ManyToOne, JoinColumn } from 'typeorm';
import { User } from './user'; import { User } from './user.js';
import { App } from './app'; import { App } from './app.js';
import { id } from '../id'; import { id } from '../id.js';
@Entity() @Entity()
export class AccessToken { export class AccessToken {

View File

@ -1,5 +1,5 @@
import { Entity, Index, Column, PrimaryColumn } from 'typeorm'; import { Entity, Index, Column, PrimaryColumn } from 'typeorm';
import { id } from '../id'; import { id } from '../id.js';
@Entity() @Entity()
export class Ad { export class Ad {

View File

@ -1,7 +1,7 @@
import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm'; import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm';
import { User } from './user'; import { User } from './user.js';
import { Announcement } from './announcement'; import { Announcement } from './announcement.js';
import { id } from '../id'; import { id } from '../id.js';
@Entity() @Entity()
@Index(['userId', 'announcementId'], { unique: true }) @Index(['userId', 'announcementId'], { unique: true })

View File

@ -1,5 +1,5 @@
import { Entity, Index, Column, PrimaryColumn } from 'typeorm'; import { Entity, Index, Column, PrimaryColumn } from 'typeorm';
import { id } from '../id'; import { id } from '../id.js';
@Entity() @Entity()
export class Announcement { export class Announcement {

View File

@ -1,7 +1,7 @@
import { Entity, Index, JoinColumn, Column, ManyToOne, PrimaryColumn } from 'typeorm'; import { Entity, Index, JoinColumn, Column, ManyToOne, PrimaryColumn } from 'typeorm';
import { Note } from './note'; import { Note } from './note.js';
import { Antenna } from './antenna'; import { Antenna } from './antenna.js';
import { id } from '../id'; import { id } from '../id.js';
@Entity() @Entity()
@Index(['noteId', 'antennaId'], { unique: true }) @Index(['noteId', 'antennaId'], { unique: true })

View File

@ -1,8 +1,8 @@
import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm'; import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm';
import { User } from './user'; import { User } from './user.js';
import { id } from '../id'; import { id } from '../id.js';
import { UserList } from './user-list'; import { UserList } from './user-list.js';
import { UserGroupJoining } from './user-group-joining'; import { UserGroupJoining } from './user-group-joining.js';
@Entity() @Entity()
export class Antenna { export class Antenna {

View File

@ -1,6 +1,6 @@
import { Entity, PrimaryColumn, Column, Index, ManyToOne } from 'typeorm'; import { Entity, PrimaryColumn, Column, Index, ManyToOne } from 'typeorm';
import { User } from './user'; import { User } from './user.js';
import { id } from '../id'; import { id } from '../id.js';
@Entity() @Entity()
export class App { export class App {

View File

@ -1,6 +1,6 @@
import { PrimaryColumn, Entity, JoinColumn, Column, ManyToOne, Index } from 'typeorm'; import { PrimaryColumn, Entity, JoinColumn, Column, ManyToOne, Index } from 'typeorm';
import { User } from './user'; import { User } from './user.js';
import { id } from '../id'; import { id } from '../id.js';
@Entity() @Entity()
export class AttestationChallenge { export class AttestationChallenge {

View File

@ -1,7 +1,7 @@
import { Entity, PrimaryColumn, Index, Column, ManyToOne, JoinColumn } from 'typeorm'; import { Entity, PrimaryColumn, Index, Column, ManyToOne, JoinColumn } from 'typeorm';
import { User } from './user'; import { User } from './user.js';
import { App } from './app'; import { App } from './app.js';
import { id } from '../id'; import { id } from '../id.js';
@Entity() @Entity()
export class AuthSession { export class AuthSession {

View File

@ -1,6 +1,6 @@
import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm'; import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm';
import { User } from './user'; import { User } from './user.js';
import { id } from '../id'; import { id } from '../id.js';
@Entity() @Entity()
@Index(['blockerId', 'blockeeId'], { unique: true }) @Index(['blockerId', 'blockeeId'], { unique: true })

View File

@ -1,7 +1,7 @@
import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm'; import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm';
import { User } from './user'; import { User } from './user.js';
import { id } from '../id'; import { id } from '../id.js';
import { Channel } from './channel'; import { Channel } from './channel.js';
@Entity() @Entity()
@Index(['followerId', 'followeeId'], { unique: true }) @Index(['followerId', 'followeeId'], { unique: true })

View File

@ -1,7 +1,7 @@
import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm'; import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm';
import { Note } from './note'; import { Note } from './note.js';
import { Channel } from './channel'; import { Channel } from './channel.js';
import { id } from '../id'; import { id } from '../id.js';
@Entity() @Entity()
@Index(['channelId', 'noteId'], { unique: true }) @Index(['channelId', 'noteId'], { unique: true })

View File

@ -1,7 +1,7 @@
import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm'; import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm';
import { User } from './user'; import { User } from './user.js';
import { id } from '../id'; import { id } from '../id.js';
import { DriveFile } from './drive-file'; import { DriveFile } from './drive-file.js';
@Entity() @Entity()
export class Channel { export class Channel {

View File

@ -1,7 +1,7 @@
import { Entity, Index, JoinColumn, Column, ManyToOne, PrimaryColumn } from 'typeorm'; import { Entity, Index, JoinColumn, Column, ManyToOne, PrimaryColumn } from 'typeorm';
import { Note } from './note'; import { Note } from './note.js';
import { Clip } from './clip'; import { Clip } from './clip.js';
import { id } from '../id'; import { id } from '../id.js';
@Entity() @Entity()
@Index(['noteId', 'clipId'], { unique: true }) @Index(['noteId', 'clipId'], { unique: true })

View File

@ -1,6 +1,6 @@
import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm'; import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm';
import { User } from './user'; import { User } from './user.js';
import { id } from '../id'; import { id } from '../id.js';
@Entity() @Entity()
export class Clip { export class Clip {

View File

@ -1,7 +1,7 @@
import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm'; import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm';
import { User } from './user'; import { User } from './user.js';
import { DriveFolder } from './drive-folder'; import { DriveFolder } from './drive-folder.js';
import { id } from '../id'; import { id } from '../id.js';
@Entity() @Entity()
@Index(['userId', 'folderId', 'id']) @Index(['userId', 'folderId', 'id'])

View File

@ -1,6 +1,6 @@
import { JoinColumn, ManyToOne, Entity, PrimaryColumn, Index, Column } from 'typeorm'; import { JoinColumn, ManyToOne, Entity, PrimaryColumn, Index, Column } from 'typeorm';
import { User } from './user'; import { User } from './user.js';
import { id } from '../id'; import { id } from '../id.js';
@Entity() @Entity()
export class DriveFolder { export class DriveFolder {

View File

@ -1,5 +1,5 @@
import { PrimaryColumn, Entity, Index, Column } from 'typeorm'; import { PrimaryColumn, Entity, Index, Column } from 'typeorm';
import { id } from '../id'; import { id } from '../id.js';
@Entity() @Entity()
@Index(['name', 'host'], { unique: true }) @Index(['name', 'host'], { unique: true })

View File

@ -1,6 +1,6 @@
import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm'; import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm';
import { User } from './user'; import { User } from './user.js';
import { id } from '../id'; import { id } from '../id.js';
@Entity() @Entity()
@Index(['followerId', 'followeeId'], { unique: true }) @Index(['followerId', 'followeeId'], { unique: true })

View File

@ -1,6 +1,6 @@
import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm'; import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm';
import { User } from './user'; import { User } from './user.js';
import { id } from '../id'; import { id } from '../id.js';
@Entity() @Entity()
@Index(['followerId', 'followeeId'], { unique: true }) @Index(['followerId', 'followeeId'], { unique: true })

View File

@ -1,7 +1,7 @@
import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm'; import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm';
import { User } from './user'; import { User } from './user.js';
import { id } from '../id'; import { id } from '../id.js';
import { GalleryPost } from './gallery-post'; import { GalleryPost } from './gallery-post.js';
@Entity() @Entity()
@Index(['userId', 'postId'], { unique: true }) @Index(['userId', 'postId'], { unique: true })

View File

@ -1,7 +1,7 @@
import { Entity, Index, JoinColumn, Column, PrimaryColumn, ManyToOne } from 'typeorm'; import { Entity, Index, JoinColumn, Column, PrimaryColumn, ManyToOne } from 'typeorm';
import { User } from './user'; import { User } from './user.js';
import { id } from '../id'; import { id } from '../id.js';
import { DriveFile } from './drive-file'; import { DriveFile } from './drive-file.js';
@Entity() @Entity()
export class GalleryPost { export class GalleryPost {

View File

@ -1,6 +1,6 @@
import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm'; import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm';
import { User } from '../../user'; import { User } from '../../user.js';
import { id } from '../../../id'; import { id } from '../../../id.js';
@Entity() @Entity()
export class ReversiGame { export class ReversiGame {

View File

@ -1,6 +1,6 @@
import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm'; import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm';
import { User } from '../../user'; import { User } from '../../user.js';
import { id } from '../../../id'; import { id } from '../../../id.js';
@Entity() @Entity()
export class ReversiMatching { export class ReversiMatching {

View File

@ -1,6 +1,6 @@
import { Entity, PrimaryColumn, Index, Column } from 'typeorm'; import { Entity, PrimaryColumn, Index, Column } from 'typeorm';
import { User } from './user'; import { User } from './user.js';
import { id } from '../id'; import { id } from '../id.js';
@Entity() @Entity()
export class Hashtag { export class Hashtag {

View File

@ -1,5 +1,5 @@
import { Entity, PrimaryColumn, Index, Column } from 'typeorm'; import { Entity, PrimaryColumn, Index, Column } from 'typeorm';
import { id } from '../id'; import { id } from '../id.js';
@Entity() @Entity()
export class Instance { export class Instance {

View File

@ -1,5 +1,5 @@
import { Entity, PrimaryColumn, Index, Column } from 'typeorm'; import { Entity, PrimaryColumn, Index, Column } from 'typeorm';
import { id } from '../id'; import { id } from '../id.js';
@Entity() @Entity()
export class Log { export class Log {

View File

@ -1,8 +1,8 @@
import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm'; import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm';
import { User } from './user'; import { User } from './user.js';
import { DriveFile } from './drive-file'; import { DriveFile } from './drive-file.js';
import { id } from '../id'; import { id } from '../id.js';
import { UserGroup } from './user-group'; import { UserGroup } from './user-group.js';
@Entity() @Entity()
export class MessagingMessage { export class MessagingMessage {

View File

@ -1,7 +1,7 @@
import { Entity, Column, PrimaryColumn, ManyToOne, JoinColumn } from 'typeorm'; import { Entity, Column, PrimaryColumn, ManyToOne, JoinColumn } from 'typeorm';
import { User } from './user'; import { User } from './user.js';
import { id } from '../id'; import { id } from '../id.js';
import { Clip } from './clip'; import { Clip } from './clip.js';
@Entity() @Entity()
export class Meta { export class Meta {

View File

@ -1,6 +1,6 @@
import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm'; import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm';
import { User } from './user'; import { User } from './user.js';
import { id } from '../id'; import { id } from '../id.js';
@Entity() @Entity()
export class ModerationLog { export class ModerationLog {

View File

@ -1,8 +1,8 @@
import { Entity, Index, JoinColumn, Column, ManyToOne, PrimaryColumn } from 'typeorm'; import { Entity, Index, JoinColumn, Column, ManyToOne, PrimaryColumn } from 'typeorm';
import { Note } from './note'; import { Note } from './note.js';
import { User } from './user'; import { User } from './user.js';
import { id } from '../id'; import { id } from '../id.js';
import { mutedNoteReasons } from '../../types'; import { mutedNoteReasons } from '../../types.js';
@Entity() @Entity()
@Index(['noteId', 'userId'], { unique: true }) @Index(['noteId', 'userId'], { unique: true })

View File

@ -1,6 +1,6 @@
import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm'; import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm';
import { User } from './user'; import { User } from './user.js';
import { id } from '../id'; import { id } from '../id.js';
@Entity() @Entity()
@Index(['muterId', 'muteeId'], { unique: true }) @Index(['muterId', 'muteeId'], { unique: true })

View File

@ -1,7 +1,7 @@
import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm'; import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm';
import { Note } from './note'; import { Note } from './note.js';
import { User } from './user'; import { User } from './user.js';
import { id } from '../id'; import { id } from '../id.js';
@Entity() @Entity()
@Index(['userId', 'noteId'], { unique: true }) @Index(['userId', 'noteId'], { unique: true })

View File

@ -1,7 +1,7 @@
import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm'; import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm';
import { User } from './user'; import { User } from './user.js';
import { Note } from './note'; import { Note } from './note.js';
import { id } from '../id'; import { id } from '../id.js';
@Entity() @Entity()
@Index(['userId', 'noteId'], { unique: true }) @Index(['userId', 'noteId'], { unique: true })

View File

@ -1,8 +1,8 @@
import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm'; import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm';
import { User } from './user'; import { User } from './user.js';
import { Note } from './note'; import { Note } from './note.js';
import { id } from '../id'; import { id } from '../id.js';
import { Channel } from './channel'; import { Channel } from './channel.js';
@Entity() @Entity()
@Index(['userId', 'noteId'], { unique: true }) @Index(['userId', 'noteId'], { unique: true })

View File

@ -1,7 +1,7 @@
import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm'; import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm';
import { User } from './user'; import { User } from './user.js';
import { Note } from './note'; import { Note } from './note.js';
import { id } from '../id'; import { id } from '../id.js';
@Entity() @Entity()
@Index(['userId', 'noteId'], { unique: true }) @Index(['userId', 'noteId'], { unique: true })

View File

@ -1,9 +1,9 @@
import { Entity, Index, JoinColumn, Column, PrimaryColumn, ManyToOne } from 'typeorm'; import { Entity, Index, JoinColumn, Column, PrimaryColumn, ManyToOne } from 'typeorm';
import { User } from './user'; import { User } from './user.js';
import { DriveFile } from './drive-file'; import { DriveFile } from './drive-file.js';
import { id } from '../id'; import { id } from '../id.js';
import { noteVisibilities } from '../../types'; import { noteVisibilities } from '../../types.js';
import { Channel } from './channel'; import { Channel } from './channel.js';
@Entity() @Entity()
@Index('IDX_NOTE_TAGS', { synchronize: false }) @Index('IDX_NOTE_TAGS', { synchronize: false })

View File

@ -1,11 +1,11 @@
import { Entity, Index, JoinColumn, ManyToOne, Column, PrimaryColumn } from 'typeorm'; import { Entity, Index, JoinColumn, ManyToOne, Column, PrimaryColumn } from 'typeorm';
import { User } from './user'; import { User } from './user.js';
import { id } from '../id'; import { id } from '../id.js';
import { Note } from './note'; import { Note } from './note.js';
import { FollowRequest } from './follow-request'; import { FollowRequest } from './follow-request.js';
import { UserGroupInvitation } from './user-group-invitation'; import { UserGroupInvitation } from './user-group-invitation.js';
import { AccessToken } from './access-token'; import { AccessToken } from './access-token.js';
import { notificationTypes } from '../../types'; import { notificationTypes } from '../../types.js';
@Entity() @Entity()
export class Notification { export class Notification {

View File

@ -1,7 +1,7 @@
import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm'; import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm';
import { User } from './user'; import { User } from './user.js';
import { id } from '../id'; import { id } from '../id.js';
import { Page } from './page'; import { Page } from './page.js';
@Entity() @Entity()
@Index(['userId', 'pageId'], { unique: true }) @Index(['userId', 'pageId'], { unique: true })

View File

@ -1,7 +1,7 @@
import { Entity, Index, JoinColumn, Column, PrimaryColumn, ManyToOne } from 'typeorm'; import { Entity, Index, JoinColumn, Column, PrimaryColumn, ManyToOne } from 'typeorm';
import { User } from './user'; import { User } from './user.js';
import { id } from '../id'; import { id } from '../id.js';
import { DriveFile } from './drive-file'; import { DriveFile } from './drive-file.js';
@Entity() @Entity()
@Index(['userId', 'name'], { unique: true }) @Index(['userId', 'name'], { unique: true })

View File

@ -1,6 +1,6 @@
import { PrimaryColumn, Entity, Index, Column, ManyToOne, JoinColumn } from 'typeorm'; import { PrimaryColumn, Entity, Index, Column, ManyToOne, JoinColumn } from 'typeorm';
import { id } from '../id'; import { id } from '../id.js';
import { User } from './user'; import { User } from './user.js';
@Entity() @Entity()
export class PasswordResetRequest { export class PasswordResetRequest {

View File

@ -1,7 +1,7 @@
import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm'; import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm';
import { User } from './user'; import { User } from './user.js';
import { Note } from './note'; import { Note } from './note.js';
import { id } from '../id'; import { id } from '../id.js';
@Entity() @Entity()
@Index(['userId', 'noteId', 'choice'], { unique: true }) @Index(['userId', 'noteId', 'choice'], { unique: true })

View File

@ -1,8 +1,8 @@
import { PrimaryColumn, Entity, Index, JoinColumn, Column, OneToOne } from 'typeorm'; import { PrimaryColumn, Entity, Index, JoinColumn, Column, OneToOne } from 'typeorm';
import { id } from '../id'; import { id } from '../id.js';
import { Note } from './note'; import { Note } from './note.js';
import { User } from './user'; import { User } from './user.js';
import { noteVisibilities } from '../../types'; import { noteVisibilities } from '../../types.js';
@Entity() @Entity()
export class Poll { export class Poll {

View File

@ -1,7 +1,7 @@
import { PrimaryColumn, Entity, Index, JoinColumn, Column, OneToOne } from 'typeorm'; import { PrimaryColumn, Entity, Index, JoinColumn, Column, OneToOne } from 'typeorm';
import { Note } from './note'; import { Note } from './note.js';
import { User } from './user'; import { User } from './user.js';
import { id } from '../id'; import { id } from '../id.js';
@Entity() @Entity()
export class PromoNote { export class PromoNote {

View File

@ -1,7 +1,7 @@
import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm'; import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm';
import { Note } from './note'; import { Note } from './note.js';
import { User } from './user'; import { User } from './user.js';
import { id } from '../id'; import { id } from '../id.js';
@Entity() @Entity()
@Index(['userId', 'noteId'], { unique: true }) @Index(['userId', 'noteId'], { unique: true })

View File

@ -1,5 +1,5 @@
import { PrimaryColumn, Entity, Index, Column } from 'typeorm'; import { PrimaryColumn, Entity, Index, Column } from 'typeorm';
import { id } from '../id'; import { id } from '../id.js';
@Entity() @Entity()
export class RegistrationTicket { export class RegistrationTicket {

View File

@ -1,6 +1,6 @@
import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm'; import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm';
import { User } from './user'; import { User } from './user.js';
import { id } from '../id'; import { id } from '../id.js';
// TODO: 同じdomain、同じscope、同じkeyのレコードは二つ以上存在しないように制約付けたい // TODO: 同じdomain、同じscope、同じkeyのレコードは二つ以上存在しないように制約付けたい
@Entity() @Entity()

View File

@ -1,5 +1,5 @@
import { PrimaryColumn, Entity, Index, Column } from 'typeorm'; import { PrimaryColumn, Entity, Index, Column } from 'typeorm';
import { id } from '../id'; import { id } from '../id.js';
@Entity() @Entity()
export class Relay { export class Relay {

View File

@ -1,6 +1,6 @@
import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm'; import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm';
import { User } from './user'; import { User } from './user.js';
import { id } from '../id'; import { id } from '../id.js';
@Entity() @Entity()
export class Signin { export class Signin {

View File

@ -1,6 +1,6 @@
import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm'; import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm';
import { User } from './user'; import { User } from './user.js';
import { id } from '../id'; import { id } from '../id.js';
@Entity() @Entity()
export class SwSubscription { export class SwSubscription {

View File

@ -1,7 +1,7 @@
import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm'; import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm';
import { User } from './user'; import { User } from './user.js';
import { UserGroup } from './user-group'; import { UserGroup } from './user-group.js';
import { id } from '../id'; import { id } from '../id.js';
@Entity() @Entity()
@Index(['userId', 'userGroupId'], { unique: true }) @Index(['userId', 'userGroupId'], { unique: true })

View File

@ -1,7 +1,7 @@
import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm'; import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm';
import { User } from './user'; import { User } from './user.js';
import { UserGroup } from './user-group'; import { UserGroup } from './user-group.js';
import { id } from '../id'; import { id } from '../id.js';
@Entity() @Entity()
@Index(['userId', 'userGroupId'], { unique: true }) @Index(['userId', 'userGroupId'], { unique: true })

View File

@ -1,6 +1,6 @@
import { Entity, Index, JoinColumn, Column, PrimaryColumn, ManyToOne } from 'typeorm'; import { Entity, Index, JoinColumn, Column, PrimaryColumn, ManyToOne } from 'typeorm';
import { User } from './user'; import { User } from './user.js';
import { id } from '../id'; import { id } from '../id.js';
@Entity() @Entity()
export class UserGroup { export class UserGroup {

View File

@ -1,6 +1,6 @@
import { PrimaryColumn, Entity, JoinColumn, Column, OneToOne } from 'typeorm'; import { PrimaryColumn, Entity, JoinColumn, Column, OneToOne } from 'typeorm';
import { User } from './user'; import { User } from './user.js';
import { id } from '../id'; import { id } from '../id.js';
@Entity() @Entity()
export class UserKeypair { export class UserKeypair {

View File

@ -1,7 +1,7 @@
import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm'; import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm';
import { User } from './user'; import { User } from './user.js';
import { UserList } from './user-list'; import { UserList } from './user-list.js';
import { id } from '../id'; import { id } from '../id.js';
@Entity() @Entity()
@Index(['userId', 'userListId'], { unique: true }) @Index(['userId', 'userListId'], { unique: true })

View File

@ -1,6 +1,6 @@
import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm'; import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm';
import { User } from './user'; import { User } from './user.js';
import { id } from '../id'; import { id } from '../id.js';
@Entity() @Entity()
export class UserList { export class UserList {

View File

@ -1,7 +1,7 @@
import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm'; import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm';
import { Note } from './note'; import { Note } from './note.js';
import { User } from './user'; import { User } from './user.js';
import { id } from '../id'; import { id } from '../id.js';
@Entity() @Entity()
@Index(['userId', 'noteId'], { unique: true }) @Index(['userId', 'noteId'], { unique: true })

View File

@ -1,8 +1,8 @@
import { Entity, Column, Index, OneToOne, JoinColumn, PrimaryColumn } from 'typeorm'; import { Entity, Column, Index, OneToOne, JoinColumn, PrimaryColumn } from 'typeorm';
import { id } from '../id'; import { id } from '../id.js';
import { User } from './user'; import { User } from './user.js';
import { Page } from './page'; import { Page } from './page.js';
import { notificationTypes } from '../../types'; import { notificationTypes } from '../../types.js';
// TODO: このテーブルで管理している情報すべてレジストリで管理するようにしても良いかも // TODO: このテーブルで管理している情報すべてレジストリで管理するようにしても良いかも
// ただ、「emailVerified が true なユーザーを find する」のようなクエリは書けなくなるからウーン // ただ、「emailVerified が true なユーザーを find する」のようなクエリは書けなくなるからウーン

View File

@ -1,6 +1,6 @@
import { PrimaryColumn, Entity, Index, JoinColumn, Column, OneToOne } from 'typeorm'; import { PrimaryColumn, Entity, Index, JoinColumn, Column, OneToOne } from 'typeorm';
import { User } from './user'; import { User } from './user.js';
import { id } from '../id'; import { id } from '../id.js';
@Entity() @Entity()
export class UserPublickey { export class UserPublickey {

Some files were not shown because too many files have changed in this diff Show More