import os from 'os' import crypto from 'crypto' import fs from 'fs' import path from 'path' import BbPromise from 'bluebird' import fse from 'fs-extra' import fileExistsSync from '../utils/fs/file-exists-sync.js' import writeFileSync from '../utils/fs/write-file-sync.js' import copyDirContentsSync from '../utils/fs/copy-dir-contents-sync.js' import readFileSync from '../utils/fs/read-file-sync.js' import readFile from '../utils/fs/read-file.js' import walkDirSync from '../utils/fs/walk-dir-sync.js' import dirExistsSync from '../utils/fs/dir-exists-sync.js' class Utils { constructor(serverless) { this.serverless = serverless } getVersion() { return this.serverless.version } dirExistsSync(dirPath) { return dirExistsSync(dirPath) } getTmpDirPath() { const dirPath = path.join( os.tmpdir(), 'tmpdirs-serverless', crypto.randomBytes(8).toString('hex'), ) fse.ensureDirSync(dirPath) return dirPath } fileExistsSync(filePath) { return fileExistsSync(filePath) } writeFileDir(filePath) { fse.mkdirsSync(path.dirname(filePath)) } writeFileSync(filePath, contents, cycles) { writeFileSync(filePath, contents, cycles) } async writeFile(filePath, contents, cycles) { return new BbPromise((resolve, reject) => { try { this.writeFileSync(filePath, contents, cycles) } catch (e) { reject(e) } resolve() }) } async appendFileSync(filePath, conts) { const contents = conts || '' return new BbPromise((resolve, reject) => { try { fs.appendFileSync(filePath, contents) } catch (e) { reject(e) } resolve() }) } readFileSync(filePath) { return readFileSync(filePath) } readFile(filePath) { return readFile(filePath) } walkDirSync(dirPath) { return walkDirSync(dirPath) } copyDirContentsSync(srcDir, destDir) { return copyDirContentsSync(srcDir, destDir) } generateShortId(length) { return Math.random().toString(36).substr(2, length) } isEventUsed(functions, eventName) { return Object.keys(functions).reduce((accum, key) => { const events = functions[key].events || [] if (events.length) { events.forEach((event) => { if (Object.keys(event)[0] === eventName) { accum = true } }) } return accum }, false) } } export default Utils