UNPKG

20 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","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","getOptionValue","option","optionValue","comment","example","default","configLines","top","bottom","opt","memo","lvl","indent","repeat","o","ks","k","isRequired","optn","s","required","createConfigFileContents","x","m","v","i","join","writeFile","file","contents","createConfigFile","CONFIG_FILENAME","configFile","existsSync","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'))\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\n/**\n * Get option value\n * @param option\n * @returns {Promise<*>}\n */\nconst getOptionValue = async option => {\n stdin.resume()\n const optionValue = await ask(\n `${option.comment}, e.g., '${\n option.example ? option.example : option.default\n }'`,\n 'This is a mandatory field. Please enter a value.'\n )\n stdin.pause()\n return optionValue\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 option = 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 option(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}: ${await getOptionValue(optn)}`\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 values: configLines.top,\n required: []\n }\n for (let x of all.values) {\n await option(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 v.forEach(o => m.push(memo.required[i] ? o : `// ${o}`))\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 createConfigFile = async strategy => {\n const CONFIG_FILENAME = 'src/linc.config.js'\n const configFile = path.join(process.cwd(), CONFIG_FILENAME)\n\n // Don't do anything if config file exists\n if (!fs.existsSync(configFile)) {\n const all = getConfigFragments(strategy)\n const contents = await createConfigFileContents(all)\n writeFile(configFile, contents)\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 = 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