├── .gitignore ├── .travis.yml ├── README.md ├── babel-external-helpers.js ├── babel-plugin └── transform-symbol-member.js ├── babel.js ├── data.js ├── getopt.js ├── getsubopt.js ├── package.json ├── test.sh └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | ignore/ 3 | babel-runtime 4 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - "6" 4 | - "node" 5 | 6 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Better Babel CLI 2 | 3 | The babel 6 cli is actively user hostile. They "encourage" you to install it 4 | locally for every project. Installing it globally is a waste of time. 5 | 6 | Did I mention a local install of babel-cli and nothing else takes up 7 | 39 Megabytes? And that doesn't even include any of the plugins that 8 | actually make babel useful. Why is that acceptable to anyone? 9 | 10 | This is a replacement which includes all the plugins, is global happy, 11 | works great on the command-line and in makefiles, doesn't require `.babelrc` 12 | files to configure, and somehow only takes up 20 Megabytes (which is still 13 | excessive but that's node for you.) 14 | 15 | ## Install 16 | 17 | [sudo] npm uninstall -g babel-cli 18 | [sudo] npm install -g better-babel-cli 19 | 20 | ## Example 21 | 22 | You can either run it on the command line or put it in your makefile. 23 | 24 | ### Makefile: 25 | 26 | out/%.js : src/%.jsx 27 | babel --react --es2015 --object-rest-spread -o $@ -- $< 28 | 29 | out/%.js : src/%.js 30 | babel --es2015 -o $@ -- $< 31 | 32 | 33 | ### Commandline: 34 | 35 | babel --verbose --es2015 --stage-0 36 | (reads stdin, writes to stdout) 37 | 38 | 39 | Use `--preset` or `--plugin` to enable transformations. You can also 40 | use `--no-plugin` to disable a plugin (if it was part of a preset, for 41 | example.). `--foo` and `--transform-foo` are equivalent to 42 | `require(babel-plugin-transform-foo)`. 43 | 44 | run `babel --help`, `babel --help-presets`, or `babel --help-plugins` to see 45 | a list of presets and plugins. 46 | 47 | 48 | ### Configuration 49 | 50 | Some plugins allow configuration options. Run `babel --help-config` for 51 | details. These may be specified as optional sub-arguments on the command-line. 52 | 53 | For example: 54 | 55 | babel --transform-es2015-template-literals loose=true,spec=false 56 | babel --transform-es2015-template-literals loose,spec=false 57 | 58 | `loose` is equivalent to `loose=true`. `--loose` and `--spec` set the loose 59 | and spec properties, respectively, for all plugins. 60 | 61 | `--transform-es2015-modules-umd` is a special case. This `.babelrc` 62 | 63 | { 64 | "plugins": [ 65 | ["transform-es2015-modules-umd", { 66 | "globals": { 67 | "es6-promise": "Promise" 68 | } 69 | }] 70 | ] 71 | } 72 | 73 | is handled as: 74 | 75 | babel --transform-es2015-modules-umd es6-promise=Promise,... 76 | 77 | 78 | -------------------------------------------------------------------------------- /babel-external-helpers.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | /* 4 | * Copyright (c) 2016 Kelvin W Sherlock 5 | * 6 | * Permission to use, copy, modify, and distribute this software for any 7 | * purpose with or without fee is hereby granted, provided that the above 8 | * copyright notice and this permission notice appear in all copies. 9 | * 10 | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 11 | * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 12 | * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 13 | * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 14 | * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 15 | * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 16 | * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 17 | */ 18 | 19 | 20 | "use strict"; 21 | 22 | 23 | var fs = require("fs"); 24 | 25 | var babel = require('babel-core'); 26 | const EX = require('sysexits'); 27 | var getopt_long = require('./getopt').getopt_long; 28 | var bh = require('babel-helpers'); 29 | var bt = require('babel-types'); 30 | var bg = require("babel-generator"); 31 | 32 | var opts = { 33 | o: null, 34 | l: null, 35 | t: 'global' 36 | }; 37 | 38 | const formats = new Set(["export","global", "umd", "var", "runtime"]); 39 | 40 | 41 | 42 | /* 43 | * returns true if directory created, false if directory previously existed 44 | * throws on error. 45 | */ 46 | function xmkdir(path, mode) { 47 | var ex, error; 48 | try { 49 | fs.mkdirSync(path, mode); 50 | return true; 51 | 52 | } catch(ex) {error = ex} ; 53 | 54 | try { 55 | var stats = fs.statSync(path); 56 | if (stats.isDirectory()) return false; 57 | } catch(ex) {} 58 | 59 | throw error; 60 | } 61 | 62 | function iterate_functions(whitelist, callback) { 63 | 64 | var list = bh.list; 65 | list.forEach( function(fn){ 66 | if (whitelist && whitelist.indexOf(fn) < 0) return; 67 | 68 | callback(fn, bh.get(fn)); 69 | }); 70 | } 71 | 72 | 73 | /* 74 | * As of 4/18/2016, buildExternalHelpers does not support export 75 | * (a pull request has been submitted) 76 | * 77 | */ 78 | 79 | function buildExternalHelpers(list, type) { 80 | var ex; 81 | try { 82 | return babel.buildExternalHelpers(list, type); 83 | } catch (ex) { 84 | if (type === 'export') return buildExports(list); 85 | } 86 | } 87 | 88 | 89 | 90 | 91 | function buildExports(whitelist) { 92 | 93 | var body = []; 94 | var exports = []; 95 | 96 | iterate_functions(whitelist, function(fn, template){ 97 | 98 | var _key = bt.identifier("_" + fn); 99 | var key = bt.identifier(fn); 100 | 101 | body.push( 102 | bt.variableDeclaration("var", [ 103 | bt.variableDeclarator(_key, template) 104 | ]) 105 | ); 106 | 107 | exports.push(bt.exportSpecifier(_key, key)); 108 | }); 109 | 110 | body.push( 111 | bt.exportNamedDeclaration( 112 | null, 113 | exports, 114 | null 115 | ) 116 | ); 117 | 118 | var tree = bt.program(body); 119 | var code = bg.default(tree).code; 120 | return code; 121 | } 122 | 123 | function buildRuntime(path, whitelist) { 124 | var ex; 125 | 126 | path = path || ''; 127 | if (path) path += '/'; 128 | 129 | try { 130 | path += "babel-runtime" 131 | xmkdir(path); 132 | path += "/helpers" 133 | xmkdir(path); 134 | } catch (ex) { 135 | console.log(ex.message); 136 | process.exit(EX.CANTCREAT); 137 | } 138 | 139 | var _default = bt.identifier("default"); 140 | iterate_functions(whitelist, function(fn, template){ 141 | 142 | var _key = bt.identifier("_" + fn); 143 | var body = []; 144 | 145 | body.push( 146 | bt.variableDeclaration("var", [ 147 | bt.variableDeclarator(_key, template) 148 | ]) 149 | ); 150 | 151 | body.push( 152 | bt.exportNamedDeclaration( 153 | null, 154 | [bt.exportSpecifier(_key, _default)], 155 | null 156 | ) 157 | ); 158 | var tree = bt.program(body); 159 | var code = bg.default(tree).code; 160 | fs.writeFileSync(`${path}/${fn}.js`, code + "\n"); 161 | }); 162 | } 163 | 164 | 165 | function help(exitcode) { 166 | 167 | console.log("babel-external-helpers [options]"); 168 | console.log(""); 169 | console.log("Options:"); 170 | console.log(" -o [outfile] Write output to file."); 171 | console.log(" -h, --help Display usage information."); 172 | console.log(" -l, --whitelist [list] Whitelist of helpers to ONLY include."); 173 | console.log(" -t, --output-type [type] Type of output (export|global|runtime|umd|var)."); 174 | 175 | process.exit(exitcode); 176 | } 177 | 178 | function version() { 179 | var pkg = require('./package.json'); 180 | console.log(`better-babel-external-helpers version ${pkg.version}`); 181 | } 182 | 183 | var argv = getopt_long(null, "hl:t:o:V", ["help","whitelist=s","output-type=s", "version"], function(arg, optarg){ 184 | 185 | switch(arg) { 186 | case 'help': 187 | case 'h': 188 | help(EX.OK); 189 | break; 190 | 191 | case 'V': 192 | case 'version': 193 | version(); 194 | process.exit(EX.OK); 195 | break; 196 | 197 | case 'l': 198 | case 'whitelist': 199 | opts.l = optarg.split(',') 200 | .map( x => x.replace(/^\s+|\s+$/,'','g') ) 201 | .filter( x => !!x.length ) 202 | ; 203 | break; 204 | case 't': 205 | case 'output-type': 206 | opts.t = optarg; 207 | break; 208 | case 'o': 209 | opts.o = optarg === '-' ? null : optarg; 210 | break; 211 | } 212 | 213 | }); 214 | 215 | if (opts.t === "runtime") { 216 | buildRuntime(opts.o, opts.l); 217 | process.exit(EX.OK); 218 | } 219 | 220 | var ex; 221 | var code; 222 | 223 | try { 224 | code = buildExternalHelpers(opts.l, opts.t); 225 | } catch (ex) { 226 | console.log(ex.message); 227 | process.exit(EX.USAGE); 228 | } 229 | 230 | code += "\n"; 231 | 232 | if (opts.o) { 233 | var fd; 234 | try { 235 | fd = fs.openSync(opts.o, 'w', 0o666); 236 | } catch(ex) { 237 | console.warn(ex.message); 238 | process.exit(EX.CANTCREAT); 239 | } 240 | 241 | fs.writeFileSync(fd, code); 242 | fs.closeSync(fd); 243 | process.exit(EX.OK); 244 | } 245 | 246 | process.stdout.write(code); 247 | process.exit(EX.OK); 248 | -------------------------------------------------------------------------------- /babel-plugin/transform-symbol-member.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2004-present Facebook. All Rights Reserved. 3 | */ 4 | 5 | 'use strict'; 6 | 7 | /*eslint consistent-return: 0*/ 8 | 9 | /** 10 | * Transforms function properties of the `Symbol` into 11 | * the presence check, and fallback string "@@". 12 | * 13 | * Example: 14 | * 15 | * Symbol.iterator; 16 | * 17 | * Transformed to: 18 | * 19 | * typeof Symbol.iterator === 'function' ? Symbol.iterator : '@@iterator'; 20 | */ 21 | module.exports = function symbolMember(babel) { 22 | const t = babel.types; 23 | 24 | return { 25 | visitor: { 26 | MemberExpression(path) { 27 | if (!isAppropriateMember(path)) { 28 | return; 29 | } 30 | 31 | let node = path.node; 32 | 33 | path.replaceWith( 34 | t.conditionalExpression( 35 | t.binaryExpression( 36 | '===', 37 | t.unaryExpression( 38 | 'typeof', 39 | t.identifier('Symbol'), 40 | true 41 | ), 42 | t.stringLiteral('function') 43 | ), 44 | node, 45 | t.stringLiteral(`@@${node.property.name}`) 46 | ) 47 | ); 48 | 49 | // We should stop to avoid infinite recursion, since Babel 50 | // traverses replaced path, and again would hit our transform. 51 | path.stop(); 52 | }, 53 | }, 54 | }; 55 | }; 56 | 57 | function isAppropriateMember(path) { 58 | let node = path.node; 59 | 60 | return path.parentPath.type !== 'AssignmentExpression' && 61 | node.object.type === 'Identifier' && 62 | node.object.name === 'Symbol' && 63 | node.property.type === 'Identifier'; 64 | } 65 | -------------------------------------------------------------------------------- /babel.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | /* 4 | * Copyright (c) 2016 Kelvin W Sherlock 5 | * 6 | * Permission to use, copy, modify, and distribute this software for any 7 | * purpose with or without fee is hereby granted, provided that the above 8 | * copyright notice and this permission notice appear in all copies. 9 | * 10 | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 11 | * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 12 | * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 13 | * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 14 | * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 15 | * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 16 | * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 17 | */ 18 | 19 | 20 | "use strict"; 21 | /* 22 | * babel [options] files... 23 | * like babel cli, but you can actually use it. 24 | * 25 | */ 26 | 27 | var babel = require('babel-core'); 28 | var fs = require("fs"); 29 | const EX = require('sysexits'); 30 | 31 | var getopt_long = require('./getopt').getopt_long; 32 | var getsubopt = require('./getsubopt'); 33 | var data = require('./data'); 34 | 35 | function _(x) { 36 | return Array.isArray(x) ? x : [x]; 37 | } 38 | 39 | /* delete and re-insert a key in a map so it shuffles to the end */ 40 | function move_back(map, key) { 41 | 42 | if (map.has(key)) { 43 | let tmp = map.get(key); 44 | map.delete(key); 45 | map.set(key, tmp); 46 | } 47 | } 48 | 49 | function transform(code, options) { 50 | var ex; 51 | try { 52 | return babel.transform(code, options); 53 | } 54 | catch(ex) { 55 | console.warn(ex.message); 56 | if (ex.codeFrame) 57 | console.warn(ex.codeFrame); 58 | 59 | process.exit(EX.DATAERR); 60 | } 61 | } 62 | 63 | function transformFile(file, options) { 64 | var ex; 65 | try { 66 | return babel.transformFileSync(file, options); 67 | } 68 | catch(ex) { 69 | console.warn(ex.message); 70 | if (ex.code === 'ENOENT') 71 | process.exit(EX.NOINPUT); 72 | 73 | if (ex.codeFrame) 74 | console.warn(ex.codeFrame); 75 | 76 | process.exit(EX.DATAERR); 77 | } 78 | } 79 | 80 | function read_stdin() { 81 | 82 | return new Promise(function(resolve, reject){ 83 | var rv = ''; 84 | var stdin = process.stdin; 85 | stdin.setEncoding("utf8"); 86 | 87 | stdin.on("data", function (chunk) { 88 | rv += chunk; 89 | }); 90 | 91 | stdin.on("end", function () { 92 | resolve(rv); 93 | }); 94 | }) 95 | } 96 | 97 | function coerce_type(v, t) { 98 | if (t == Array) return v.split((/\s*;\s*/)).filter( (x) => x.length > 0); 99 | if (t == Boolean) { 100 | switch(v) { 101 | case undefined: // 'tdz' => key=tdz, value=undefined ... so treat as true. 102 | case null: 103 | case "true": 104 | return true; 105 | case "false": 106 | case "": 107 | case "0": 108 | return false; 109 | case true: 110 | case false: 111 | return v; 112 | default: 113 | var x = Number.parseInt(v,10); 114 | if (Number.isNaN(x)) return false; 115 | return x != 0; 116 | } 117 | } 118 | if (t == Number) { 119 | if (v.match(/^0x/)) return Number.parseInt(v, 16); 120 | return Number.parseInt(v, 10); 121 | } 122 | 123 | return v; 124 | } 125 | 126 | 127 | function coerce_types(data, keys) { 128 | 129 | var lookup = function(o,k) { 130 | return Object.prototype.hasOwnProperty.call(o, k) ? o[k] : void(0); 131 | }; 132 | 133 | var rv = {}; 134 | Object.keys(data).forEach((k) => { 135 | 136 | var v = data[k]; 137 | var type = lookup(keys, k); 138 | 139 | rv[k] = coerce_type(v, type); 140 | 141 | }); 142 | 143 | return rv; 144 | } 145 | 146 | /* move unknown options into a child object. */ 147 | function splatify(data, keys) { 148 | 149 | var splat = {}; 150 | var rv = {}; 151 | 152 | var lookup = function(o,k) { 153 | return Object.prototype.hasOwnProperty.call(o, k) ? o[k] : void(0); 154 | }; 155 | 156 | // find the splat object in keys 157 | Object.keys(keys).forEach( (k) => { 158 | if (keys[k] === Object) rv[k] = splat; 159 | }); 160 | 161 | Object.keys(data).forEach((k) => { 162 | 163 | var v = data[k]; 164 | var type = lookup(keys, k); 165 | 166 | switch(type) { 167 | case Object: // same name as the splat key. 168 | case undefined: 169 | splat[k] = v; 170 | break; 171 | default: 172 | rv[k] = coerce_type(v, type); 173 | break; 174 | } 175 | 176 | }); 177 | 178 | return rv; 179 | } 180 | 181 | function version() { 182 | var pkg = require('./package.json'); 183 | console.log(`better-babel-cli version ${pkg.version}`); 184 | } 185 | 186 | function help_presets(verbose) { 187 | 188 | console.log("Presets:"); 189 | 190 | var x = []; 191 | data.presets.forEach(function(v,k) { x.push(k); }); 192 | x.sort(); 193 | x.forEach(function(k){ 194 | console.log(` --${k}`); 195 | if (verbose) { 196 | var y = data.presets.get(k).map(function(k){ 197 | return Array.isArray(k) ? k[0] : k; 198 | }); 199 | y.sort(); 200 | y.forEach(function(k){ 201 | console.log(` ${k}`); 202 | }); 203 | console.log(""); 204 | } 205 | }); 206 | } 207 | 208 | function help_plugins() { 209 | 210 | console.log("Plugins:"); 211 | 212 | var x = []; 213 | data.plugins.forEach(function(k) { x.push(k); }); 214 | x.sort(); 215 | x.forEach(function(k){console.log(` --${k}`); }); 216 | } 217 | 218 | function config_str(o) { 219 | 220 | return Object.keys(o).map(function(k){ 221 | return `${k}=${o[k].name}`; 222 | }).join(','); 223 | } 224 | function help_config() { 225 | 226 | console.log("Configuration:"); 227 | 228 | data.config.forEach(function(v, k) { 229 | console.log(`--${k} ${config_str(v)}`); 230 | }); 231 | } 232 | 233 | function help(exitcode) { 234 | 235 | console.log("babel [options] infile..."); 236 | console.log(""); 237 | console.log("Options:"); 238 | console.log(" -o [outfile] Write output to file."); 239 | console.log(" -h, --help Display usage information."); 240 | console.log(" --help-presets Display presets."); 241 | console.log(" --help-plugins Display plugins."); 242 | console.log(" --help-config Display plugin configuration."); 243 | console.log(" -v, --[no-]verbose Enable/Disable verbose mode."); 244 | console.log(" -V, --version Display version information."); 245 | console.log(" --[no-]babelrc Enable/Disable .babelrc."); 246 | console.log(" --[no-]comments Enable/Disable comments."); 247 | console.log(" --[no-]compact Enable/Disable compaction."); 248 | console.log(" --loose Enable loose mode."); 249 | console.log(" --spec Enable spec mode."); 250 | console.log(" --tdz Enable tdz mode."); 251 | console.log(" --preset [name] Enable specified preset."); 252 | console.log(" --[no-]plugin [plugin] Enable/Disable specified plugin."); 253 | 254 | /* 255 | console.log(""); 256 | help_presets(); 257 | 258 | console.log(""); 259 | help_plugins(); 260 | */ 261 | process.exit(exitcode); 262 | } 263 | 264 | var nono = new Map(); 265 | var plugins = new Map(); 266 | var verbose = false; 267 | var outfile = null; 268 | var ex; 269 | var loose = false; 270 | var spec = false; 271 | var tdz = false; 272 | 273 | var babelrc = { 274 | babelrc: false, 275 | plugins: [] 276 | }; 277 | 278 | var go = [ "help", "help-plugins", "help-presets", "help-config", 279 | "verbose!", "version", "babelrc!", "comments!", "compact!", "loose!", "spec!", "tdz!"]; 280 | 281 | // add pre-sets 282 | data.presets.forEach(function(v, k){ 283 | go.push(k); 284 | }); 285 | 286 | 287 | // add plug-ins. 288 | data.plugins.forEach(function(k){ 289 | var m; 290 | go.push(`${k}:s`); 291 | go.push(`no-${k}`); 292 | 293 | nono.set(`no-${k}`, k); 294 | 295 | 296 | // --transform-this-that == --this-that 297 | if (m = k.match(/^transform-(.+)$/)) { 298 | var k2 = m[1]; 299 | go.push(`${k2}:s`); 300 | go.push(`no-${k2}`); 301 | 302 | nono.set(`no-${k2}`, k); 303 | } 304 | }); 305 | 306 | var argv = getopt_long(process.argv.slice(2), "hVvo:", go, 307 | function(key, optarg) { 308 | 309 | switch(key) { 310 | case ':': 311 | case '?': 312 | // optarg is an Error object. 313 | console.warn(optarg.message); 314 | process.exit(EX.USAGE); 315 | break; 316 | 317 | case 'h': 318 | case 'help': 319 | help(EX.OK); 320 | case 'help-plugins': 321 | help_plugins(); 322 | process.exit(EX.OK); 323 | 324 | case 'help-presets': 325 | help_presets(true); 326 | process.exit(EX.OK); 327 | 328 | case "help-config": 329 | help_config(); 330 | process.exit(EX.OK); 331 | 332 | case 'V': 333 | case 'version': 334 | version(); 335 | process.exit(EX.OK); 336 | 337 | case 'v': 338 | verbose = true; 339 | break; 340 | 341 | case 'verbose': 342 | verbose = optarg; 343 | break; 344 | 345 | case 'babelrc': 346 | babelrc.babelrc = optarg; 347 | break; 348 | 349 | case 'comments': 350 | babelrc.comments = optarg; 351 | break; 352 | 353 | case 'compact': 354 | babelrc.compact = optarg; 355 | break; 356 | 357 | case 'loose': 358 | loose = optarg; 359 | break; 360 | 361 | case 'spec': 362 | spec = optarg; 363 | break; 364 | 365 | case 'tdz': 366 | tdz = optarg; 367 | break; 368 | 369 | 370 | case 'o': 371 | if (optarg === '-') optarg = null; 372 | outfile = optarg; 373 | break; 374 | 375 | default: 376 | // --preset ? 377 | var x = key; 378 | if (data.presets.has(x)) { 379 | data.presets.get(x).forEach(function(k){ 380 | if (Array.isArray(k)) { 381 | plugins.set(k[0], k[1]); 382 | } else { 383 | plugins.set(k, {}); 384 | } 385 | }); 386 | break; 387 | } 388 | 389 | // --no plugin? 390 | if (nono.has(x)) { 391 | plugins.delete(nono.get(x)); 392 | break; 393 | } 394 | 395 | // --plugin? 396 | if (data.plugins.has(x)) { 397 | plugins.set(x, optarg ? getsubopt(optarg) : {}); 398 | break; 399 | } 400 | 401 | x = 'transform-' + key; 402 | if (data.plugins.has(x)) { 403 | plugins.set(x, optarg ? getsubopt(optarg) : {}); 404 | break; 405 | } 406 | 407 | 408 | console.warn(`Unknown plugin/preset: ${key}`); 409 | process.exit(EX.USAGE); 410 | break; 411 | } 412 | }); 413 | 414 | 415 | /* 416 | * NOTE: Order of Plugins Matters! 417 | * 418 | * If you are including your plugins manually and using transform-class-properties, 419 | * make sure that transform-decorators[-legacy] comes before transform-class-properties. 420 | */ 421 | 422 | /* turns out the above advice is backwards.... */ 423 | 424 | // should also check for conflicts, eg, react / vue / inferno. 425 | 426 | if (plugins.has('transform-class-properties')) { 427 | move_back(plugins, 'transform-decorators'); 428 | move_back(plugins, 'transform-decorators-legacy'); 429 | 430 | // transform-class-properties should come before transform-es2015-classes 431 | move_back(plugins, 'transform-es2015-classes'); 432 | } 433 | 434 | 435 | 436 | 437 | // special handling for config options that go into a child object 438 | plugins.forEach(function(value,key,map){ 439 | 440 | var config = data.config.get(key); 441 | switch(key) { 442 | case 'transform-es2015-modules-umd': 443 | case 'minify-mangle-names': 444 | value = splatify(value, config); 445 | map.set(key, value); 446 | break; 447 | case 'minify-replace': 448 | // todo -- overly complicated structure... 449 | break; 450 | default: 451 | value = coerce_types(value, config); 452 | map.set(key, value); 453 | break; 454 | } 455 | 456 | }); 457 | 458 | if (loose) { 459 | plugins.forEach(function(value, key, map){ 460 | var x = data.config.get(key); 461 | if (x && x.loose === Boolean) value.loose = true; 462 | }); 463 | } 464 | 465 | if (spec) { 466 | plugins.forEach(function(value, key, map){ 467 | var x = data.config.get(key); 468 | if (x && x.spec === Boolean) value.spec = true; 469 | }); 470 | } 471 | 472 | if (tdz) { 473 | plugins.forEach(function(value, key, map){ 474 | var x = data.config.get(key); 475 | if (x && x.tdz === Boolean) value.tdz = true; 476 | }); 477 | } 478 | 479 | 480 | plugins.forEach(function(value,key,map){ 481 | if (verbose) console.warn(`requiring ${key}`); 482 | var x, y, ex; 483 | 484 | try { 485 | x = `./babel-plugin/${key}.js`; 486 | y = require(x); 487 | y = y.__esModule ? y.default : y; 488 | babelrc.plugins.push([y, value]); 489 | return; 490 | } catch(ex) {} 491 | 492 | try { 493 | x = `babel-plugin-${key}`; 494 | y = require(x); 495 | y = y.__esModule ? y.default : y; 496 | babelrc.plugins.push([y, value]); 497 | return; 498 | } catch(ex) { 499 | console.warn(`Unable to load plugin ${key}`); 500 | console.warn(ex.message); 501 | } 502 | 503 | }); 504 | 505 | var fd = -1; 506 | if (outfile) { 507 | try { 508 | fd = fs.openSync(outfile, 'w', 0o666); 509 | } catch(ex) { 510 | console.warn(ex.message); 511 | process.exit(EX.CANTCREAT); 512 | } 513 | } 514 | 515 | if (argv.length) { 516 | argv.forEach(function(infile){ 517 | babelrc.filename = infile; 518 | if (verbose) console.warn(`transforming ${infile}`); 519 | var result = transformFile(infile, babelrc); 520 | 521 | if (outfile) { 522 | fs.appendFileSync(fd, result.code); 523 | fs.appendFileSync(fd, "\n"); 524 | } 525 | else { 526 | process.stdout.write(result.code); 527 | process.stdout.write("\n"); 528 | } 529 | }); 530 | if (fd != -1) fs.closeSync(fd); 531 | process.exit(EX.OK); 532 | } 533 | 534 | // read from stdin.... 535 | 536 | if (verbose) console.warn(`transforming stdin`); 537 | read_stdin().then(function(code){ 538 | 539 | babelrc.filename=""; 540 | var result = transform(code, babelrc); 541 | 542 | if (outfile) { 543 | fs.appendFileSync(fd, result.code); 544 | fs.appendFileSync(fd, "\n"); 545 | fs.closeSync(fd); 546 | } 547 | else { 548 | process.stdout.write(result.code); 549 | process.stdout.write("\n"); 550 | } 551 | process.exit(EX.OK); 552 | 553 | }).catch((ex) => { 554 | console.warn(ex.message); 555 | process.exit(EX.DATAERR); 556 | }); 557 | 558 | -------------------------------------------------------------------------------- /data.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | exports.plugins = new Set([ 4 | 'check-es2015-constants', 5 | 'external-helpers', 6 | 'syntax-async-functions', 7 | 'syntax-async-generators', 8 | 'syntax-class-constructor-call', 9 | 'syntax-class-properties', 10 | 'syntax-decorators', 11 | 'syntax-do-expressions', 12 | 'syntax-dynamic-import', 13 | 'syntax-exponentiation-operator', 14 | 'syntax-export-extensions', 15 | 'syntax-flow', 16 | 'syntax-function-bind', 17 | 'syntax-function-sent', 18 | 'syntax-jsx', 19 | 'syntax-object-rest-spread', 20 | 'syntax-trailing-function-commas', 21 | 'transform-async-functions', 22 | 'transform-async-generator-functions', 23 | 'transform-async-to-generator', 24 | 'transform-async-to-module-method', 25 | 'transform-class-constructor-call', 26 | 'transform-class-properties', 27 | 'transform-decorators', 28 | 'transform-do-expressions', 29 | 'transform-es2015-arrow-functions', 30 | 'transform-es2015-block-scoped-functions', 31 | 'transform-es2015-block-scoping', 32 | 'transform-es2015-classes', 33 | 'transform-es2015-computed-properties', 34 | 'transform-es2015-destructuring', 35 | 'transform-es2015-duplicate-keys', 36 | 'transform-es2015-for-of', 37 | 'transform-es2015-function-name', 38 | 'transform-es2015-instanceof', 39 | 'transform-es2015-literals', 40 | 'transform-es2015-modules-amd', 41 | 'transform-es2015-modules-commonjs', 42 | 'transform-es2015-modules-systemjs', 43 | 'transform-es2015-modules-umd', 44 | 'transform-es2015-object-super', 45 | 'transform-es2015-parameters', 46 | 'transform-es2015-shorthand-properties', 47 | 'transform-es2015-spread', 48 | 'transform-es2015-sticky-regex', 49 | 'transform-es2015-template-literals', 50 | 'transform-es2015-typeof-symbol', 51 | 'transform-es2015-unicode-regex', 52 | 'transform-es3-member-expression-literals', 53 | 'transform-es3-property-literals', 54 | 'transform-es5-property-mutators', 55 | 'transform-eval', 56 | 'transform-exponentiation-operator', 57 | 'transform-export-extensions', 58 | 'transform-flow-comments', 59 | 'transform-flow-strip-types', 60 | 'transform-function-bind', 61 | 'transform-jscript', 62 | 'transform-object-assign', 63 | 'transform-object-rest-spread', 64 | 'transform-object-set-prototype-of-to-assign', 65 | 'transform-proto-to-assign', 66 | 'transform-react-constant-elements', 67 | 'transform-react-display-name', 68 | 'transform-react-inline-elements', 69 | 'transform-react-jsx', 70 | 'transform-react-jsx-compat', 71 | 'transform-react-jsx-self', 72 | 'transform-react-jsx-source', 73 | 'transform-regenerator', 74 | 'transform-runtime', 75 | 'transform-strict-mode', 76 | 'undeclared-variables-check', 77 | 78 | // babili 79 | 'minify-builtins', 80 | 'minify-constant-folding', 81 | 'minify-dead-code-elimination', 82 | 'minify-flip-comparisons', 83 | 'minify-guarded-expressions', 84 | 'minify-infinity', 85 | 'minify-mangle-names', 86 | 'minify-numeric-literals', 87 | 'minify-replace', 88 | 'minify-simplify', 89 | 'minify-type-constructors', 90 | 'transform-inline-consecutive-adds', 91 | 'transform-inline-environment-variables', 92 | 'transform-member-expression-literals', 93 | 'transform-merge-sibling-variables', 94 | 'transform-minify-booleans', 95 | 'transform-node-env-inline', 96 | 'transform-property-literals', 97 | 'transform-regexp-constructors', 98 | 'transform-remove-console', 99 | 'transform-remove-debugger', 100 | 'transform-remove-undefined', 101 | 'transform-simplify-comparison-operators', 102 | 'transform-undefined-to-void', 103 | 104 | // 3rd party but core babel developers. 105 | 'transform-decorators-legacy', 106 | //'transform-unicode-property-regex', 107 | 108 | // 3rd party 109 | 'inferno', 110 | 'lodash', 111 | 'mjsx', 112 | 'transform-symbol-member', 113 | 'transform-vue-jsx', 114 | ]); 115 | 116 | exports.presets = new Map([ 117 | ['react', [ 118 | 'syntax-jsx', 119 | 'transform-flow-strip-types', 120 | 'transform-react-jsx', 121 | 'transform-react-display-name', 122 | ]], 123 | 124 | // https://github.com/facebook/react-native/tree/master/babel-preset 125 | ['react-native', [ 126 | 'syntax-async-functions', 127 | 'syntax-class-properties', 128 | 'syntax-dynamic-import', 129 | 'syntax-trailing-function-commas', 130 | 'transform-class-properties', 131 | 'transform-es2015-function-name', 132 | 'transform-es2015-arrow-functions', 133 | 'transform-es2015-block-scoping', 134 | 'transform-es2015-classes', 135 | 'transform-es2015-computed-properties', 136 | 'check-es2015-constants', 137 | 'transform-es2015-destructuring', 138 | ['transform-es2015-modules-commonjs', { strict: false, allowTopLevelThis: true }], 139 | 'transform-es2015-parameters', 140 | 'transform-es2015-shorthand-properties', 141 | 'transform-es2015-spread', 142 | 'transform-es2015-template-literals', 143 | 'transform-es2015-literals', 144 | 'transform-flow-strip-types', 145 | 'transform-object-assign', 146 | 'transform-object-rest-spread', 147 | 'transform-react-display-name', 148 | 'transform-react-jsx-source', 149 | 'transform-react-jsx', 150 | 'transform-regenerator', 151 | ['transform-es2015-for-of', { loose: true }], 152 | 'transform-symbol-member', // part of --preset-react-native 153 | ]], 154 | 155 | ['es2015', [ 156 | 'transform-es2015-template-literals', 157 | 'transform-es2015-literals', 158 | 'transform-es2015-function-name', 159 | 'transform-es2015-arrow-functions', 160 | 'transform-es2015-block-scoped-functions', 161 | 'transform-es2015-classes', 162 | 'transform-es2015-object-super', 163 | 'transform-es2015-shorthand-properties', 164 | 'transform-es2015-duplicate-keys', 165 | 'transform-es2015-computed-properties', 166 | 'transform-es2015-for-of', 167 | 'transform-es2015-sticky-regex', 168 | 'transform-es2015-unicode-regex', 169 | 'check-es2015-constants', 170 | 'transform-es2015-spread', 171 | 'transform-es2015-parameters', 172 | 'transform-es2015-destructuring', 173 | 'transform-es2015-block-scoping', 174 | 'transform-es2015-typeof-symbol', 175 | ['transform-regenerator', { async: false, asyncGenerators: false }], 176 | ]], 177 | 178 | // as above but add helpers, remove common-js 179 | ['es2015-rollup', [ 180 | 'transform-es2015-template-literals', 181 | 'transform-es2015-literals', 182 | 'transform-es2015-function-name', 183 | 'transform-es2015-arrow-functions', 184 | 'transform-es2015-block-scoped-functions', 185 | 'transform-es2015-classes', 186 | 'transform-es2015-object-super', 187 | 'transform-es2015-shorthand-properties', 188 | 'transform-es2015-duplicate-keys', 189 | 'transform-es2015-computed-properties', 190 | 'transform-es2015-for-of', 191 | 'transform-es2015-sticky-regex', 192 | 'transform-es2015-unicode-regex', 193 | 'check-es2015-constants', 194 | 'transform-es2015-spread', 195 | 'transform-es2015-parameters', 196 | 'transform-es2015-destructuring', 197 | 'transform-es2015-block-scoping', 198 | 'transform-es2015-typeof-symbol', 199 | ['transform-regenerator', { async: false, asyncGenerators: false }], 200 | 'external-helpers', 201 | ]], 202 | 203 | ['es2016', [ 204 | 'transform-exponentiation-operator', 205 | ]], 206 | 207 | ['es2017', [ 208 | 'syntax-trailing-function-commas', 209 | 'transform-async-to-generator', 210 | ]], 211 | 212 | // latest is es2015, es2106, es2017. 213 | // (todo -- babel latest has options to include/exclude each) 214 | ['latest', [ 215 | // es 2015 216 | 'transform-es2015-template-literals', 217 | 'transform-es2015-literals', 218 | 'transform-es2015-function-name', 219 | 'transform-es2015-arrow-functions', 220 | 'transform-es2015-block-scoped-functions', 221 | 'transform-es2015-classes', 222 | 'transform-es2015-object-super', 223 | 'transform-es2015-shorthand-properties', 224 | 'transform-es2015-duplicate-keys', 225 | 'transform-es2015-computed-properties', 226 | 'transform-es2015-for-of', 227 | 'transform-es2015-sticky-regex', 228 | 'transform-es2015-unicode-regex', 229 | 'check-es2015-constants', 230 | 'transform-es2015-spread', 231 | 'transform-es2015-parameters', 232 | 'transform-es2015-destructuring', 233 | 'transform-es2015-block-scoping', 234 | 'transform-es2015-typeof-symbol', 235 | ['transform-regenerator', { async: false, asyncGenerators: false }], 236 | 237 | // es 2016 238 | 'transform-exponentiation-operator', 239 | 240 | // es 2017 241 | 'syntax-trailing-function-commas', 242 | 'transform-async-to-generator', 243 | ]], 244 | 245 | 246 | ['stage-3', [ 247 | 'syntax-trailing-function-commas', 248 | 'transform-async-to-generator', 249 | 'transform-exponentiation-operator', 250 | 'transform-async-generator-functions', 251 | 'transform-object-rest-spread', 252 | ]], 253 | 254 | ['stage-2', [ 255 | 'syntax-trailing-function-commas', 256 | 'transform-async-to-generator', 257 | 'transform-exponentiation-operator', 258 | 'transform-async-generator-functions', 259 | 'transform-object-rest-spread', 260 | 261 | 'syntax-dynamic-import', 262 | 'transform-class-properties', 263 | 'transform-decorators', 264 | ]], 265 | 266 | ['stage-1', [ 267 | 'syntax-trailing-function-commas', 268 | 'transform-async-to-generator', 269 | 'transform-exponentiation-operator', 270 | 'transform-async-generator-functions', 271 | 'transform-object-rest-spread', 272 | 273 | 'syntax-dynamic-import', 274 | 'transform-class-properties', 275 | 'transform-decorators', 276 | 277 | 'transform-class-constructor-call', 278 | 'transform-export-extensions', 279 | ]], 280 | 281 | ['stage-0', [ 282 | 'syntax-trailing-function-commas', 283 | 'transform-async-to-generator', 284 | 'transform-exponentiation-operator', 285 | 'transform-async-generator-functions', 286 | 'transform-object-rest-spread', 287 | 288 | 'syntax-dynamic-import', 289 | 'transform-class-properties', 290 | 'transform-decorators', 291 | 292 | 'transform-class-constructor-call', 293 | 'transform-export-extensions', 294 | 295 | 'transform-do-expressions', 296 | 'transform-function-bind', 297 | ]], 298 | 299 | 300 | ['flow', [ 301 | 'transform-flow-strip-types', 302 | ]], 303 | 304 | ['babili',[ 305 | 'minify-builtins', 306 | 'minify-constant-folding', 307 | 'minify-dead-code-elimination', 308 | 'minify-flip-comparisons', 309 | 'minify-guarded-expressions', 310 | 'minify-infinity', 311 | 'minify-mangle-names', 312 | 'minify-numeric-literals', 313 | 'minify-replace', 314 | 'minify-simplify', 315 | 'minify-type-constructors', 316 | 'transform-inline-consecutive-adds', 317 | 'transform-member-expression-literals', 318 | 'transform-merge-sibling-variables', 319 | 'transform-minify-booleans', 320 | 'transform-property-literals', 321 | 'transform-regexp-constructors', 322 | 'transform-remove-console', 323 | 'transform-remove-debugger', 324 | 'transform-remove-undefined', 325 | 'transform-simplify-comparison-operators', 326 | 'transform-undefined-to-void', 327 | ]], 328 | 329 | ['vue', [ 330 | 'transform-vue-jsx', 331 | ]] 332 | ]); 333 | 334 | function _(o) { 335 | var x = Object.keys(o).map(function(k){ 336 | return [k, o[k]]; 337 | }); 338 | 339 | return new Map(x) 340 | } 341 | 342 | exports.config = new Map([ 343 | ['transform-async-to-module-method', {module: String, method: String}], 344 | ['transform-es2015-arrow-functions', {spec: Boolean}], 345 | ['transform-es2015-block-scoping', {throwIfClosureRequired: Boolean}], 346 | ['transform-es2015-classes', {loose: Boolean}], 347 | ['transform-es2015-computed-properties', {loose: Boolean}], 348 | ['transform-es2015-destructuring', {loose: Boolean}], 349 | ['transform-es2015-for-of', {loose: Boolean}], 350 | ['transform-es2015-modules-amd', {allowTopLevelThis: Boolean, loose: Boolean, strict: Boolean, strictMode: Boolean}], 351 | ['transform-es2015-modules-commonjs', {allowTopLevelThis: Boolean, loose: Boolean, noInterop: Boolean, strict: Boolean, strictMode: Boolean}], 352 | ['transform-es2015-modules-systemjs', {loose: Boolean, systemGlobal: String}], 353 | ['transform-es2015-modules-umd', {globals: Object, exactGlobals: Boolean, allowTopLevelThis: Boolean, loose: Boolean, strict: Boolean, strictMode: Boolean }], 354 | ['transform-es2015-spread', {loose: Boolean}], 355 | ['transform-es2015-template-literals', {loose: Boolean, spec: Boolean}], 356 | ['transform-inline-environment-variables', {include: Array, exclude: Array}], 357 | ['transform-object-rest-spread', {useBuiltIns: Boolean}], 358 | ['transform-react-jsx', {pragma: String}], 359 | ['transform-regenerator', {asyncGenerators: Boolean, generators: Boolean, async: Boolean}], 360 | ['transform-remove-console', {exclude: Array}], 361 | ['transform-runtime', {helpers: Boolean, moduleName: String, polyfill: Boolean, regenerator: Boolean, }], 362 | ['transform-strict-mode', {strict: Boolean, strictMode: Boolean}], 363 | 364 | // babili 365 | ['minify-builtins', {tdz: Boolean}], 366 | ['minify-constant-folding', {tdz: Boolean}], 367 | ['minify-dead-code-elimination', {keepClassName: Boolean, keepFnArgs: Boolean, keepFnName: Boolean, optimizeRawSize: Boolean, tdz: Boolean}], 368 | 369 | // TODO - exclude is a hash of {name => bool} 370 | ['minify-mangle-names', {exclude: Object, eval: Boolean, keepClassName: Boolean, keepFnName: Boolean, topLevel: Boolean}], 371 | ['minify-type-constructors', {array: Boolean, boolean: Boolean, number: Boolean, object: Boolean, string: Boolean}], 372 | ['minify-type-constructors', {array: Boolean, boolean: Boolean, number: Boolean, object: Boolean, string: Boolean}], 373 | ['transform-remove-undefined', {tdz: Boolean}], 374 | 375 | // not yet supported. 376 | ['minify-replace', { replacements: Object}], 377 | 378 | // not in current version. 379 | 380 | // third party. 381 | ['lodash', {id: String, cwd: String}], 382 | ['inferno', {imports: Boolean, pragma: String }], 383 | 384 | ]); 385 | -------------------------------------------------------------------------------- /getopt.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | /* 4 | * Copyright (c) 2016 Kelvin W Sherlock 5 | * 6 | * Permission to use, copy, modify, and distribute this software for any 7 | * purpose with or without fee is hereby granted, provided that the above 8 | * copyright notice and this permission notice appear in all copies. 9 | * 10 | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 11 | * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 12 | * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 13 | * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 14 | * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 15 | * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 16 | * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 17 | */ 18 | 19 | 20 | var extra_arg = function(dash, opt, arg) { 21 | var e = new Error(`option ${dash}${opt} does not have an argument.`); 22 | e.option = dash + opt; 23 | e.argument = arg; 24 | return e; 25 | } 26 | 27 | var missing_arg = function(dash, opt) { 28 | var e = new Error(`option ${dash}${opt} requires an argument.`); 29 | e.option = dash + opt; 30 | return e; 31 | } 32 | 33 | var invalid_option = function(dash, opt) { 34 | var e = new Error(`invalid option ${dash}${opt}.`); 35 | e.option = dash + opt; 36 | return e; 37 | } 38 | 39 | 40 | const BAD_ARG = ':'; 41 | const BAD_CH = '?'; 42 | const INORDER = 1; 43 | 44 | /* 45 | const POSIXLY_CORRECT = false; 46 | const FLAG_ALLARGS = false; 47 | const FLAG_LONGONLY = false; 48 | const FLAG_SHORTONLY = false; 49 | const FLAG_W = false; 50 | */ 51 | 52 | var split_opt_string = function(so, config) { 53 | /* convert a short-opt string into a map */ 54 | // leading + --> disable permutation (stop at first non-arg) 55 | // leading - --> FLAG_ALLARGS 56 | 57 | var options = new Map(); 58 | 59 | if (!so) return options; 60 | 61 | var i = 0; 62 | var l = so.length; 63 | switch (so.charAt(0)) { 64 | case '+': 65 | config.POSIXLY_CORRECT = true; 66 | ++i; 67 | break; 68 | case '-': 69 | config.FLAG_ALLARGS = true; 70 | ++i; 71 | break; 72 | } 73 | 74 | while (i < l) { 75 | var c = so.charAt(i++); 76 | var mod = so.charAt(i); 77 | if (mod == ':') { 78 | options.set(c, mod); 79 | ++i; 80 | continue; 81 | } 82 | if (mod == ';' && c == 'W') { 83 | // W; means -W foo == --foo 84 | config.FLAG_W = true; 85 | ++i; 86 | continue; 87 | } 88 | options.set(c, true); 89 | } 90 | return options; 91 | } 92 | 93 | var split_opt_array = function(optarray, config) { 94 | 95 | 96 | var options = new Map(); 97 | 98 | //remap optargs array. 99 | (optarray || []).forEach(function(opt){ 100 | var m; 101 | var modifier = true; 102 | if (m = opt.match(/^([^:=!]+)(!|[:=][si])$/)) { 103 | 104 | opt = m[1]; 105 | modifier = m[2]; 106 | if (modifier == '!') { 107 | options.set('no-' + opt, '!!') 108 | } 109 | } 110 | options.set(opt, modifier); 111 | }); 112 | 113 | return options; 114 | } 115 | 116 | module.exports.getopt = function(argv, optstring, callback) { 117 | var config = { 118 | FLAG_SHORTONLY: true 119 | }; 120 | 121 | var so = split_opt_string(optstring, config); 122 | 123 | return getopt_common(argv, so, null, callback, config); 124 | } 125 | 126 | module.exports.getopt_long = function(argv, optstring, optarray, callback) { 127 | var config = {}; 128 | 129 | var so = split_opt_string(optstring, config); 130 | var lo = split_opt_array(optarray, config); 131 | 132 | return getopt_common(argv, so, lo, callback, config); 133 | } 134 | 135 | module.exports.getopt_long_only = function(argv, optarray, callback) { 136 | var config = { 137 | FLAG_LONGONLY: true 138 | }; 139 | 140 | var lo = split_opt_array(optarray, config); 141 | 142 | return getopt_common(argv, null, lo, callback, config); 143 | } 144 | 145 | 146 | // returns state. 147 | var parse_long_opt = function (arg, long_opts, callback, config) { 148 | const FLAG_ALLARGS = config.FLAG_ALLARGS; 149 | 150 | var m; 151 | var optarg; 152 | var modifier; 153 | 154 | arg = arg.substr(2); 155 | if (m = arg.match(/^([^=]+)=(.*)$/)) { 156 | arg = m[1]; 157 | optarg = m[2]; 158 | 159 | // handle it here to simplify argument checks. 160 | modifier = long_opts.get(arg); 161 | switch(modifier) { 162 | case undefined: 163 | if (FLAG_ALLARGS) callback(INORDER, arg) 164 | callback(BAD_CH, invalid_option('--', arg)); 165 | return null; 166 | case '!': 167 | case true: 168 | callback(BAD_ARG, extra_arg('--', arg, optarg)); 169 | return null; 170 | default: 171 | callback(arg, optarg); 172 | return null; 173 | } 174 | } 175 | 176 | modifier = long_opts.get(arg); 177 | switch(modifier) { 178 | case undefined: break; // try again as no- below. 179 | case true: 180 | callback(arg); 181 | return null; 182 | 183 | case '!!': 184 | // --no-arg => arg 185 | callback(arg.substr(3), false); 186 | return null; 187 | 188 | case '!': 189 | callback(arg, true); 190 | return null; 191 | 192 | default: 193 | return ['--', arg, modifier]; 194 | } 195 | 196 | if (FLAG_ALLARGS) callback(INORDER, arg); 197 | else callback(BAD_CH, invalid_option('--', arg)); 198 | return null; 199 | } 200 | 201 | var getopt_common = function(argv, short_opts, long_opts, callback, config) { 202 | 203 | const FLAG_SHORTONLY = config.FLAG_SHORTONLY || false; 204 | const FLAG_LONGONLY = config.FLAG_LONGONLY || false; 205 | const FLAG_ALLARGS = config.FLAG_ALLARGS || false; 206 | const FLAG_W = config.FLAG_W || false; 207 | const POSIXLY_CORRECT = config.POSIXLY_CORRECT || false; 208 | 209 | if (!callback) callback = function(){}; 210 | if (!config) config = {}; 211 | 212 | var state = null; 213 | var __ = false; 214 | 215 | if (!argv) argv = process.argv.slice(2); 216 | var rv = argv.filter(function(arg){ 217 | 218 | var m; 219 | var optarg; 220 | var modifier; 221 | var opt; 222 | 223 | if (__) return true; 224 | 225 | if (state === '-W') { 226 | state = parse_long_opt('--' + arg, long_opts, callback, config); 227 | return false; 228 | } 229 | 230 | if (state) { 231 | // arg for previous flag! 232 | if (state[2].charAt(0) == '=' || arg.charAt(0) != '-') { 233 | 234 | callback(state[1], arg); 235 | state = null; 236 | return false; 237 | } 238 | 239 | if (state[2].charAt(0) == ':') { 240 | // optional arg w/o an option. 241 | callback(state[1], ''); 242 | } 243 | state = null; 244 | } 245 | 246 | if (arg === '--') { 247 | __ = true; 248 | return false; 249 | } 250 | 251 | if (arg.substr(0,2) == '--' && !FLAG_SHORTONLY) { 252 | state = parse_long_opt(arg, long_opts, callback, config); 253 | return false; 254 | } 255 | 256 | if (arg.charAt(0) == '-' && !FLAG_LONGONLY) { 257 | for (var i = 1, l = arg.length; i < l; ++i) { 258 | opt = arg.charAt(i); 259 | modifier = short_opts.get(opt); 260 | switch(modifier) { 261 | case undefined: 262 | // -W flag? 263 | if (opt == 'W' && FLAG_W && !FLAG_SHORTONLY) { 264 | state = '-W'; 265 | break; 266 | } 267 | if (FLAG_ALLARGS) callback(INORDER, opt); 268 | else callback(BAD_CH, invalid_option('-', opt)); 269 | continue; 270 | case true: 271 | callback(opt); 272 | continue; 273 | case '!': 274 | callback(opt, true); 275 | continue; 276 | default: 277 | state = ['-', opt, modifier]; 278 | break; 279 | } 280 | // only here if : or =. 281 | break; 282 | } 283 | 284 | if (state && ++i < l) { 285 | optarg = arg.substr(i); 286 | if (state === '-W') { 287 | state = parse_long_opt('--' + optarg, long_opts, callback, config); 288 | } 289 | else { 290 | opt = state[1]; 291 | callback(opt, optarg); 292 | state = null; 293 | } 294 | } 295 | 296 | return false; 297 | } 298 | 299 | 300 | // not an option; add it to the list. 301 | if (POSIXLY_CORRECT) __ = true; 302 | return true; 303 | 304 | }); 305 | 306 | if (state){ 307 | if (state[2].charAt(0) == ':') { 308 | callback(state[1], ''); 309 | } 310 | else { 311 | callback(BAD_ARG, missing_arg(state[0], state[1])); 312 | } 313 | } 314 | 315 | return rv; 316 | } 317 | -------------------------------------------------------------------------------- /getsubopt.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | /* 4 | * Copyright (c) 2016 Kelvin W Sherlock 5 | * 6 | * Permission to use, copy, modify, and distribute this software for any 7 | * purpose with or without fee is hereby granted, provided that the above 8 | * copyright notice and this permission notice appear in all copies. 9 | * 10 | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 11 | * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 12 | * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 13 | * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 14 | * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 15 | * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 16 | * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 17 | */ 18 | 19 | module.exports = function(string){ 20 | 21 | var rv = {}; 22 | 23 | string.split(/\s*,\s*/).forEach(function(kv){ 24 | var i = kv.indexOf('='); 25 | var k,v; 26 | if (i < 1) { 27 | k = kv; 28 | } else { 29 | k = kv.substr(0, i); 30 | v = kv.substr(i+1); 31 | } 32 | rv[k] = v; 33 | }); 34 | 35 | return rv; 36 | }; 37 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "better-babel-cli", 3 | "version": "1.2.5", 4 | "description": "A better babel command-line utility", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "/bin/sh test.sh" 8 | }, 9 | "author": "Kelvin W Sherlock", 10 | "license": "ISC", 11 | "preferGlobal": true, 12 | "bin": { 13 | "babel": "babel.js", 14 | "babel-external-helpers": "babel-external-helpers.js" 15 | }, 16 | "repository": { 17 | "type": "git", 18 | "url": "https://github.com/ksherlock/better-babel-cli.git" 19 | }, 20 | "keywords": [ 21 | "babel" 22 | ], 23 | "dependencies": { 24 | "babel-core": "^6.18.0", 25 | "babel-generator": "^6.18.0", 26 | "babel-helper-builder-react-jsx": "^6.18.0", 27 | "babel-helper-regex": "^6.18.0", 28 | "babel-helper-vue-jsx-merge-props": "^2.0.1", 29 | "babel-helpers": "^6.16.0", 30 | "babel-plugin-check-es2015-constants": "^6.8.0", 31 | "babel-plugin-external-helpers": "^6.18.0", 32 | "babel-plugin-inferno": "^5.0.1", 33 | "babel-plugin-lodash": "^3.2.9", 34 | "babel-plugin-minify-builtins": "^0.4.3", 35 | "babel-plugin-minify-constant-folding": "^0.4.3", 36 | "babel-plugin-minify-dead-code-elimination": "^0.4.3", 37 | "babel-plugin-minify-flip-comparisons": "^0.4.3", 38 | "babel-plugin-minify-guarded-expressions": "^0.4.3", 39 | "babel-plugin-minify-infinity": "^0.4.3", 40 | "babel-plugin-minify-mangle-names": "^0.4.3", 41 | "babel-plugin-minify-numeric-literals": "^0.4.3", 42 | "babel-plugin-minify-replace": "^0.4.3", 43 | "babel-plugin-minify-simplify": "^0.4.3", 44 | "babel-plugin-minify-type-constructors": "^0.4.3", 45 | "babel-plugin-mjsx": "^4.1.1", 46 | "babel-plugin-syntax-async-functions": "^6.13.0", 47 | "babel-plugin-syntax-async-generators": "^6.13.0", 48 | "babel-plugin-syntax-class-constructor-call": "^6.18.0", 49 | "babel-plugin-syntax-class-properties": "^6.13.0", 50 | "babel-plugin-syntax-decorators": "^6.13.0", 51 | "babel-plugin-syntax-do-expressions": "^6.13.0", 52 | "babel-plugin-syntax-dynamic-import": "^6.18.0", 53 | "babel-plugin-syntax-exponentiation-operator": "^6.13.0", 54 | "babel-plugin-syntax-export-extensions": "^6.13.0", 55 | "babel-plugin-syntax-flow": "^6.18.0", 56 | "babel-plugin-syntax-function-bind": "^6.13.0", 57 | "babel-plugin-syntax-function-sent": "^6.13.0", 58 | "babel-plugin-syntax-jsx": "^6.18.0", 59 | "babel-plugin-syntax-object-rest-spread": "^6.13.0", 60 | "babel-plugin-syntax-trailing-function-commas": "^6.22.0", 61 | "babel-plugin-transform-async-functions": "^6.8.0", 62 | "babel-plugin-transform-async-generator-functions": "^6.24.1", 63 | "babel-plugin-transform-async-to-generator": "^6.24.1", 64 | "babel-plugin-transform-async-to-module-method": "^6.16.0", 65 | "babel-plugin-transform-class-constructor-call": "^6.24.1", 66 | "babel-plugin-transform-class-properties": "^6.24.1", 67 | "babel-plugin-transform-decorators": "^6.13.0", 68 | "babel-plugin-transform-decorators-legacy": "^1.3.4", 69 | "babel-plugin-transform-do-expressions": "^6.8.0", 70 | "babel-plugin-transform-es2015-arrow-functions": "^6.8.0", 71 | "babel-plugin-transform-es2015-block-scoped-functions": "^6.8.0", 72 | "babel-plugin-transform-es2015-block-scoping": "^6.18.0", 73 | "babel-plugin-transform-es2015-classes": "^6.18.0", 74 | "babel-plugin-transform-es2015-computed-properties": "^6.8.0", 75 | "babel-plugin-transform-es2015-destructuring": "^6.18.0", 76 | "babel-plugin-transform-es2015-duplicate-keys": "^6.8.0", 77 | "babel-plugin-transform-es2015-for-of": "^6.18.0", 78 | "babel-plugin-transform-es2015-function-name": "^6.9.0", 79 | "babel-plugin-transform-es2015-instanceof": "^6.18.0", 80 | "babel-plugin-transform-es2015-literals": "^6.8.0", 81 | "babel-plugin-transform-es2015-modules-amd": "^6.18.0", 82 | "babel-plugin-transform-es2015-modules-commonjs": "^6.18.0", 83 | "babel-plugin-transform-es2015-modules-systemjs": "^6.18.0", 84 | "babel-plugin-transform-es2015-modules-umd": "^6.18.0", 85 | "babel-plugin-transform-es2015-object-super": "^6.8.0", 86 | "babel-plugin-transform-es2015-parameters": "^6.18.0", 87 | "babel-plugin-transform-es2015-shorthand-properties": "^6.18.0", 88 | "babel-plugin-transform-es2015-spread": "^6.8.0", 89 | "babel-plugin-transform-es2015-sticky-regex": "^6.8.0", 90 | "babel-plugin-transform-es2015-template-literals": "^6.8.0", 91 | "babel-plugin-transform-es2015-typeof-symbol": "^6.18.0", 92 | "babel-plugin-transform-es2015-unicode-regex": "^6.11.0", 93 | "babel-plugin-transform-es3-member-expression-literals": "^6.8.0", 94 | "babel-plugin-transform-es3-property-literals": "^6.8.0", 95 | "babel-plugin-transform-es5-property-mutators": "^6.8.0", 96 | "babel-plugin-transform-eval": "^6.8.0", 97 | "babel-plugin-transform-exponentiation-operator": "^6.24.1", 98 | "babel-plugin-transform-export-extensions": "^6.22.0", 99 | "babel-plugin-transform-flow-comments": "^6.17.0", 100 | "babel-plugin-transform-flow-strip-types": "^6.18.0", 101 | "babel-plugin-transform-function-bind": "^6.8.0", 102 | "babel-plugin-transform-inline-consecutive-adds": "^0.4.3", 103 | "babel-plugin-transform-inline-environment-variables": "^0.4.3", 104 | "babel-plugin-transform-jscript": "^6.8.0", 105 | "babel-plugin-transform-member-expression-literals": "^6.8.0", 106 | "babel-plugin-transform-merge-sibling-variables": "^6.8.1", 107 | "babel-plugin-transform-minify-booleans": "^6.8.0", 108 | "babel-plugin-transform-node-env-inline": "^0.4.3", 109 | "babel-plugin-transform-object-assign": "^6.8.0", 110 | "babel-plugin-transform-object-rest-spread": "^6.23.0", 111 | "babel-plugin-transform-object-set-prototype-of-to-assign": "^6.8.0", 112 | "babel-plugin-transform-property-literals": "^6.8.0", 113 | "babel-plugin-transform-proto-to-assign": "^6.9.0", 114 | "babel-plugin-transform-react-constant-elements": "^6.9.1", 115 | "babel-plugin-transform-react-display-name": "^6.8.0", 116 | "babel-plugin-transform-react-inline-elements": "^6.8.0", 117 | "babel-plugin-transform-react-jsx": "^6.8.0", 118 | "babel-plugin-transform-react-jsx-compat": "^6.8.0", 119 | "babel-plugin-transform-react-jsx-self": "^6.11.0", 120 | "babel-plugin-transform-react-jsx-source": "^6.22.0", 121 | "babel-plugin-transform-regenerator": "^6.16.1", 122 | "babel-plugin-transform-regexp-constructors": "^0.4.3", 123 | "babel-plugin-transform-remove-console": "^6.8.5", 124 | "babel-plugin-transform-remove-debugger": "^6.8.0", 125 | "babel-plugin-transform-remove-undefined": "^0.4.3", 126 | "babel-plugin-transform-runtime": "^6.15.0", 127 | "babel-plugin-transform-simplify-comparison-operators": "^6.8.0", 128 | "babel-plugin-transform-strict-mode": "^6.18.0", 129 | "babel-plugin-transform-undefined-to-void": "^6.8.0", 130 | "babel-plugin-transform-vue-jsx": "^3.1.1", 131 | "babel-plugin-undeclared-variables-check": "^6.8.0", 132 | "babel-runtime": "^6.18.0", 133 | "babel-template": "^6.16.0", 134 | "babel-traverse": "^6.18.0", 135 | "babel-types": "^6.18.0", 136 | "lodash": "^4.16.4", 137 | "sysexits": "^1.0.1" 138 | } 139 | } 140 | -------------------------------------------------------------------------------- /test.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/sh 2 | 3 | node -c babel.js || exit 1; 4 | node -c getopt.js || exit 1; 5 | node -c getsubopt.js || exit 1; 6 | node -c data.js || exit 1; 7 | 8 | echo "let x = 1; const y = 2;" | node babel.js --es2015 > /dev/null; 9 | 10 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | ansi-regex@^2.0.0: 6 | version "2.1.1" 7 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" 8 | 9 | ansi-styles@^2.2.1: 10 | version "2.2.1" 11 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" 12 | 13 | babel-code-frame@^6.26.0: 14 | version "6.26.0" 15 | resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" 16 | dependencies: 17 | chalk "^1.1.3" 18 | esutils "^2.0.2" 19 | js-tokens "^3.0.2" 20 | 21 | babel-core@^6.18.0, babel-core@^6.26.0: 22 | version "6.26.3" 23 | resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.3.tgz#b2e2f09e342d0f0c88e2f02e067794125e75c207" 24 | dependencies: 25 | babel-code-frame "^6.26.0" 26 | babel-generator "^6.26.0" 27 | babel-helpers "^6.24.1" 28 | babel-messages "^6.23.0" 29 | babel-register "^6.26.0" 30 | babel-runtime "^6.26.0" 31 | babel-template "^6.26.0" 32 | babel-traverse "^6.26.0" 33 | babel-types "^6.26.0" 34 | babylon "^6.18.0" 35 | convert-source-map "^1.5.1" 36 | debug "^2.6.9" 37 | json5 "^0.5.1" 38 | lodash "^4.17.4" 39 | minimatch "^3.0.4" 40 | path-is-absolute "^1.0.1" 41 | private "^0.1.8" 42 | slash "^1.0.0" 43 | source-map "^0.5.7" 44 | 45 | babel-generator@^6.18.0, babel-generator@^6.26.0: 46 | version "6.26.1" 47 | resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90" 48 | dependencies: 49 | babel-messages "^6.23.0" 50 | babel-runtime "^6.26.0" 51 | babel-types "^6.26.0" 52 | detect-indent "^4.0.0" 53 | jsesc "^1.3.0" 54 | lodash "^4.17.4" 55 | source-map "^0.5.7" 56 | trim-right "^1.0.1" 57 | 58 | babel-helper-bindify-decorators@^6.24.1: 59 | version "6.24.1" 60 | resolved "https://registry.yarnpkg.com/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz#14c19e5f142d7b47f19a52431e52b1ccbc40a330" 61 | dependencies: 62 | babel-runtime "^6.22.0" 63 | babel-traverse "^6.24.1" 64 | babel-types "^6.24.1" 65 | 66 | babel-helper-builder-binary-assignment-operator-visitor@^6.24.1: 67 | version "6.24.1" 68 | resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664" 69 | dependencies: 70 | babel-helper-explode-assignable-expression "^6.24.1" 71 | babel-runtime "^6.22.0" 72 | babel-types "^6.24.1" 73 | 74 | babel-helper-builder-react-jsx@^6.18.0, babel-helper-builder-react-jsx@^6.24.1: 75 | version "6.26.0" 76 | resolved "https://registry.yarnpkg.com/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.26.0.tgz#39ff8313b75c8b65dceff1f31d383e0ff2a408a0" 77 | dependencies: 78 | babel-runtime "^6.26.0" 79 | babel-types "^6.26.0" 80 | esutils "^2.0.2" 81 | 82 | babel-helper-call-delegate@^6.24.1: 83 | version "6.24.1" 84 | resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d" 85 | dependencies: 86 | babel-helper-hoist-variables "^6.24.1" 87 | babel-runtime "^6.22.0" 88 | babel-traverse "^6.24.1" 89 | babel-types "^6.24.1" 90 | 91 | babel-helper-define-map@^6.24.1: 92 | version "6.26.0" 93 | resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz#a5f56dab41a25f97ecb498c7ebaca9819f95be5f" 94 | dependencies: 95 | babel-helper-function-name "^6.24.1" 96 | babel-runtime "^6.26.0" 97 | babel-types "^6.26.0" 98 | lodash "^4.17.4" 99 | 100 | babel-helper-evaluate-path@^0.4.3: 101 | version "0.4.3" 102 | resolved "https://registry.yarnpkg.com/babel-helper-evaluate-path/-/babel-helper-evaluate-path-0.4.3.tgz#0a89af702c06b217027fa371908dd4989d3e633f" 103 | 104 | babel-helper-explode-assignable-expression@^6.24.1: 105 | version "6.24.1" 106 | resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa" 107 | dependencies: 108 | babel-runtime "^6.22.0" 109 | babel-traverse "^6.24.1" 110 | babel-types "^6.24.1" 111 | 112 | babel-helper-explode-class@^6.24.1: 113 | version "6.24.1" 114 | resolved "https://registry.yarnpkg.com/babel-helper-explode-class/-/babel-helper-explode-class-6.24.1.tgz#7dc2a3910dee007056e1e31d640ced3d54eaa9eb" 115 | dependencies: 116 | babel-helper-bindify-decorators "^6.24.1" 117 | babel-runtime "^6.22.0" 118 | babel-traverse "^6.24.1" 119 | babel-types "^6.24.1" 120 | 121 | babel-helper-flip-expressions@^0.4.3: 122 | version "0.4.3" 123 | resolved "https://registry.yarnpkg.com/babel-helper-flip-expressions/-/babel-helper-flip-expressions-0.4.3.tgz#3696736a128ac18bc25254b5f40a22ceb3c1d3fd" 124 | 125 | babel-helper-function-name@^6.24.1: 126 | version "6.24.1" 127 | resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9" 128 | dependencies: 129 | babel-helper-get-function-arity "^6.24.1" 130 | babel-runtime "^6.22.0" 131 | babel-template "^6.24.1" 132 | babel-traverse "^6.24.1" 133 | babel-types "^6.24.1" 134 | 135 | babel-helper-get-function-arity@^6.24.1: 136 | version "6.24.1" 137 | resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d" 138 | dependencies: 139 | babel-runtime "^6.22.0" 140 | babel-types "^6.24.1" 141 | 142 | babel-helper-hoist-variables@^6.24.1: 143 | version "6.24.1" 144 | resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76" 145 | dependencies: 146 | babel-runtime "^6.22.0" 147 | babel-types "^6.24.1" 148 | 149 | babel-helper-is-nodes-equiv@^0.0.1: 150 | version "0.0.1" 151 | resolved "https://registry.yarnpkg.com/babel-helper-is-nodes-equiv/-/babel-helper-is-nodes-equiv-0.0.1.tgz#34e9b300b1479ddd98ec77ea0bbe9342dfe39684" 152 | 153 | babel-helper-is-void-0@^0.4.3: 154 | version "0.4.3" 155 | resolved "https://registry.yarnpkg.com/babel-helper-is-void-0/-/babel-helper-is-void-0-0.4.3.tgz#7d9c01b4561e7b95dbda0f6eee48f5b60e67313e" 156 | 157 | babel-helper-mark-eval-scopes@^0.4.3: 158 | version "0.4.3" 159 | resolved "https://registry.yarnpkg.com/babel-helper-mark-eval-scopes/-/babel-helper-mark-eval-scopes-0.4.3.tgz#d244a3bef9844872603ffb46e22ce8acdf551562" 160 | 161 | babel-helper-module-imports@^7.0.0-beta.3: 162 | version "7.0.0-beta.3" 163 | resolved "https://registry.yarnpkg.com/babel-helper-module-imports/-/babel-helper-module-imports-7.0.0-beta.3.tgz#e15764e3af9c8e11810c09f78f498a2bdc71585a" 164 | dependencies: 165 | babel-types "7.0.0-beta.3" 166 | lodash "^4.2.0" 167 | 168 | babel-helper-optimise-call-expression@^6.24.1: 169 | version "6.24.1" 170 | resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257" 171 | dependencies: 172 | babel-runtime "^6.22.0" 173 | babel-types "^6.24.1" 174 | 175 | babel-helper-regex@^6.18.0, babel-helper-regex@^6.24.1: 176 | version "6.26.0" 177 | resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz#325c59f902f82f24b74faceed0363954f6495e72" 178 | dependencies: 179 | babel-runtime "^6.26.0" 180 | babel-types "^6.26.0" 181 | lodash "^4.17.4" 182 | 183 | babel-helper-remap-async-to-generator@^6.24.1: 184 | version "6.24.1" 185 | resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b" 186 | dependencies: 187 | babel-helper-function-name "^6.24.1" 188 | babel-runtime "^6.22.0" 189 | babel-template "^6.24.1" 190 | babel-traverse "^6.24.1" 191 | babel-types "^6.24.1" 192 | 193 | babel-helper-remove-or-void@^0.4.3: 194 | version "0.4.3" 195 | resolved "https://registry.yarnpkg.com/babel-helper-remove-or-void/-/babel-helper-remove-or-void-0.4.3.tgz#a4f03b40077a0ffe88e45d07010dee241ff5ae60" 196 | 197 | babel-helper-replace-supers@^6.24.1: 198 | version "6.24.1" 199 | resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a" 200 | dependencies: 201 | babel-helper-optimise-call-expression "^6.24.1" 202 | babel-messages "^6.23.0" 203 | babel-runtime "^6.22.0" 204 | babel-template "^6.24.1" 205 | babel-traverse "^6.24.1" 206 | babel-types "^6.24.1" 207 | 208 | babel-helper-to-multiple-sequence-expressions@^0.4.3: 209 | version "0.4.3" 210 | resolved "https://registry.yarnpkg.com/babel-helper-to-multiple-sequence-expressions/-/babel-helper-to-multiple-sequence-expressions-0.4.3.tgz#5b518b1127f47b3038773386a1561a2b48e632b6" 211 | 212 | babel-helper-vue-jsx-merge-props@^2.0.1: 213 | version "2.0.3" 214 | resolved "https://registry.yarnpkg.com/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-2.0.3.tgz#22aebd3b33902328e513293a8e4992b384f9f1b6" 215 | 216 | babel-helpers@^6.16.0, babel-helpers@^6.24.1: 217 | version "6.24.1" 218 | resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" 219 | dependencies: 220 | babel-runtime "^6.22.0" 221 | babel-template "^6.24.1" 222 | 223 | babel-messages@^6.23.0: 224 | version "6.23.0" 225 | resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" 226 | dependencies: 227 | babel-runtime "^6.22.0" 228 | 229 | babel-plugin-check-es2015-constants@^6.8.0: 230 | version "6.22.0" 231 | resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a" 232 | dependencies: 233 | babel-runtime "^6.22.0" 234 | 235 | babel-plugin-external-helpers@^6.18.0: 236 | version "6.22.0" 237 | resolved "https://registry.yarnpkg.com/babel-plugin-external-helpers/-/babel-plugin-external-helpers-6.22.0.tgz#2285f48b02bd5dede85175caf8c62e86adccefa1" 238 | dependencies: 239 | babel-runtime "^6.22.0" 240 | 241 | babel-plugin-inferno@^5.0.1: 242 | version "5.0.1" 243 | resolved "https://registry.yarnpkg.com/babel-plugin-inferno/-/babel-plugin-inferno-5.0.1.tgz#61adce24c6cc8ab4963cf19ef471bd6ff6012ebf" 244 | dependencies: 245 | babel-plugin-syntax-jsx "^6.18.0" 246 | 247 | babel-plugin-lodash@^3.2.9: 248 | version "3.3.2" 249 | resolved "https://registry.yarnpkg.com/babel-plugin-lodash/-/babel-plugin-lodash-3.3.2.tgz#da3a5b49ba27447f54463f6c4fa81396ccdd463f" 250 | dependencies: 251 | babel-helper-module-imports "^7.0.0-beta.3" 252 | babel-types "^6.26.0" 253 | glob "^7.1.1" 254 | lodash "^4.17.4" 255 | require-package-name "^2.0.1" 256 | 257 | babel-plugin-minify-builtins@^0.4.3: 258 | version "0.4.3" 259 | resolved "https://registry.yarnpkg.com/babel-plugin-minify-builtins/-/babel-plugin-minify-builtins-0.4.3.tgz#9ea3d59f4ac4a7bb958d712d29556a1f86f7f81e" 260 | dependencies: 261 | babel-helper-evaluate-path "^0.4.3" 262 | 263 | babel-plugin-minify-constant-folding@^0.4.3: 264 | version "0.4.3" 265 | resolved "https://registry.yarnpkg.com/babel-plugin-minify-constant-folding/-/babel-plugin-minify-constant-folding-0.4.3.tgz#300f9de8dda0844a176b193653960e24ad33e191" 266 | dependencies: 267 | babel-helper-evaluate-path "^0.4.3" 268 | 269 | babel-plugin-minify-dead-code-elimination@^0.4.3: 270 | version "0.4.3" 271 | resolved "https://registry.yarnpkg.com/babel-plugin-minify-dead-code-elimination/-/babel-plugin-minify-dead-code-elimination-0.4.3.tgz#73628265864f9008d0027506f58abeb3c1d02d98" 272 | dependencies: 273 | babel-helper-evaluate-path "^0.4.3" 274 | babel-helper-mark-eval-scopes "^0.4.3" 275 | babel-helper-remove-or-void "^0.4.3" 276 | lodash.some "^4.6.0" 277 | 278 | babel-plugin-minify-flip-comparisons@^0.4.3: 279 | version "0.4.3" 280 | resolved "https://registry.yarnpkg.com/babel-plugin-minify-flip-comparisons/-/babel-plugin-minify-flip-comparisons-0.4.3.tgz#00ca870cb8f13b45c038b3c1ebc0f227293c965a" 281 | dependencies: 282 | babel-helper-is-void-0 "^0.4.3" 283 | 284 | babel-plugin-minify-guarded-expressions@^0.4.3: 285 | version "0.4.3" 286 | resolved "https://registry.yarnpkg.com/babel-plugin-minify-guarded-expressions/-/babel-plugin-minify-guarded-expressions-0.4.3.tgz#cc709b4453fd21b1f302877444c89f88427ce397" 287 | dependencies: 288 | babel-helper-flip-expressions "^0.4.3" 289 | 290 | babel-plugin-minify-infinity@^0.4.3: 291 | version "0.4.3" 292 | resolved "https://registry.yarnpkg.com/babel-plugin-minify-infinity/-/babel-plugin-minify-infinity-0.4.3.tgz#dfb876a1b08a06576384ef3f92e653ba607b39ca" 293 | 294 | babel-plugin-minify-mangle-names@^0.4.3: 295 | version "0.4.3" 296 | resolved "https://registry.yarnpkg.com/babel-plugin-minify-mangle-names/-/babel-plugin-minify-mangle-names-0.4.3.tgz#16f1bff74b7a7c93dfc241e7831dd5fb4b023ef7" 297 | dependencies: 298 | babel-helper-mark-eval-scopes "^0.4.3" 299 | 300 | babel-plugin-minify-numeric-literals@^0.4.3: 301 | version "0.4.3" 302 | resolved "https://registry.yarnpkg.com/babel-plugin-minify-numeric-literals/-/babel-plugin-minify-numeric-literals-0.4.3.tgz#8e4fd561c79f7801286ff60e8c5fd9deee93c0bc" 303 | 304 | babel-plugin-minify-replace@^0.4.3: 305 | version "0.4.3" 306 | resolved "https://registry.yarnpkg.com/babel-plugin-minify-replace/-/babel-plugin-minify-replace-0.4.3.tgz#9d289f4ba15d4e6011e8799fa5f1ba77ec81219d" 307 | 308 | babel-plugin-minify-simplify@^0.4.3: 309 | version "0.4.3" 310 | resolved "https://registry.yarnpkg.com/babel-plugin-minify-simplify/-/babel-plugin-minify-simplify-0.4.3.tgz#37756d85c614464b4b0927f2b4e417191d55738a" 311 | dependencies: 312 | babel-helper-flip-expressions "^0.4.3" 313 | babel-helper-is-nodes-equiv "^0.0.1" 314 | babel-helper-to-multiple-sequence-expressions "^0.4.3" 315 | 316 | babel-plugin-minify-type-constructors@^0.4.3: 317 | version "0.4.3" 318 | resolved "https://registry.yarnpkg.com/babel-plugin-minify-type-constructors/-/babel-plugin-minify-type-constructors-0.4.3.tgz#1bc6f15b87f7ab1085d42b330b717657a2156500" 319 | dependencies: 320 | babel-helper-is-void-0 "^0.4.3" 321 | 322 | babel-plugin-mjsx@^4.1.1: 323 | version "4.1.1" 324 | resolved "https://registry.yarnpkg.com/babel-plugin-mjsx/-/babel-plugin-mjsx-4.1.1.tgz#31fc4c5f7089e1ad6c4aa50de7c9f5a626a8b36a" 325 | dependencies: 326 | babel-plugin-syntax-jsx "^6.0" 327 | 328 | babel-plugin-syntax-async-functions@^6.13.0, babel-plugin-syntax-async-functions@^6.8.0: 329 | version "6.13.0" 330 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" 331 | 332 | babel-plugin-syntax-async-generators@^6.13.0, babel-plugin-syntax-async-generators@^6.5.0: 333 | version "6.13.0" 334 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz#6bc963ebb16eccbae6b92b596eb7f35c342a8b9a" 335 | 336 | babel-plugin-syntax-class-constructor-call@^6.18.0: 337 | version "6.18.0" 338 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-constructor-call/-/babel-plugin-syntax-class-constructor-call-6.18.0.tgz#9cb9d39fe43c8600bec8146456ddcbd4e1a76416" 339 | 340 | babel-plugin-syntax-class-properties@^6.13.0, babel-plugin-syntax-class-properties@^6.8.0: 341 | version "6.13.0" 342 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz#d7eb23b79a317f8543962c505b827c7d6cac27de" 343 | 344 | babel-plugin-syntax-decorators@^6.1.18, babel-plugin-syntax-decorators@^6.13.0: 345 | version "6.13.0" 346 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz#312563b4dbde3cc806cee3e416cceeaddd11ac0b" 347 | 348 | babel-plugin-syntax-do-expressions@^6.13.0, babel-plugin-syntax-do-expressions@^6.8.0: 349 | version "6.13.0" 350 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-do-expressions/-/babel-plugin-syntax-do-expressions-6.13.0.tgz#5747756139aa26d390d09410b03744ba07e4796d" 351 | 352 | babel-plugin-syntax-dynamic-import@^6.18.0: 353 | version "6.18.0" 354 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz#8d6a26229c83745a9982a441051572caa179b1da" 355 | 356 | babel-plugin-syntax-exponentiation-operator@^6.13.0, babel-plugin-syntax-exponentiation-operator@^6.8.0: 357 | version "6.13.0" 358 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de" 359 | 360 | babel-plugin-syntax-export-extensions@^6.13.0, babel-plugin-syntax-export-extensions@^6.8.0: 361 | version "6.13.0" 362 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-export-extensions/-/babel-plugin-syntax-export-extensions-6.13.0.tgz#70a1484f0f9089a4e84ad44bac353c95b9b12721" 363 | 364 | babel-plugin-syntax-flow@^6.18.0, babel-plugin-syntax-flow@^6.8.0: 365 | version "6.18.0" 366 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz#4c3ab20a2af26aa20cd25995c398c4eb70310c8d" 367 | 368 | babel-plugin-syntax-function-bind@^6.13.0, babel-plugin-syntax-function-bind@^6.8.0: 369 | version "6.13.0" 370 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-function-bind/-/babel-plugin-syntax-function-bind-6.13.0.tgz#48c495f177bdf31a981e732f55adc0bdd2601f46" 371 | 372 | babel-plugin-syntax-function-sent@^6.13.0: 373 | version "6.13.0" 374 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-function-sent/-/babel-plugin-syntax-function-sent-6.13.0.tgz#85b5e033b53b94a3cc2569d13426c2dcdc1975a5" 375 | 376 | babel-plugin-syntax-jsx@^6.0, babel-plugin-syntax-jsx@^6.18.0, babel-plugin-syntax-jsx@^6.8.0: 377 | version "6.18.0" 378 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946" 379 | 380 | babel-plugin-syntax-object-rest-spread@^6.13.0, babel-plugin-syntax-object-rest-spread@^6.8.0: 381 | version "6.13.0" 382 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" 383 | 384 | babel-plugin-syntax-trailing-function-commas@^6.22.0: 385 | version "6.22.0" 386 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3" 387 | 388 | babel-plugin-transform-async-functions@^6.8.0: 389 | version "6.22.0" 390 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-functions/-/babel-plugin-transform-async-functions-6.22.0.tgz#8f54eb700b64e143a27a56137bc069ad2258484c" 391 | dependencies: 392 | babel-plugin-syntax-async-functions "^6.8.0" 393 | babel-runtime "^6.22.0" 394 | 395 | babel-plugin-transform-async-generator-functions@^6.24.1: 396 | version "6.24.1" 397 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz#f058900145fd3e9907a6ddf28da59f215258a5db" 398 | dependencies: 399 | babel-helper-remap-async-to-generator "^6.24.1" 400 | babel-plugin-syntax-async-generators "^6.5.0" 401 | babel-runtime "^6.22.0" 402 | 403 | babel-plugin-transform-async-to-generator@^6.24.1: 404 | version "6.24.1" 405 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761" 406 | dependencies: 407 | babel-helper-remap-async-to-generator "^6.24.1" 408 | babel-plugin-syntax-async-functions "^6.8.0" 409 | babel-runtime "^6.22.0" 410 | 411 | babel-plugin-transform-async-to-module-method@^6.16.0: 412 | version "6.24.1" 413 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-module-method/-/babel-plugin-transform-async-to-module-method-6.24.1.tgz#9109a08987794b411cb213850ce935ec2f029cdb" 414 | dependencies: 415 | babel-helper-remap-async-to-generator "^6.24.1" 416 | babel-plugin-syntax-async-functions "^6.8.0" 417 | babel-runtime "^6.22.0" 418 | babel-types "^6.24.1" 419 | 420 | babel-plugin-transform-class-constructor-call@^6.24.1: 421 | version "6.24.1" 422 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-constructor-call/-/babel-plugin-transform-class-constructor-call-6.24.1.tgz#80dc285505ac067dcb8d6c65e2f6f11ab7765ef9" 423 | dependencies: 424 | babel-plugin-syntax-class-constructor-call "^6.18.0" 425 | babel-runtime "^6.22.0" 426 | babel-template "^6.24.1" 427 | 428 | babel-plugin-transform-class-properties@^6.24.1: 429 | version "6.24.1" 430 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz#6a79763ea61d33d36f37b611aa9def81a81b46ac" 431 | dependencies: 432 | babel-helper-function-name "^6.24.1" 433 | babel-plugin-syntax-class-properties "^6.8.0" 434 | babel-runtime "^6.22.0" 435 | babel-template "^6.24.1" 436 | 437 | babel-plugin-transform-decorators-legacy@^1.3.4: 438 | version "1.3.4" 439 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-decorators-legacy/-/babel-plugin-transform-decorators-legacy-1.3.4.tgz#741b58f6c5bce9e6027e0882d9c994f04f366925" 440 | dependencies: 441 | babel-plugin-syntax-decorators "^6.1.18" 442 | babel-runtime "^6.2.0" 443 | babel-template "^6.3.0" 444 | 445 | babel-plugin-transform-decorators@^6.13.0: 446 | version "6.24.1" 447 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.24.1.tgz#788013d8f8c6b5222bdf7b344390dfd77569e24d" 448 | dependencies: 449 | babel-helper-explode-class "^6.24.1" 450 | babel-plugin-syntax-decorators "^6.13.0" 451 | babel-runtime "^6.22.0" 452 | babel-template "^6.24.1" 453 | babel-types "^6.24.1" 454 | 455 | babel-plugin-transform-do-expressions@^6.8.0: 456 | version "6.22.0" 457 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-do-expressions/-/babel-plugin-transform-do-expressions-6.22.0.tgz#28ccaf92812d949c2cd1281f690c8fdc468ae9bb" 458 | dependencies: 459 | babel-plugin-syntax-do-expressions "^6.8.0" 460 | babel-runtime "^6.22.0" 461 | 462 | babel-plugin-transform-es2015-arrow-functions@^6.8.0: 463 | version "6.22.0" 464 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" 465 | dependencies: 466 | babel-runtime "^6.22.0" 467 | 468 | babel-plugin-transform-es2015-block-scoped-functions@^6.8.0: 469 | version "6.22.0" 470 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141" 471 | dependencies: 472 | babel-runtime "^6.22.0" 473 | 474 | babel-plugin-transform-es2015-block-scoping@^6.18.0: 475 | version "6.26.0" 476 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f" 477 | dependencies: 478 | babel-runtime "^6.26.0" 479 | babel-template "^6.26.0" 480 | babel-traverse "^6.26.0" 481 | babel-types "^6.26.0" 482 | lodash "^4.17.4" 483 | 484 | babel-plugin-transform-es2015-classes@^6.18.0: 485 | version "6.24.1" 486 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db" 487 | dependencies: 488 | babel-helper-define-map "^6.24.1" 489 | babel-helper-function-name "^6.24.1" 490 | babel-helper-optimise-call-expression "^6.24.1" 491 | babel-helper-replace-supers "^6.24.1" 492 | babel-messages "^6.23.0" 493 | babel-runtime "^6.22.0" 494 | babel-template "^6.24.1" 495 | babel-traverse "^6.24.1" 496 | babel-types "^6.24.1" 497 | 498 | babel-plugin-transform-es2015-computed-properties@^6.8.0: 499 | version "6.24.1" 500 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3" 501 | dependencies: 502 | babel-runtime "^6.22.0" 503 | babel-template "^6.24.1" 504 | 505 | babel-plugin-transform-es2015-destructuring@^6.18.0: 506 | version "6.23.0" 507 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d" 508 | dependencies: 509 | babel-runtime "^6.22.0" 510 | 511 | babel-plugin-transform-es2015-duplicate-keys@^6.8.0: 512 | version "6.24.1" 513 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e" 514 | dependencies: 515 | babel-runtime "^6.22.0" 516 | babel-types "^6.24.1" 517 | 518 | babel-plugin-transform-es2015-for-of@^6.18.0: 519 | version "6.23.0" 520 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691" 521 | dependencies: 522 | babel-runtime "^6.22.0" 523 | 524 | babel-plugin-transform-es2015-function-name@^6.9.0: 525 | version "6.24.1" 526 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b" 527 | dependencies: 528 | babel-helper-function-name "^6.24.1" 529 | babel-runtime "^6.22.0" 530 | babel-types "^6.24.1" 531 | 532 | babel-plugin-transform-es2015-instanceof@^6.18.0: 533 | version "6.22.0" 534 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-instanceof/-/babel-plugin-transform-es2015-instanceof-6.22.0.tgz#c23518163c1bae4836f5b6dfab9663edfdca2d6a" 535 | dependencies: 536 | babel-runtime "^6.22.0" 537 | 538 | babel-plugin-transform-es2015-literals@^6.8.0: 539 | version "6.22.0" 540 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e" 541 | dependencies: 542 | babel-runtime "^6.22.0" 543 | 544 | babel-plugin-transform-es2015-modules-amd@^6.18.0, babel-plugin-transform-es2015-modules-amd@^6.24.1: 545 | version "6.24.1" 546 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154" 547 | dependencies: 548 | babel-plugin-transform-es2015-modules-commonjs "^6.24.1" 549 | babel-runtime "^6.22.0" 550 | babel-template "^6.24.1" 551 | 552 | babel-plugin-transform-es2015-modules-commonjs@^6.18.0, babel-plugin-transform-es2015-modules-commonjs@^6.24.1: 553 | version "6.26.2" 554 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz#58a793863a9e7ca870bdc5a881117ffac27db6f3" 555 | dependencies: 556 | babel-plugin-transform-strict-mode "^6.24.1" 557 | babel-runtime "^6.26.0" 558 | babel-template "^6.26.0" 559 | babel-types "^6.26.0" 560 | 561 | babel-plugin-transform-es2015-modules-systemjs@^6.18.0: 562 | version "6.24.1" 563 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23" 564 | dependencies: 565 | babel-helper-hoist-variables "^6.24.1" 566 | babel-runtime "^6.22.0" 567 | babel-template "^6.24.1" 568 | 569 | babel-plugin-transform-es2015-modules-umd@^6.18.0: 570 | version "6.24.1" 571 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468" 572 | dependencies: 573 | babel-plugin-transform-es2015-modules-amd "^6.24.1" 574 | babel-runtime "^6.22.0" 575 | babel-template "^6.24.1" 576 | 577 | babel-plugin-transform-es2015-object-super@^6.8.0: 578 | version "6.24.1" 579 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d" 580 | dependencies: 581 | babel-helper-replace-supers "^6.24.1" 582 | babel-runtime "^6.22.0" 583 | 584 | babel-plugin-transform-es2015-parameters@^6.18.0: 585 | version "6.24.1" 586 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b" 587 | dependencies: 588 | babel-helper-call-delegate "^6.24.1" 589 | babel-helper-get-function-arity "^6.24.1" 590 | babel-runtime "^6.22.0" 591 | babel-template "^6.24.1" 592 | babel-traverse "^6.24.1" 593 | babel-types "^6.24.1" 594 | 595 | babel-plugin-transform-es2015-shorthand-properties@^6.18.0: 596 | version "6.24.1" 597 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0" 598 | dependencies: 599 | babel-runtime "^6.22.0" 600 | babel-types "^6.24.1" 601 | 602 | babel-plugin-transform-es2015-spread@^6.8.0: 603 | version "6.22.0" 604 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1" 605 | dependencies: 606 | babel-runtime "^6.22.0" 607 | 608 | babel-plugin-transform-es2015-sticky-regex@^6.8.0: 609 | version "6.24.1" 610 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc" 611 | dependencies: 612 | babel-helper-regex "^6.24.1" 613 | babel-runtime "^6.22.0" 614 | babel-types "^6.24.1" 615 | 616 | babel-plugin-transform-es2015-template-literals@^6.8.0: 617 | version "6.22.0" 618 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d" 619 | dependencies: 620 | babel-runtime "^6.22.0" 621 | 622 | babel-plugin-transform-es2015-typeof-symbol@^6.18.0: 623 | version "6.23.0" 624 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372" 625 | dependencies: 626 | babel-runtime "^6.22.0" 627 | 628 | babel-plugin-transform-es2015-unicode-regex@^6.11.0: 629 | version "6.24.1" 630 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9" 631 | dependencies: 632 | babel-helper-regex "^6.24.1" 633 | babel-runtime "^6.22.0" 634 | regexpu-core "^2.0.0" 635 | 636 | babel-plugin-transform-es3-member-expression-literals@^6.8.0: 637 | version "6.22.0" 638 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es3-member-expression-literals/-/babel-plugin-transform-es3-member-expression-literals-6.22.0.tgz#733d3444f3ecc41bef8ed1a6a4e09657b8969ebb" 639 | dependencies: 640 | babel-runtime "^6.22.0" 641 | 642 | babel-plugin-transform-es3-property-literals@^6.8.0: 643 | version "6.22.0" 644 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es3-property-literals/-/babel-plugin-transform-es3-property-literals-6.22.0.tgz#b2078d5842e22abf40f73e8cde9cd3711abd5758" 645 | dependencies: 646 | babel-runtime "^6.22.0" 647 | 648 | babel-plugin-transform-es5-property-mutators@^6.8.0: 649 | version "6.24.1" 650 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es5-property-mutators/-/babel-plugin-transform-es5-property-mutators-6.24.1.tgz#0b9a24f4e2ff18c33603d24a0d438dc9793b0a13" 651 | dependencies: 652 | babel-helper-define-map "^6.24.1" 653 | babel-runtime "^6.22.0" 654 | 655 | babel-plugin-transform-eval@^6.8.0: 656 | version "6.22.0" 657 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-eval/-/babel-plugin-transform-eval-6.22.0.tgz#f6cb542d5b2f58f85d3bd492203ad25b8d0b80f2" 658 | dependencies: 659 | babel-runtime "^6.22.0" 660 | 661 | babel-plugin-transform-exponentiation-operator@^6.24.1: 662 | version "6.24.1" 663 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e" 664 | dependencies: 665 | babel-helper-builder-binary-assignment-operator-visitor "^6.24.1" 666 | babel-plugin-syntax-exponentiation-operator "^6.8.0" 667 | babel-runtime "^6.22.0" 668 | 669 | babel-plugin-transform-export-extensions@^6.22.0: 670 | version "6.22.0" 671 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-export-extensions/-/babel-plugin-transform-export-extensions-6.22.0.tgz#53738b47e75e8218589eea946cbbd39109bbe653" 672 | dependencies: 673 | babel-plugin-syntax-export-extensions "^6.8.0" 674 | babel-runtime "^6.22.0" 675 | 676 | babel-plugin-transform-flow-comments@^6.17.0: 677 | version "6.22.0" 678 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-flow-comments/-/babel-plugin-transform-flow-comments-6.22.0.tgz#8d9491132f2b48abd0656f96c20f3bbd6fc17529" 679 | dependencies: 680 | babel-plugin-syntax-flow "^6.8.0" 681 | babel-runtime "^6.22.0" 682 | 683 | babel-plugin-transform-flow-strip-types@^6.18.0: 684 | version "6.22.0" 685 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz#84cb672935d43714fdc32bce84568d87441cf7cf" 686 | dependencies: 687 | babel-plugin-syntax-flow "^6.18.0" 688 | babel-runtime "^6.22.0" 689 | 690 | babel-plugin-transform-function-bind@^6.8.0: 691 | version "6.22.0" 692 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-function-bind/-/babel-plugin-transform-function-bind-6.22.0.tgz#c6fb8e96ac296a310b8cf8ea401462407ddf6a97" 693 | dependencies: 694 | babel-plugin-syntax-function-bind "^6.8.0" 695 | babel-runtime "^6.22.0" 696 | 697 | babel-plugin-transform-inline-consecutive-adds@^0.4.3: 698 | version "0.4.3" 699 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-inline-consecutive-adds/-/babel-plugin-transform-inline-consecutive-adds-0.4.3.tgz#323d47a3ea63a83a7ac3c811ae8e6941faf2b0d1" 700 | 701 | babel-plugin-transform-inline-environment-variables@^0.4.3: 702 | version "0.4.3" 703 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-inline-environment-variables/-/babel-plugin-transform-inline-environment-variables-0.4.3.tgz#a3b09883353be8b5e2336e3ff1ef8a5d93f9c489" 704 | 705 | babel-plugin-transform-jscript@^6.8.0: 706 | version "6.22.0" 707 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-jscript/-/babel-plugin-transform-jscript-6.22.0.tgz#6e8af12b7aba49e0a809152616ac05690b3352dc" 708 | dependencies: 709 | babel-runtime "^6.22.0" 710 | 711 | babel-plugin-transform-member-expression-literals@^6.8.0: 712 | version "6.9.4" 713 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-member-expression-literals/-/babel-plugin-transform-member-expression-literals-6.9.4.tgz#37039c9a0c3313a39495faac2ff3a6b5b9d038bf" 714 | 715 | babel-plugin-transform-merge-sibling-variables@^6.8.1: 716 | version "6.9.4" 717 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-merge-sibling-variables/-/babel-plugin-transform-merge-sibling-variables-6.9.4.tgz#85b422fc3377b449c9d1cde44087203532401dae" 718 | 719 | babel-plugin-transform-minify-booleans@^6.8.0: 720 | version "6.9.4" 721 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-minify-booleans/-/babel-plugin-transform-minify-booleans-6.9.4.tgz#acbb3e56a3555dd23928e4b582d285162dd2b198" 722 | 723 | babel-plugin-transform-node-env-inline@^0.4.3: 724 | version "0.4.3" 725 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-node-env-inline/-/babel-plugin-transform-node-env-inline-0.4.3.tgz#8c84cd74d58f17b0fdf76144a3589f610c3c2497" 726 | 727 | babel-plugin-transform-object-assign@^6.8.0: 728 | version "6.22.0" 729 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-assign/-/babel-plugin-transform-object-assign-6.22.0.tgz#f99d2f66f1a0b0d498e346c5359684740caa20ba" 730 | dependencies: 731 | babel-runtime "^6.22.0" 732 | 733 | babel-plugin-transform-object-rest-spread@^6.23.0: 734 | version "6.26.0" 735 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz#0f36692d50fef6b7e2d4b3ac1478137a963b7b06" 736 | dependencies: 737 | babel-plugin-syntax-object-rest-spread "^6.8.0" 738 | babel-runtime "^6.26.0" 739 | 740 | babel-plugin-transform-object-set-prototype-of-to-assign@^6.8.0: 741 | version "6.22.0" 742 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-set-prototype-of-to-assign/-/babel-plugin-transform-object-set-prototype-of-to-assign-6.22.0.tgz#d4560bfa2d1322084dff45427535923e07e4b3f9" 743 | dependencies: 744 | babel-runtime "^6.22.0" 745 | 746 | babel-plugin-transform-property-literals@^6.8.0: 747 | version "6.9.4" 748 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-property-literals/-/babel-plugin-transform-property-literals-6.9.4.tgz#98c1d21e255736573f93ece54459f6ce24985d39" 749 | dependencies: 750 | esutils "^2.0.2" 751 | 752 | babel-plugin-transform-proto-to-assign@^6.9.0: 753 | version "6.26.0" 754 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-proto-to-assign/-/babel-plugin-transform-proto-to-assign-6.26.0.tgz#c493e24a62749a44f7ede96506c0cb3a1891f67b" 755 | dependencies: 756 | babel-runtime "^6.26.0" 757 | lodash "^4.17.4" 758 | 759 | babel-plugin-transform-react-constant-elements@^6.9.1: 760 | version "6.23.0" 761 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-constant-elements/-/babel-plugin-transform-react-constant-elements-6.23.0.tgz#2f119bf4d2cdd45eb9baaae574053c604f6147dd" 762 | dependencies: 763 | babel-runtime "^6.22.0" 764 | 765 | babel-plugin-transform-react-display-name@^6.8.0: 766 | version "6.25.0" 767 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-display-name/-/babel-plugin-transform-react-display-name-6.25.0.tgz#67e2bf1f1e9c93ab08db96792e05392bf2cc28d1" 768 | dependencies: 769 | babel-runtime "^6.22.0" 770 | 771 | babel-plugin-transform-react-inline-elements@^6.8.0: 772 | version "6.22.0" 773 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-inline-elements/-/babel-plugin-transform-react-inline-elements-6.22.0.tgz#6687211a32b49a52f22c573a2b5504a25ef17c53" 774 | dependencies: 775 | babel-runtime "^6.22.0" 776 | 777 | babel-plugin-transform-react-jsx-compat@^6.8.0: 778 | version "6.24.1" 779 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx-compat/-/babel-plugin-transform-react-jsx-compat-6.24.1.tgz#bb6167e7be800d33ce528aa353e66a23c83c5a00" 780 | dependencies: 781 | babel-helper-builder-react-jsx "^6.24.1" 782 | babel-runtime "^6.22.0" 783 | 784 | babel-plugin-transform-react-jsx-self@^6.11.0: 785 | version "6.22.0" 786 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx-self/-/babel-plugin-transform-react-jsx-self-6.22.0.tgz#df6d80a9da2612a121e6ddd7558bcbecf06e636e" 787 | dependencies: 788 | babel-plugin-syntax-jsx "^6.8.0" 789 | babel-runtime "^6.22.0" 790 | 791 | babel-plugin-transform-react-jsx-source@^6.22.0: 792 | version "6.22.0" 793 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx-source/-/babel-plugin-transform-react-jsx-source-6.22.0.tgz#66ac12153f5cd2d17b3c19268f4bf0197f44ecd6" 794 | dependencies: 795 | babel-plugin-syntax-jsx "^6.8.0" 796 | babel-runtime "^6.22.0" 797 | 798 | babel-plugin-transform-react-jsx@^6.8.0: 799 | version "6.24.1" 800 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.24.1.tgz#840a028e7df460dfc3a2d29f0c0d91f6376e66a3" 801 | dependencies: 802 | babel-helper-builder-react-jsx "^6.24.1" 803 | babel-plugin-syntax-jsx "^6.8.0" 804 | babel-runtime "^6.22.0" 805 | 806 | babel-plugin-transform-regenerator@^6.16.1: 807 | version "6.26.0" 808 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f" 809 | dependencies: 810 | regenerator-transform "^0.10.0" 811 | 812 | babel-plugin-transform-regexp-constructors@^0.4.3: 813 | version "0.4.3" 814 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-regexp-constructors/-/babel-plugin-transform-regexp-constructors-0.4.3.tgz#58b7775b63afcf33328fae9a5f88fbd4fb0b4965" 815 | 816 | babel-plugin-transform-remove-console@^6.8.5: 817 | version "6.9.4" 818 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-remove-console/-/babel-plugin-transform-remove-console-6.9.4.tgz#b980360c067384e24b357a588d807d3c83527780" 819 | 820 | babel-plugin-transform-remove-debugger@^6.8.0: 821 | version "6.9.4" 822 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-remove-debugger/-/babel-plugin-transform-remove-debugger-6.9.4.tgz#42b727631c97978e1eb2d199a7aec84a18339ef2" 823 | 824 | babel-plugin-transform-remove-undefined@^0.4.3: 825 | version "0.4.3" 826 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-remove-undefined/-/babel-plugin-transform-remove-undefined-0.4.3.tgz#d40b0da7f91c08c06cc72b767474c01c4894de02" 827 | dependencies: 828 | babel-helper-evaluate-path "^0.4.3" 829 | 830 | babel-plugin-transform-runtime@^6.15.0: 831 | version "6.23.0" 832 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-runtime/-/babel-plugin-transform-runtime-6.23.0.tgz#88490d446502ea9b8e7efb0fe09ec4d99479b1ee" 833 | dependencies: 834 | babel-runtime "^6.22.0" 835 | 836 | babel-plugin-transform-simplify-comparison-operators@^6.8.0: 837 | version "6.9.4" 838 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-simplify-comparison-operators/-/babel-plugin-transform-simplify-comparison-operators-6.9.4.tgz#f62afe096cab0e1f68a2d753fdf283888471ceb9" 839 | 840 | babel-plugin-transform-strict-mode@^6.18.0, babel-plugin-transform-strict-mode@^6.24.1: 841 | version "6.24.1" 842 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758" 843 | dependencies: 844 | babel-runtime "^6.22.0" 845 | babel-types "^6.24.1" 846 | 847 | babel-plugin-transform-undefined-to-void@^6.8.0: 848 | version "6.9.4" 849 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-undefined-to-void/-/babel-plugin-transform-undefined-to-void-6.9.4.tgz#be241ca81404030678b748717322b89d0c8fe280" 850 | 851 | babel-plugin-transform-vue-jsx@^3.1.1: 852 | version "3.7.0" 853 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-vue-jsx/-/babel-plugin-transform-vue-jsx-3.7.0.tgz#d40492e6692a36b594f7e9a1928f43e969740960" 854 | dependencies: 855 | esutils "^2.0.2" 856 | 857 | babel-plugin-undeclared-variables-check@^6.8.0: 858 | version "6.22.0" 859 | resolved "https://registry.yarnpkg.com/babel-plugin-undeclared-variables-check/-/babel-plugin-undeclared-variables-check-6.22.0.tgz#95ffada98fd1d8cad0b67103167d68cdf377ed30" 860 | dependencies: 861 | babel-runtime "^6.22.0" 862 | leven "^1.0.2" 863 | 864 | babel-register@^6.26.0: 865 | version "6.26.0" 866 | resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071" 867 | dependencies: 868 | babel-core "^6.26.0" 869 | babel-runtime "^6.26.0" 870 | core-js "^2.5.0" 871 | home-or-tmp "^2.0.0" 872 | lodash "^4.17.4" 873 | mkdirp "^0.5.1" 874 | source-map-support "^0.4.15" 875 | 876 | babel-runtime@^6.18.0, babel-runtime@^6.2.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: 877 | version "6.26.0" 878 | resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" 879 | dependencies: 880 | core-js "^2.4.0" 881 | regenerator-runtime "^0.11.0" 882 | 883 | babel-template@^6.16.0, babel-template@^6.24.1, babel-template@^6.26.0, babel-template@^6.3.0: 884 | version "6.26.0" 885 | resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" 886 | dependencies: 887 | babel-runtime "^6.26.0" 888 | babel-traverse "^6.26.0" 889 | babel-types "^6.26.0" 890 | babylon "^6.18.0" 891 | lodash "^4.17.4" 892 | 893 | babel-traverse@^6.18.0, babel-traverse@^6.24.1, babel-traverse@^6.26.0: 894 | version "6.26.0" 895 | resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" 896 | dependencies: 897 | babel-code-frame "^6.26.0" 898 | babel-messages "^6.23.0" 899 | babel-runtime "^6.26.0" 900 | babel-types "^6.26.0" 901 | babylon "^6.18.0" 902 | debug "^2.6.8" 903 | globals "^9.18.0" 904 | invariant "^2.2.2" 905 | lodash "^4.17.4" 906 | 907 | babel-types@7.0.0-beta.3: 908 | version "7.0.0-beta.3" 909 | resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-7.0.0-beta.3.tgz#cd927ca70e0ae8ab05f4aab83778cfb3e6eb20b4" 910 | dependencies: 911 | esutils "^2.0.2" 912 | lodash "^4.2.0" 913 | to-fast-properties "^2.0.0" 914 | 915 | babel-types@^6.18.0, babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0: 916 | version "6.26.0" 917 | resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" 918 | dependencies: 919 | babel-runtime "^6.26.0" 920 | esutils "^2.0.2" 921 | lodash "^4.17.4" 922 | to-fast-properties "^1.0.3" 923 | 924 | babylon@^6.18.0: 925 | version "6.18.0" 926 | resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" 927 | 928 | balanced-match@^1.0.0: 929 | version "1.0.0" 930 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 931 | 932 | brace-expansion@^1.1.7: 933 | version "1.1.11" 934 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 935 | dependencies: 936 | balanced-match "^1.0.0" 937 | concat-map "0.0.1" 938 | 939 | chalk@^1.1.3: 940 | version "1.1.3" 941 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" 942 | dependencies: 943 | ansi-styles "^2.2.1" 944 | escape-string-regexp "^1.0.2" 945 | has-ansi "^2.0.0" 946 | strip-ansi "^3.0.0" 947 | supports-color "^2.0.0" 948 | 949 | concat-map@0.0.1: 950 | version "0.0.1" 951 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 952 | 953 | convert-source-map@^1.5.1: 954 | version "1.5.1" 955 | resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.1.tgz#b8278097b9bc229365de5c62cf5fcaed8b5599e5" 956 | 957 | core-js@^2.4.0, core-js@^2.5.0: 958 | version "2.5.6" 959 | resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.6.tgz#0fe6d45bf3cac3ac364a9d72de7576f4eb221b9d" 960 | 961 | debug@^2.6.8, debug@^2.6.9: 962 | version "2.6.9" 963 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 964 | dependencies: 965 | ms "2.0.0" 966 | 967 | detect-indent@^4.0.0: 968 | version "4.0.0" 969 | resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" 970 | dependencies: 971 | repeating "^2.0.0" 972 | 973 | escape-string-regexp@^1.0.2: 974 | version "1.0.5" 975 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 976 | 977 | esutils@^2.0.2: 978 | version "2.0.2" 979 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" 980 | 981 | fs.realpath@^1.0.0: 982 | version "1.0.0" 983 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 984 | 985 | glob@^7.1.1: 986 | version "7.1.2" 987 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" 988 | dependencies: 989 | fs.realpath "^1.0.0" 990 | inflight "^1.0.4" 991 | inherits "2" 992 | minimatch "^3.0.4" 993 | once "^1.3.0" 994 | path-is-absolute "^1.0.0" 995 | 996 | globals@^9.18.0: 997 | version "9.18.0" 998 | resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" 999 | 1000 | has-ansi@^2.0.0: 1001 | version "2.0.0" 1002 | resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" 1003 | dependencies: 1004 | ansi-regex "^2.0.0" 1005 | 1006 | home-or-tmp@^2.0.0: 1007 | version "2.0.0" 1008 | resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" 1009 | dependencies: 1010 | os-homedir "^1.0.0" 1011 | os-tmpdir "^1.0.1" 1012 | 1013 | inflight@^1.0.4: 1014 | version "1.0.6" 1015 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 1016 | dependencies: 1017 | once "^1.3.0" 1018 | wrappy "1" 1019 | 1020 | inherits@2: 1021 | version "2.0.3" 1022 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 1023 | 1024 | invariant@^2.2.2: 1025 | version "2.2.4" 1026 | resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" 1027 | dependencies: 1028 | loose-envify "^1.0.0" 1029 | 1030 | is-finite@^1.0.0: 1031 | version "1.0.2" 1032 | resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" 1033 | dependencies: 1034 | number-is-nan "^1.0.0" 1035 | 1036 | js-tokens@^3.0.0, js-tokens@^3.0.2: 1037 | version "3.0.2" 1038 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" 1039 | 1040 | jsesc@^1.3.0: 1041 | version "1.3.0" 1042 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" 1043 | 1044 | jsesc@~0.5.0: 1045 | version "0.5.0" 1046 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" 1047 | 1048 | json5@^0.5.1: 1049 | version "0.5.1" 1050 | resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" 1051 | 1052 | leven@^1.0.2: 1053 | version "1.0.2" 1054 | resolved "https://registry.yarnpkg.com/leven/-/leven-1.0.2.tgz#9144b6eebca5f1d0680169f1a6770dcea60b75c3" 1055 | 1056 | lodash.some@^4.6.0: 1057 | version "4.6.0" 1058 | resolved "https://registry.yarnpkg.com/lodash.some/-/lodash.some-4.6.0.tgz#1bb9f314ef6b8baded13b549169b2a945eb68e4d" 1059 | 1060 | lodash@^4.16.4, lodash@^4.17.4, lodash@^4.2.0: 1061 | version "4.17.10" 1062 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" 1063 | 1064 | loose-envify@^1.0.0: 1065 | version "1.3.1" 1066 | resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848" 1067 | dependencies: 1068 | js-tokens "^3.0.0" 1069 | 1070 | minimatch@^3.0.4: 1071 | version "3.0.4" 1072 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 1073 | dependencies: 1074 | brace-expansion "^1.1.7" 1075 | 1076 | minimist@0.0.8: 1077 | version "0.0.8" 1078 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" 1079 | 1080 | mkdirp@^0.5.1: 1081 | version "0.5.1" 1082 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" 1083 | dependencies: 1084 | minimist "0.0.8" 1085 | 1086 | ms@2.0.0: 1087 | version "2.0.0" 1088 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 1089 | 1090 | number-is-nan@^1.0.0: 1091 | version "1.0.1" 1092 | resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" 1093 | 1094 | once@^1.3.0: 1095 | version "1.4.0" 1096 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 1097 | dependencies: 1098 | wrappy "1" 1099 | 1100 | os-homedir@^1.0.0: 1101 | version "1.0.2" 1102 | resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" 1103 | 1104 | os-tmpdir@^1.0.1: 1105 | version "1.0.2" 1106 | resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" 1107 | 1108 | path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: 1109 | version "1.0.1" 1110 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 1111 | 1112 | private@^0.1.6, private@^0.1.8: 1113 | version "0.1.8" 1114 | resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" 1115 | 1116 | regenerate@^1.2.1: 1117 | version "1.4.0" 1118 | resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" 1119 | 1120 | regenerator-runtime@^0.11.0: 1121 | version "0.11.1" 1122 | resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" 1123 | 1124 | regenerator-transform@^0.10.0: 1125 | version "0.10.1" 1126 | resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd" 1127 | dependencies: 1128 | babel-runtime "^6.18.0" 1129 | babel-types "^6.19.0" 1130 | private "^0.1.6" 1131 | 1132 | regexpu-core@^2.0.0: 1133 | version "2.0.0" 1134 | resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" 1135 | dependencies: 1136 | regenerate "^1.2.1" 1137 | regjsgen "^0.2.0" 1138 | regjsparser "^0.1.4" 1139 | 1140 | regjsgen@^0.2.0: 1141 | version "0.2.0" 1142 | resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" 1143 | 1144 | regjsparser@^0.1.4: 1145 | version "0.1.5" 1146 | resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" 1147 | dependencies: 1148 | jsesc "~0.5.0" 1149 | 1150 | repeating@^2.0.0: 1151 | version "2.0.1" 1152 | resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" 1153 | dependencies: 1154 | is-finite "^1.0.0" 1155 | 1156 | require-package-name@^2.0.1: 1157 | version "2.0.1" 1158 | resolved "https://registry.yarnpkg.com/require-package-name/-/require-package-name-2.0.1.tgz#c11e97276b65b8e2923f75dabf5fb2ef0c3841b9" 1159 | 1160 | slash@^1.0.0: 1161 | version "1.0.0" 1162 | resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" 1163 | 1164 | source-map-support@^0.4.15: 1165 | version "0.4.18" 1166 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" 1167 | dependencies: 1168 | source-map "^0.5.6" 1169 | 1170 | source-map@^0.5.6, source-map@^0.5.7: 1171 | version "0.5.7" 1172 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" 1173 | 1174 | strip-ansi@^3.0.0: 1175 | version "3.0.1" 1176 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" 1177 | dependencies: 1178 | ansi-regex "^2.0.0" 1179 | 1180 | supports-color@^2.0.0: 1181 | version "2.0.0" 1182 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" 1183 | 1184 | sysexits@^1.0.1: 1185 | version "1.0.1" 1186 | resolved "https://registry.yarnpkg.com/sysexits/-/sysexits-1.0.1.tgz#7699b7ff8fd80d050390c0a4a1f6135aa04cc746" 1187 | 1188 | to-fast-properties@^1.0.3: 1189 | version "1.0.3" 1190 | resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" 1191 | 1192 | to-fast-properties@^2.0.0: 1193 | version "2.0.0" 1194 | resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" 1195 | 1196 | trim-right@^1.0.1: 1197 | version "1.0.1" 1198 | resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" 1199 | 1200 | wrappy@1: 1201 | version "1.0.2" 1202 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1203 | --------------------------------------------------------------------------------