UNPKG

19.6 kBSource Map (JSON)View Raw
1{"version":3,"sources":["../src/index.js"],"names":["_","require","path","webpack","fs","writePkg","server_config","client_config","createStrategy","generateServerStrategy","generateClient","generateIncludes","PROJECT_DIR","process","cwd","DIST_DIR","resolve","MODULES_DIR","LIB_DIR","packageJson","CONFIG_FILENAME","CONFIG_FILE","stdin","stdout","mapValues","obj","iterator","keys","Object","mapped","forEach","key","getDependencies","nodeModuleDir","deps","assign","dependencies","devDependencies","name","pjf","pj","version","runWebpack","config","options","Promise","reject","err","stats","errors","toJson","toString","copyStatic","src","linc","staticDir","dirname","basename","dest","console","log","copy","overwrite","dereference","preserveTimestamps","makeBabelAbsolute","babelOptions","Array","isArray","mergeOptions","acc","curr","alias","babel","presets","map","concat","plugins","push","getConfigFragments","strategy","all","libs","lib","configFragment","e","filter","empty","imports","values","reduce","getWebpackOptions","env","webpackConfig","readOnce","once","ask","question","suggestion","write","answer","trim","length","getSourceDir","resume","srcDir","pause","configLines","top","bottom","getOption","opt","memo","lvl","indent","repeat","o","ks","k","isRequired","optn","s","required","example","default","createConfigFileContents","x","m","v","i","join","writeFile","file","contents","hasConfigFile","existsSync","createConfigFile","configFileContents","postBuild","sourceDir","build","opts","callback","serverStrategy","staticCopy","module","exports"],"mappings":"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","file":"index.js","sourcesContent":["const _ = require('underscore')\nconst path = require('path')\nconst webpack = require('webpack')\nconst fs = require('fs-extra')\nconst writePkg = require('write-pkg')\n\nconst server_config = require('../webpack/webpack.config.server.js')\nconst client_config = require('../webpack/webpack.config.client.js')\nconst createStrategy = require('./strategy')\nconst generateServerStrategy = require('./generateServerStrategy')\nconst generateClient = require('./generateClient')\nconst generateIncludes = require('./generateIncludes')\n\nconst PROJECT_DIR = process.cwd()\nconst DIST_DIR = path.resolve(PROJECT_DIR, 'dist')\nconst MODULES_DIR = path.resolve(PROJECT_DIR, 'node_modules')\nconst LIB_DIR = path.resolve(DIST_DIR, 'lib')\nconst packageJson = require(path.resolve(PROJECT_DIR, 'package.json'))\nconst CONFIG_FILENAME = 'src/linc.config.js'\nconst CONFIG_FILE = path.resolve(PROJECT_DIR, CONFIG_FILENAME)\n\nlet stdin = process.stdin\nlet stdout = process.stdout\n\nconst mapValues = (obj, iterator) => {\n const keys = Object.keys(obj)\n const mapped = {}\n keys.forEach(key => {\n mapped[key] = iterator(obj[key], key, obj)\n })\n return mapped\n}\n\nconst getDependencies = () => {\n const nodeModuleDir = path.resolve(PROJECT_DIR, 'node_modules')\n const deps = Object.assign(\n {},\n packageJson.dependencies,\n packageJson.devDependencies\n )\n return mapValues(deps, (_, name) => {\n const pjf = path.resolve(nodeModuleDir, name, 'package.json')\n const pj = require(pjf)\n return pj.version\n })\n}\n\nconst runWebpack = (config, options) => {\n return new Promise((resolve, reject) => {\n config = config(options)\n webpack(config, (err, stats) => {\n if (err) return reject(err)\n const errors = stats.toJson('errors-only').errors.toString()\n if (errors) return reject(errors)\n resolve()\n })\n })\n}\n\nconst copyStatic = async () => {\n const src = packageJson.linc && packageJson.linc.staticDir\n if (src) {\n const dirname = path.basename(src)\n const dest = path.resolve(DIST_DIR, 'static', dirname)\n console.log(`Copying ${src} to ${dest}`)\n return fs.copy(src, dest, {\n overwrite: true,\n dereference: true,\n preserveTimestamps: true\n })\n }\n}\n\nconst makeBabelAbsolute = babelOptions => {\n if (Array.isArray(babelOptions)) {\n babelOptions[0] = path.resolve(MODULES_DIR, babelOptions[0])\n return babelOptions\n } else {\n return path.resolve(MODULES_DIR, babelOptions)\n }\n}\n\nconst mergeOptions = (acc, curr) => {\n acc.alias = Object.assign({}, acc.alias, curr.alias)\n if (curr.babel && curr.babel.presets) {\n const presets = curr.babel.presets.map(makeBabelAbsolute)\n acc.babel.presets = acc.babel.presets.concat(presets)\n }\n if (curr.babel && curr.babel.plugins) {\n const plugins = curr.babel.plugins.map(makeBabelAbsolute)\n acc.babel.plugins = acc.babel.plugins.concat(plugins)\n }\n if (Array.isArray(curr.plugins)) {\n acc.plugins = acc.plugins.concat(curr.plugins)\n } else if (curr.plugins) {\n acc.plugins.push(curr.plugins)\n }\n return acc\n}\n\nconst getConfigFragments = strategy => {\n const all = strategy.libs\n .map(lib => {\n try {\n return require(`./libs/config_client/${lib}`).configFragment\n } catch (e) {}\n })\n .filter(e => !!e)\n\n const empty = { imports: [], values: [] }\n return all.reduce((acc, curr) => {\n if (curr.imports) acc.imports.push(curr.imports)\n if (curr.values) acc.values = acc.values.concat(curr.values)\n return acc\n }, empty)\n}\n\nconst getWebpackOptions = (strategy, env) => {\n const all = strategy.libs\n .map(lib => {\n try {\n return require(`./libs/config_client/${lib}`).webpackConfig\n } catch (e) {}\n })\n .filter(e => !!e)\n\n const empty = { alias: {}, babel: { presets: [], plugins: [] }, plugins: [] }\n const options = all.map(e => e(DIST_DIR)[env]).reduce(mergeOptions, empty)\n return options\n}\n\nconst readOnce = () =>\n new Promise(resolve => {\n stdin.once('data', resolve)\n })\n\nconst ask = async (question, suggestion) => {\n stdout.write(`${question} `)\n\n let answer = await readOnce()\n if (answer) {\n answer = answer.toString().trim()\n if (answer.length > 0) {\n return answer\n }\n }\n stdout.write(`${suggestion}\\n`)\n return ask(question, suggestion)\n}\n\nconst getSourceDir = async () => {\n stdin.resume()\n const srcDir = await ask(\n 'Directory containing your source code:',\n 'Please provide a valid directory.'\n )\n stdin.pause()\n return srcDir\n}\n\nconst configLines = {\n top: [\n 'const config = {',\n \" // polyfills: 'default,fetch,Symbol,Symbol.iterator,Array.prototype.find',\",\n ' // requestExtendedUserInfo: true,'\n ],\n bottom: ['};', '', 'export default config']\n}\n\nconst getOption = async (opt, memo, lvl) => {\n const indent = ' '.repeat(lvl + 1)\n const keys = Object.keys(opt)\n\n // Lookahead to see if we've reached the innermost level\n const o = opt[keys[0]]\n const ks = Object.keys(o)\n if (typeof o[ks[0]] === 'object') {\n // We can go a level deeper\n for (let k of keys) {\n memo.values = memo.values.concat(`${indent}${k}: {`)\n await getOption(opt[k], memo, lvl + 1)\n memo.values = memo.values.concat(`${indent}},`)\n }\n } else {\n let isRequired = false\n // Yep, innermost level\n for (let k of keys) {\n let optn = opt[k]\n let s\n if (optn.required) {\n isRequired = true\n s = `${indent}${k}: ${optn.example ? optn.example : optn.default}`\n } else {\n if (optn.example) {\n s = `${indent}// ${k}: ${optn.example}`\n } else if (optn.default) {\n s = `${indent}// ${k}: ${optn.default}`\n }\n }\n if (s) {\n memo.values = memo.values.concat(`${s},`)\n }\n }\n memo.required.push(isRequired)\n }\n}\n\nconst createConfigFileContents = async all => {\n const memo = {\n required: [],\n values: configLines.top\n }\n for (let x of all.values) {\n await getOption(x, memo, 0)\n }\n memo.values = memo.values.concat(configLines.bottom)\n\n // This creates a list of imports, where the imports for non-required\n // options are commented out.\n const imports = _.reduce(\n all.imports,\n (m, v, i) => {\n // From example configuration\n v.forEach(o => {\n m.push(memo.required[i] ? o : `// ${o}`)\n })\n return m\n },\n []\n )\n\n return [imports.join('\\n'), '', memo.values.join('\\n'), ''].join('\\n')\n}\n\nconst writeFile = (file, contents) =>\n new Promise((resolve, reject) => {\n return fs.writeFile(file, contents, err => {\n if (err) return reject(err)\n\n stdout.write(`**\\n** Created new config file ${file}\\n**\\n`)\n return resolve()\n })\n })\n\nconst hasConfigFile = () => fs.existsSync(CONFIG_FILE)\n\nconst createConfigFile = async strategy => {\n // Don't do anything if config file exists\n if (!hasConfigFile()) {\n const all = getConfigFragments(strategy)\n const configFileContents = await createConfigFileContents(all)\n writeFile(CONFIG_FILE, configFileContents)\n }\n}\n\nconst postBuild = async () => {\n const linc = packageJson.linc || {}\n if (!linc.sourceDir) {\n linc.sourceDir = await getSourceDir()\n await writePkg(packageJson)\n }\n}\n\nconst build = async (opts, callback) => {\n if (!callback) {\n callback = opts\n } else {\n stdin = opts.stdin || stdin\n stdout = opts.stdout || stdout\n }\n\n const strategy = await createStrategy(getDependencies())\n await createConfigFile(strategy)\n await generateClient(path.resolve(DIST_DIR, 'client.js'), strategy)\n const serverStrategy = generateServerStrategy(\n path.resolve(DIST_DIR, 'server-strategy.js'),\n strategy\n )\n console.log('Creating a client package. This can take a minute or two..')\n const staticCopy = copyStatic()\n await runWebpack(client_config, getWebpackOptions(strategy, 'client'))\n console.log('Created client package')\n\n await generateIncludes(\n path.resolve(LIB_DIR, 'includes.js'),\n path.resolve(LIB_DIR, 'includes')\n )\n\n console.log('Now working on server package')\n await serverStrategy\n await runWebpack(server_config, getWebpackOptions(strategy, 'server'))\n await staticCopy\n console.log('Created server package')\n\n console.log('Running post build operations')\n await postBuild()\n\n console.log(\n 'We have created an overview of your bundles in dist/bundle-report.html'\n )\n\n callback()\n}\n\nmodule.exports = build\n"]}
\No newline at end of file