{"version":3,"file":"prepublish","sources":["../src/createBabelConfig.js","../src/getBanner.js","../src/cli.js"],"sourcesContent":["import babel from \"rollup-plugin-babel\"\nimport presetEdge from \"babel-preset-edge\"\n\n/* eslint-disable max-params */\nexport function createHelper({\n  mode = \"classic\",\n  minified = false,\n  presets = [],\n  plugins = []\n}) {\n  const additionalPlugins = plugins.concat()\n  const additionalPresets = presets.concat()\n\n  let selectedPreset\n  if (mode === \"modern\") {\n    selectedPreset = [\n      presetEdge,\n      {\n        target: \"modern\",\n        compression: minified\n      }\n    ]\n  } else if (mode === \"es2015\") {\n    selectedPreset = [\n      presetEdge,\n      {\n        target: \"es2015\",\n        compression: minified\n      }\n    ]\n  } else if (mode === \"binary\") {\n    selectedPreset = [\n      presetEdge,\n      {\n        target: \"node\",\n        compression: minified,\n        modules: false\n      }\n    ]\n  } else {\n    selectedPreset = [\n      presetEdge,\n      {\n        target: \"library\",\n        compression: minified\n      }\n    ]\n  }\n\n  return babel({\n    // Don't try to find .babelrc because we want to force this configuration.\n    babelrc: false,\n\n    // Use runtime helpers as implemented by edge preset\n    runtimeHelpers: true,\n\n    // Do not transpile external code\n    // https://github.com/rollup/rollup-plugin-babel/issues/48#issuecomment-211025960\n    exclude: [ \"node_modules/**\", \"**/*.json\" ],\n\n    presets: [\n      selectedPreset,\n\n      // All manually or minification related presets\n      ...additionalPresets\n    ],\n\n    plugins: [\n      // All manually or minification related plugins\n      ...additionalPlugins\n    ]\n  })\n}\n\nexport default function createBabelConfig(options) {\n  return {\n    es5: createHelper({ ...options, mode: \"es5\" }),\n    es2015: createHelper({ ...options, mode: \"es2015\" }),\n    modern: createHelper({ ...options, mode: \"modern\" }),\n    binary: createHelper({ ...options, mode: \"binary\" })\n  }\n}\n","export default function getBanner(pkg) {\n  let banner = `/*! ${pkg.name} v${pkg.version}`\n\n  if (pkg.author) {\n    if (typeof pkg.author === \"object\") {\n      banner += ` by ${pkg.author.name} <${pkg.author.email}>`\n    } else if (typeof pkg.author === \"string\") {\n      banner += ` by ${pkg.author}`\n    }\n  }\n\n  banner += ` */`\n\n  return banner\n}\n","import { resolve, relative, isAbsolute, dirname } from \"path\"\nimport { eachOfSeries } from \"async\"\nimport { camelCase } from \"lodash\"\nimport fileExists from \"file-exists\"\nimport meow from \"meow\"\nimport chalk from \"chalk\"\nimport { get as getRoot } from \"app-root-dir\"\n\nimport { rollup } from \"rollup\"\nimport rebase from \"rollup-plugin-rebase\"\nimport nodeResolve from \"rollup-plugin-node-resolve\"\nimport cjsPlugin from \"rollup-plugin-commonjs\"\nimport jsonPlugin from \"rollup-plugin-json\"\nimport yamlPlugin from \"rollup-plugin-yaml\"\nimport replacePlugin from \"rollup-plugin-replace\"\nimport executablePlugin from \"rollup-plugin-executable\"\n\nimport createBabelConfig from \"./createBabelConfig\"\nimport getBanner from \"./getBanner\"\n\nconst ROOT = getRoot()\nconst PKG_CONFIG = require(resolve(ROOT, \"package.json\"))\n\nlet cache\n\n/* eslint-disable no-console */\n\nconst command = meow(\n  `\n  Usage\n    $ prepublish\n\n  Options\n    --input-node       Input file for NodeJS target [default = auto]\n    --input-web        Input file for Browser target [default = auto]\n    --input-binary     Input file for Binary target [default = auto]\n\n    --output-folder    Configure the output folder [default = auto]\n\n    -x, --minified     Enabled minification of output files\n    -m, --sourcemap    Create a source map file during processing\n\n    -v, --verbose      Verbose output mode [default = false]\n    -q, --quiet        Quiet output mode [default = false]\n`,\n  {\n    flags: {\n      inputNode: {\n        default: null\n      },\n\n      inputWeb: {\n        default: null\n      },\n\n      inputBinary: {\n        default: null\n      },\n\n      outputFolder: {\n        default: null\n      },\n\n      minified: {\n        default: false,\n        alias: \"x\"\n      },\n\n      sourcemap: {\n        default: true,\n        alias: \"m\"\n      },\n\n      verbose: {\n        default: false,\n        alias: \"v\"\n      },\n\n      quiet: {\n        default: false,\n        alias: \"q\"\n      }\n    }\n  }\n)\n\nconst verbose = command.flags.verbose\nconst quiet = command.flags.quiet\n\nif (verbose) {\n  console.log(\"Flags:\", command.flags)\n}\n\n// Handle special case to generate a binary file based on config in package.json\nconst binaryConfig = PKG_CONFIG.bin\nlet binaryOutput = null\nif (binaryConfig) {\n  for (const name in binaryConfig) {\n    binaryOutput = binaryConfig[name]\n    break\n  }\n}\n\n/* eslint-disable dot-notation */\nconst outputFileMatrix = {\n  // NodeJS es5 Target\n  \"node-es5-cjs\": PKG_CONFIG[\"main\"] || null,\n  \"node-es5-esm\": PKG_CONFIG[\"module\"] || PKG_CONFIG[\"jsnext:main\"] || null,\n\n  // NodeJS ES2015 Target\n  \"node-es2015-cjs\": PKG_CONFIG[\"main:es2015\"] || null,\n  \"node-es2015-esm\": PKG_CONFIG[\"es2015\"] || PKG_CONFIG[\"module:es2015\"] || null,\n\n  // NodeJS Modern Target\n  \"node-modern-cjs\": PKG_CONFIG[\"main:modern\"] || null,\n  \"node-modern-esm\": PKG_CONFIG[\"module:modern\"] || null,\n\n  // Browser es5 Target\n  \"web-es5-esm\": PKG_CONFIG[\"web\"] || PKG_CONFIG[\"browser\"] || null,\n\n  // Browser ES2015 Target\n  \"web-es2015-esm\": PKG_CONFIG[\"web:es2015\"] || PKG_CONFIG[\"browser:es2015\"] || null,\n\n  // Browser Modern Target\n  \"web-modern-esm\": PKG_CONFIG[\"web:modern\"] || PKG_CONFIG[\"browser:modern\"] || null,\n\n  // Binary Target\n  \"binary-binary-cjs\": binaryOutput || null\n}\n\nconst outputFolder = command.flags.outputFolder\nif (outputFolder) {\n  outputFileMatrix[\"node-es5-cjs\"] = `${outputFolder}/node.es5.cjs.js`\n  outputFileMatrix[\"node-es5-esm\"] = `${outputFolder}/node.es5.esm.js`\n\n  outputFileMatrix[\"node-es2015-cjs\"] = `${outputFolder}/node.es2015.cjs.js`\n  outputFileMatrix[\"node-es2015-esm\"] = `${outputFolder}/node.es2015.esm.js`\n\n  outputFileMatrix[\"node-modern-cjs\"] = `${outputFolder}/node.modern.cjs.js`\n  outputFileMatrix[\"node-modern-esm\"] = `${outputFolder}/node.modern.esm.js`\n\n  outputFileMatrix[\"web-es5-esm\"] = `${outputFolder}/web.es5.esm.js`\n  outputFileMatrix[\"web-es2015-esm\"] = `${outputFolder}/web.es2015.esm.js`\n  outputFileMatrix[\"web-modern-esm\"] = `${outputFolder}/web.modern.esm.js`\n}\n\nconst name = PKG_CONFIG.name || camelCase(PKG_CONFIG.name)\nconst banner = getBanner(PKG_CONFIG)\nconst targets = {}\nconst formats = [ \"esm\", \"cjs\" ]\n\nif (command.flags.inputNode) {\n  targets.node = [ command.flags.inputNode ]\n} else {\n  targets.node = [\n    \"src/node/public.js\",\n    \"src/node/export.js\",\n    \"src/node.js\",\n\n    \"src/server/public.js\",\n    \"src/server/export.js\",\n    \"src/server.js\",\n\n    \"src/server.js\",\n    \"src/public.js\",\n    \"src/export.js\",\n    \"src/index.js\"\n  ]\n}\n\nif (command.flags.inputWeb) {\n  targets.web = [ command.flags.inputWeb ]\n} else {\n  targets.web = [\n    \"src/web/public.js\",\n    \"src/web/export.js\",\n    \"src/web.js\",\n\n    \"src/browser/public.js\",\n    \"src/browser/export.js\",\n    \"src/browser.js\",\n\n    \"src/client/public.js\",\n    \"src/client/export.js\",\n    \"src/client.js\"\n  ]\n}\n\nif (command.flags.inputBinary) {\n  targets.binary = [ command.flags.inputBinary ]\n} else {\n  targets.binary = [ \"src/cli.js\", \"src/binary.js\", \"src/script.js\" ]\n}\n\n/* eslint-disable max-params */\ntry {\n  eachOfSeries(targets, (envInputs, targetId, envCallback) => {\n    const input = lookupBest(envInputs)\n    if (input) {\n      if (!quiet) {\n        console.log(`Using input ${chalk.blue(input)} for target ${chalk.blue(targetId)}`)\n      }\n\n      eachOfSeries(\n        formats,\n        (format, formatIndex, formatCallback) => {\n          const configs = createBabelConfig({\n            minified: command.flags.minified,\n            presets: [],\n            plugins: []\n          })\n\n          eachOfSeries(\n            configs,\n            (currentTranspiler, transpilerId, variantCallback) => {\n              const outputFile = outputFileMatrix[`${targetId}-${transpilerId}-${format}`]\n              if (outputFile) {\n                return bundleTo({\n                  input,\n                  targetId,\n                  transpilerId,\n                  currentTranspiler,\n                  format,\n                  outputFile,\n                  variantCallback\n                })\n              } else {\n                return variantCallback(null)\n              }\n            },\n            formatCallback\n          )\n        },\n        envCallback\n      )\n    } else {\n      envCallback(null)\n    }\n  })\n} catch (error) {\n  /* eslint-disable no-process-exit */\n  console.error(error)\n  process.exit(1)\n}\n\nfunction lookupBest(candidates) {\n  const filtered = candidates.filter(fileExists.sync)\n  return filtered[0]\n}\n\nfunction isRelative(dependency) {\n  return (/^\\./).exec(dependency)\n}\n\nfunction bundleTo({\n  input,\n  targetId,\n  transpilerId,\n  currentTranspiler,\n  format,\n  outputFile,\n  variantCallback\n}) {\n  if (!quiet) {\n    /* eslint-disable max-len */\n    console.log(\n      `${chalk.green(\">>> Bundling\")} ${chalk.magenta(PKG_CONFIG.name)}-${chalk.magenta(\n        PKG_CONFIG.version\n      )} as ${chalk.blue(transpilerId)} defined as ${chalk.blue(format)} to ${chalk.green(\n        outputFile\n      )}...`\n    )\n  }\n\n  const prefix = \"process.env.\"\n  const variables = {\n    [`${prefix}NAME`]: JSON.stringify(PKG_CONFIG.name),\n    [`${prefix}VERSION`]: JSON.stringify(PKG_CONFIG.version),\n    [`${prefix}TARGET`]: JSON.stringify(targetId)\n  }\n\n  const rebasePlugin = rebase({ verbose })\n  return rollup({\n    input,\n    cache,\n    onwarn: (error) => {\n      console.warn(chalk.red(`  - ${error.message}`))\n    },\n    external(dependency) {\n      // Very simple externalization:\n      // We exclude all files from NodeJS resolve basically which are not relative to current file.\n      // We also bundle absolute paths, these are just an intermediate step in rollup resolving files and\n      // as we do not support resolving from node_modules (we never bundle these) we only hit this code\n      // path for originally local dependencies.\n      return !(dependency === input || isRelative(dependency) || isAbsolute(dependency))\n    },\n    plugins: [\n      rebasePlugin,\n      replacePlugin(variables),\n      cjsPlugin({\n        include: \"node_modules/**\"\n      }),\n      yamlPlugin(),\n      jsonPlugin(),\n      currentTranspiler,\n      transpilerId === \"binary\" ? executablePlugin() : null\n    ].filter(Boolean)\n  })\n    .then((bundle) =>\n      bundle.write({\n        format,\n        name,\n        banner: transpilerId === \"binary\" ? `#!/usr/bin/env node\\n\\n${banner}` : banner,\n        sourcemap: command.flags.sourcemap,\n        file: outputFile\n      })\n    )\n    .then(() => variantCallback(null))\n    .catch((error) => {\n      console.error(error)\n      variantCallback(`Error during bundling ${format}: ${error}`)\n    })\n}\n"],"names":["createHelper","mode","minified","presets","plugins","additionalPlugins","concat","additionalPresets","selectedPreset","presetEdge","target","compression","modules","babel","babelrc","runtimeHelpers","exclude","createBabelConfig","options","es5","es2015","modern","binary","getBanner","pkg","banner","name","version","author","email","ROOT","getRoot","PKG_CONFIG","require","resolve","cache","command","meow","flags","inputNode","default","inputWeb","inputBinary","outputFolder","alias","sourcemap","verbose","quiet","console","log","binaryConfig","bin","binaryOutput","outputFileMatrix","targets","formats","node","web","envInputs","targetId","envCallback","input","lookupBest","chalk","blue","format","formatIndex","formatCallback","configs","currentTranspiler","transpilerId","variantCallback","outputFile","bundleTo","error","process","exit","candidates","filtered","filter","fileExists","sync","isRelative","dependency","exec","green","magenta","prefix","variables","JSON","stringify","rebasePlugin","rebase","rollup","onwarn","warn","red","message","external","isAbsolute","replacePlugin","cjsPlugin","include","yamlPlugin","jsonPlugin","executablePlugin","Boolean","then","bundle","write","file","catch"],"mappings":"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"}