Introduce config module
This commit is contained in:
parent
5b9f3701f5
commit
3fb6834f7d
50 changed files with 213 additions and 208 deletions
|
@ -24,7 +24,7 @@ const uglifyes = require('uglify-es');
|
||||||
|
|
||||||
import { fa } from './src/build/fa';
|
import { fa } from './src/build/fa';
|
||||||
import version from './src/version';
|
import version from './src/version';
|
||||||
import config from './src/conf';
|
import config from './src/config';
|
||||||
|
|
||||||
const uglify = uglifyComposer(uglifyes, console);
|
const uglify = uglifyComposer(uglifyes, console);
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,7 @@ import * as mkdirp from 'mkdirp';
|
||||||
import locales from '../../../../locales';
|
import locales from '../../../../locales';
|
||||||
import I18nReplacer from '../../../build/i18n';
|
import I18nReplacer from '../../../build/i18n';
|
||||||
import fa from '../../../build/fa';
|
import fa from '../../../build/fa';
|
||||||
import config from './../../../conf';
|
import config from './../../../config';
|
||||||
|
|
||||||
import generateVars from '../vars';
|
import generateVars from '../vars';
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@ import * as licenseChecker from 'license-checker';
|
||||||
import * as tmp from 'tmp';
|
import * as tmp from 'tmp';
|
||||||
|
|
||||||
import { fa } from '../../build/fa';
|
import { fa } from '../../build/fa';
|
||||||
import config from '../../conf';
|
import config from '../../config';
|
||||||
import { licenseHtml } from '../../build/license';
|
import { licenseHtml } from '../../build/license';
|
||||||
const constants = require('../../const.json');
|
const constants = require('../../const.json');
|
||||||
|
|
||||||
|
|
|
@ -1,3 +0,0 @@
|
||||||
import load from './config';
|
|
||||||
|
|
||||||
export default load();
|
|
154
src/config.ts
154
src/config.ts
|
@ -1,154 +0,0 @@
|
||||||
/**
|
|
||||||
* Config loader
|
|
||||||
*/
|
|
||||||
|
|
||||||
import * as fs from 'fs';
|
|
||||||
import { URL } from 'url';
|
|
||||||
import * as yaml from 'js-yaml';
|
|
||||||
import isUrl = require('is-url');
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Path of configuration directory
|
|
||||||
*/
|
|
||||||
const dir = `${__dirname}/../.config`;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Path of configuration file
|
|
||||||
*/
|
|
||||||
export const path = process.env.NODE_ENV == 'test'
|
|
||||||
? `${dir}/test.yml`
|
|
||||||
: `${dir}/default.yml`;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* ユーザーが設定する必要のある情報
|
|
||||||
*/
|
|
||||||
type Source = {
|
|
||||||
/**
|
|
||||||
* メンテナ情報
|
|
||||||
*/
|
|
||||||
maintainer: {
|
|
||||||
/**
|
|
||||||
* メンテナの名前
|
|
||||||
*/
|
|
||||||
name: string;
|
|
||||||
/**
|
|
||||||
* メンテナの連絡先(URLかmailto形式のURL)
|
|
||||||
*/
|
|
||||||
url: string;
|
|
||||||
};
|
|
||||||
url: string;
|
|
||||||
port: number;
|
|
||||||
https?: { [x: string]: string };
|
|
||||||
mongodb: {
|
|
||||||
host: string;
|
|
||||||
port: number;
|
|
||||||
db: string;
|
|
||||||
user: string;
|
|
||||||
pass: string;
|
|
||||||
};
|
|
||||||
redis: {
|
|
||||||
host: string;
|
|
||||||
port: number;
|
|
||||||
pass: string;
|
|
||||||
};
|
|
||||||
elasticsearch: {
|
|
||||||
enable: boolean;
|
|
||||||
host: string;
|
|
||||||
port: number;
|
|
||||||
pass: string;
|
|
||||||
};
|
|
||||||
recaptcha: {
|
|
||||||
site_key: string;
|
|
||||||
secret_key: string;
|
|
||||||
};
|
|
||||||
accesslog?: string;
|
|
||||||
accesses?: {
|
|
||||||
enable: boolean;
|
|
||||||
port: number;
|
|
||||||
};
|
|
||||||
twitter?: {
|
|
||||||
consumer_key: string;
|
|
||||||
consumer_secret: string;
|
|
||||||
};
|
|
||||||
github_bot?: {
|
|
||||||
hook_secret: string;
|
|
||||||
username: string;
|
|
||||||
};
|
|
||||||
othello_ai?: {
|
|
||||||
id: string;
|
|
||||||
i: string;
|
|
||||||
};
|
|
||||||
line_bot?: {
|
|
||||||
channel_secret: string;
|
|
||||||
channel_access_token: string;
|
|
||||||
};
|
|
||||||
analysis?: {
|
|
||||||
mecab_command?: string;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Service Worker
|
|
||||||
*/
|
|
||||||
sw?: {
|
|
||||||
public_key: string;
|
|
||||||
private_key: string;
|
|
||||||
};
|
|
||||||
|
|
||||||
google_maps_api_key: string;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Misskeyが自動的に(ユーザーが設定した情報から推論して)設定する情報
|
|
||||||
*/
|
|
||||||
type Mixin = {
|
|
||||||
host: string;
|
|
||||||
hostname: string;
|
|
||||||
scheme: string;
|
|
||||||
ws_scheme: string;
|
|
||||||
api_url: string;
|
|
||||||
ws_url: string;
|
|
||||||
auth_url: string;
|
|
||||||
docs_url: string;
|
|
||||||
stats_url: string;
|
|
||||||
status_url: string;
|
|
||||||
dev_url: string;
|
|
||||||
drive_url: string;
|
|
||||||
};
|
|
||||||
|
|
||||||
export type Config = Source & Mixin;
|
|
||||||
|
|
||||||
export default function load() {
|
|
||||||
const config = yaml.safeLoad(fs.readFileSync(path, 'utf-8')) as Source;
|
|
||||||
|
|
||||||
const mixin = {} as Mixin;
|
|
||||||
|
|
||||||
// Validate URLs
|
|
||||||
if (!isUrl(config.url)) urlError(config.url);
|
|
||||||
|
|
||||||
const url = new URL(config.url);
|
|
||||||
config.url = normalizeUrl(config.url);
|
|
||||||
|
|
||||||
mixin.host = url.host;
|
|
||||||
mixin.hostname = url.hostname;
|
|
||||||
mixin.scheme = url.protocol.replace(/:$/, '');
|
|
||||||
mixin.ws_scheme = mixin.scheme.replace('http', 'ws');
|
|
||||||
mixin.ws_url = `${mixin.ws_scheme}://${mixin.host}`;
|
|
||||||
mixin.api_url = `${mixin.scheme}://${mixin.host}/api`;
|
|
||||||
mixin.auth_url = `${mixin.scheme}://${mixin.host}/auth`;
|
|
||||||
mixin.dev_url = `${mixin.scheme}://${mixin.host}/dev`;
|
|
||||||
mixin.docs_url = `${mixin.scheme}://${mixin.host}/docs`;
|
|
||||||
mixin.stats_url = `${mixin.scheme}://${mixin.host}/stats`;
|
|
||||||
mixin.status_url = `${mixin.scheme}://${mixin.host}/status`;
|
|
||||||
mixin.drive_url = `${mixin.scheme}://${mixin.host}/files`;
|
|
||||||
|
|
||||||
return Object.assign(config, mixin);
|
|
||||||
}
|
|
||||||
|
|
||||||
function normalizeUrl(url: string) {
|
|
||||||
return url[url.length - 1] === '/' ? url.substr(0, url.length - 1) : url;
|
|
||||||
}
|
|
||||||
|
|
||||||
function urlError(url: string) {
|
|
||||||
console.error(`「${url}」は、正しいURLではありません。先頭に http:// または https:// をつけ忘れてないかなど確認してください。`);
|
|
||||||
process.exit();
|
|
||||||
}
|
|
3
src/config/index.ts
Normal file
3
src/config/index.ts
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
import load from './load';
|
||||||
|
|
||||||
|
export default load();
|
57
src/config/load.ts
Normal file
57
src/config/load.ts
Normal file
|
@ -0,0 +1,57 @@
|
||||||
|
/**
|
||||||
|
* Config loader
|
||||||
|
*/
|
||||||
|
|
||||||
|
import * as fs from 'fs';
|
||||||
|
import { URL } from 'url';
|
||||||
|
import * as yaml from 'js-yaml';
|
||||||
|
import { Source, Mixin } from './types';
|
||||||
|
import isUrl = require('is-url');
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Path of configuration directory
|
||||||
|
*/
|
||||||
|
const dir = `${__dirname}/../../.config`;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Path of configuration file
|
||||||
|
*/
|
||||||
|
const path = process.env.NODE_ENV == 'test'
|
||||||
|
? `${dir}/test.yml`
|
||||||
|
: `${dir}/default.yml`;
|
||||||
|
|
||||||
|
export default function load() {
|
||||||
|
const config = yaml.safeLoad(fs.readFileSync(path, 'utf-8')) as Source;
|
||||||
|
|
||||||
|
const mixin = {} as Mixin;
|
||||||
|
|
||||||
|
// Validate URLs
|
||||||
|
if (!isUrl(config.url)) urlError(config.url);
|
||||||
|
|
||||||
|
const url = new URL(config.url);
|
||||||
|
config.url = normalizeUrl(config.url);
|
||||||
|
|
||||||
|
mixin.host = url.host;
|
||||||
|
mixin.hostname = url.hostname;
|
||||||
|
mixin.scheme = url.protocol.replace(/:$/, '');
|
||||||
|
mixin.ws_scheme = mixin.scheme.replace('http', 'ws');
|
||||||
|
mixin.ws_url = `${mixin.ws_scheme}://${mixin.host}`;
|
||||||
|
mixin.api_url = `${mixin.scheme}://${mixin.host}/api`;
|
||||||
|
mixin.auth_url = `${mixin.scheme}://${mixin.host}/auth`;
|
||||||
|
mixin.dev_url = `${mixin.scheme}://${mixin.host}/dev`;
|
||||||
|
mixin.docs_url = `${mixin.scheme}://${mixin.host}/docs`;
|
||||||
|
mixin.stats_url = `${mixin.scheme}://${mixin.host}/stats`;
|
||||||
|
mixin.status_url = `${mixin.scheme}://${mixin.host}/status`;
|
||||||
|
mixin.drive_url = `${mixin.scheme}://${mixin.host}/files`;
|
||||||
|
|
||||||
|
return Object.assign(config, mixin);
|
||||||
|
}
|
||||||
|
|
||||||
|
function normalizeUrl(url: string) {
|
||||||
|
return url[url.length - 1] === '/' ? url.substr(0, url.length - 1) : url;
|
||||||
|
}
|
||||||
|
|
||||||
|
function urlError(url: string) {
|
||||||
|
console.error(`「${url}」は、正しいURLではありません。先頭に http:// または https:// をつけ忘れてないかなど確認してください。`);
|
||||||
|
process.exit();
|
||||||
|
}
|
97
src/config/types.ts
Normal file
97
src/config/types.ts
Normal file
|
@ -0,0 +1,97 @@
|
||||||
|
/**
|
||||||
|
* ユーザーが設定する必要のある情報
|
||||||
|
*/
|
||||||
|
export type Source = {
|
||||||
|
/**
|
||||||
|
* メンテナ情報
|
||||||
|
*/
|
||||||
|
maintainer: {
|
||||||
|
/**
|
||||||
|
* メンテナの名前
|
||||||
|
*/
|
||||||
|
name: string;
|
||||||
|
/**
|
||||||
|
* メンテナの連絡先(URLかmailto形式のURL)
|
||||||
|
*/
|
||||||
|
url: string;
|
||||||
|
};
|
||||||
|
url: string;
|
||||||
|
port: number;
|
||||||
|
https?: { [x: string]: string };
|
||||||
|
mongodb: {
|
||||||
|
host: string;
|
||||||
|
port: number;
|
||||||
|
db: string;
|
||||||
|
user: string;
|
||||||
|
pass: string;
|
||||||
|
};
|
||||||
|
redis: {
|
||||||
|
host: string;
|
||||||
|
port: number;
|
||||||
|
pass: string;
|
||||||
|
};
|
||||||
|
elasticsearch: {
|
||||||
|
enable: boolean;
|
||||||
|
host: string;
|
||||||
|
port: number;
|
||||||
|
pass: string;
|
||||||
|
};
|
||||||
|
recaptcha: {
|
||||||
|
site_key: string;
|
||||||
|
secret_key: string;
|
||||||
|
};
|
||||||
|
accesslog?: string;
|
||||||
|
accesses?: {
|
||||||
|
enable: boolean;
|
||||||
|
port: number;
|
||||||
|
};
|
||||||
|
twitter?: {
|
||||||
|
consumer_key: string;
|
||||||
|
consumer_secret: string;
|
||||||
|
};
|
||||||
|
github_bot?: {
|
||||||
|
hook_secret: string;
|
||||||
|
username: string;
|
||||||
|
};
|
||||||
|
othello_ai?: {
|
||||||
|
id: string;
|
||||||
|
i: string;
|
||||||
|
};
|
||||||
|
line_bot?: {
|
||||||
|
channel_secret: string;
|
||||||
|
channel_access_token: string;
|
||||||
|
};
|
||||||
|
analysis?: {
|
||||||
|
mecab_command?: string;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Service Worker
|
||||||
|
*/
|
||||||
|
sw?: {
|
||||||
|
public_key: string;
|
||||||
|
private_key: string;
|
||||||
|
};
|
||||||
|
|
||||||
|
google_maps_api_key: string;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Misskeyが自動的に(ユーザーが設定した情報から推論して)設定する情報
|
||||||
|
*/
|
||||||
|
export type Mixin = {
|
||||||
|
host: string;
|
||||||
|
hostname: string;
|
||||||
|
scheme: string;
|
||||||
|
ws_scheme: string;
|
||||||
|
api_url: string;
|
||||||
|
ws_url: string;
|
||||||
|
auth_url: string;
|
||||||
|
docs_url: string;
|
||||||
|
stats_url: string;
|
||||||
|
status_url: string;
|
||||||
|
dev_url: string;
|
||||||
|
drive_url: string;
|
||||||
|
};
|
||||||
|
|
||||||
|
export type Config = Source & Mixin;
|
|
@ -1,5 +1,5 @@
|
||||||
import * as elasticsearch from 'elasticsearch';
|
import * as elasticsearch from 'elasticsearch';
|
||||||
import config from '../conf';
|
import config from '../config';
|
||||||
|
|
||||||
// Init ElasticSearch connection
|
// Init ElasticSearch connection
|
||||||
const client = new elasticsearch.Client({
|
const client = new elasticsearch.Client({
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import config from '../conf';
|
import config from '../config';
|
||||||
|
|
||||||
const u = config.mongodb.user ? encodeURIComponent(config.mongodb.user) : null;
|
const u = config.mongodb.user ? encodeURIComponent(config.mongodb.user) : null;
|
||||||
const p = config.mongodb.pass ? encodeURIComponent(config.mongodb.pass) : null;
|
const p = config.mongodb.pass ? encodeURIComponent(config.mongodb.pass) : null;
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import * as redis from 'redis';
|
import * as redis from 'redis';
|
||||||
import config from '../conf';
|
import config from '../config';
|
||||||
|
|
||||||
export default redis.createClient(
|
export default redis.createClient(
|
||||||
config.redis.port,
|
config.redis.port,
|
||||||
|
|
|
@ -15,7 +15,7 @@ import DriveFolder from '../models/drive-folder';
|
||||||
import { pack } from '../models/drive-file';
|
import { pack } from '../models/drive-file';
|
||||||
import event, { publishDriveStream } from '../event';
|
import event, { publishDriveStream } from '../event';
|
||||||
import getAcct from '../user/get-acct';
|
import getAcct from '../user/get-acct';
|
||||||
import config from '../conf';
|
import config from '../config';
|
||||||
|
|
||||||
const gm = _gm.subClass({
|
const gm = _gm.subClass({
|
||||||
imageMagick: true
|
imageMagick: true
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import * as mongo from 'mongodb';
|
import * as mongo from 'mongodb';
|
||||||
import * as redis from 'redis';
|
import * as redis from 'redis';
|
||||||
import swPush from './push-sw';
|
import swPush from './push-sw';
|
||||||
import config from './conf';
|
import config from './config';
|
||||||
|
|
||||||
type ID = string | mongo.ObjectID;
|
type ID = string | mongo.ObjectID;
|
||||||
|
|
||||||
|
|
19
src/index.ts
19
src/index.ts
|
@ -4,7 +4,6 @@
|
||||||
|
|
||||||
Error.stackTraceLimit = Infinity;
|
Error.stackTraceLimit = Infinity;
|
||||||
|
|
||||||
import * as fs from 'fs';
|
|
||||||
import * as os from 'os';
|
import * as os from 'os';
|
||||||
import * as cluster from 'cluster';
|
import * as cluster from 'cluster';
|
||||||
import * as debug from 'debug';
|
import * as debug from 'debug';
|
||||||
|
@ -21,8 +20,8 @@ import MachineInfo from './utils/machineInfo';
|
||||||
import DependencyInfo from './utils/dependencyInfo';
|
import DependencyInfo from './utils/dependencyInfo';
|
||||||
import stats from './utils/stats';
|
import stats from './utils/stats';
|
||||||
|
|
||||||
import { Config, path as configPath } from './config';
|
import loadConfig from './config/load';
|
||||||
import loadConfig from './config';
|
import { Config } from './config/types';
|
||||||
|
|
||||||
import parseOpt from './parse-opt';
|
import parseOpt from './parse-opt';
|
||||||
|
|
||||||
|
@ -116,11 +115,17 @@ async function init(): Promise<Config> {
|
||||||
new DependencyInfo().showAll();
|
new DependencyInfo().showAll();
|
||||||
|
|
||||||
const configLogger = new Logger('Config');
|
const configLogger = new Logger('Config');
|
||||||
if (!fs.existsSync(configPath)) {
|
let config;
|
||||||
throw 'Configuration not found - Please run "npm run config" command.';
|
|
||||||
}
|
|
||||||
|
|
||||||
const config = loadConfig();
|
try {
|
||||||
|
config = loadConfig();
|
||||||
|
} catch (exception) {
|
||||||
|
if (exception.code === 'ENOENT') {
|
||||||
|
throw 'Configuration not found - Please run "npm run config" command.';
|
||||||
|
}
|
||||||
|
|
||||||
|
throw exception;
|
||||||
|
}
|
||||||
|
|
||||||
configLogger.info('Successfully loaded');
|
configLogger.info('Successfully loaded');
|
||||||
configLogger.info(`maintainer: ${config.maintainer}`);
|
configLogger.info(`maintainer: ${config.maintainer}`);
|
||||||
|
|
|
@ -2,7 +2,7 @@ import * as mongo from 'mongodb';
|
||||||
import deepcopy = require('deepcopy');
|
import deepcopy = require('deepcopy');
|
||||||
import AccessToken from './access-token';
|
import AccessToken from './access-token';
|
||||||
import db from '../db/mongodb';
|
import db from '../db/mongodb';
|
||||||
import config from '../conf';
|
import config from '../config';
|
||||||
|
|
||||||
const App = db.get<IApp>('apps');
|
const App = db.get<IApp>('apps');
|
||||||
App.createIndex('nameId');
|
App.createIndex('nameId');
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import * as mongodb from 'mongodb';
|
import * as mongodb from 'mongodb';
|
||||||
import deepcopy = require('deepcopy');
|
import deepcopy = require('deepcopy');
|
||||||
import { pack as packFolder } from './drive-folder';
|
import { pack as packFolder } from './drive-folder';
|
||||||
import config from '../conf';
|
import config from '../config';
|
||||||
import monkDb, { nativeDbConn } from '../db/mongodb';
|
import monkDb, { nativeDbConn } from '../db/mongodb';
|
||||||
|
|
||||||
const DriveFile = monkDb.get<IDriveFile>('driveFiles.files');
|
const DriveFile = monkDb.get<IDriveFile>('driveFiles.files');
|
||||||
|
|
|
@ -6,7 +6,7 @@ import { IPost, pack as packPost } from './post';
|
||||||
import Following from './following';
|
import Following from './following';
|
||||||
import Mute from './mute';
|
import Mute from './mute';
|
||||||
import getFriends from '../server/api/common/get-friends';
|
import getFriends from '../server/api/common/get-friends';
|
||||||
import config from '../conf';
|
import config from '../config';
|
||||||
|
|
||||||
const User = db.get<IUser>('users');
|
const User = db.get<IUser>('users');
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
|
|
||||||
import * as request from 'request-promise-native';
|
import * as request from 'request-promise-native';
|
||||||
import Othello, { Color } from '../core';
|
import Othello, { Color } from '../core';
|
||||||
import conf from '../../conf';
|
import conf from '../../config';
|
||||||
|
|
||||||
let game;
|
let game;
|
||||||
let form;
|
let form;
|
||||||
|
|
|
@ -10,7 +10,7 @@ import * as childProcess from 'child_process';
|
||||||
const WebSocket = require('ws');
|
const WebSocket = require('ws');
|
||||||
import * as ReconnectingWebSocket from 'reconnecting-websocket';
|
import * as ReconnectingWebSocket from 'reconnecting-websocket';
|
||||||
import * as request from 'request-promise-native';
|
import * as request from 'request-promise-native';
|
||||||
import conf from '../../conf';
|
import conf from '../../config';
|
||||||
|
|
||||||
// 設定 ////////////////////////////////////////////////////////
|
// 設定 ////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,7 @@ import event from '../../event';
|
||||||
import notify from '../../notify';
|
import notify from '../../notify';
|
||||||
import context from '../../remote/activitypub/renderer/context';
|
import context from '../../remote/activitypub/renderer/context';
|
||||||
import render from '../../remote/activitypub/renderer/follow';
|
import render from '../../remote/activitypub/renderer/follow';
|
||||||
import config from '../../conf';
|
import config from '../../config';
|
||||||
|
|
||||||
export default ({ data }, done) => Following.findOne({ _id: data.following }).then(({ followerId, followeeId }) => {
|
export default ({ data }, done) => Following.findOne({ _id: data.following }).then(({ followerId, followeeId }) => {
|
||||||
const promisedFollower: Promise<ILocalUser> = User.findOne({ _id: followerId });
|
const promisedFollower: Promise<ILocalUser> = User.findOne({ _id: followerId });
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
const push = require('web-push');
|
const push = require('web-push');
|
||||||
import * as mongo from 'mongodb';
|
import * as mongo from 'mongodb';
|
||||||
import Subscription from './models/sw-subscription';
|
import Subscription from './models/sw-subscription';
|
||||||
import config from './conf';
|
import config from './config';
|
||||||
|
|
||||||
if (config.sw) {
|
if (config.sw) {
|
||||||
// アプリケーションの連絡先と、サーバーサイドの鍵ペアの情報を登録
|
// アプリケーションの連絡先と、サーバーサイドの鍵ペアの情報を登録
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import { createQueue } from 'kue';
|
import { createQueue } from 'kue';
|
||||||
import config from './conf';
|
import config from './config';
|
||||||
|
|
||||||
export default createQueue({
|
export default createQueue({
|
||||||
redis: {
|
redis: {
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import { JSDOM } from 'jsdom';
|
import { JSDOM } from 'jsdom';
|
||||||
import config from '../../conf';
|
import config from '../../config';
|
||||||
import Post from '../../models/post';
|
import Post from '../../models/post';
|
||||||
import RemoteUserObject, { IRemoteUserObject } from '../../models/remote-user-object';
|
import RemoteUserObject, { IRemoteUserObject } from '../../models/remote-user-object';
|
||||||
import uploadFromUrl from '../../drive/upload-from-url';
|
import uploadFromUrl from '../../drive/upload-from-url';
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import config from '../../../conf';
|
import config from '../../../config';
|
||||||
|
|
||||||
export default ({ _id, contentType }) => ({
|
export default ({ _id, contentType }) => ({
|
||||||
type: 'Document',
|
type: 'Document',
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import config from '../../../conf';
|
import config from '../../../config';
|
||||||
import { IRemoteUser } from '../../../models/user';
|
import { IRemoteUser } from '../../../models/user';
|
||||||
|
|
||||||
export default ({ username }, followee: IRemoteUser) => ({
|
export default ({ username }, followee: IRemoteUser) => ({
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import config from '../../../conf';
|
import config from '../../../config';
|
||||||
|
|
||||||
export default tag => ({
|
export default tag => ({
|
||||||
type: 'Hashtag',
|
type: 'Hashtag',
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import config from '../../../conf';
|
import config from '../../../config';
|
||||||
|
|
||||||
export default ({ _id }) => ({
|
export default ({ _id }) => ({
|
||||||
type: 'Image',
|
type: 'Image',
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import config from '../../../conf';
|
import config from '../../../config';
|
||||||
import { extractPublic } from '../../../crypto_key';
|
import { extractPublic } from '../../../crypto_key';
|
||||||
import { ILocalUser } from '../../../models/user';
|
import { ILocalUser } from '../../../models/user';
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import renderDocument from './document';
|
import renderDocument from './document';
|
||||||
import renderHashtag from './hashtag';
|
import renderHashtag from './hashtag';
|
||||||
import config from '../../../conf';
|
import config from '../../../config';
|
||||||
import DriveFile from '../../../models/drive-file';
|
import DriveFile from '../../../models/drive-file';
|
||||||
import Post from '../../../models/post';
|
import Post from '../../../models/post';
|
||||||
import User from '../../../models/user';
|
import User from '../../../models/user';
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import renderImage from './image';
|
import renderImage from './image';
|
||||||
import renderKey from './key';
|
import renderKey from './key';
|
||||||
import config from '../../../conf';
|
import config from '../../../config';
|
||||||
|
|
||||||
export default user => {
|
export default user => {
|
||||||
const id = `${config.url}/@${user.username}`;
|
const id = `${config.url}/@${user.username}`;
|
||||||
|
|
|
@ -2,7 +2,7 @@ import * as express from 'express';
|
||||||
import context from '../../remote/activitypub/renderer/context';
|
import context from '../../remote/activitypub/renderer/context';
|
||||||
import renderNote from '../../remote/activitypub/renderer/note';
|
import renderNote from '../../remote/activitypub/renderer/note';
|
||||||
import renderOrderedCollection from '../../remote/activitypub/renderer/ordered-collection';
|
import renderOrderedCollection from '../../remote/activitypub/renderer/ordered-collection';
|
||||||
import config from '../../conf';
|
import config from '../../config';
|
||||||
import Post from '../../models/post';
|
import Post from '../../models/post';
|
||||||
import withUser from './with-user';
|
import withUser from './with-user';
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import * as express from 'express';
|
import * as express from 'express';
|
||||||
import context from '../../remote/activitypub/renderer/context';
|
import context from '../../remote/activitypub/renderer/context';
|
||||||
import render from '../../remote/activitypub/renderer/key';
|
import render from '../../remote/activitypub/renderer/key';
|
||||||
import config from '../../conf';
|
import config from '../../config';
|
||||||
import withUser from './with-user';
|
import withUser from './with-user';
|
||||||
|
|
||||||
const app = express();
|
const app = express();
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import * as express from 'express';
|
import * as express from 'express';
|
||||||
import config from '../../conf';
|
import config from '../../config';
|
||||||
import context from '../../remote/activitypub/renderer/context';
|
import context from '../../remote/activitypub/renderer/context';
|
||||||
import render from '../../remote/activitypub/renderer/person';
|
import render from '../../remote/activitypub/renderer/person';
|
||||||
import withUser from './with-user';
|
import withUser from './with-user';
|
||||||
|
|
|
@ -3,7 +3,7 @@ import * as express from 'express';
|
||||||
import * as request from 'request';
|
import * as request from 'request';
|
||||||
import * as crypto from 'crypto';
|
import * as crypto from 'crypto';
|
||||||
import User from '../../../../models/user';
|
import User from '../../../../models/user';
|
||||||
import config from '../../../../conf';
|
import config from '../../../../config';
|
||||||
import BotCore from '../core';
|
import BotCore from '../core';
|
||||||
import _redis from '../../../../db/redis';
|
import _redis from '../../../../db/redis';
|
||||||
import prominence = require('prominence');
|
import prominence = require('prominence');
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import config from '../../../conf';
|
import config from '../../../config';
|
||||||
|
|
||||||
export default function(res, user, redirect: boolean) {
|
export default function(res, user, redirect: boolean) {
|
||||||
const expires = 1000 * 60 * 60 * 24 * 365; // One Year
|
const expires = 1000 * 60 * 60 * 24 * 365; // One Year
|
||||||
|
|
|
@ -5,7 +5,7 @@ import * as uuid from 'uuid';
|
||||||
import $ from 'cafy';
|
import $ from 'cafy';
|
||||||
import App from '../../../../../models/app';
|
import App from '../../../../../models/app';
|
||||||
import AuthSess from '../../../../../models/auth-session';
|
import AuthSess from '../../../../../models/auth-session';
|
||||||
import config from '../../../../../conf';
|
import config from '../../../../../config';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @swagger
|
* @swagger
|
||||||
|
|
|
@ -6,7 +6,7 @@ import * as bcrypt from 'bcryptjs';
|
||||||
import * as speakeasy from 'speakeasy';
|
import * as speakeasy from 'speakeasy';
|
||||||
import * as QRCode from 'qrcode';
|
import * as QRCode from 'qrcode';
|
||||||
import User from '../../../../../models/user';
|
import User from '../../../../../models/user';
|
||||||
import config from '../../../../../conf';
|
import config from '../../../../../config';
|
||||||
|
|
||||||
module.exports = async (params, user) => new Promise(async (res, rej) => {
|
module.exports = async (params, user) => new Promise(async (res, rej) => {
|
||||||
// Get 'password' parameter
|
// Get 'password' parameter
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
import $ from 'cafy';
|
import $ from 'cafy';
|
||||||
import User, { isValidName, isValidDescription, isValidLocation, isValidBirthday, pack } from '../../../../models/user';
|
import User, { isValidName, isValidDescription, isValidLocation, isValidBirthday, pack } from '../../../../models/user';
|
||||||
import event from '../../../../event';
|
import event from '../../../../event';
|
||||||
import config from '../../../../conf';
|
import config from '../../../../config';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Update myself
|
* Update myself
|
||||||
|
|
|
@ -13,7 +13,7 @@ import publishUserStream from '../../../../../event';
|
||||||
import { publishMessagingStream, publishMessagingIndexStream, pushSw } from '../../../../../event';
|
import { publishMessagingStream, publishMessagingIndexStream, pushSw } from '../../../../../event';
|
||||||
import html from '../../../../../text/html';
|
import html from '../../../../../text/html';
|
||||||
import parse from '../../../../../text/parse';
|
import parse from '../../../../../text/parse';
|
||||||
import config from '../../../../../conf';
|
import config from '../../../../../config';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a message
|
* Create a message
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
*/
|
*/
|
||||||
import * as os from 'os';
|
import * as os from 'os';
|
||||||
import version from '../../../version';
|
import version from '../../../version';
|
||||||
import config from '../../../conf';
|
import config from '../../../config';
|
||||||
import Meta from '../../../models/meta';
|
import Meta from '../../../models/meta';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -19,7 +19,7 @@ import event, { pushSw, publishChannelStream } from '../../../../event';
|
||||||
import notify from '../../../../notify';
|
import notify from '../../../../notify';
|
||||||
import getAcct from '../../../../user/get-acct';
|
import getAcct from '../../../../user/get-acct';
|
||||||
import parseAcct from '../../../../user/parse-acct';
|
import parseAcct from '../../../../user/parse-acct';
|
||||||
import config from '../../../../conf';
|
import config from '../../../../config';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a post
|
* Create a post
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
import * as mongo from 'mongodb';
|
import * as mongo from 'mongodb';
|
||||||
import $ from 'cafy';
|
import $ from 'cafy';
|
||||||
import User, { pack } from '../../../../models/user';
|
import User, { pack } from '../../../../models/user';
|
||||||
import config from '../../../../conf';
|
import config from '../../../../config';
|
||||||
const escapeRegexp = require('escape-regexp');
|
const escapeRegexp = require('escape-regexp');
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -5,7 +5,7 @@ import User, { ILocalUser } from '../../../models/user';
|
||||||
import Signin, { pack } from '../../../models/signin';
|
import Signin, { pack } from '../../../models/signin';
|
||||||
import event from '../../../event';
|
import event from '../../../event';
|
||||||
import signin from '../common/signin';
|
import signin from '../common/signin';
|
||||||
import config from '../../../conf';
|
import config from '../../../config';
|
||||||
|
|
||||||
export default async (req: express.Request, res: express.Response) => {
|
export default async (req: express.Request, res: express.Response) => {
|
||||||
res.header('Access-Control-Allow-Origin', config.url);
|
res.header('Access-Control-Allow-Origin', config.url);
|
||||||
|
|
|
@ -5,7 +5,7 @@ import { generate as generateKeypair } from '../../../crypto_key';
|
||||||
import recaptcha = require('recaptcha-promise');
|
import recaptcha = require('recaptcha-promise');
|
||||||
import User, { IUser, validateUsername, validatePassword, pack } from '../../../models/user';
|
import User, { IUser, validateUsername, validatePassword, pack } from '../../../models/user';
|
||||||
import generateUserToken from '../common/generate-native-user-token';
|
import generateUserToken from '../common/generate-native-user-token';
|
||||||
import config from '../../../conf';
|
import config from '../../../config';
|
||||||
|
|
||||||
recaptcha.init({
|
recaptcha.init({
|
||||||
secret_key: config.recaptcha.secret_key
|
secret_key: config.recaptcha.secret_key
|
||||||
|
|
|
@ -2,7 +2,7 @@ import * as EventEmitter from 'events';
|
||||||
import * as express from 'express';
|
import * as express from 'express';
|
||||||
//const crypto = require('crypto');
|
//const crypto = require('crypto');
|
||||||
import User from '../../../models/user';
|
import User from '../../../models/user';
|
||||||
import config from '../../../conf';
|
import config from '../../../config';
|
||||||
import queue from '../../../queue';
|
import queue from '../../../queue';
|
||||||
|
|
||||||
module.exports = async (app: express.Application) => {
|
module.exports = async (app: express.Application) => {
|
||||||
|
|
|
@ -7,7 +7,7 @@ import autwh from 'autwh';
|
||||||
import redis from '../../../db/redis';
|
import redis from '../../../db/redis';
|
||||||
import User, { pack } from '../../../models/user';
|
import User, { pack } from '../../../models/user';
|
||||||
import event from '../../../event';
|
import event from '../../../event';
|
||||||
import config from '../../../conf';
|
import config from '../../../config';
|
||||||
import signin from '../common/signin';
|
import signin from '../common/signin';
|
||||||
|
|
||||||
module.exports = (app: express.Application) => {
|
module.exports = (app: express.Application) => {
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import * as http from 'http';
|
import * as http from 'http';
|
||||||
import * as websocket from 'websocket';
|
import * as websocket from 'websocket';
|
||||||
import * as redis from 'redis';
|
import * as redis from 'redis';
|
||||||
import config from '../../conf';
|
import config from '../../config';
|
||||||
import { default as User, IUser } from '../../models/user';
|
import { default as User, IUser } from '../../models/user';
|
||||||
import AccessToken from '../../models/access-token';
|
import AccessToken from '../../models/access-token';
|
||||||
import isNativeToken from './common/is-native-token';
|
import isNativeToken from './common/is-native-token';
|
||||||
|
|
|
@ -12,7 +12,7 @@ import Accesses from 'accesses';
|
||||||
import activityPub from './activitypub';
|
import activityPub from './activitypub';
|
||||||
import webFinger from './webfinger';
|
import webFinger from './webfinger';
|
||||||
import log from './log-request';
|
import log from './log-request';
|
||||||
import config from '../conf';
|
import config from '../config';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Init app
|
* Init app
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import config from '../conf';
|
import config from '../config';
|
||||||
import parseAcct from '../user/parse-acct';
|
import parseAcct from '../user/parse-acct';
|
||||||
import User from '../models/user';
|
import User from '../models/user';
|
||||||
const express = require('express');
|
const express = require('express');
|
||||||
|
|
|
@ -14,7 +14,7 @@ const ProgressBarPlugin = require('progress-bar-webpack-plugin');
|
||||||
import I18nReplacer from './src/build/i18n';
|
import I18nReplacer from './src/build/i18n';
|
||||||
import { pattern as faPattern, replacement as faReplacement } from './src/build/fa';
|
import { pattern as faPattern, replacement as faReplacement } from './src/build/fa';
|
||||||
const constants = require('./src/const.json');
|
const constants = require('./src/const.json');
|
||||||
import config from './src/conf';
|
import config from './src/config';
|
||||||
import { licenseHtml } from './src/build/license';
|
import { licenseHtml } from './src/build/license';
|
||||||
|
|
||||||
import locales from './locales';
|
import locales from './locales';
|
||||||
|
|
Loading…
Reference in a new issue