"express-validator": "^5.0.0",
"flat": "^4.1.0",
"fluent-ffmpeg": "^2.1.0",
+ "fs-extra": "^7.0.0",
"helmet": "^3.12.1",
"ip-anonymize": "^0.0.6",
"ipaddr.js": "https://github.com/whitequark/ipaddr.js.git#8e69afeb4053ee32447a101845f860848280eca5",
"jsonld-signatures": "https://github.com/Chocobozzz/jsonld-signatures#rsa2017",
"lodash": "^4.17.10",
"magnet-uri": "^5.1.4",
- "mkdirp": "^0.5.1",
"morgan": "^1.5.3",
"multer": "^1.1.0",
"nodemailer": "^4.4.2",
import { doRequest } from '../server/helpers/requests'
-import { readFileSync } from 'fs'
+import { readFileSync } from 'fs-extra'
run()
.then(() => process.exit(0))
import * as jsToXliff12 from 'xliff/jsToXliff12'
-import { writeFile } from 'fs'
+import { writeFile } from 'fs-extra'
import { join } from 'path'
import {
buildLanguages,
import * as xliff12ToJs from 'xliff/xliff12ToJs'
-import { readFileSync, unlink, writeFile } from 'fs'
+import { readFileSync, unlink, writeFile } from 'fs-extra'
import { join } from 'path'
import { buildFileLocale, I18N_LOCALES, isDefaultLocale } from '../../shared/models/i18n/i18n'
import { eachSeries } from 'async'
import * as program from 'commander'
-import { createReadStream, readdirSync, statSync } from 'fs'
+import { createReadStream, readdirSync, statSync } from 'fs-extra'
import { join } from 'path'
import { createInterface } from 'readline'
import * as winston from 'winston'
import * as cors from 'cors'
-import { createReadStream } from 'fs'
+import { createReadStream } from 'fs-extra'
import * as express from 'express'
import { CONFIG, STATIC_DOWNLOAD_PATHS, STATIC_MAX_AGE, STATIC_PATHS, ROUTE_CACHE_LIFETIME } from '../initializers'
import { VideosPreviewCache } from '../lib/cache'
import { CONFIG } from '../initializers'
import { VideoCaptionModel } from '../models/video/video-caption'
import * as srt2vtt from 'srt-to-vtt'
-import { createReadStream, createWriteStream } from 'fs'
+import { createReadStream, createWriteStream } from 'fs-extra'
async function moveAndProcessCaptionFile (physicalFile: { filename: string, path: string }, videoCaption: VideoCaptionModel) {
const videoCaptionsDir = CONFIG.STORAGE.CAPTIONS_DIR
import * as bcrypt from 'bcrypt'
import * as createTorrent from 'create-torrent'
import { createHash, pseudoRandomBytes } from 'crypto'
-import { copyFile, readdir, readFile, rename, stat, Stats, unlink, writeFile } from 'fs'
-import * as mkdirp from 'mkdirp'
+import { copyFile, readdir, readFile, rename, stat, Stats, unlink, writeFile, mkdirp } from 'fs-extra'
import { isAbsolute, join } from 'path'
import * as pem from 'pem'
import * as rimraf from 'rimraf'
// Thanks http://tostring.it/2014/06/23/advanced-logging-with-nodejs/
-import * as mkdirp from 'mkdirp'
+import { mkdirpSync } from 'fs-extra'
import * as path from 'path'
import * as winston from 'winston'
import { CONFIG } from '../initializers'
const label = CONFIG.WEBSERVER.HOSTNAME + ':' + CONFIG.WEBSERVER.PORT
// Create the directory if it does not exist
-mkdirp.sync(CONFIG.STORAGE.LOG_DIR)
+mkdirpSync(CONFIG.STORAGE.LOG_DIR)
function loggerReplacer (key: string, value: any) {
if (value instanceof Error) {
import * as Bluebird from 'bluebird'
-import { createWriteStream } from 'fs'
+import { createWriteStream } from 'fs-extra'
import * as request from 'request'
import { ACTIVITY_PUB } from '../initializers'
import { logger } from './logger'
import { generateVideoTmpPath } from './utils'
import * as WebTorrent from 'webtorrent'
-import { createWriteStream } from 'fs'
+import { createWriteStream } from 'fs-extra'
import { CONFIG } from '../initializers'
import { join } from 'path'
import { unlinkPromise } from './core-utils'
import * as Sequelize from 'sequelize'
import * as Promise from 'bluebird'
-import { stat } from 'fs'
+import { stat } from 'fs-extra'
import { VideoModel } from '../../models/video/video'
function up (utils: {
import * as AsyncLRU from 'async-lru'
-import { createWriteStream } from 'fs'
+import { createWriteStream } from 'fs-extra'
import { unlinkPromise } from '../../helpers/core-utils'
import { logger } from '../../helpers/logger'
import { VideoModel } from '../../models/video/video'
import { VideoModel } from '../models/video/video'
import { JobQueue } from './job-queue'
import { EmailPayload } from './job-queue/handlers/email'
-import { readFileSync } from 'fs'
+import { readFileSync } from 'fs-extra'
class Emailer {
import { SCHEDULER_INTERVALS_MS } from '../../initializers'
import { logger } from '../../helpers/logger'
import * as request from 'request'
-import { createWriteStream, writeFile } from 'fs'
+import { createWriteStream, writeFile } from 'fs-extra'
import { join } from 'path'
import { mkdirpPromise, root } from '../../helpers/core-utils'
/* tslint:disable:no-unused-expression */
import { expect } from 'chai'
-import { existsSync } from 'fs'
+import { existsSync } from 'fs-extra'
import { join } from 'path'
import { Account } from '../../../../shared/models/actors'
import { readdirPromise } from '../../../helpers/core-utils'
/* tslint:disable:no-unused-expression */
import { expect } from 'chai'
-import { existsSync, readFile } from 'fs'
+import { existsSync, readFile } from 'fs-extra'
import * as parseTorrent from 'parse-torrent'
import { extname, join } from 'path'
import * as request from 'supertest'
import * as program from 'commander'
-import { access, constants } from 'fs'
+import { access, constants } from 'fs-extra'
import { isAbsolute } from 'path'
import { promisify } from 'util'
import { getClient, login } from '../tests/utils'