UNPKG

19.3 kBSource Map (JSON)View Raw
1{"version":3,"sources":["../src/Invig.js"],"names":["scrolex","require","globby","debug","applyEachSeries","queue","waterfall","path","fs","pkgUp","Invig","opts","files","cb","projectPackage","_projectPackagePath","projectRoot","dirname","projectRootRel","relative","process","cwd","invigRoot","__dirname","invigPackage","npmInstallNeeded","stick","components","dryrun","scripts","lint","fix","build","dependencies","devDependencies","name","match","push","removeDeps","forEach","copySyncNoOverwrite","writeFileSync","JSON","stringify","length","join","cmd","exe","_projectDir","err","srcPath","npmBinDir","replace","safe","unsafe","list","concat","moveCommandWin","moveCommandOthers","moveCommand","test","platform","fns","extension","extname","toLowerCase","toJs","bind","toEs6","toPrettier","toEslintStandard","stat","lstatSync","src","e","isFile","resolve","isDirectory","sync","Error","dst","existsSync","readFileSync","q","convertFile","concurrency","drain","check","stdout","stdin","coffeePath","jsPath","persistOpts","mode","write","unlinkSync","findFiles","findProject","initProject","processFiles","upgradeDeps","module","exports"],"mappings":"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","file":"Invig.js","sourcesContent":["const scrolex = require('scrolex')\nconst globby = require('globby')\nconst debug = require('depurar')('invig')\nconst applyEachSeries = require('async/applyEachSeries')\nconst queue = require('async/queue')\nconst waterfall = require('async/waterfall')\nconst path = require('path')\nconst fs = require('fs')\nconst pkgUp = require('pkg-up')\n\nclass Invig {\n constructor (opts = {}) {\n this.opts = opts\n }\n\n initProject (files, cb) {\n const projectPackage = require(this._projectPackagePath)\n const projectRoot = path.dirname(this._projectPackagePath)\n const projectRootRel = path.relative(process.cwd(), projectRoot) || '.'\n const invigRoot = `${__dirname}/..`\n // const invigRootRel = path.relative(process.cwd(), invigRoot)\n const invigPackage = require(`${invigRoot}/package.json`)\n let npmInstallNeeded = []\n\n scrolex.stick('Adding npm task project config', { components: `invig>${projectRootRel}` })\n if (this.opts.dryrun === false) {\n if (!projectPackage.scripts) {\n projectPackage.scripts = {}\n }\n if (!projectPackage.scripts.lint) {\n projectPackage.scripts.lint = 'eslint .'\n }\n if (!projectPackage.scripts.fix) {\n projectPackage.scripts.fix = 'eslint . --fix'\n }\n if (!projectPackage.scripts.build) {\n projectPackage.scripts.build = 'babel src --source-maps --out-dir lib'\n if (!projectPackage.scripts['build:watch']) {\n projectPackage.scripts['build:watch'] = 'babel src --watch --source-maps --out-dir lib'\n }\n }\n }\n\n scrolex.stick('Adding dependencies task project config', { components: `invig>${projectRootRel}` })\n if (this.opts.dryrun === false) {\n if (!projectPackage.dependencies) {\n projectPackage.dependencies = {}\n }\n if (!projectPackage.devDependencies) {\n projectPackage.devDependencies = {}\n }\n\n for (let name in invigPackage.dependencies) {\n if (name.match(/^(babel|eslint|es6-promise)/)) {\n if (projectPackage.devDependencies[name] !== invigPackage.dependencies[name]) {\n projectPackage.devDependencies[name] = invigPackage.dependencies[name]\n npmInstallNeeded.push(`Add ${name} to devDependencies`)\n }\n }\n }\n\n const removeDeps = ['coffee-script', 'coffeelint']\n removeDeps.forEach((name) => {\n if (projectPackage.dependencies[name]) {\n delete projectPackage.dependencies[name]\n npmInstallNeeded.push(`Remove ${name} from dependencies`)\n }\n if (projectPackage.devDependencies[name]) {\n delete projectPackage.devDependencies[name]\n npmInstallNeeded.push(`Remove ${name} from devDependencies`)\n }\n })\n }\n\n scrolex.stick('Writing eslint project config', { components: `invig>${projectRootRel}` })\n if (this.opts.dryrun === false) {\n this.copySyncNoOverwrite(`${invigRoot}/.eslintrc`, `${projectRoot}/.eslintrc`)\n }\n\n scrolex.stick('Writing babel project config', { components: `invig>${projectRootRel}` })\n if (this.opts.dryrun === false) {\n this.copySyncNoOverwrite(`${invigRoot}/.babelrc`, `${projectRoot}/.babelrc`)\n }\n\n scrolex.stick('Writing eslint ignores', { components: `invig>${projectRootRel}` })\n if (this.opts.dryrun === false) {\n this.copySyncNoOverwrite(`${invigRoot}/.eslintignore`, `${projectRoot}/.eslintignore`)\n }\n\n scrolex.stick('Writing back project config ', { components: `invig>${projectRootRel}` })\n fs.writeFileSync(this._projectPackagePath, JSON.stringify(projectPackage, null, 2), 'utf-8')\n\n if (npmInstallNeeded.length > 0) {\n scrolex.stick('Running npm install to accomodate these changes: ' + npmInstallNeeded.join('. '), { components: `invig>${projectRootRel}` })\n const cmd = `yarn || npm install`\n scrolex.exe(cmd, { cwd: this._projectDir, components: `invig>${projectRootRel}` }, (err) => {\n return cb(err, files)\n })\n } else {\n return cb(null, files)\n }\n }\n\n toJs (srcPath, cb) {\n const cmd = `${this.opts.npmBinDir}/decaffeinate --loose-includes --loose-for-of --allow-invalid-constructors --keep-commonjs --prefer-const --loose-default-params ${srcPath} && rm -f ${srcPath}`\n scrolex.exe(cmd, { cwd: this._projectDir, components: `invig>${path.relative(process.cwd(), srcPath)}` }, cb)\n }\n\n toEs6 (srcPath, cb) {\n srcPath = srcPath.replace(/\\.coffee$/, '.js')\n const safe = [\n 'arrow',\n 'for-of',\n 'for-each',\n 'arg-rest',\n 'arg-spread',\n 'obj-method',\n 'obj-shorthand',\n 'no-strict',\n // 'commonjs',\n // 'exponent',\n 'multi-var',\n ]\n const unsafe = [\n 'let',\n 'class',\n 'template',\n 'default-param',\n // 'includes'\n 'destruct-param',\n ]\n\n const list = [].concat(safe, unsafe).join(',')\n\n const moveCommandWin = `move /y ${srcPath.replace(/\\//g, '\\\\')}.es6 ${srcPath.replace(/\\//g, '\\\\')}`\n const moveCommandOthers = `mv -f ${srcPath}.es6 ${srcPath}`\n const moveCommand = /^win/.test(process.platform) ? moveCommandWin : moveCommandOthers\n\n const cmd = `${this.opts.npmBinDir}/lebab --transform=${list} ${srcPath} --out-file ${srcPath}.es6 && ${moveCommand}`\n\n scrolex.exe(cmd, { cwd: this._projectDir, components: `invig>${path.relative(process.cwd(), srcPath)}` }, cb)\n }\n\n toPrettier (srcPath, cb) {\n srcPath = srcPath.replace(/\\.coffee$/, '.js')\n const cmd = `${this.opts.npmBinDir}/prettier --single-quote --print-width 180 --write ${srcPath}`\n scrolex.exe(cmd, { cwd: this._projectDir, components: `invig>${path.relative(process.cwd(), srcPath)}` }, cb)\n }\n\n toEslintStandard (srcPath, cb) {\n srcPath = srcPath.replace(/\\.coffee$/, '.js')\n const cmd = `${this.opts.npmBinDir}/eslint --config ${this._projectDir}/.eslintrc --fix ${srcPath}`\n scrolex.exe(\n cmd,\n { cwd: this._projectDir, components: `invig>${path.relative(process.cwd(), srcPath)}` },\n cb\n )\n }\n\n convertFile (srcPath, cb) {\n const fns = []\n const extension = path.extname(srcPath).toLowerCase()\n\n if (extension === '.coffee') {\n fns.push(this.toJs.bind(this))\n }\n fns.push(this.toEs6.bind(this))\n fns.push(this.toPrettier.bind(this))\n fns.push(this.toEslintStandard.bind(this))\n\n applyEachSeries(fns, srcPath, cb)\n }\n\n findFiles (cb) {\n let files = []\n let stat = {}\n try {\n stat = fs.lstatSync(this.opts.src)\n } catch (e) {\n stat = false\n }\n\n // let relative\n if (stat && stat.isFile()) {\n // File\n const resolve = path.resolve(this.opts.src)\n files = [ resolve ]\n } else if (stat && stat.isDirectory()) {\n // Directory\n const resolve = path.resolve(this.opts.src)\n files = globby.sync([\n `${resolve}/**/*.coffee`,\n `${resolve}/**/*.es5`,\n `${resolve}/**/*.es6`,\n `${resolve}/**/*.js`,\n `!${resolve}/node_modules/**`,\n ])\n } else {\n // Pattern\n files = globby.sync(this.opts.src)\n }\n if (!files || files.length === 0) {\n return cb(new Error(`Source argument: \"${this.opts.src}\" returned no input files to work on.`))\n }\n\n return cb(null, files)\n }\n\n copySyncNoOverwrite (src, dst) {\n if (!fs.existsSync(dst)) {\n fs.writeFileSync(dst, fs.readFileSync(src, 'utf-8'), 'utf-8')\n }\n }\n\n findProject (files, cb) {\n this._projectPackagePath = pkgUp.sync(path.dirname(files[0]))\n\n if (!this._projectPackagePath) {\n return cb(new Error(`No package.json found, unable to establish project root. `))\n }\n\n this._projectDir = path.dirname(this._projectPackagePath)\n return cb(null, files)\n }\n\n processFiles (files, cb) {\n const q = queue(this.convertFile.bind(this), this.opts.concurrency)\n q.push(files)\n q.drain = () => {\n return cb(null, files)\n }\n }\n\n upgradeDeps (files, cb) {\n if (this.opts.check) {\n scrolex.exe(`${this.opts.npmBinDir}/npm-check ${this._projectDir}`, { cwd: this._projectDir, components: `invig>${path.relative(process.cwd(), this._projectDir)}` }, (err, stdout) => {\n if (err) {\n return cb(err)\n }\n return cb(null)\n })\n } else {\n return cb(null)\n }\n }\n\n runOnStdIn (stdin, cb) {\n this._projectDir = `${__dirname}/..`\n const coffeePath = `${__dirname}/tmpFile.coffee`\n let jsPath = `${__dirname}/tmpFile.js`\n\n fs.writeFileSync(`${coffeePath}`, stdin, 'utf-8')\n scrolex.persistOpts({ mode: 'silent' })\n\n this.toJs(coffeePath, (err) => {\n if (err) {\n // Assume this was a JS snippet on STDIN already\n fs.writeFileSync(`${jsPath}`, fs.readFileSync(`${coffeePath}`, 'utf-8'), 'utf-8')\n }\n this.convertFile(jsPath, (err) => {\n debug(err)\n process.stdout.write(fs.readFileSync(`${jsPath}`, 'utf-8'))\n try {\n fs.unlinkSync(`${jsPath}`)\n fs.unlinkSync(`${coffeePath}`)\n } catch (e) {\n }\n\n return cb(null)\n })\n })\n }\n\n runOnPattern (cb) {\n waterfall([\n this.findFiles.bind(this),\n this.findProject.bind(this),\n this.initProject.bind(this),\n this.processFiles.bind(this),\n this.upgradeDeps.bind(this),\n ], cb)\n }\n}\n\nmodule.exports = Invig\n"]}
\No newline at end of file