{
  "_args": [
    [
      {
        "raw": "broccoli-babel-transpiler@^6.1.2",
        "scope": null,
        "escapedName": "broccoli-babel-transpiler",
        "name": "broccoli-babel-transpiler",
        "rawSpec": "^6.1.2",
        "spec": ">=6.1.2 <7.0.0",
        "type": "range"
      },
      "/home/travis/build/lukesargeant/ember-sparkline/node_modules/ember-cli-babel"
    ]
  ],
  "_from": "broccoli-babel-transpiler@>=6.1.2 <7.0.0",
  "_id": "broccoli-babel-transpiler@6.1.2",
  "_inCache": true,
  "_location": "/broccoli-babel-transpiler",
  "_nodeVersion": "8.1.3",
  "_npmOperationalInternal": {
    "host": "s3://npm-registry-packages",
    "tmp": "tmp/broccoli-babel-transpiler-6.1.2.tgz_1501605398681_0.015061353566125035"
  },
  "_npmUser": {
    "name": "stefanpenner",
    "email": "stefan.penner@gmail.com"
  },
  "_npmVersion": "5.1.0",
  "_phantomChildren": {},
  "_requested": {
    "raw": "broccoli-babel-transpiler@^6.1.2",
    "scope": null,
    "escapedName": "broccoli-babel-transpiler",
    "name": "broccoli-babel-transpiler",
    "rawSpec": "^6.1.2",
    "spec": ">=6.1.2 <7.0.0",
    "type": "range"
  },
  "_requiredBy": [
    "/ember-cli",
    "/ember-cli-babel"
  ],
  "_resolved": "https://registry.npmjs.org/broccoli-babel-transpiler/-/broccoli-babel-transpiler-6.1.2.tgz",
  "_shasum": "26019c045b5ea3e44cfef62821302f9bd483cabd",
  "_shrinkwrap": null,
  "_spec": "broccoli-babel-transpiler@^6.1.2",
  "_where": "/home/travis/build/lukesargeant/ember-sparkline/node_modules/ember-cli-babel",
  "author": {
    "name": "nightire",
    "email": "nightire@very-geek.com",
    "url": "http://very-geek.com/"
  },
  "bugs": {
    "url": "https://github.com/babel/broccoli-babel-transpiler/issues"
  },
  "dependencies": {
    "babel-core": "^6.14.0",
    "broccoli-funnel": "^1.0.0",
    "broccoli-merge-trees": "^1.0.0",
    "broccoli-persistent-filter": "^1.4.0",
    "clone": "^2.0.0",
    "hash-for-dep": "^1.0.2",
    "heimdalljs-logger": "^0.1.7",
    "json-stable-stringify": "^1.0.0",
    "rsvp": "^3.5.0",
    "workerpool": "^2.2.1"
  },
  "description": "A Broccoli plugin which transpile ES6 to readable ES5 by using babel.",
  "devDependencies": {
    "amd-name-resolver": "0.0.6",
    "babel-plugin-transform-es2015-block-scoping": "^6.4.0",
    "babel-plugin-transform-es2015-classes": "^6.9.0",
    "babel-plugin-transform-es2015-modules-amd": "^6.4.3",
    "babel-plugin-transform-strict-mode": "^6.3.13",
    "broccoli": "^0.16.3",
    "broccoli-test-helpers": "0.0.8",
    "chai": "^3.5.0",
    "mkdirp": "^0.5.1",
    "mocha": "^3.0.2"
  },
  "directories": {},
  "dist": {
    "integrity": "sha512-o1OUe5RZ5EP5+QICEmRNvWlhMvIciMisVACHu6qUPt6dE0Q0UnI5lUpWTmuXg/X+QuznqD/s1PApIpahv/QMZw==",
    "shasum": "26019c045b5ea3e44cfef62821302f9bd483cabd",
    "tarball": "https://registry.npmjs.org/broccoli-babel-transpiler/-/broccoli-babel-transpiler-6.1.2.tgz"
  },
  "engines": {
    "node": ">= 4"
  },
  "files": [
    "index.js",
    "lib"
  ],
  "gitHead": "e93c7b62af662211ec8e3312734804f7c0253ee7",
  "homepage": "https://github.com/babel/broccoli-babel-transpiler",
  "keywords": [
    "broccoli-plugin",
    "transpiler",
    "es6",
    "ecmascript",
    "ecmascript6",
    "harmony",
    "javascript",
    "js"
  ],
  "license": "MIT",
  "main": "index.js",
  "maintainers": [
    {
      "name": "ember-cli",
      "email": "stefan.penner+ember-cli@gmail.com"
    },
    {
      "name": "rwjblue",
      "email": "me@rwjblue.com"
    },
    {
      "name": "turbo87",
      "email": "tobias.bieniek@gmx.de"
    },
    {
      "name": "chadhietala",
      "email": "chadhietala@gmail.com"
    },
    {
      "name": "stefanpenner",
      "email": "stefan.penner@gmail.com"
    },
    {
      "name": "nightire",
      "email": "dev.yufan@gmail.com"
    },
    {
      "name": "sebmck",
      "email": "sebmck@gmail.com"
    }
  ],
  "name": "broccoli-babel-transpiler",
  "optionalDependencies": {},
  "readme": "# broccoli-babel-transpiler\n\n[![Build Status](https://travis-ci.org/babel/broccoli-babel-transpiler.svg?branch=master)](https://travis-ci.org/babel/broccoli-babel-transpiler)\n[![Build status](https://ci.appveyor.com/api/projects/status/a0nbd84m1x4y5fp5?svg=true)](https://ci.appveyor.com/project/embercli/broccoli-babel-transpiler)\n\n\nA [Broccoli](https://github.com/broccolijs/broccoli) plugin which\ntranspiles ES6 to readable ES5 by using [babel](https://github.com/babel/babel).\n\n## How to install?\n\n```sh\n$ npm install broccoli-babel-transpiler --save-dev\n```\n\n## How to use?\n\nIn your `Brocfile.js`:\n\n```js\nvar esTranspiler = require('broccoli-babel-transpiler');\nvar scriptTree = esTranspiler(inputTree, options);\n```\n\nYou can find [options](https://babeljs.io/docs/usage/options) at babel's\ngithub repo.\n\n### Examples\n\nYou'll find three example projects using this plugin in the repository [broccoli-babel-examples](https://github.com/givanse/broccoli-babel-examples).\nEach one of them builds on top of the previous example so you can progess from bare minimum to ambitious development.\n\n * [es6-fruits](https://github.com/givanse/broccoli-babel-examples/tree/master/es6-fruits) - Execute a single ES6 script.\n * [es6-website](https://github.com/givanse/broccoli-babel-examples/tree/master/es6-website) - Build a simple website.\n * [es6-modules](https://github.com/givanse/broccoli-babel-examples/tree/master/es6-modules) - Handle modules and unit tests.\n\n## About source map\n\nCurrently this plugin only supports inline source map. If you need\nseparate source map feature, you're welcome to submit a pull request.\n\n## Advanced usage\n\n`filterExtensions` is an option to limit (or expand) the set of file extensions that will be transformed.\n\nThe default `filterExtension` is `js`\n\n```js\nvar esTranspiler = require('broccoli-babel-transpiler');\nvar scriptTree = esTranspiler(inputTree, {\n    filterExtensions:['js', 'es6'] // babelize both .js and .es6 files\n});\n```\n\n## Polyfill\n\nIn order to use some of the ES6 features you must include the Babel [polyfill](http://babeljs.io/docs/usage/polyfill/#usage-in-browser).\n\nYou don't always need this, review which features need the polyfill here: [ES6 Features](https://babeljs.io/docs/learn-es6).\n\n```js\nvar esTranspiler = require('broccoli-babel-transpiler');\nvar scriptTree = esTranspiler(inputTree, { browserPolyfill: true });\n```\n\n## Plugins\n\nUse of custom plugins works similarly to `babel` itself. You would pass a `plugins` array in `options`:\n\n```js\nvar esTranspiler = require('broccoli-babel-transpiler');\nvar applyFeatureFlags = require('babel-plugin-feature-flags');\n\nvar featureFlagPlugin = applyFeatureFlags({\n  import: { module: 'ember-metal/features' },\n  features: {\n    'ember-metal-blah': true\n  }\n});\n\nvar scriptTree = esTranspiler(inputTree, {\n  plugins: [\n    featureFlagPlugin\n  ]\n});\n```\n\n### Caching\n\nbroccoli-babel-transpiler uses a persistent cache to enable rebuilds to be significantly faster (by avoiding transpilation for files that have not changed).\nHowever, since a plugin can do many things to affect the transpiled output it must also influence the cache key to ensure transpiled files are rebuilt\nif the plugin changes (or the plugins configuration).\n\nIn order to aid plugin developers in this process, broccoli-babel-transpiler will invoke two methods on a plugin so that it can augment the cache key:\n\n* `cacheKey` - This method is used to describe any runtime information that may want to invalidate the cached result of each file transpilation. This is\n  generally only needed when the configuration provided to the plugin is used to modify the AST output by a plugin like `babel-plugin-filter-imports` (module\n  exports to strip from a build), `babel-plugin-feature-flags` (configured features and current status to strip or embed in a final build), or\n  `babel-plugin-htmlbars-inline-precompile` (uses `ember-template-compiler.js` to compile inlined templates).\n* `baseDir` - This method is expected to return the plugins base dir. The provided `baseDir` is used to ensure the cache is invalidated if any of the\n  plugin's files change (including its deps). Each plugin should implement `baseDir` as: `Plugin.prototype.baseDir = function() { return \\_\\_dirname; };`.\n\n## Parallel Transpilation\n\nbroccoli-babel-transpiler can run multiple babel transpiles in parallel using a pool of workers, to take advantage of multi-core systems.\nBecause these workers are separate processes, the plugins and callback functions that are normally passed as options to babel must be specified in a serializable form.\nTo enable this parallelization there is an API to tell the worker how to construct the plugin or callback in its process.\n\nPlugins are specified as an object with a `_parallelBabel` property:\n\n```js\nvar plugin = {\n  _parallelBabel: {\n    requireFile: '/full/path/to/the/file',\n    useMethod: 'methodName',\n    buildUsing: 'buildFunction',\n    params: { ok: 'this object will be passed to buildFunction()' }\n  }\n};\n```\n\nCallbacks can be specified like plugins, or as functions with a `_parallelBabel` property:\n\n```js\nvar callback = function() { /* do something */ };\ncallback._parallelBabel = {\n  requireFile: '/full/path/to/the/file',\n  useMethod: 'methodName',\n  buildUsing: 'buildFunction',\n  params: { ok: 'this object will be passed to buildFunction()' }\n};\n```\n\n### requireFile (required)\n\nThis property specifies the file to require in the worker process to create the plugin or callback.\nThis must be given as an absolute path.\n\n```js\nvar esTranspiler = require('broccoli-babel-transpiler');\n\nvar somePlugin = {\n  _parallelBabel: {\n    requireFile: '/full/path/to/the/file'\n  }\n});\n\nvar scriptTree = esTranspiler(inputTree, {\n  plugins: [\n    'transform-strict-mode', // plugins that are given as strings will automatically be parallelized\n    somePlugin\n  ]\n});\n```\n\n### useMethod (optional)\n\nThis property specifies the method to use from the file that is required.\n\nIf you have a plugin defined like this:\n\n```js\n// some_plugin.js\n\nmodule.exports = {\n  pluginFunction(babel) {\n    // do plugin things\n  }\n};\n```\n\nYou can tell broccoli-babel-transpiler to use that function in the worker processes like so:\n\n```js\nvar esTranspiler = require('broccoli-babel-transpiler');\n\nvar somePlugin = {\n  _parallelBabel: {\n    requireFile: '/path/to/some_plugin',\n    useMethod: 'pluginFunction'\n  }\n});\n\nvar scriptTree = esTranspiler(inputTree, {\n  plugins: [ somePlugin ]\n});\n```\n\n### buildUsing and params (optional)\n\nThese properties specify a function to run to build the plugin (or callback), and any parameters\nto pass to that function.\n\nIf the plugin needs to be built dynamically, you can do that like so:\n\n```js\n// some_plugin.js\n\nmodule.exports = {\n  buildPlugin(params) {\n    var pluginInstance = doSomethingWith(params.text);\n    return pluginInstance;\n  }\n};\n```\n\nThis will tell the worker process to require the plugin and call the `buildPlugin` function with the `params` object as an argument:\n\n```js\nvar esTranspiler = require('broccoli-babel-transpiler');\n\nvar somePlugin = {\n  _parallelBabel: {\n    requireFile: '/path/to/some_plugin',\n    buildUsing: 'buildPlugin',\n    params: { text: 'some text' }\n  }\n});\n\nvar scriptTree = esTranspiler(inputTree, {\n  plugins: [ somePlugin ]\n});\n```\n\nNote: If both `useMethod` and `buildUsing` are specified, `useMethod` takes precedence.\n\n### Number of jobs\n\nThe number of parallel jobs defaults to the number of detected CPUs - 1.\n\nThis can be changed with the `JOBS` environment variable:\n\n```\nJOBS=4 ember build\n```\n",
  "readmeFilename": "README.md",
  "repository": {
    "type": "git",
    "url": "git+https://github.com/babel/broccoli-babel-transpiler.git"
  },
  "scripts": {
    "test": "mocha test.js",
    "test:all": "mocha test.js test_slow.js",
    "test:debug": "mocha debug test.js",
    "test:slow": "mocha test_slow.js"
  },
  "version": "6.1.2"
}
