diff --git a/.editorconfig b/.editorconfig
index 13791d24e61f6bfeb84884aac8d0356e8bcd8ded..edccf3a9d568fcec8f7fa9c3f36474accd10ae8a 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -6,8 +6,5 @@ indent_size = 2
 charset = utf-8
 insert_final_newline = true
 
-[*.json]
-indent_style = space
-
 [*.yml]
 indent_style = space
diff --git a/package.json b/package.json
index 04a9b591739c6f182cbeb3915e67ac47cd404b88..9af1e6f286c6c806f2f1b7f3f718b969d444cfcc 100644
--- a/package.json
+++ b/package.json
@@ -1,153 +1,153 @@
 {
-  "name": "misskey",
-  "author": "syuilo <i@syuilo.com>",
-  "version": "0.0.1651",
-  "license": "MIT",
-  "description": "A miniblog-based SNS",
-  "bugs": "https://github.com/syuilo/misskey/issues",
-  "repository": "https://github.com/syuilo/misskey.git",
-  "main": "./built/index.js",
-  "private": true,
-  "scripts": {
-    "config": "node ./tools/init.js",
-    "start": "node ./built",
-    "debug": "DEBUG=misskey:* node ./built",
-    "swagger": "node ./swagger.js",
-    "build": "gulp build",
-    "rebuild": "gulp rebuild",
-    "clean": "gulp clean",
-    "cleanall": "gulp cleanall",
-    "lint": "gulp lint",
-    "test": "gulp test"
-  },
-  "devDependencies": {
-    "@types/bcryptjs": "2.4.0",
-    "@types/body-parser": "1.16.3",
-    "@types/chai": "3.5.2",
-    "@types/chai-http": "0.0.30",
-    "@types/chalk": "0.4.31",
-    "@types/compression": "0.0.33",
-    "@types/cors": "2.8.1",
-    "@types/debug": "0.0.29",
-    "@types/deep-equal": "1.0.0",
-    "@types/elasticsearch": "5.0.13",
-    "@types/escape-html": "0.0.19",
-    "@types/event-stream": "3.3.31",
-    "@types/express": "4.0.35",
-    "@types/gm": "1.17.30",
-    "@types/gulp": "4.0.3",
-    "@types/gulp-mocha": "0.0.30",
-    "@types/gulp-rename": "0.0.32",
-    "@types/gulp-replace": "0.0.30",
-    "@types/gulp-tslint": "3.6.31",
-    "@types/gulp-typescript": "2.13.0",
-    "@types/gulp-uglify": "0.0.30",
-    "@types/gulp-util": "3.0.31",
-    "@types/inquirer": "0.0.34",
-    "@types/is-root": "1.0.0",
-    "@types/is-url": "1.2.28",
-    "@types/js-yaml": "3.5.30",
-    "@types/mocha": "2.2.41",
-    "@types/mongodb": "2.2.2",
-    "@types/monk": "1.0.5",
-    "@types/morgan": "1.7.32",
-    "@types/ms": "0.7.29",
-    "@types/multer": "0.0.33",
-    "@types/ratelimiter": "2.1.28",
-    "@types/redis": "0.12.36",
-    "@types/request": "0.0.43",
-    "@types/rimraf": "0.0.28",
-    "@types/riot": "2.6.2",
-    "@types/serve-favicon": "2.2.28",
-    "@types/uuid": "2.0.29",
-    "@types/webpack": "2.2.15",
-    "@types/webpack-stream": "3.2.6",
-    "@types/websocket": "0.0.33",
-    "chai": "3.5.0",
-    "chai-http": "3.0.0",
-    "css-loader": "0.28.2",
-    "event-stream": "3.3.4",
-    "gulp": "3.9.1",
-    "gulp-cssnano": "2.1.2",
-    "gulp-imagemin": "3.2.0",
-    "gulp-mocha": "4.3.1",
-    "gulp-pug": "3.3.0",
-    "gulp-rename": "1.2.2",
-    "gulp-replace": "0.5.4",
-    "gulp-tslint": "8.1.0",
-    "gulp-typescript": "3.1.6",
-    "gulp-uglify": "3.0.0",
-    "gulp-util": "3.0.8",
-    "mocha": "3.4.1",
-    "riot-tag-loader": "1.0.0",
-    "string-replace-webpack-plugin": "0.1.3",
-    "stylus": "0.54.5",
-    "stylus-loader": "3.0.1",
-    "swagger-jsdoc": "1.9.4",
-    "tslint": "5.3.2",
-    "uglify-es": "3.0.11",
-    "uglify-js": "git+https://github.com/mishoo/UglifyJS2.git#harmony-v2.8.22",
-    "uglifyjs-webpack-plugin": "0.4.3",
-    "webpack": "2.6.0"
-  },
-  "dependencies": {
-    "accesses": "2.5.0",
-    "animejs": "2.0.2",
-    "autwh": "0.0.1",
-    "bcryptjs": "2.4.3",
-    "body-parser": "1.17.2",
-    "cafy": "2.4.0",
-    "chalk": "1.1.3",
-    "compression": "1.6.2",
-    "cors": "2.8.3",
-    "cropperjs": "1.0.0-rc.1",
-    "crypto": "0.0.3",
-    "debug": "2.6.8",
-    "deep-equal": "1.0.1",
-    "deepcopy": "0.6.3",
-    "download": "6.2.0",
-    "elasticsearch": "13.0.1",
-    "escape-html": "1.0.3",
-    "escape-regexp": "0.0.1",
-    "express": "4.15.3",
-    "file-type": "4.3.0",
-    "fuckadblock": "3.2.1",
-    "gm": "1.23.0",
-    "inquirer": "3.0.6",
-    "is-root": "1.0.0",
-    "is-url": "1.2.2",
-    "js-yaml": "3.8.4",
-    "mime-types": "2.1.15",
-    "mongodb": "2.2.27",
-    "monk": "5.0.2",
-    "morgan": "1.8.2",
-    "ms": "2.0.0",
-    "multer": "1.3.0",
-    "nprogress": "0.2.0",
-    "nyaize": "0.0.2",
-    "page": "1.7.1",
-    "prominence": "0.2.0",
-    "pug": "2.0.0-rc.1",
-    "ratelimiter": "3.0.3",
-    "recaptcha-promise": "0.1.2",
-    "reconnecting-websocket": "3.0.5",
-    "redis": "2.7.1",
-    "request": "2.81.0",
-    "rimraf": "2.6.1",
-    "riot": "3.5.1",
-    "rndstr": "1.0.0",
-    "s-age": "1.1.0",
-    "serve-favicon": "2.4.3",
-    "subdomain": "1.2.0",
-    "summaly": "2.0.3",
-    "syuilo-password-strength": "0.0.1",
-    "tcp-port-used": "0.1.2",
-    "textarea-caret": "3.0.2",
-    "ts-node": "3.0.4",
-    "typescript": "2.3.3",
-    "uuid": "3.0.1",
-    "vhost": "3.0.2",
-    "websocket": "1.0.24",
-    "xml2json": "0.11.0"
-  }
+	"name": "misskey",
+	"author": "syuilo <i@syuilo.com>",
+	"version": "0.0.1651",
+	"license": "MIT",
+	"description": "A miniblog-based SNS",
+	"bugs": "https://github.com/syuilo/misskey/issues",
+	"repository": "https://github.com/syuilo/misskey.git",
+	"main": "./built/index.js",
+	"private": true,
+	"scripts": {
+		"config": "node ./tools/init.js",
+		"start": "node ./built",
+		"debug": "DEBUG=misskey:* node ./built",
+		"swagger": "node ./swagger.js",
+		"build": "gulp build",
+		"rebuild": "gulp rebuild",
+		"clean": "gulp clean",
+		"cleanall": "gulp cleanall",
+		"lint": "gulp lint",
+		"test": "gulp test"
+	},
+	"devDependencies": {
+		"@types/bcryptjs": "2.4.0",
+		"@types/body-parser": "1.16.3",
+		"@types/chai": "3.5.2",
+		"@types/chai-http": "0.0.30",
+		"@types/chalk": "0.4.31",
+		"@types/compression": "0.0.33",
+		"@types/cors": "2.8.1",
+		"@types/debug": "0.0.29",
+		"@types/deep-equal": "1.0.0",
+		"@types/elasticsearch": "5.0.13",
+		"@types/escape-html": "0.0.19",
+		"@types/event-stream": "3.3.31",
+		"@types/express": "4.0.35",
+		"@types/gm": "1.17.30",
+		"@types/gulp": "4.0.3",
+		"@types/gulp-mocha": "0.0.30",
+		"@types/gulp-rename": "0.0.32",
+		"@types/gulp-replace": "0.0.30",
+		"@types/gulp-tslint": "3.6.31",
+		"@types/gulp-typescript": "2.13.0",
+		"@types/gulp-uglify": "0.0.30",
+		"@types/gulp-util": "3.0.31",
+		"@types/inquirer": "0.0.34",
+		"@types/is-root": "1.0.0",
+		"@types/is-url": "1.2.28",
+		"@types/js-yaml": "3.5.30",
+		"@types/mocha": "2.2.41",
+		"@types/mongodb": "2.2.2",
+		"@types/monk": "1.0.5",
+		"@types/morgan": "1.7.32",
+		"@types/ms": "0.7.29",
+		"@types/multer": "0.0.33",
+		"@types/ratelimiter": "2.1.28",
+		"@types/redis": "0.12.36",
+		"@types/request": "0.0.43",
+		"@types/rimraf": "0.0.28",
+		"@types/riot": "2.6.2",
+		"@types/serve-favicon": "2.2.28",
+		"@types/uuid": "2.0.29",
+		"@types/webpack": "2.2.15",
+		"@types/webpack-stream": "3.2.6",
+		"@types/websocket": "0.0.33",
+		"chai": "3.5.0",
+		"chai-http": "3.0.0",
+		"css-loader": "0.28.2",
+		"event-stream": "3.3.4",
+		"gulp": "3.9.1",
+		"gulp-cssnano": "2.1.2",
+		"gulp-imagemin": "3.2.0",
+		"gulp-mocha": "4.3.1",
+		"gulp-pug": "3.3.0",
+		"gulp-rename": "1.2.2",
+		"gulp-replace": "0.5.4",
+		"gulp-tslint": "8.1.0",
+		"gulp-typescript": "3.1.6",
+		"gulp-uglify": "3.0.0",
+		"gulp-util": "3.0.8",
+		"mocha": "3.4.1",
+		"riot-tag-loader": "1.0.0",
+		"string-replace-webpack-plugin": "0.1.3",
+		"stylus": "0.54.5",
+		"stylus-loader": "3.0.1",
+		"swagger-jsdoc": "1.9.4",
+		"tslint": "5.3.2",
+		"uglify-es": "3.0.11",
+		"uglify-js": "git+https://github.com/mishoo/UglifyJS2.git#harmony-v2.8.22",
+		"uglifyjs-webpack-plugin": "0.4.3",
+		"webpack": "2.6.0"
+	},
+	"dependencies": {
+		"accesses": "2.5.0",
+		"animejs": "2.0.2",
+		"autwh": "0.0.1",
+		"bcryptjs": "2.4.3",
+		"body-parser": "1.17.2",
+		"cafy": "2.4.0",
+		"chalk": "1.1.3",
+		"compression": "1.6.2",
+		"cors": "2.8.3",
+		"cropperjs": "1.0.0-rc.1",
+		"crypto": "0.0.3",
+		"debug": "2.6.8",
+		"deep-equal": "1.0.1",
+		"deepcopy": "0.6.3",
+		"download": "6.2.0",
+		"elasticsearch": "13.0.1",
+		"escape-html": "1.0.3",
+		"escape-regexp": "0.0.1",
+		"express": "4.15.3",
+		"file-type": "4.3.0",
+		"fuckadblock": "3.2.1",
+		"gm": "1.23.0",
+		"inquirer": "3.0.6",
+		"is-root": "1.0.0",
+		"is-url": "1.2.2",
+		"js-yaml": "3.8.4",
+		"mime-types": "2.1.15",
+		"mongodb": "2.2.27",
+		"monk": "5.0.2",
+		"morgan": "1.8.2",
+		"ms": "2.0.0",
+		"multer": "1.3.0",
+		"nprogress": "0.2.0",
+		"nyaize": "0.0.2",
+		"page": "1.7.1",
+		"prominence": "0.2.0",
+		"pug": "2.0.0-rc.1",
+		"ratelimiter": "3.0.3",
+		"recaptcha-promise": "0.1.2",
+		"reconnecting-websocket": "3.0.5",
+		"redis": "2.7.1",
+		"request": "2.81.0",
+		"rimraf": "2.6.1",
+		"riot": "3.5.1",
+		"rndstr": "1.0.0",
+		"s-age": "1.1.0",
+		"serve-favicon": "2.4.3",
+		"subdomain": "1.2.0",
+		"summaly": "2.0.3",
+		"syuilo-password-strength": "0.0.1",
+		"tcp-port-used": "0.1.2",
+		"textarea-caret": "3.0.2",
+		"ts-node": "3.0.4",
+		"typescript": "2.3.3",
+		"uuid": "3.0.1",
+		"vhost": "3.0.2",
+		"websocket": "1.0.24",
+		"xml2json": "0.11.0"
+	}
 }