Merge branch 'develop' into pr/9095

This commit is contained in:
syuilo 2022-09-22 07:56:15 +09:00
commit 7ce535907e
11 changed files with 561 additions and 459 deletions

15
packages/backend/.swcrc Normal file
View File

@ -0,0 +1,15 @@
{
"$schema": "https://json.schemastore.org/swcrc",
"jsc": {
"parser": {
"syntax": "typescript",
"dynamicImport": true,
"decorators": true
},
"transform": {
"legacyDecorator": true,
"decoratorMetadata": true
}
},
"minify": false
}

View File

@ -61,14 +61,6 @@ module.exports = {
// A set of global variables that need to be available in all test environments
globals: {
"ts-jest": {
"useESM": true,
tsconfig: "test/tsconfig.json",
isolatedModules: true,
diagnostics: {
exclude: ['**'],
},
}
},
// The maximum amount of workers used to run your tests. Can be specified as % or a number. E.g. maxWorkers: 10% will use 10% of your CPU amount + 1 as the maximum worker number. maxWorkers: 2 will use a maximum of 2 workers.
@ -105,7 +97,7 @@ module.exports = {
// notifyMode: "failure-change",
// A preset that is used as a base for Jest's configuration
preset: "ts-jest/presets/js-with-ts-esm",
//preset: "ts-jest/presets/js-with-ts-esm",
// Run tests from one or more projects
// projects: undefined,
@ -185,12 +177,7 @@ module.exports = {
// A map from regular expressions to paths to transformers
transform: {
"<regex_match_files>": [
"ts-jest",
{
"useESM": true
}
]
"^.+\\.(t|j)sx?$": ["@swc/jest"],
},
// An array of regexp pattern strings that are matched against all source file paths, matched files will skip transformation

View File

@ -7,6 +7,7 @@
"lint": "eslint --quiet \"src/**/*.ts\"",
"jest": "cross-env NODE_ENV=test node --experimental-vm-modules --experimental-import-meta-resolve node_modules/jest/bin/jest.js --forceExit --detectOpenHandles --runInBand",
"jest-and-coverage": "cross-env NODE_ENV=test node --experimental-vm-modules --experimental-import-meta-resolve node_modules/jest/bin/jest.js --coverage --forceExit --detectOpenHandles --runInBand",
"jest-clear": "cross-env NODE_ENV=test node --experimental-vm-modules --experimental-import-meta-resolve node_modules/jest/bin/jest.js --clearCache",
"test": "npm run jest",
"test-and-coverage": "npm run jest-and-coverage"
},
@ -129,6 +130,8 @@
},
"devDependencies": {
"@redocly/openapi-core": "1.0.0-beta.108",
"@swc/core": "1.3.2",
"@swc/jest": "0.2.22",
"@types/bcryptjs": "2.4.2",
"@types/bull": "3.15.9",
"@types/cbor": "6.0.0",
@ -178,8 +181,7 @@
"eslint": "8.23.1",
"eslint-plugin-import": "2.26.0",
"execa": "6.1.0",
"jest": "28.0.0",
"ts-jest": "28.0.8",
"jest": "29.0.3",
"typescript": "4.8.3"
}
}

View File

@ -17,27 +17,30 @@ const $config: Provider = {
const $db: Provider = {
provide: DI.db,
useFactory: async () => {
const db = createPostgreDataSource();
useFactory: async (config) => {
const db = createPostgreDataSource(config);
return await db.initialize();
},
inject: [DI.config],
};
const $redis: Provider = {
provide: DI.redis,
useFactory: () => {
const redisClient = createRedisConnection();
useFactory: (config) => {
const redisClient = createRedisConnection(config);
return redisClient;
},
inject: [DI.config],
};
const $redisSubscriber: Provider = {
provide: DI.redisSubscriber,
useFactory: () => {
const redisSubscriber = createRedisConnection();
useFactory: (config) => {
const redisSubscriber = createRedisConnection(config);
redisSubscriber.subscribe(config.host);
return redisSubscriber;
},
inject: [DI.config],
};
@Global()

View File

@ -70,7 +70,7 @@ import { UserSecurityKey } from '@/models/entities/UserSecurityKey.js';
import { Webhook } from '@/models/entities/Webhook.js';
import { Channel } from '@/models/entities/Channel.js';
import { loadConfig } from '@/config.js';
import { Config } from '@/config.js';
import Logger from '@/logger.js';
import { envOption } from './env.js';
@ -179,9 +179,7 @@ export const entities = [
const log = process.env.NODE_ENV !== 'production';
const config = loadConfig();
export function createPostgreDataSource() {
export function createPostgreDataSource(config: Config) {
return new DataSource({
type: 'postgres',
host: config.db.host,

View File

@ -1,9 +1,7 @@
import Redis from 'ioredis';
import { loadConfig } from '@/config.js';
export function createRedisConnection(): Redis.Redis {
const config = loadConfig();
import { Config } from '@/config.js';
export function createRedisConnection(config: Config): Redis.Redis {
return new Redis({
port: config.redis.port,
host: config.redis.host,

View File

@ -1,5 +1,5 @@
import { Inject, Injectable } from '@nestjs/common';
import { Redis } from 'ioredis';
import Redis from 'ioredis';
import Router from '@koa/router';
import { OAuth2 } from 'oauth';
import { v4 as uuid } from 'uuid';
@ -22,7 +22,7 @@ export class DiscordServerService {
private config: Config,
@Inject(DI.redis)
private redisClient: Redis,
private redisClient: Redis.Redis,
@Inject(DI.usersRepository)
private usersRepository: UsersRepository,

View File

@ -1,5 +1,5 @@
import { Inject, Injectable } from '@nestjs/common';
import { Redis } from 'ioredis';
import Redis from 'ioredis';
import Router from '@koa/router';
import { OAuth2 } from 'oauth';
import { v4 as uuid } from 'uuid';
@ -22,7 +22,7 @@ export class GithubServerService {
private config: Config,
@Inject(DI.redis)
private redisClient: Redis,
private redisClient: Redis.Redis,
@Inject(DI.usersRepository)
private usersRepository: UsersRepository,

View File

@ -1,5 +1,5 @@
import { Inject, Injectable } from '@nestjs/common';
import { Redis } from 'ioredis';
import Redis from 'ioredis';
import Router from '@koa/router';
import { v4 as uuid } from 'uuid';
import { IsNull } from 'typeorm';
@ -22,7 +22,7 @@ export class TwitterServerService {
private config: Config,
@Inject(DI.redis)
private redisClient: Redis,
private redisClient: Redis.Redis,
@Inject(DI.usersRepository)
private usersRepository: UsersRepository,

View File

@ -37,6 +37,7 @@ describe('MetaService', () => {
await app.close();
});
/*
it('fetch (cache)', async () => {
const db = app.get<DataSource>(DI.db);
const originalFunction = db.transaction;
@ -50,7 +51,7 @@ describe('MetaService', () => {
spy.mockRestore();
});
/*
it('fetch (force)', async () => {
const db = app.get<DataSource>(DI.db);
const originalFunction = db.transaction;

File diff suppressed because it is too large Load Diff