diff --git a/experimental/babel-preset-env/.eslintignore b/experimental/babel-preset-env/.eslintignore new file mode 100644 index 0000000000..c8e31e4650 --- /dev/null +++ b/experimental/babel-preset-env/.eslintignore @@ -0,0 +1,6 @@ +/lib +debug-fixtures +fixtures +/data +/flow-typed +test/tmp diff --git a/experimental/babel-preset-env/.eslintrc b/experimental/babel-preset-env/.eslintrc new file mode 100644 index 0000000000..040fcc2437 --- /dev/null +++ b/experimental/babel-preset-env/.eslintrc @@ -0,0 +1,23 @@ +{ + "extends": [ + "babel", + "plugin:flowtype/recommended" + ], + "parserOptions": { + "ecmaVersion": 7, + "sourceType": "module" + }, + "plugins": [ + "flowtype" + ], + "rules": { + "arrow-parens": "off", + "indent": "off", + "comma-dangle": ["error", "always-multiline"], + "curly": ["error", "multi-line"], + "func-call-spacing": "error", + "key-spacing": "error", + "no-multi-spaces": "error", + "flowtype/generic-spacing": "off" + } +} diff --git a/experimental/babel-preset-env/.flowconfig b/experimental/babel-preset-env/.flowconfig new file mode 100644 index 0000000000..1dc14f515b --- /dev/null +++ b/experimental/babel-preset-env/.flowconfig @@ -0,0 +1,12 @@ +[ignore] +.*/lib/.* +.*/test/.* +.*/build/.* +.*/scripts/.* +.*/node_modules/jest-validate/.* + +[options] +strip_root=true +suppress_comment= \\(.\\|\n\\)*\\$FlowFixMe +suppress_comment= \\(.\\|\n\\)*\\$FlowIssue +module.ignore_non_literal_requires=true diff --git a/experimental/babel-preset-env/.github/stale.yml b/experimental/babel-preset-env/.github/stale.yml new file mode 100644 index 0000000000..b9ab60537b --- /dev/null +++ b/experimental/babel-preset-env/.github/stale.yml @@ -0,0 +1,24 @@ +# Configuration for probot-stale - https://github.com/probot/stale + +# Number of days of inactivity before an Issue or Pull Request becomes stale +daysUntilStale: 60 +# Number of days of inactivity before a stale Issue or Pull Request is closed +daysUntilClose: 7 +# Issues or Pull Requests with these labels will never be considered stale. Set to `[]` to disable +exemptLabels: + - has pr + - pinned + - security +# Label to use when marking as stale +staleLabel: stale +# Comment to post when marking as stale. Set to `false` to disable +markComment: > + This issue has been automatically marked as `stale` because it has not had + recent activity 😴. It will be closed if no further activity occurs. Thank you + for your contributions 👌! +# Comment to post when removing the stale label. Set to `false` to disable +unmarkComment: false +# Comment to post when closing a stale Issue or Pull Request. Set to `false` to disable +closeComment: false +# Limit to only `issues` or `pulls` +# only: issues diff --git a/experimental/babel-preset-env/.gitignore b/experimental/babel-preset-env/.gitignore new file mode 100644 index 0000000000..b8733fbb98 --- /dev/null +++ b/experimental/babel-preset-env/.gitignore @@ -0,0 +1,10 @@ +node_modules +coverage +lib +test/tmp +.DS_Store +*.log +.vscode +.nyc_output +tmp +babel-preset-env-*.tgz diff --git a/experimental/babel-preset-env/.npmignore b/experimental/babel-preset-env/.npmignore new file mode 100644 index 0000000000..e3f640a01d --- /dev/null +++ b/experimental/babel-preset-env/.npmignore @@ -0,0 +1,15 @@ +coverage +src +test +lib/types.js +node_modules +scripts +.eslintignore +.travis.yml +codecov.yml +yarn.lock +.nyc_output +.vscode +.eslintrc +babel-preset-env-*.tgz +flow-typed diff --git a/experimental/babel-preset-env/.travis.yml b/experimental/babel-preset-env/.travis.yml new file mode 100644 index 0000000000..ae4f774580 --- /dev/null +++ b/experimental/babel-preset-env/.travis.yml @@ -0,0 +1,41 @@ +git: + depth: 3 +sudo: false +language: node_js +cache: + yarn: true + directories: + - node_modules +node_js: +- '8' +- '6' +- '4' +env: + global: + - BABEL_ENV=test + matrix: + - PKG_CMD="npm" + - PKG_CMD="yarn" +before_install: + - nvm use $TRAVIS_NODE_VERSION + - npm set loglevel error + - npm set progress false + - 'if [ $PKG_CMD = "yarn" ]; then curl -o- -L https://yarnpkg.com/install.sh | bash && PATH=$HOME/.yarn/bin:$PATH ; fi' +install: + - $PKG_CMD install +script: + - 'if [ -n "${LINT-}" ]; then $PKG_CMD run lint ; fi' + - 'if [ -n "${DATA_CHECK-}" ]; then $PKG_CMD run build-data -- --check ; fi' + - 'if [ -n "${SMOKE_TEST-}" ]; then node scripts/smoke-test.js ; fi' + - 'if [ -z "${LINT-}" ] && [ -z "${DATA_CHECK-}" ] && [ -z "${SMOKE_TEST-}" ]; then $PKG_CMD run test-ci ; fi' +matrix: + fast_finish: true + include: + - node_js: "node" + env: LINT=true PKG_CMD="npm" + - node_js: "node" + env: DATA_CHECK=true PKG_CMD="npm" + - node_js: "node" + env: SMOKE_TEST=true PKG_CMD="npm" + +after_success: 'if [ -z "${LINT-}" ] && [ -z "${DATA_CHECK-}" ] && [ -z "${SMOKE_TEST-}" ]; then npm run coverage-ci ; fi' diff --git a/experimental/babel-preset-env/CHANGELOG.md b/experimental/babel-preset-env/CHANGELOG.md new file mode 100644 index 0000000000..99a8be5ca6 --- /dev/null +++ b/experimental/babel-preset-env/CHANGELOG.md @@ -0,0 +1,654 @@ +# Changelog + +## v1.6.0 (2017-07-04) + +### :rocket: New Feature + +- Bump compat-table for node8 support ([#363](https://github.com/babel/babel-preset-env/pull/363)) (@existentialism) + +We updated our mappings to support native trailing function commas and string paddings in Node.js 8+. + +### :bug: Bug Fix + +- Handle `chromeandroid` browserslist value ([#367](https://github.com/babel/babel-preset-env/pull/367)) (@yavorsky) + +We added support for using browserslist's `chromeandroid` in `targets`. + +### :memo: Documentation + +- Tweak uglify option docs ([#368](https://github.com/babel/babel-preset-env/pull/368)) (@existentialism) + +Thanks to @graingert and @pfiaux for pointing out some needed updates to the `uglify-js`-related docs. + +## v1.5.2 (2017-06-07) + +### :bug: Bug Fix + +- Ensure explicit targets always override browsers key targets ([#346](https://github.com/babel/babel-preset-env/pull/346)) (@existentialism) + +`browser` targets should be overridden by explicit targets, and we inadvertently broke this when we landed string version support. + +## v1.5.1 (2017-05-22) + +### :bug: Bug Fix + +- Compile with loose mode ([#322](https://github.com/babel/babel-preset-env/pull/332)) (@existentialism) + +## v1.5.0 (2017-05-19) + +### :rocket: New Feature + +- Support target versions as strings ([#321](https://github.com/babel/babel-preset-env/pull/321)) (@existentialism) + +We were originally waiting on 2.x for a breaking change, but since node v7.10 +and other targets are causing some pain, we decided to land a backwards +compatible version. + +### :house: Internal + +- Backport: use preset-env and remove flow-strip-types ([#324](https://github.com/babel/babel-preset-env/pull/324)) (@yavorsky) +- Bump electron-to-chromium ([#329](https://github.com/babel/babel-preset-env/pull/329)) (@existentialism) +- Tweak version mappings to match compat-table updates ([#323](https://github.com/babel/babel-preset-env/pull/323)) (@existentialism) +- Bump browserslist ([#319](https://github.com/babel/babel-preset-env/pull/319)) (@existentialism) +- Bump compat-table ([#307](https://github.com/babel/babel-preset-env/pull/307)) (@existentialism) +- Add debug-fixtures and test/tmp to .eslintignore ([#305](https://github.com/babel/babel-preset-env/pull/305)) (@yavorsky) + +## v1.4.0 (2017-04-14) + +### :rocket: New Feature + +- Support `spec` option ([#98](https://github.com/babel/babel-preset-env/pull/98)) (@Kovensky) + +Added an option to enable more spec compliant, but potentially slower, transformations for any plugins in this preset that support them. + +- Bump compat-table for Edge 15 support ([#273](https://github.com/babel/babel-preset-env/pull/273)) (@existentialism) + +We updated our mappings so that you can get native support for async/await and other goodies when targeting Edge 15! + +### :bug: Bug Fix + +- Add Android browser to name map ([#270](https://github.com/babel/babel-preset-env/pull/270)) (@existentialism) + +Fixed a bug that was ignoring Android targets in browserslist queries (for example: "Android >= 4"). + +### :memo: Documentation + +- Clarify note about loading polyfills only once ([#282](https://github.com/babel/babel-preset-env/pull/282)) (@darahak) +- Add a reminder about include/exclude options ([#275](https://github.com/babel/babel-preset-env/pull/275)) (@existentialism) + +### :house: Internal + +- Chore: reduce package size. ([#281](https://github.com/babel/babel-preset-env/pull/281)) (@evilebottnawi) +- Remove deprecated comment ([#271](https://github.com/babel/babel-preset-env/pull/271)) (@yavorsky) + +## v1.3.3 (2017-04-07) + +### :bug: Bug Fix + +- Support electron version in a string format ([#252](https://github.com/babel/babel-preset-env/pull/252)) (@yavorsky) + +Adding electron as a target was an inadvertent breaking change as it no longer +allowed string versions. We added an exception for now, even though it is +inconsistent with other versions. Just as a note, the upcoming version 2.x will +allow _both_ number and string versions. + +- Ensure const-check plugin order ([#257](https://github.com/babel/babel-preset-env/pull/257)) (@existentialism) + +We now force the `const-es2015-check` plugin to run first (so that it can +correctly report issues before they get transpiled away). + +### :rocket: New Feature + +- Allow use `babel-plugin-` prefix for include and exclude ([#242](https://github.com/babel/babel-preset-env/pull/242)) (@yavorsky) + +The `include` and `exclude` options now allow both prefixed (`babel-plugin-transform-es2015-spread`) +and prefix-less (`transform-es2015-spread`) plugin names. + +### :memo: Documentation + +- Note babel plugin prefix handling in include/exclude ([#245](https://github.com/babel/babel-preset-env/pull/245)) (@existentialism) +- Fix README: debug option shows info in stdout. ([#236](https://github.com/babel/babel-preset-env/pull/236)) (@Gerhut) + +### :house: Internal + +- Add simple smoke-test ([#240](https://github.com/babel/babel-preset-env/pull/240)) (@existentialism) +- Add prepublish script (@existentialism) + +## v1.3.2 (2017-03-30) + +- Fixed an issue with a broken publish + +## v1.3.1 (2017-03-30) + +- Fixed a regression with missing files due to `.npmignore`. + +## v1.3.0 (2017-03-30) + +### :bug: Bug Fix + +- Add check for ArrayBuffer[Symbol.species] ([#233](https://github.com/babel/babel-preset-env/pull/233)) (@existentialism) + +We now properly check for `Symbol.species` support in ArrayBuffer and include the +polyfill if necessary. This should, as a side effect, fix ArrayBuffer-related +errors on IE9. + +### :nail_care: Polish + +- Fill data with electron as a target. ([#229](https://github.com/babel/babel-preset-env/pull/229)) (@yavorsky) + +We've simplified things by adding `electron` as a target instead of doing a bunch of +things at runtime. Electron targets should now also be displayed in the debug output. + +- separate default builtins for platforms ([#226](https://github.com/babel/babel-preset-env/pull/226)) (@restrry) + +If you are targeting the `node` environment exclusively, the always-included web polyfills +(like `dom.iterable`, and a few others) will now no longer be included. + +### :memo: Documentation + + * remove deprecated projects ([#223](https://github.com/babel/babel-preset-env/pull/223)) [skip ci] (@stevemao) + +### :house: Internal + + * npmignore: Add related to build data and codecov. ([#216](https://github.com/babel/babel-preset-env/pull/216)) (@yavorsky) + +## v1.2.2 (2017-03-14) + +### :bug: Bug Fix + +- Refactor browser data parsing to handle families ([#208](https://github.com/babel/babel-preset-env/pull/208)) (@existentialism) + +When parsing plugin data, we weren't properly handling browser families. This caused +`transform-es2015-block-scoping` and other plugins to be incorrectly added for Edge >= 12. +(s/o to @mgol for the the report and review!) + +- Add typed array methods to built-ins features. ([#198](https://github.com/babel/babel-preset-env/pull/198)) (@yavorsky) + +Fixes an issue where some TypedArray features were not being polyfilled properly. (s/o to @alippai for the report!) + +### :memo: Documentation + +- Fixed minor typo in readme ([#199](https://github.com/babel/babel-preset-env/pull/199)) (@bl4ckdu5t) +- Add built-ins, better links, compat-table url, etc ([#195](https://github.com/babel/babel-preset-env/pull/195)) (@yavorsky) +- Change CONTRIBUTING.md to use absolute paths ([#194](https://github.com/babel/babel-preset-env/pull/194)) (@aaronang) + +### :house: Internal + +- Bump plugins ([#201](https://github.com/babel/babel-preset-env/pull/201)) (@yavorsky) +- Enable code coverage ([#200](https://github.com/babel/babel-preset-env/pull/200)) (@alxpy) +- Increase mocha timeout to 10s ([#202](https://github.com/babel/babel-preset-env/pull/202)) (@yavorsky) + +## v1.2.1 (2017-03-06) + +### :bug: Bug Fix + +- Add transform-duplicate-keys mapping ([#192](https://github.com/babel/babel-preset-env/pull/192)) (@existentialism) + +Our plugin data was missing a mapping for the `transform-duplicate-keys` plugin which caused it to never be included. (s/o to @Timer for the report!) + +### :memo: Documentation + +- Clarify reasons for the uglify option in README.md ([#188](https://github.com/babel/babel-preset-env/pull/188)) (@mikegreiling) + +## v1.2.0 (2017-03-03) + +### :rocket: New Feature + +- Add uglify as a target ([#178](https://github.com/babel/babel-preset-env/pull/178)) (@yavorsky) + +Support for `uglify` as a target is now available! This will enable all plugins and, as a result, fully compiles your code to ES5. Note, that useBuiltIns will work as before, and only the polyfills that your other target(s) need will be included. + +```json +{ + "presets": [ + ["env", { + "targets": { + "chrome": 55, + "uglify": true + }, + "useBuiltIns": true, + "modules": false + }] + ] +} +``` + +### :bug: Bug Fix + +- Respect older versions in invert equals map ([#180](https://github.com/babel/babel-preset-env/pull/180)) (@danez) + +Fixes a number of bugs that caused some incorrect and/or missing environment data when parsing `compat-table`. + +## v1.1.11 (2017-03-01) + +This release primarily upgrades `compat-table`, which adds support for async on Node 7.6! + +### :bug: Bug Fix + +- Fix hasBeenWarned condition. ([#175](https://github.com/babel/babel-preset-env/pull/175)) (@yavorsky) + +### :memo: Documentation + +- Add yarn example. ([#174](https://github.com/babel/babel-preset-env/pull/174)) (@yavorsky) + +### :house: Internal + +- Bump compat-table ([#177](https://github.com/babel/babel-preset-env/pull/177)) (@existentialism) +- Add electron version exception test ([#176](https://github.com/babel/babel-preset-env/pull/176)) (@existentialism) + +## v1.1.10 (2017-02-24) + +### :bug: Bug Fix + +- Drop use of lodash/intersection from checkDuplicateIncludeExcludes ([#173](https://github.com/babel/babel-preset-env/pull/173)) (@existentialism) + +## v1.1.9 (2017-02-24) + +### :bug: Bug Fix + +- Add tests for debug output ([#156](https://github.com/babel/babel-preset-env/pull/156)) (@existentialism) + +Since we've (mostly @yavorsky) have fixed a number of bugs recently with the `debug` option output, we added the ability to assert stdout matches what we expect. Read the updated [CONTRIBUTING.md](https://github.com/babel/babel-preset-env/blob/master/CONTRIBUTING.md#testing-the-debug-option) for more info. + +- Fixes #143. Log correct targets. ([#155](https://github.com/babel/babel-preset-env/pull/155)) (@yavorsky) + +This fixes a bug in the `debug` output where incorrect target(s) were being displayed for why a particular plugin/preset was being included. + +Given targets: + +```txt +{ + "firefox": 52, + "node": 7.4 +} +``` + +Before: + +```txt +Using plugins: + transform-es2015-destructuring {"node":6.5} + transform-es2015-for-of {"node":6.5} + transform-es2015-function-name {"node":6.5} + transform-es2015-literals {"node":4} + transform-exponentiation-operator {"firefox":52} + syntax-trailing-function-commas {"firefox":52} +``` + +After: + +```txt +Using plugins: + transform-es2015-destructuring {"firefox":52} + transform-es2015-for-of {"firefox":52} + transform-es2015-function-name {"firefox":52} + transform-es2015-literals {"firefox":52} + transform-exponentiation-operator {"node":7.4} + syntax-trailing-function-commas {"node":7.4} +``` + +### :memo: Documentation + +- Fix compat-table link in contributing.md (@existentialism) +- Update README examples to fix website ([#151](https://github.com/babel/babel-preset-env/pull/)) (@existentialism) +- Fix few typos ([#146](https://github.com/babel/babel-preset-env/pull/146)) (@existentialism) +- Add configuration example to clarify `debug: true` ([#138](https://github.com/babel/babel-preset-env/pull/138)) (@yavorsky) +- Fix CHANGELOG’s v1.1.8 updates typo. ([#136](https://github.com/babel/babel-preset-env/pull/136)) (@yavorsky) +- README: Update `debug: true` example. ([#138](https://github.com/babel/babel-preset-env/pull/138)) (@yavorsky) + +### :house: Internal + +- update compat ([#169](https://github.com/babel/babel-preset-env/pull/169)) (@hzoo) +- Use external Electron to Chromium library ([#144](https://github.com/babel/babel-preset-env/pull/144)) (@Kilian) +- Update yarn lockfile ([#152](https://github.com/babel/babel-preset-env/pull/152)) (@existentialism) +- Extract option normalization into independant file ([#125](https://github.com/babel/babel-preset-env/pull/125)) (@baer) +- Update yarnfile ([#145](https://github.com/babel/babel-preset-env/pull/145)) (@baer) +- devDeps: eslint-config-babel v5.0.0 ([#139](https://github.com/babel/babel-preset-env/pull/139)) (@kaicataldo) +- Update compat-table, build data ([#135](https://github.com/babel/babel-preset-env/pull/135)) (@hzoo) + +## v1.1.8 (2017-01-10) + +### :bug: Bug Fix + +- Debug: Transformations before logs. ([#128](https://github.com/babel/babel-preset-env/pull/128)) (@yavorsky) + +Makes sure that all transformations on `targets` (such as `exclude`/`include`) are run before logging out with the `debug` option. Fixes ([#127](https://github.com/babel/babel-preset-env/issues/127)). + +### :house: Internal + +- Remove unnecessary extension. ([#131](https://github.com/babel/babel-preset-env/pull/131)) (@roman-yakobnyuk) +- Include yarn.lock and update CI. ([#124](https://github.com/babel/babel-preset-env/pull/124)) (@existentialism) + +## v1.1.7 (2017-01-09) + +Had a publishing issue in the previous release. + +## v1.1.6 (2017-01-06) + +### :bug: Bug Fix + +- Explicitly resolve lowest browser version. ([#121](https://github.com/babel/babel-preset-env/pull/121)) (@brokenmass) + +```js +{ + "targets": { + "browsers": ["ios >= 6"] // was resolving to {ios: 10} rather than {ios: 6} + } +} +``` + +## v1.1.5 (2017-01-04) + +### :bug: Bug Fix + +- Show error if target version is not a number. ([#107](https://github.com/babel/babel-preset-env/pull/107)) (@existentialism) + +```js +{ + "presets": [ + ["env", { + "targets": { + "chrome": "52", // will error since it's not a number, + "chrome": 52 // correct! + } + }] + ] +} +``` + +- Fix targets for the `debug` option. ([#109](https://github.com/babel/babel-preset-env/pull/109)) (@yavorsky) + +Now it prints the transformed targets/environments rather than the browsers query. + +```txt +Using targets: +{ + "chrome": 53, + "ie": 10, + "node": 6 +} + +Modules transform: false + +Using plugins: + transform-es2015-arrow-functions {"chrome":47,"node":6} + transform-es2015-block-scoped-functions {"chrome":41,"ie":11,"node":4} + +Using polyfills: + es6.typed.uint8-clamped-array {"chrome":5,"node":0.12} + es6.map {"chrome":51,"node":6.5} +``` + +## v1.1.4 (2016-12-16) + +v1.1.2-v1.1.4 + +### :bug: Bug Fix + +The new `exclude`/`include` options weren't working correctly for built-ins. ([#102](https://github.com/babel/babel-preset-env/pull/102)). + +Also fixes an issue with debug option. + +## v1.1.1 (2016-12-13) + +### :bug: Bug Fix + +Regression with the previous release due to using `Object.values` (ES2017). This wasn't caught because we are using babel-register to run tests and includes polyfills so it didn't fail on CI even though we have Node 0.10 as an env. Looking into fixing this to prevent future issues. + +## v1.1.0 (2016-12-13) + +### :rocket: New Feature + +- Add `exclude` option, rename `whitelist` to `include` ([#89](https://github.com/babel/babel-preset-env/pull/89)) (@hzoo) + +Example: + +```js +{ + "presets": [ + ["env", { + "targets": { + "browsers": ["last 2 versions", "safari >= 7"] + }, + "include": ["transform-es2015-arrow-functions"], + "exclude": [ + "transform-regenerator", + "transform-async-to-generator", + "map" + ], + "useBuiltIns": true + }] + ] +} +``` + +`"exclude": ["transform-regenerator"]` doesn't transform generators and removes `regeneratorRuntime` from being imported. + +`"exclude": ["transform-async-to-generator"]` doesn't use the built-in async-to-gen transform so you can use something like [fast-async](https://github.com/MatAtBread/fast-async). + +`"exclude": ["map"]` doesn't include the `Map` polyfill if you know you aren't using it in your code (w/ `useBuiltIns`). (We will figure out a way to automatically do this [#84](https://github.com/babel/babel-preset-env/issues/84)). + +If you pass a wrong plugin it will error: valid options for `include/exclude` are in [/data/plugin-features.js](https://github.com/babel/babel-preset-env/blob/master/data/plugin-features.js) and [/data/built-in-features.js](https://github.com/babel/babel-preset-env/blob/master/data/built-in-features.js) (without the `es6.`) + +### :house: Internal + +- Optimize result filtration. ([#77](https://github.com/babel/babel-preset-env/pull/77)) (@yavorsky) +- Update eslint config to align with other babel projects ([#79](https://github.com/babel/babel-preset-env/pull/79)) (@baer) +- Update pathnames to avoid uppercase ([#80](https://github.com/babel/babel-preset-env/pull/80)) (@baer) +- Refactor build data for clarity/consistency ([#81](https://github.com/babel/babel-preset-env/pull/81)) (@baer) +- Update linting rules to cover all js ([#82](https://github.com/babel/babel-preset-env/pull/82)) (@baer) +- Cleanup lib before rebuilding ([#87](https://github.com/babel/babel-preset-env/pull/87)) (@baer) +- Move linting dependency to be dev only ([#88](https://github.com/babel/babel-preset-env/pull/88)) (@baer) + +### :memo: Documentation + +- Fix typo ([#78](https://github.com/babel/babel-preset-env/pull/78)) (@rohmanhm) +- Fix PR link in changelog. ([#75](https://github.com/babel/babel-preset-env/pull/75)) (@nhajidin) + +## v1.0.2 (2016-12-10) + +### :bug: Bug Fix + +* Fix issue with Object.getOwnPropertySymbols ([#71](https://github.com/babel/babel-preset-env/pull/71)) ([@existentialism](https://github.com/existentialism)) + +Was requiring the wrong module kinda of like in v1.0.1: + +https://github.com/zloirock/core-js#ecmascript-6-symbol + +```diff +-import "core-js/modules/es6.object.get-own-property-symbols"; +``` + +The test is just a part of `Symbol`. + +## v1.0.1 (2016-12-10) + +### :bug: Bug Fix + +* Fix regenerator import ([#68](https://github.com/babel/babel-preset-env/pull/68)) ([@hzoo](https://github.com/hzoo)) + +We were outputting an invalid path for `regenerator`! + +```diff ++import "regenerator-runtime/runtime"; +-import "core-js/modules/regenerator-runtime/runtime"- +``` + +## v1.0.0 (2016-12-09) + +### :rocket: New Feature + +* Add `useBuiltIns` option ([#56](https://github.com/babel/babel-preset-env/pull/56)) ([@hzoo](https://github.com/hzoo)), ([@yavorsky](https://github.com/yavorsky)), ([@existentialism](https://github.com/existentialism)) + +A way to apply `babel-preset-env` for polyfills (via `"babel-polyfill"``). + +> This option will apply a new Babel plugin that replaces `require("babel-polyfill")` with the individual requires for `babel-polyfill` based on the target environments. + +Install + +``` +npm install babel-polyfill --save +``` + +In + +```js +import "babel-polyfill"; // create an entry js file that contains this +// or +import "core-js"; +``` + +Out (different based on environment) + +```js +// chrome 55 +import "core-js/modules/es7.string.pad-start"; // haha left_pad +import "core-js/modules/es7.string.pad-end"; +import "core-js/modules/web.timers"; +import "core-js/modules/web.immediate"; +import "core-js/modules/web.dom.iterable"; +``` + +`.babelrc` Usage + +```js +{ + "presets": [ + ["env", { + "targets": { + "electron": 1.4 + }, + "modules": false, // webpack 2 + "useBuiltIns": true // new option + }] + ] +} +``` + +> Also looking to make an easier integration point via Webpack with this method. Please reach out if you have ideas! + +--- + +* Support [Electron](http://electron.atom.io/) ([#55](https://github.com/babel/babel-preset-env/pull/55)) ([@paulcbetts](https://github.com/paulcbetts)) + +Electron is also an environment, so [Paul went ahead](https://twitter.com/paulcbetts/status/804507070103851008) and added support for this! + +`.babelrc` Usage + +```js +{ + "presets": [ ["env", {"targets": { "electron": 1.4 }}]] +} +``` + +> Currently we are manually updating the data in [/data/electron-to-chromium.js](https://github.com/babel/babel-preset-env/blob/master/data/electron-to-chromium.js), but [@kevinsawicki](https://github.com/kevinsawicki) says we could generate the data from [atom-shell/dist/index.json](https://gh-contractor-zcbenz.s3.amazonaws.com/atom-shell/dist/index.json) as well! (Someone should make a PR :smile:) + + + +## v0.0.9 (2016-11-24) + +### :rocket: New Feature + +* Support Opera ([#48](https://github.com/babel/babel-preset-env/pull/48)) (Henry Zhu) + +Was as simple as modifying the chrome version and subtracting 13! (so chrome 54 = opera 41) + +```js +{ + "presets": [ + ["env", { + "targets": { + "opera": 41 + } + }] + ] +} +``` + +## v0.0.8 (2016-11-16) + +### :nail_care: Polish + +* Only print the debug info once ([#46](https://github.com/babel/babel-preset-env/pull/46) (Henry Zhu) + +When using the `debug` option it was printing the data for each file processed rather than once. + +```js +{ + "presets": [ + ["env", { + "debug": true + }] + ] +} +``` + +## v0.0.7 (2016-11-02) + +### :rocket: New Feature + +* hardcode a current node version option ([#35](https://github.com/babel/babel-preset-env/pull/35)) (Henry Zhu) + +```js +{ + "presets": [ + ["env", { + "targets": { + "node": "current" // parseFloat(process.versions.node) + } + }] + ] +} +``` + +* add 'whitelist' option ([#31](https://github.com/babel/babel-preset-env/pull/31)) (Henry Zhu) + +```js + { + "presets": [ + ["env", { + "targets": { + "chrome": 52 + }, + "whitelist": ["transform-es2015-arrow-functions"] + }] + ] +} +``` + +* Add more aliases (Henry Zhu) +* Update plugin data: firefox 52 supports async/await! ([#29](https://github.com/babel/babel-preset-env/pull/29)) (Henry Zhu) + +### :bug: Bug Fixes + +* Use compat-table equals option ([#36](https://github.com/babel/babel-preset-env/pull/36)) (Henry Zhu) + +Compute and use `compat-table` equivalents + +```js +{ + "safari6": "phantom", + "chrome44": "iojs", + "chrome50": "node64", + "chrome51": "node65", + "chrome54": "node7", + "chrome30": "android44", + "chrome37": "android50", + "chrome39": "android51", + "safari7": "ios7", + "safari71_8": "ios8", + "safari9": "ios9", + "safari10": "ios10", + "chrome50": "node6" +} +``` + +* Change default behavior to act the same as babel-preset-latest ([#33](https://github.com/babel/babel-preset-env/pull/33)) (Henry Zhu) + +```js +{ "presets": ["env"] } // should act the same as babel-preset-latest +``` + +## Internal + +* Add fixture helper for tests ([#28](https://github.com/babel/babel-preset-env/pull/28)) (Henry Zhu) diff --git a/experimental/babel-preset-env/CONTRIBUTING.md b/experimental/babel-preset-env/CONTRIBUTING.md new file mode 100644 index 0000000000..275636d026 --- /dev/null +++ b/experimental/babel-preset-env/CONTRIBUTING.md @@ -0,0 +1,93 @@ +# Contributing + +## Adding a new plugin to support (when approved in the next ECMAScript version) + +### Update [`plugin-features.js`](https://github.com/babel/babel-preset-env/blob/master/data/plugin-features.js) + +*Example:* + +If you were going to add `**` which is in ES2016: + +Find the relevant entries on [compat-table](https://kangax.github.io/compat-table/es2016plus/#test-exponentiation_(**)_operator): + +`exponentiation (**) operator` + +Find the corresponding babel plugin: + +`transform-exponentiation-operator` + +And add them in this structure: + +```js +// es2016 +"transform-exponentiation-operator": { + features: [ + "exponentiation (**) operator", + ], +}, +``` + +### Update [`built-in-features.js`](https://github.com/babel/babel-preset-env/blob/master/data/built-in-features.js) + +*Example:* + +In case you want to add `Object.values` which is in ES2017: + +Find the relevant feature and subfeature on [compat-table](https://kangax.github.io/compat-table/es2016plus/#test-Object_static_methods_Object.values) +and split it with `/`: + +`Object static methods / Object.values` + +Find the corresponding module on [core-js](https://github.com/zloirock/core-js/tree/master/modules): + +`es7.object.values.js` + +Find required ES version in [`built-in-features.js`](https://github.com/babel/babel-preset-env/blob/master/data/built-in-features.js) and add the new feature: + +```js +const es2017 = { + //... + "es7.object.values": "Object static methods / Object.values" +} +``` + +### Update [`plugins.json`](https://github.com/babel/babel-preset-env/blob/master/data/plugins.json) + +Until `compat-table` is a standalone npm module for data we are using the git url + +`"compat-table": "kangax/compat-table#[latest-commit-hash]"`, + +So we update and then run `npm run build-data`. If there are no changes, then `plugins.json` will be the same. + +## Tests + +### Running tests locally + +```bash +npm test +``` + +### Checking code coverage locally + +```bash +npm run coverage +``` + +### Writing tests + +#### General + +All the tests for `babel-preset-env` exist in the `test/fixtures` folder. The +test setup and conventions are exactly the same as testing a Babel plugin, so +please read our [documentation on writing tests](https://github.com/babel/babel/blob/master/CONTRIBUTING.md#babel-plugin-x). + +#### Testing the `debug` option + +Testing debug output to `stdout` is similar. Under the `test/debug-fixtures`, +create a folder with a descriptive name of your test, and add the following: + +* Add a `options.json` file (just as the other tests, this is essentially a +`.babelrc`) with the desired test configuration (required) +* Add a `stdout.txt` file with the expected debug output. For added +convenience, if there is no `stdout.txt` present, the test runner will +generate one for you. diff --git a/experimental/babel-preset-env/LICENSE b/experimental/babel-preset-env/LICENSE new file mode 100644 index 0000000000..f659b81881 --- /dev/null +++ b/experimental/babel-preset-env/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2016-2017 Babel + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/experimental/babel-preset-env/README.md b/experimental/babel-preset-env/README.md new file mode 100644 index 0000000000..3c4c8c8723 --- /dev/null +++ b/experimental/babel-preset-env/README.md @@ -0,0 +1,572 @@ +# babel-preset-env [![npm](https://img.shields.io/npm/v/babel-preset-env.svg)](https://www.npmjs.com/package/babel-preset-env) [![travis](https://img.shields.io/travis/babel/babel-preset-env/master.svg)](https://travis-ci.org/babel/babel-preset-env) [![npm-downloads](https://img.shields.io/npm/dm/babel-preset-env.svg)](https://www.npmjs.com/package/babel-preset-env) [![codecov](https://img.shields.io/codecov/c/github/babel/babel-preset-env/master.svg?maxAge=43200)](https://codecov.io/github/babel/babel-preset-env) + +> A Babel preset that compiles [ES2015+](https://github.com/tc39/proposals/blob/master/finished-proposals.md) down to ES5 by automatically determining the Babel plugins and polyfills you need based on your targeted browser or runtime environments. + +```sh +npm install babel-preset-env --save-dev +``` + +Without any configuration options, babel-preset-env behaves exactly the same as babel-preset-latest (or babel-preset-es2015, babel-preset-es2016, and babel-preset-es2017 together). + +```json +{ + "presets": ["env"] +} +``` + +You can also configure it to only include the polyfills and transforms needed for the browsers you support. Compiling only what's needed can make your bundles smaller and your life easier. + +This example only includes the polyfills and code transforms needed for the last two versions of each browser, and versions of Safari greater than or equal to 7. We use [browserslist](https://github.com/ai/browserslist) to parse this information, so you can use [any valid query format supported by browserslist](https://github.com/ai/browserslist#queries). + +```json +{ + "presets": [ + ["env", { + "targets": { + "browsers": ["last 2 versions", "safari >= 7"] + } + }] + ] +} +``` + +Similarly, if you're targeting Node.js instead of the browser, you can configure babel-preset-env to only include the polyfills and transforms necessary for a particular version: + +```json +{ + "presets": [ + ["env", { + "targets": { + "node": "6.10" + } + }] + ] +} +``` + +For convenience, you can use `"node": "current"` to only include the necessary polyfills and transforms for the Node.js version that you use to run Babel: + +```json +{ + "presets": [ + ["env", { + "targets": { + "node": "current" + } + }] + ] +} +``` + +- [How it Works](#how-it-works) +- [Install](#install) +- [Usage](#usage) +- [Options](#options) +- [Examples](#examples) +- [Issues](#issues) + +## How it Works + +### Determine environment support for ECMAScript features + +Use external data such as [`compat-table`](https://github.com/kangax/compat-table) to determine browser support. (We should create PRs there when necessary) + +![](https://cloud.githubusercontent.com/assets/588473/19214029/58deebce-8d48-11e6-9004-ee3fbcb75d8b.png) + +We can periodically run [build-data.js](https://github.com/babel/babel-preset-env/blob/master/scripts/build-data.js) which generates [plugins.json](https://github.com/babel/babel-preset-env/blob/master/data/plugins.json). + +Ref: [#7](https://github.com/babel/babel-preset-env/issues/7) + +### Maintain a mapping between JavaScript features and Babel plugins + +> Currently located at [plugin-features.js](https://github.com/babel/babel-preset-env/blob/master/data/plugin-features.js). + +This should be straightforward to do in most cases. There might be cases where plugins should be split up more or certain plugins aren't standalone enough (or impossible to do). + +### Support all plugins in Babel that are considered `latest` + +> Default behavior without options is the same as `babel-preset-latest`. + +It won't include `stage-x` plugins. env will support all plugins in what we consider the latest version of JavaScript (by matching what we do in [`babel-preset-latest`](http://babeljs.io/docs/plugins/preset-latest/)). + +Ref: [#14](https://github.com/babel/babel-preset-env/issues/14) + +### Determine the lowest common denominator of plugins to be included in the preset + +If you are targeting IE 8 and Chrome 55 it will include all plugins required by IE 8 since you would need to support both still. + +### Support a target option `"node": "current"` to compile for the currently running node version. + +For example, if you are building on Node 6, arrow functions won't be converted, but they will if you build on Node 0.12. + +### Support a `browsers` option like autoprefixer. + +Use [browserslist](https://github.com/ai/browserslist) to declare supported environments by performing queries like `> 1%, last 2 versions`. + +Ref: [#19](https://github.com/babel/babel-preset-env/pull/19) + +### Browserslist support. + +[Browserslist](https://github.com/ai/browserslist) is a library used to share a supported list of browsers between different front-end tools like [autoprefixer](https://github.com/postcss/autoprefixer), [stylelint](https://stylelint.io/), [eslint-plugin-compat](https://github.com/amilajack/eslint-plugin-compat) and many others. + +By default, babel-preset-env will use [browserslist config sources](https://github.com/ai/browserslist#queries). + +For example, to enable only the polyfills and plugins needed for a project targeting *last 2 versions* and *IE10*: + +**.babelrc** +```json +{ + "presets": [ + ["env", { + "useBuiltIns": true + }] + ] +} +``` + +**browserslist** +``` +Last 2 versions +IE 10 +``` + +or + +**package.json** +``` +"browserslist": "last 2 versions, ie 10" +``` + +Browserslist config will be ignored if: 1) `targets.browsers` was specified 2) or with `ignoreBrowserslistConfig: true` option ([see more](#ignoreBrowserslistConfig)): + +#### Targets merging. + +1. If [targets.browsers](#targetsbrowsers) is defined - the browserslist config will be ignored. The browsers specified in `targets` will be merged with [any other explicitly defined targets](#targets). If merged, targets defined explicitly will override the same targets received from `targets.browsers`. + +2. If [targets.browsers](#targetsbrowsers) is _not_ defined - the program will search browserslist file or `package.json` with `browserslist` field. The search will start from the working directory of the process or from the path specified by the `configPath` option, and go up to the system root. If both a browserslist file and configuration inside a `package.json` are found, an exception will be thrown. + +3. If a browserslist config was found and other targets are defined (but not [targets.browsers](#targetsbrowsers)), the targets will be merged in the same way as `targets` defined explicitly with `targets.browsers`. + +## Install + +With [npm](https://www.npmjs.com): + +```sh +npm install --save-dev babel-preset-env +``` + +Or [yarn](https://yarnpkg.com): + +```sh +yarn add babel-preset-env --dev +``` + +## Usage + +The default behavior without options runs all transforms (behaves the same as [babel-preset-latest](https://babeljs.io/docs/plugins/preset-latest/)). + +```json +{ + "presets": ["env"] +} +``` + +## Options + +For more information on setting options for a preset, refer to the [plugin/preset options](http://babeljs.io/docs/plugins/#plugin-preset-options) documentation. + +### `targets` + +`{ [string]: number | string }`, defaults to `{}`. + +Takes an object of environment versions to support. + +Each target environment takes a number or a string (we recommend using a string when specifying minor versions like `node: "6.10"`). + +Example environments: `chrome`, `opera`, `edge`, `firefox`, `safari`, `ie`, `ios`, `android`, `node`, `electron`. + +The [data](https://github.com/babel/babel-preset-env/blob/master/data/plugins.json) for this is generated by running the [build-data script](https://github.com/babel/babel-preset-env/blob/master/scripts/build-data.js) which pulls in data from [compat-table](https://kangax.github.io/compat-table). + +### `targets.node` + +`number | string | "current" | true` + +If you want to compile against the current node version, you can specify `"node": true` or `"node": "current"`, which would be the same as `"node": process.versions.node`. + +### `targets.browsers` + +`Array | string` + +A query to select browsers (ex: last 2 versions, > 5%) using [browserslist](https://github.com/ai/browserslist). + +Note, browsers' results are overridden by explicit items from `targets`. + +### `spec` + +`boolean`, defaults to `false`. + +Enable more spec compliant, but potentially slower, transformations for any plugins in this preset that support them. + +### `loose` + +`boolean`, defaults to `false`. + +Enable "loose" transformations for any plugins in this preset that allow them. + +### `modules` + +`"amd" | "umd" | "systemjs" | "commonjs" | false`, defaults to `"commonjs"`. + +Enable transformation of ES6 module syntax to another module type. + +Setting this to `false` will not transform modules. + +### `debug` + +`boolean`, defaults to `false`. + +Outputs the targets/plugins used and the version specified in [plugin data version](https://github.com/babel/babel-preset-env/blob/master/data/plugins.json) to `console.log`. + +### `include` + +`Array`, defaults to `[]`. + +An array of plugins to always include. + +Valid options include any: + +- [Babel plugins](https://github.com/babel/babel-preset-env/blob/master/data/plugin-features.js) - both with (`babel-plugin-transform-es2015-spread`) and without prefix (`transform-es2015-spread`) are supported. + +- [Built-ins](https://github.com/babel/babel-preset-env/blob/master/data/built-in-features.js), such as `map`, `set`, or `object.assign`. + +This option is useful if there is a bug in a native implementation, or a combination of a non-supported feature + a supported one doesn't work. + +For example, Node 4 supports native classes but not spread. If `super` is used with a spread argument, then the `transform-es2015-classes` transform needs to be `include`d, as it is not possible to transpile a spread with `super` otherwise. + +> NOTE: The `include` and `exclude` options _only_ work with the [plugins included with this preset](https://github.com/babel/babel-preset-env/blob/master/data/plugin-features.js); so, for example, including `transform-do-expressions` or excluding `transform-function-bind` will throw errors. To use a plugin _not_ included with this preset, add them to your [config](https://babeljs.io/docs/usage/babelrc/) directly. + +### `exclude` + +`Array`, defaults to `[]`. + +An array of plugins to always exclude/remove. + +The possible options are the same as the `include` option. + +This option is useful for "blacklisting" a transform like `transform-regenerator` if you don't use generators and don't want to include `regeneratorRuntime` (when using `useBuiltIns`) or for using another plugin like [fast-async](https://github.com/MatAtBread/fast-async) instead of [Babel's async-to-gen](http://babeljs.io/docs/plugins/transform-async-generator-functions/). + +### `useBuiltIns` + +`"usage"` | `"entry"` | `false`, defaults to `false`. + +A way to apply `babel-preset-env` for polyfills (via `babel-polyfill`). + +```sh +npm install babel-polyfill --save +``` + +#### `useBuiltIns: 'usage'` + +Adds specific imports for polyfills when they are used in each file. We take advantage of the fact that a bundler will load the same polyfill only once. + +**In** + +a.js + +```js +var a = new Promise(); +``` + +b.js + +```js +var b = new Map(); +``` + +**Out (if environment doesn't support it)** + +```js +import "babel-polyfill/core-js/modules/es6.promise"; +var a = new Promise(); +``` + +```js +import "babel-polyfill/core-js/modules/es6.map"; +var b = new Map(); +``` + +**Out (if environment supports it)** + +```js +var a = new Promise(); +``` + +```js +var b = new Map(); +``` + +#### `useBuiltIns: 'entry'` + +> NOTE: Only use `require("babel-polyfill");` once in your whole app. +> Multiple imports or requires of `babel-polyfill` will throw an error since it can cause global collisions and other issues that are hard to trace. +> We recommend creating a single entry file that only contains the `require` statement. + +This option enables a new plugin that replaces the statement `import "babel-polyfill"` or `require("babel-polyfill")` with individual requires for `babel-polyfill` based on environment. + +**In** + +```js +import "babel-polyfill"; +``` + +**Out (different based on environment)** + +```js +import "babel-polyfill/core-js/modules/es7.string.pad-start"; +import "babel-polyfill/core-js/modules/es7.string.pad-end"; +``` + +#### `useBuiltIns: false` + +Don't add polyfills automatically per file, or transform `import "babel-polyfill"` to individual polyfills. + +### `forceAllTransforms` + +`boolean`, defaults to `false`. + +

+ Example + + With Babel 7's .babelrc.js support, you can force all transforms to be run if env is set to `production`. + + ```js + module.exports = { + presets: [ + ["env", { + targets: { + chrome: 59, + edge: 13, + firefox: 50, + }, + // for uglifyjs... + forceAllTransforms: process.env === "production" + }], + ], + }; + ``` +

+ + +> NOTE: `targets.uglify` is deprecated and will be removed in the next major in +favor of this. + +By default, this preset will run all the transforms needed for the targeted +environment(s). Enable this option if you want to force running _all_ +transforms, which is useful if the output will be run through UglifyJS or an +environment that only supports ES5. + +> NOTE: Uglify has a work-in-progress "Harmony" branch to address the lack of +ES6 support, but it is not yet stable. You can follow its progress in +[UglifyJS2 issue #448](https://github.com/mishoo/UglifyJS2/issues/448). If you +require an alternative minifier which _does_ support ES6 syntax, we recommend +using [babel-minify](https://github.com/babel/minify). + +### `configPath` + +`string`, defaults to `process.cwd()` + +The starting point where the config search for browserslist will start, and ascend to the system root until found. + +### `ignoreBrowserslistConfig` + +`boolean`, defaults to `false` + +Toggles whether or not [browserslist config sources](https://github.com/ai/browserslist#queries) are used, which includes searching for any browserslist files or referencing the browserslist key inside package.json. This is useful for projects that use a browserslist config for files that won't be compiled with Babel. + +### `shippedProposals` + +`boolean`, defaults to `false` + +Toggles enabling support for builtin/feature proposals that have shipped in browsers. If your target environments have native support for a feature proposal, its matching parser syntax plugin is enabled instead of performing any transform. Note that this _does not_ enable the same transformations as [`babel-preset-stage3`](https://babeljs.io/docs/plugins/preset-stage-3/), since proposals can continue to change before landing in browsers. + +The following are currently supported: + +**Builtins** + +- [Promise.prototype.finally](https://github.com/tc39/proposal-promise-finally) + +**Features** + +- [Asynchronous Iterators](https://github.com/tc39/proposal-async-iteration) +- [Object rest/spread properties](https://github.com/tc39/proposal-object-rest-spread) +- [Optional catch binding](https://github.com/tc39/proposal-optional-catch-binding) +- [Unicode property escapes in regular expressions](https://github.com/tc39/proposal-regexp-unicode-property-escapes) + +--- + +## Examples + +### Export with various targets + +```js +export class A {} +``` + +#### Target only Chrome 52 + +**.babelrc** + +```json +{ + "presets": [ + ["env", { + "targets": { + "chrome": 52 + } + }] + ] +} +``` + +**Out** + +```js +class A {} +exports.A = A; +``` + +#### Target Chrome 52 with webpack 2/rollup and loose mode + +**.babelrc** + +```json +{ + "presets": [ + ["env", { + "targets": { + "chrome": 52 + }, + "modules": false, + "loose": true + }] + ] +} +``` + +**Out** + +```js +export class A {} +``` + +#### Target specific browsers via browserslist + +**.babelrc** + +```json +{ + "presets": [ + ["env", { + "targets": { + "chrome": 52, + "browsers": ["last 2 versions", "safari 7"] + } + }] + ] +} +``` + +**Out** + +```js +export var A = function A() { + _classCallCheck(this, A); +}; +``` + +#### Target latest node via `node: true` or `node: "current"` + +**.babelrc** + +```json +{ + "presets": [ + ["env", { + "targets": { + "node": "current" + } + }] + ] +} +``` + +**Out** + +```js +class A {} +exports.A = A; +``` + +### Show debug output + +**.babelrc** + +```json +{ + "presets": [ + [ "env", { + "targets": { + "safari": 10 + }, + "modules": false, + "useBuiltIns": true, + "debug": true + }] + ] +} +``` + +**stdout** + +```sh +Using targets: +{ + "safari": 10 +} + +Modules transform: false + +Using plugins: + transform-exponentiation-operator {} + transform-async-to-generator {} + +Using polyfills: + es7.object.values {} + es7.object.entries {} + es7.object.get-own-property-descriptors {} + web.timers {} + web.immediate {} + web.dom.iterable {} +``` + +### Include and exclude specific plugins/built-ins + +> always include arrow functions, explicitly exclude generators + +```json +{ + "presets": [ + ["env", { + "targets": { + "browsers": ["last 2 versions", "safari >= 7"] + }, + "include": ["transform-es2015-arrow-functions", "es6.map"], + "exclude": ["transform-regenerator", "es6.set"] + }] + ] +} +``` + +## Issues + +If you get a `SyntaxError: Unexpected token ...` error when using the [object-rest-spread](https://github.com/babel/babel/tree/master/packages/babel-plugin-transform-object-rest-spread) transform then make sure the plugin has been updated to, at least, `v6.19.0`. diff --git a/experimental/babel-preset-env/codecov.yml b/experimental/babel-preset-env/codecov.yml new file mode 100644 index 0000000000..3e31ee1814 --- /dev/null +++ b/experimental/babel-preset-env/codecov.yml @@ -0,0 +1,4 @@ +coverage: + parsers: + javascript: + enable_partials: yes diff --git a/experimental/babel-preset-env/data/built-in-features.js b/experimental/babel-preset-env/data/built-in-features.js new file mode 100644 index 0000000000..c7b0b3c2a4 --- /dev/null +++ b/experimental/babel-preset-env/data/built-in-features.js @@ -0,0 +1,194 @@ +const typedArrayMethods = [ + "typed arrays / %TypedArray%.from", + "typed arrays / %TypedArray%.of", + "typed arrays / %TypedArray%.prototype.subarray", + "typed arrays / %TypedArray%.prototype.join", + "typed arrays / %TypedArray%.prototype.indexOf", + "typed arrays / %TypedArray%.prototype.lastIndexOf", + "typed arrays / %TypedArray%.prototype.slice", + "typed arrays / %TypedArray%.prototype.every", + "typed arrays / %TypedArray%.prototype.filter", + "typed arrays / %TypedArray%.prototype.forEach", + "typed arrays / %TypedArray%.prototype.map", + "typed arrays / %TypedArray%.prototype.reduce", + "typed arrays / %TypedArray%.prototype.reduceRight", + "typed arrays / %TypedArray%.prototype.reverse", + "typed arrays / %TypedArray%.prototype.some", + "typed arrays / %TypedArray%.prototype.sort", + "typed arrays / %TypedArray%.prototype.copyWithin", + "typed arrays / %TypedArray%.prototype.find", + "typed arrays / %TypedArray%.prototype.findIndex", + "typed arrays / %TypedArray%.prototype.fill", + "typed arrays / %TypedArray%.prototype.keys", + "typed arrays / %TypedArray%.prototype.values", + "typed arrays / %TypedArray%.prototype.entries", + "typed arrays / %TypedArray%.prototype[Symbol.iterator]", + "typed arrays / %TypedArray%[Symbol.species]", +]; + +const es2015 = { + "es6.typed.array-buffer": "typed arrays / ArrayBuffer[Symbol.species]", + "es6.typed.data-view": "typed arrays / DataView", + "es6.typed.int8-array": { + features: ["typed arrays / Int8Array"].concat(typedArrayMethods) + }, + "es6.typed.uint8-array": { + features: ["typed arrays / Uint8Array"].concat(typedArrayMethods) + }, + "es6.typed.uint8-clamped-array": { + features: ["typed arrays / Uint8ClampedArray"].concat(typedArrayMethods) + }, + "es6.typed.int16-array": { + features: ["typed arrays / Int16Array"].concat(typedArrayMethods) + }, + "es6.typed.uint16-array": { + features: ["typed arrays / Uint16Array"].concat(typedArrayMethods) + }, + "es6.typed.int32-array": { + features: ["typed arrays / Int32Array"].concat(typedArrayMethods) + }, + "es6.typed.uint32-array": { + features: ["typed arrays / Uint32Array"].concat(typedArrayMethods) + }, + "es6.typed.float32-array": { + features: ["typed arrays / Float32Array"].concat(typedArrayMethods) + }, + "es6.typed.float64-array": { + features: ["typed arrays / Float64Array"].concat(typedArrayMethods) + }, + + "es6.map": "Map", + "es6.set": "Set", + "es6.weak-map": "WeakMap", + "es6.weak-set": "WeakSet", + + // Proxy not implementable + + "es6.reflect.apply": "Reflect / Reflect.apply", + "es6.reflect.construct": "Reflect / Reflect.construct", + "es6.reflect.define-property": "Reflect / Reflect.defineProperty", + "es6.reflect.delete-property": "Reflect / Reflect.deleteProperty", + "es6.reflect.get": "Reflect / Reflect.get", + "es6.reflect.get-own-property-descriptor": "Reflect / Reflect.getOwnPropertyDescriptor", + "es6.reflect.get-prototype-of": "Reflect / Reflect.getPrototypeOf", + "es6.reflect.has": "Reflect / Reflect.has", + "es6.reflect.is-extensible": "Reflect / Reflect.isExtensible", + "es6.reflect.own-keys": "Reflect / Reflect.ownKeys", + "es6.reflect.prevent-extensions": "Reflect / Reflect.preventExtensions", + "es6.reflect.set": "Reflect / Reflect.set", + "es6.reflect.set-prototype-of": "Reflect / Reflect.setPrototypeOf", + + "es6.promise": { + features: [ + "Promise / basic functionality", + "Promise / constructor requires new", + "Promise / Promise.prototype isn\'t an instance", + "Promise / Promise.all", + "Promise / Promise.all, generic iterables", + "Promise / Promise.race", + "Promise / Promise.race, generic iterables", + "Promise / Promise[Symbol.species]" + ] + }, + + "es6.symbol": { + features: [ + "Symbol", + "Object static methods / Object.getOwnPropertySymbols", + "well-known symbols / Symbol.hasInstance", + "well-known symbols / Symbol.isConcatSpreadable", + "well-known symbols / Symbol.iterator", + "well-known symbols / Symbol.match", + "well-known symbols / Symbol.replace", + "well-known symbols / Symbol.search", + "well-known symbols / Symbol.species", + "well-known symbols / Symbol.split", + "well-known symbols / Symbol.toPrimitive", + "well-known symbols / Symbol.toStringTag", + "well-known symbols / Symbol.unscopables", + ] + }, + + "es6.object.assign": "Object static methods / Object.assign", + "es6.object.is": "Object static methods / Object.is", + "es6.object.set-prototype-of": "Object static methods / Object.setPrototypeOf", + + "es6.function.name": "function \"name\" property", + + "es6.string.raw": "String static methods / String.raw", + "es6.string.from-code-point": "String static methods / String.fromCodePoint", + + "es6.string.code-point-at": "String.prototype methods / String.prototype.codePointAt", + // "String.prototype methods / String.prototype.normalize" not implemented + "es6.string.repeat": "String.prototype methods / String.prototype.repeat", + "es6.string.starts-with": "String.prototype methods / String.prototype.startsWith", + "es6.string.ends-with": "String.prototype methods / String.prototype.endsWith", + "es6.string.includes": "String.prototype methods / String.prototype.includes", + + "es6.regexp.flags": "RegExp.prototype properties / RegExp.prototype.flags", + "es6.regexp.match": "RegExp.prototype properties / RegExp.prototype[Symbol.match]", + "es6.regexp.replace": "RegExp.prototype properties / RegExp.prototype[Symbol.replace]", + "es6.regexp.split": "RegExp.prototype properties / RegExp.prototype[Symbol.split]", + "es6.regexp.search": "RegExp.prototype properties / RegExp.prototype[Symbol.search]", + + "es6.array.from": "Array static methods / Array.from", + "es6.array.of": "Array static methods / Array.of", + + "es6.array.copy-within": "Array.prototype methods / Array.prototype.copyWithin", + "es6.array.find": "Array.prototype methods / Array.prototype.find", + "es6.array.find-index": "Array.prototype methods / Array.prototype.findIndex", + "es6.array.fill": "Array.prototype methods / Array.prototype.fill", + + "es6.array.iterator": { + features: [ + "Array.prototype methods / Array.prototype.keys", + // can use Symbol.iterator, not implemented in many environments + // "Array.prototype methods / Array.prototype.values", + "Array.prototype methods / Array.prototype.entries", + ] + }, + + "es6.number.is-finite": "Number properties / Number.isFinite", + "es6.number.is-integer": "Number properties / Number.isInteger", + "es6.number.is-safe-integer": "Number properties / Number.isSafeInteger", + "es6.number.is-nan": "Number properties / Number.isNaN", + "es6.number.epsilon": "Number properties / Number.EPSILON", + "es6.number.min-safe-integer": "Number properties / Number.MIN_SAFE_INTEGER", + "es6.number.max-safe-integer": "Number properties / Number.MAX_SAFE_INTEGER", + "es6.number.parse-float": "Number properties / Number.parseFloat", + "es6.number.parse-int": "Number properties / Number.parseInt", + + "es6.math.acosh": "Math methods / Math.acosh", + "es6.math.asinh": "Math methods / Math.asinh", + "es6.math.atanh": "Math methods / Math.atanh", + "es6.math.cbrt": "Math methods / Math.cbrt", + "es6.math.clz32": "Math methods / Math.clz32", + "es6.math.cosh": "Math methods / Math.cosh", + "es6.math.expm1": "Math methods / Math.expm1", + "es6.math.fround": "Math methods / Math.fround", + "es6.math.hypot": "Math methods / Math.hypot", + "es6.math.imul": "Math methods / Math.imul", + "es6.math.log1p": "Math methods / Math.log1p", + "es6.math.log10": "Math methods / Math.log10", + "es6.math.log2": "Math methods / Math.log2", + "es6.math.sign": "Math methods / Math.sign", + "es6.math.sinh": "Math methods / Math.sinh", + "es6.math.tanh": "Math methods / Math.tanh", + "es6.math.trunc": "Math methods / Math.trunc", +}; + +const es2016 = { + "es7.array.includes": "Array.prototype.includes", +}; + +const es2017 = { + "es7.object.values": "Object static methods / Object.values", + "es7.object.entries": "Object static methods / Object.entries", + "es7.object.get-own-property-descriptors": "Object static methods / Object.getOwnPropertyDescriptors", + "es7.string.pad-start": "String padding / String.prototype.padStart", + "es7.string.pad-end": "String padding / String.prototype.padEnd", +}; + +const proposals = require("./shipped-proposals").builtIns; + +module.exports = Object.assign({}, es2015, es2016, es2017, proposals); diff --git a/experimental/babel-preset-env/data/built-ins.json b/experimental/babel-preset-env/data/built-ins.json new file mode 100644 index 0000000000..c17b640f73 --- /dev/null +++ b/experimental/babel-preset-env/data/built-ins.json @@ -0,0 +1,850 @@ +{ + "es6.typed.array-buffer": { + "chrome": "51", + "edge": "13", + "firefox": "48", + "safari": "10", + "node": "6.5", + "ios": "10", + "opera": "38", + "electron": "1.2" + }, + "es6.typed.data-view": { + "chrome": "5", + "opera": "12", + "edge": "12", + "firefox": "15", + "safari": "5.1", + "node": "0.12", + "ie": "10", + "android": "4", + "ios": "6", + "electron": "1.1" + }, + "es6.typed.int8-array": { + "chrome": "51", + "edge": "13", + "firefox": "48", + "safari": "10", + "node": "6.5", + "ios": "10", + "opera": "38", + "electron": "1.2" + }, + "es6.typed.uint8-array": { + "chrome": "51", + "edge": "13", + "firefox": "48", + "safari": "10", + "node": "6.5", + "ios": "10", + "opera": "38", + "electron": "1.2" + }, + "es6.typed.uint8-clamped-array": { + "chrome": "51", + "edge": "13", + "firefox": "48", + "safari": "10", + "node": "6.5", + "ios": "10", + "opera": "38", + "electron": "1.2" + }, + "es6.typed.int16-array": { + "chrome": "51", + "edge": "13", + "firefox": "48", + "safari": "10", + "node": "6.5", + "ios": "10", + "opera": "38", + "electron": "1.2" + }, + "es6.typed.uint16-array": { + "chrome": "51", + "edge": "13", + "firefox": "48", + "safari": "10", + "node": "6.5", + "ios": "10", + "opera": "38", + "electron": "1.2" + }, + "es6.typed.int32-array": { + "chrome": "51", + "edge": "13", + "firefox": "48", + "safari": "10", + "node": "6.5", + "ios": "10", + "opera": "38", + "electron": "1.2" + }, + "es6.typed.uint32-array": { + "chrome": "51", + "edge": "13", + "firefox": "48", + "safari": "10", + "node": "6.5", + "ios": "10", + "opera": "38", + "electron": "1.2" + }, + "es6.typed.float32-array": { + "chrome": "51", + "edge": "13", + "firefox": "48", + "safari": "10", + "node": "6.5", + "ios": "10", + "opera": "38", + "electron": "1.2" + }, + "es6.typed.float64-array": { + "chrome": "51", + "edge": "13", + "firefox": "48", + "safari": "10", + "node": "6.5", + "ios": "10", + "opera": "38", + "electron": "1.2" + }, + "es6.map": { + "chrome": "51", + "edge": "15", + "firefox": "53", + "safari": "10", + "node": "6.5", + "ios": "10", + "opera": "38", + "electron": "1.2" + }, + "es6.set": { + "chrome": "51", + "edge": "15", + "firefox": "53", + "safari": "10", + "node": "6.5", + "ios": "10", + "opera": "38", + "electron": "1.2" + }, + "es6.weak-map": { + "chrome": "51", + "edge": "15", + "firefox": "53", + "safari": "9", + "node": "6.5", + "ios": "9", + "opera": "38", + "electron": "1.2" + }, + "es6.weak-set": { + "chrome": "51", + "edge": "15", + "firefox": "53", + "safari": "9", + "node": "6.5", + "ios": "9", + "opera": "38", + "electron": "1.2" + }, + "es6.reflect.apply": { + "chrome": "49", + "edge": "12", + "firefox": "42", + "safari": "10", + "node": "6", + "ios": "10", + "opera": "36", + "electron": "1" + }, + "es6.reflect.construct": { + "chrome": "49", + "edge": "13", + "firefox": "44", + "safari": "10", + "node": "6", + "ios": "10", + "opera": "36", + "electron": "1" + }, + "es6.reflect.define-property": { + "chrome": "49", + "edge": "13", + "firefox": "42", + "safari": "10", + "node": "6", + "ios": "10", + "opera": "36", + "electron": "1" + }, + "es6.reflect.delete-property": { + "chrome": "49", + "edge": "12", + "firefox": "42", + "safari": "10", + "node": "6", + "ios": "10", + "opera": "36", + "electron": "1" + }, + "es6.reflect.get": { + "chrome": "49", + "edge": "12", + "firefox": "42", + "safari": "10", + "node": "6", + "ios": "10", + "opera": "36", + "electron": "1" + }, + "es6.reflect.get-own-property-descriptor": { + "chrome": "49", + "edge": "12", + "firefox": "42", + "safari": "10", + "node": "6", + "ios": "10", + "opera": "36", + "electron": "1" + }, + "es6.reflect.get-prototype-of": { + "chrome": "49", + "edge": "12", + "firefox": "42", + "safari": "10", + "node": "6", + "ios": "10", + "opera": "36", + "electron": "1" + }, + "es6.reflect.has": { + "chrome": "49", + "edge": "12", + "firefox": "42", + "safari": "10", + "node": "6", + "ios": "10", + "opera": "36", + "electron": "1" + }, + "es6.reflect.is-extensible": { + "chrome": "49", + "edge": "12", + "firefox": "42", + "safari": "10", + "node": "6", + "ios": "10", + "opera": "36", + "electron": "1" + }, + "es6.reflect.own-keys": { + "chrome": "49", + "edge": "12", + "firefox": "42", + "safari": "10", + "node": "6", + "ios": "10", + "opera": "36", + "electron": "1" + }, + "es6.reflect.prevent-extensions": { + "chrome": "49", + "edge": "12", + "firefox": "42", + "safari": "10", + "node": "6", + "ios": "10", + "opera": "36", + "electron": "1" + }, + "es6.reflect.set": { + "chrome": "49", + "edge": "12", + "firefox": "42", + "safari": "10", + "node": "6", + "ios": "10", + "opera": "36", + "electron": "1" + }, + "es6.reflect.set-prototype-of": { + "chrome": "49", + "edge": "12", + "firefox": "42", + "safari": "10", + "node": "6", + "ios": "10", + "opera": "36", + "electron": "1" + }, + "es6.promise": { + "chrome": "51", + "edge": "13", + "firefox": "45", + "safari": "10", + "node": "6.5", + "ios": "10", + "opera": "38", + "electron": "1.2" + }, + "es6.symbol": { + "chrome": "51", + "firefox": "51", + "safari": "10", + "node": "6.5", + "ios": "10", + "opera": "38", + "electron": "1.2" + }, + "es6.object.assign": { + "chrome": "45", + "edge": "12", + "firefox": "34", + "safari": "9", + "node": "4", + "ios": "9", + "opera": "32", + "electron": "0.35" + }, + "es6.object.is": { + "chrome": "19", + "edge": "12", + "firefox": "22", + "safari": "9", + "node": "0.12", + "android": "4.1", + "ios": "9", + "electron": "0.2" + }, + "es6.object.set-prototype-of": { + "chrome": "34", + "edge": "12", + "firefox": "31", + "safari": "9", + "node": "0.12", + "ie": "11", + "ios": "9", + "opera": "21", + "electron": "0.2" + }, + "es6.function.name": { + "chrome": "51", + "firefox": "53", + "safari": "10", + "node": "6.5", + "ios": "10", + "opera": "38", + "electron": "1.2" + }, + "es6.string.raw": { + "chrome": "41", + "edge": "12", + "firefox": "34", + "safari": "9", + "node": "4", + "ios": "9", + "opera": "28", + "electron": "0.24" + }, + "es6.string.from-code-point": { + "chrome": "41", + "edge": "12", + "firefox": "29", + "safari": "9", + "node": "4", + "ios": "9", + "opera": "28", + "electron": "0.24" + }, + "es6.string.code-point-at": { + "chrome": "41", + "edge": "12", + "firefox": "29", + "safari": "9", + "node": "4", + "ios": "9", + "opera": "28", + "electron": "0.24" + }, + "es6.string.repeat": { + "chrome": "41", + "edge": "12", + "firefox": "24", + "safari": "9", + "node": "4", + "ios": "9", + "opera": "28", + "electron": "0.24" + }, + "es6.string.starts-with": { + "chrome": "41", + "edge": "12", + "firefox": "29", + "safari": "9", + "node": "4", + "ios": "9", + "opera": "28", + "electron": "0.24" + }, + "es6.string.ends-with": { + "chrome": "41", + "edge": "12", + "firefox": "29", + "safari": "9", + "node": "4", + "ios": "9", + "opera": "28", + "electron": "0.24" + }, + "es6.string.includes": { + "chrome": "41", + "edge": "12", + "firefox": "40", + "safari": "9", + "node": "4", + "ios": "9", + "opera": "28", + "electron": "0.24" + }, + "es6.regexp.flags": { + "chrome": "49", + "firefox": "37", + "safari": "9", + "node": "6", + "ios": "9", + "opera": "36", + "electron": "1" + }, + "es6.regexp.match": { + "chrome": "50", + "firefox": "49", + "safari": "10", + "node": "6", + "ios": "10", + "opera": "37", + "electron": "1.1" + }, + "es6.regexp.replace": { + "chrome": "50", + "firefox": "49", + "safari": "10", + "node": "6", + "ios": "10", + "opera": "37", + "electron": "1.1" + }, + "es6.regexp.split": { + "chrome": "50", + "firefox": "49", + "safari": "10", + "node": "6", + "ios": "10", + "opera": "37", + "electron": "1.1" + }, + "es6.regexp.search": { + "chrome": "50", + "firefox": "49", + "safari": "10", + "node": "6", + "ios": "10", + "opera": "37", + "electron": "1.1" + }, + "es6.array.from": { + "chrome": "51", + "edge": "15", + "firefox": "36", + "safari": "10", + "node": "6.5", + "ios": "10", + "opera": "38", + "electron": "1.2" + }, + "es6.array.of": { + "chrome": "45", + "edge": "12", + "firefox": "25", + "safari": "9", + "node": "4", + "ios": "9", + "opera": "32", + "electron": "0.35" + }, + "es6.array.copy-within": { + "chrome": "45", + "edge": "12", + "firefox": "32", + "safari": "9", + "node": "4", + "ios": "9", + "opera": "32", + "electron": "0.35" + }, + "es6.array.find": { + "chrome": "45", + "edge": "12", + "firefox": "25", + "safari": "7.1", + "node": "4", + "ios": "8", + "opera": "32", + "electron": "0.35" + }, + "es6.array.find-index": { + "chrome": "45", + "edge": "12", + "firefox": "25", + "safari": "7.1", + "node": "4", + "ios": "8", + "opera": "32", + "electron": "0.35" + }, + "es6.array.fill": { + "chrome": "45", + "edge": "12", + "firefox": "31", + "safari": "7.1", + "node": "4", + "ios": "8", + "opera": "32", + "electron": "0.35" + }, + "es6.array.iterator": { + "chrome": "38", + "edge": "12", + "firefox": "28", + "safari": "7.1", + "node": "0.12", + "ios": "8", + "opera": "25", + "electron": "0.2" + }, + "es6.number.is-finite": { + "chrome": "19", + "edge": "12", + "firefox": "16", + "safari": "9", + "node": "0.12", + "android": "4.1", + "ios": "9", + "electron": "0.2" + }, + "es6.number.is-integer": { + "chrome": "34", + "edge": "12", + "firefox": "16", + "safari": "9", + "node": "0.12", + "ios": "9", + "opera": "21", + "electron": "0.2" + }, + "es6.number.is-safe-integer": { + "chrome": "34", + "edge": "12", + "firefox": "32", + "safari": "9", + "node": "0.12", + "ios": "9", + "opera": "21", + "electron": "0.2" + }, + "es6.number.is-nan": { + "chrome": "19", + "edge": "12", + "firefox": "15", + "safari": "9", + "node": "0.12", + "android": "4.1", + "ios": "9", + "electron": "0.2" + }, + "es6.number.epsilon": { + "chrome": "34", + "edge": "12", + "firefox": "25", + "safari": "9", + "node": "0.12", + "ios": "9", + "opera": "21", + "electron": "0.2" + }, + "es6.number.min-safe-integer": { + "chrome": "34", + "edge": "12", + "firefox": "31", + "safari": "9", + "node": "0.12", + "ios": "9", + "opera": "21", + "electron": "0.2" + }, + "es6.number.max-safe-integer": { + "chrome": "34", + "edge": "12", + "firefox": "31", + "safari": "9", + "node": "0.12", + "ios": "9", + "opera": "21", + "electron": "0.2" + }, + "es6.number.parse-float": { + "chrome": "34", + "edge": "12", + "firefox": "25", + "safari": "9", + "node": "0.12", + "ios": "9", + "opera": "21", + "electron": "0.2" + }, + "es6.number.parse-int": { + "chrome": "34", + "edge": "12", + "firefox": "25", + "safari": "9", + "node": "0.12", + "ios": "9", + "opera": "21", + "electron": "0.2" + }, + "es6.math.acosh": { + "chrome": "38", + "edge": "12", + "firefox": "25", + "safari": "7.1", + "node": "0.12", + "ios": "8", + "opera": "25", + "electron": "0.2" + }, + "es6.math.asinh": { + "chrome": "38", + "edge": "12", + "firefox": "25", + "safari": "7.1", + "node": "0.12", + "ios": "8", + "opera": "25", + "electron": "0.2" + }, + "es6.math.atanh": { + "chrome": "38", + "edge": "12", + "firefox": "25", + "safari": "7.1", + "node": "0.12", + "ios": "8", + "opera": "25", + "electron": "0.2" + }, + "es6.math.cbrt": { + "chrome": "38", + "edge": "12", + "firefox": "25", + "safari": "7.1", + "node": "0.12", + "ios": "8", + "opera": "25", + "electron": "0.2" + }, + "es6.math.clz32": { + "chrome": "38", + "edge": "12", + "firefox": "31", + "safari": "9", + "node": "0.12", + "ios": "9", + "opera": "25", + "electron": "0.2" + }, + "es6.math.cosh": { + "chrome": "38", + "edge": "12", + "firefox": "25", + "safari": "7.1", + "node": "0.12", + "ios": "8", + "opera": "25", + "electron": "0.2" + }, + "es6.math.expm1": { + "chrome": "38", + "edge": "12", + "firefox": "25", + "safari": "7.1", + "node": "0.12", + "ios": "8", + "opera": "25", + "electron": "0.2" + }, + "es6.math.fround": { + "chrome": "38", + "edge": "12", + "firefox": "26", + "safari": "7.1", + "node": "0.12", + "ios": "8", + "opera": "25", + "electron": "0.2" + }, + "es6.math.hypot": { + "chrome": "38", + "edge": "12", + "firefox": "27", + "safari": "7.1", + "node": "0.12", + "ios": "8", + "opera": "25", + "electron": "0.2" + }, + "es6.math.imul": { + "chrome": "30", + "edge": "12", + "firefox": "23", + "safari": "7", + "node": "0.12", + "android": "4.4", + "ios": "7", + "opera": "17", + "electron": "0.2" + }, + "es6.math.log1p": { + "chrome": "38", + "edge": "12", + "firefox": "25", + "safari": "7.1", + "node": "0.12", + "ios": "8", + "opera": "25", + "electron": "0.2" + }, + "es6.math.log10": { + "chrome": "38", + "edge": "12", + "firefox": "25", + "safari": "7.1", + "node": "0.12", + "ios": "8", + "opera": "25", + "electron": "0.2" + }, + "es6.math.log2": { + "chrome": "38", + "edge": "12", + "firefox": "25", + "safari": "7.1", + "node": "0.12", + "ios": "8", + "opera": "25", + "electron": "0.2" + }, + "es6.math.sign": { + "chrome": "38", + "edge": "12", + "firefox": "25", + "safari": "9", + "node": "0.12", + "ios": "9", + "opera": "25", + "electron": "0.2" + }, + "es6.math.sinh": { + "chrome": "38", + "edge": "12", + "firefox": "25", + "safari": "7.1", + "node": "0.12", + "ios": "8", + "opera": "25", + "electron": "0.2" + }, + "es6.math.tanh": { + "chrome": "38", + "edge": "12", + "firefox": "25", + "safari": "7.1", + "node": "0.12", + "ios": "8", + "opera": "25", + "electron": "0.2" + }, + "es6.math.trunc": { + "chrome": "38", + "edge": "12", + "firefox": "25", + "safari": "7.1", + "node": "0.12", + "ios": "8", + "opera": "25", + "electron": "0.2" + }, + "es7.array.includes": { + "chrome": "47", + "edge": "14", + "firefox": "43", + "safari": "10", + "node": "6", + "ios": "10", + "opera": "34", + "electron": "0.36" + }, + "es7.object.values": { + "chrome": "54", + "edge": "14", + "firefox": "47", + "safari": "10.1", + "node": "7", + "ios": "10.3", + "opera": "41", + "electron": "1.5" + }, + "es7.object.entries": { + "chrome": "54", + "edge": "14", + "firefox": "47", + "safari": "10.1", + "node": "7", + "ios": "10.3", + "opera": "41", + "electron": "1.5" + }, + "es7.object.get-own-property-descriptors": { + "chrome": "54", + "edge": "15", + "firefox": "50", + "safari": "10.1", + "node": "7", + "ios": "10.3", + "opera": "41", + "electron": "1.5" + }, + "es7.string.pad-start": { + "chrome": "57", + "edge": "15", + "firefox": "48", + "safari": "10", + "node": "8", + "ios": "10", + "opera": "44", + "electron": "1.7" + }, + "es7.string.pad-end": { + "chrome": "57", + "edge": "15", + "firefox": "48", + "safari": "10", + "node": "8", + "ios": "10", + "opera": "44", + "electron": "1.7" + }, + "es7.promise.finally": {} +} diff --git a/experimental/babel-preset-env/data/plugin-features.js b/experimental/babel-preset-env/data/plugin-features.js new file mode 100644 index 0000000000..d55a080713 --- /dev/null +++ b/experimental/babel-preset-env/data/plugin-features.js @@ -0,0 +1,140 @@ +const es2015 = { + "check-es2015-constants": { + features: [ + "const", + ], + }, + "transform-es2015-arrow-functions": { + features: [ + "arrow functions", + ], + }, + "transform-es2015-block-scoped-functions": { + features: [ + "block-level function declaration" + ], + }, + "transform-es2015-block-scoping": { + features: [ + "const", + "let", + ], + }, + "transform-es2015-classes": { + features: [ + "class", + "super", + ], + }, + "transform-es2015-computed-properties": { + features: [ + "object literal extensions / computed properties", + ], + }, + "transform-es2015-destructuring": { + features: [ + "destructuring, assignment", + "destructuring, declarations", + "destructuring, parameters", + ], + }, + "transform-es2015-duplicate-keys": { + features: [ + "miscellaneous / duplicate property names in strict mode", + ], + }, + "transform-es2015-for-of": { + features: [ + "for..of loops", + ], + }, + "transform-es2015-function-name": { + features: [ + "function \"name\" property", + ] + }, + "transform-es2015-literals": { + features: [ + "Unicode code point escapes", + ], + }, + "transform-es2015-object-super": { + features: [ + "super", + ], + }, + "transform-es2015-parameters": { + features: [ + "default function parameters", + "rest parameters", + ], + }, + "transform-es2015-shorthand-properties": { + features: [ + "object literal extensions / shorthand properties", + ], + }, + "transform-es2015-spread": { + features: [ + "spread (...) operator", + ], + }, + "transform-es2015-sticky-regex": { + features: [ + "RegExp \"y\" and \"u\" flags / \"y\" flag, lastIndex", + "RegExp \"y\" and \"u\" flags / \"y\" flag", + ], + }, + "transform-es2015-template-literals": { + features: [ + "template literals", + ], + }, + "transform-es2015-typeof-symbol": { + features: [ + "Symbol / typeof support" + ], + }, + "transform-es2015-unicode-regex": { + features: [ + "RegExp \"y\" and \"u\" flags / \"u\" flag, case folding", + "RegExp \"y\" and \"u\" flags / \"u\" flag, Unicode code point escapes", + "RegExp \"y\" and \"u\" flags / \"u\" flag", + ], + }, + "transform-new-target": { + features: [ + "new.target", + ], + }, + "transform-regenerator": { + features: [ + "generators", + ], + } +}; + +const es2016 = { + "transform-exponentiation-operator": { + features: [ + "exponentiation (**) operator", + ], + } +}; + +const es2017 = { + "transform-async-to-generator": { + features: [ + "async functions", + ], + }, + "syntax-trailing-function-commas": { + features: [ + "trailing commas in function syntax", + ], + } +}; + +const proposals = require("./shipped-proposals").features; + +module.exports = Object.assign({}, es2015, es2016, es2017, proposals); diff --git a/experimental/babel-preset-env/data/plugins.json b/experimental/babel-preset-env/data/plugins.json new file mode 100644 index 0000000000..bdbd227259 --- /dev/null +++ b/experimental/babel-preset-env/data/plugins.json @@ -0,0 +1,250 @@ +{ + "check-es2015-constants": { + "chrome": "49", + "edge": "14", + "firefox": "51", + "safari": "10", + "node": "6", + "ios": "10", + "opera": "36", + "electron": "1" + }, + "transform-es2015-arrow-functions": { + "chrome": "47", + "edge": "13", + "firefox": "45", + "safari": "10", + "node": "6", + "ios": "10", + "opera": "34", + "electron": "0.36" + }, + "transform-es2015-block-scoped-functions": { + "chrome": "41", + "edge": "12", + "firefox": "46", + "safari": "10", + "node": "4", + "ie": "11", + "ios": "10", + "opera": "28", + "electron": "0.24" + }, + "transform-es2015-block-scoping": { + "chrome": "49", + "edge": "14", + "firefox": "51", + "safari": "10", + "node": "6", + "ios": "10", + "opera": "36", + "electron": "1" + }, + "transform-es2015-classes": { + "chrome": "46", + "edge": "13", + "firefox": "45", + "safari": "10", + "node": "5", + "ios": "10", + "opera": "33", + "electron": "0.36" + }, + "transform-es2015-computed-properties": { + "chrome": "44", + "edge": "12", + "firefox": "34", + "safari": "7.1", + "node": "4", + "ios": "8", + "opera": "31", + "electron": "0.31" + }, + "transform-es2015-destructuring": { + "chrome": "51", + "firefox": "53", + "safari": "10", + "node": "6.5", + "ios": "10", + "opera": "38", + "electron": "1.2" + }, + "transform-es2015-duplicate-keys": { + "chrome": "42", + "edge": "12", + "firefox": "34", + "safari": "9", + "node": "4", + "ios": "9", + "opera": "29", + "electron": "0.27" + }, + "transform-es2015-for-of": { + "chrome": "51", + "edge": "15", + "firefox": "53", + "safari": "10", + "node": "6.5", + "ios": "10", + "opera": "38", + "electron": "1.2" + }, + "transform-es2015-function-name": { + "chrome": "51", + "firefox": "53", + "safari": "10", + "node": "6.5", + "ios": "10", + "opera": "38", + "electron": "1.2" + }, + "transform-es2015-literals": { + "chrome": "44", + "edge": "12", + "firefox": "53", + "safari": "9", + "node": "4", + "ios": "9", + "opera": "31", + "electron": "0.31" + }, + "transform-es2015-object-super": { + "chrome": "46", + "edge": "13", + "firefox": "45", + "safari": "10", + "node": "5", + "ios": "10", + "opera": "33", + "electron": "0.36" + }, + "transform-es2015-parameters": { + "chrome": "49", + "edge": "14", + "firefox": "53", + "safari": "10", + "node": "6", + "ios": "10", + "opera": "36", + "electron": "1" + }, + "transform-es2015-shorthand-properties": { + "chrome": "43", + "edge": "12", + "firefox": "33", + "safari": "9", + "node": "4", + "ios": "9", + "opera": "30", + "electron": "0.29" + }, + "transform-es2015-spread": { + "chrome": "46", + "edge": "13", + "firefox": "36", + "safari": "10", + "node": "5", + "ios": "10", + "opera": "33", + "electron": "0.36" + }, + "transform-es2015-sticky-regex": { + "chrome": "49", + "edge": "13", + "firefox": "3", + "safari": "10", + "node": "6", + "ios": "10", + "opera": "36", + "electron": "1" + }, + "transform-es2015-template-literals": { + "chrome": "41", + "edge": "13", + "firefox": "34", + "safari": "9", + "node": "4", + "ios": "9", + "opera": "28", + "electron": "0.24" + }, + "transform-es2015-typeof-symbol": { + "chrome": "38", + "edge": "12", + "firefox": "36", + "safari": "9", + "node": "0.12", + "ios": "9", + "opera": "25", + "electron": "0.2" + }, + "transform-es2015-unicode-regex": { + "chrome": "50", + "edge": "13", + "firefox": "46", + "safari": "10", + "node": "6", + "ios": "10", + "opera": "37", + "electron": "1.1" + }, + "transform-new-target": { + "chrome": "46", + "edge": "14", + "firefox": "41", + "safari": "10", + "node": "5", + "ios": "10", + "opera": "33", + "electron": "0.36" + }, + "transform-regenerator": { + "chrome": "50", + "edge": "13", + "firefox": "53", + "safari": "10", + "node": "6", + "ios": "10", + "opera": "37", + "electron": "1.1" + }, + "transform-exponentiation-operator": { + "chrome": "52", + "edge": "14", + "firefox": "52", + "safari": "10.1", + "node": "7", + "ios": "10.3", + "opera": "39", + "electron": "1.3" + }, + "transform-async-to-generator": { + "chrome": "55", + "edge": "15", + "firefox": "52", + "safari": "10.1", + "node": "7.6", + "ios": "10.3", + "opera": "42", + "electron": "1.6" + }, + "syntax-trailing-function-commas": { + "chrome": "58", + "edge": "14", + "firefox": "52", + "safari": "10", + "node": "8", + "ios": "10", + "opera": "45", + "electron": "1.7" + }, + "transform-async-generator-functions": {}, + "transform-object-rest-spread": { + "chrome": "60", + "firefox": "55", + "node": "8.3", + "opera": "47" + }, + "transform-optional-catch-binding": {}, + "transform-unicode-property-regex": {} +} diff --git a/experimental/babel-preset-env/data/shipped-proposals.js b/experimental/babel-preset-env/data/shipped-proposals.js new file mode 100644 index 0000000000..051770940c --- /dev/null +++ b/experimental/babel-preset-env/data/shipped-proposals.js @@ -0,0 +1,22 @@ +// These mappings represent the builtin/feature proposals that have been +// shipped by browsers, and are enabled by the `shippedProposals` option. + +const builtIns = { + "es7.promise.finally": "Promise.prototype.finally" +}; + +const features = { + "transform-async-generator-functions": "Asynchronous Iterators", + "transform-object-rest-spread": "object rest/spread properties", + "transform-optional-catch-binding": "optional catch binding", + "transform-unicode-property-regex": "RegExp Unicode Property Escapes", +}; + +const pluginSyntaxMap = new Map([ + ["transform-async-generator-functions", "syntax-async-generators"], + ["transform-object-rest-spread", "syntax-object-rest-spread"], + ["transform-optional-catch-binding", "syntax-optional-catch-binding"], + ["transform-unicode-property-regex", null], +]); + +module.exports = { builtIns, features, pluginSyntaxMap }; diff --git a/experimental/babel-preset-env/flow-typed/npm/semver_v5.1.x.js b/experimental/babel-preset-env/flow-typed/npm/semver_v5.1.x.js new file mode 100644 index 0000000000..6331b8488c --- /dev/null +++ b/experimental/babel-preset-env/flow-typed/npm/semver_v5.1.x.js @@ -0,0 +1,81 @@ +// flow-typed signature: c5f918cd3de18b19a20558e6f3bbcc84 +// flow-typed version: cdd17a64e0/semver_v5.1.x/flow_>=v0.27.0 + +// List of members taken from here: https://www.npmjs.com/package/semver/#functions +// TODO support the `loose` parameter +// TODO support SemVer instances as input parameters +declare module 'semver' { + declare type Release = + 'major' | + 'premajor' | + 'minor' | + 'preminor' | + 'patch' | + 'prepatch' | + 'prerelease'; + + // The supported comparators are taken from the source here: + // https://github.com/npm/node-semver/blob/8bd070b550db2646362c9883c8d008d32f66a234/semver.js#L623 + declare type Comparator = + '===' | + '!==' | + '==' | + '=' | + '' | // Not sure why you would want this, but whatever. + '!=' | + '>' | + '>=' | + '<' | + '<='; + + declare class SemVer { + loose: ?boolean, + raw: string, + major: number, + minor: number, + patch: number, + prerelease: Array, + build: Array, + version: string, + } + + // Functions + declare function valid(v: string): string | null; + declare function inc(v: string, release: Release): string | null; + declare function major(v: string): number; + declare function minor(v: string): number; + declare function patch(v: string): number; + + // Comparison + declare function gt(v1: string, v2: string): boolean; + declare function gte(v1: string, v2: string): boolean; + declare function lt(v1: string, v2: string): boolean; + declare function lte(v1: string, v2: string): boolean; + declare function eq(v1: string, v2: string): boolean; + declare function neq(v1: string, v2: string): boolean; + declare function cmp(v1: string, comparator: Comparator, v2: string): boolean; + declare function compare(v1: string, v2: string): -1 | 0 | 1; + declare function rcompare(v1: string, v2: string): -1 | 0 | 1; + declare function diff(v1: string, v2: string): ?Release; + + // Ranges + declare function validRange(r: string): string | null; + declare function satisfies(version: string, range: string): boolean; + declare function maxSatisfying(versions: Array, range: string): string | null; + declare function gtr(version: string, range: string): boolean; + declare function ltr(version: string, range: string): boolean; + declare function outside(version: string, range: string, hilo: '>' | '<'): boolean; + + // Not explicitly documented + declare function parse(version: string): ?SemVer; + + declare class Range { + set: Array>; + + constructor(range: string, loose?: boolean): Range; + + format(): string; + test(version: string): boolean; + toString(): string; + } +} diff --git a/experimental/babel-preset-env/package.json b/experimental/babel-preset-env/package.json new file mode 100644 index 0000000000..a42e285058 --- /dev/null +++ b/experimental/babel-preset-env/package.json @@ -0,0 +1,154 @@ +{ + "name": "babel-preset-env", + "version": "2.0.0-beta.2", + "description": "A Babel preset for each environment.", + "author": "Henry Zhu ", + "homepage": "https://babeljs.io/", + "license": "MIT", + "repository": "https://github.com/babel/babel-preset-env", + "main": "lib/index.js", + "scripts": { + "build": "rimraf lib && babel src -d lib", + "build-data": "node ./scripts/build-data.js", + "changelog": "git log `git describe --tags --abbrev=0`..HEAD --pretty=format:' * %s (%an)' | grep -v 'Merge pull request'", + "coverage": "BABEL_ENV=test nyc npm run test", + "coverage-ci": "nyc report --reporter=json && codecov -f coverage/coverage-final.json", + "dev": "babel -w src -d lib", + "fix": "eslint . --fix", + "flow": "flow", + "format": "prettier --trailing-comma all --write \"src/*.js\" \"test/*.js\" && prettier --trailing-comma es5 --write \"scripts/*.js\"", + "lint": "eslint .", + "precommit": "lint-staged", + "prepublish": "npm run build", + "test": "npm run build && npm run flow && npm run test-only", + "test-ci": "nyc npm run test", + "test-only": "mocha ./test --compilers js:babel-register -t 10000" + }, + "dependencies": { + "babel-plugin-check-es2015-constants": "7.0.0-beta.2", + "babel-plugin-syntax-async-generators": "7.0.0-beta.0", + "babel-plugin-syntax-object-rest-spread": "7.0.0-beta.0", + "babel-plugin-syntax-optional-catch-binding": "7.0.0-beta.0", + "babel-plugin-syntax-trailing-function-commas": "7.0.0-beta.0", + "babel-plugin-transform-async-to-generator": "7.0.0-beta.2", + "babel-plugin-transform-async-generator-functions": "7.0.0-beta.2", + "babel-plugin-transform-es2015-arrow-functions": "7.0.0-beta.2", + "babel-plugin-transform-es2015-block-scoped-functions": "7.0.0-beta.2", + "babel-plugin-transform-es2015-block-scoping": "7.0.0-beta.2", + "babel-plugin-transform-es2015-classes": "7.0.0-beta.2", + "babel-plugin-transform-es2015-computed-properties": "7.0.0-beta.2", + "babel-plugin-transform-es2015-destructuring": "7.0.0-beta.2", + "babel-plugin-transform-es2015-duplicate-keys": "7.0.0-beta.2", + "babel-plugin-transform-es2015-for-of": "7.0.0-beta.2", + "babel-plugin-transform-es2015-function-name": "7.0.0-beta.2", + "babel-plugin-transform-es2015-literals": "7.0.0-beta.2", + "babel-plugin-transform-es2015-modules-amd": "7.0.0-beta.2", + "babel-plugin-transform-es2015-modules-commonjs": "7.0.0-beta.2", + "babel-plugin-transform-es2015-modules-systemjs": "7.0.0-beta.2", + "babel-plugin-transform-es2015-modules-umd": "7.0.0-beta.2", + "babel-plugin-transform-es2015-object-super": "7.0.0-beta.2", + "babel-plugin-transform-es2015-parameters": "7.0.0-beta.2", + "babel-plugin-transform-es2015-shorthand-properties": "7.0.0-beta.2", + "babel-plugin-transform-es2015-spread": "7.0.0-beta.2", + "babel-plugin-transform-es2015-sticky-regex": "7.0.0-beta.2", + "babel-plugin-transform-es2015-template-literals": "7.0.0-beta.2", + "babel-plugin-transform-es2015-typeof-symbol": "7.0.0-beta.2", + "babel-plugin-transform-es2015-unicode-regex": "7.0.0-beta.2", + "babel-plugin-transform-exponentiation-operator": "7.0.0-beta.2", + "babel-plugin-transform-new-target": "7.0.0-beta.2", + "babel-plugin-transform-regenerator": "7.0.0-beta.2", + "babel-plugin-transform-object-rest-spread": "7.0.0-beta.2", + "babel-plugin-transform-optional-catch-binding": "7.0.0-beta.2", + "babel-plugin-transform-unicode-property-regex": "^2.0.5", + "browserslist": "^2.4.0", + "invariant": "^2.2.2", + "semver": "^5.3.0" + }, + "devDependencies": { + "babel-cli": "7.0.0-beta.2", + "babel-eslint": "^8.0.1", + "babel-helper-fixtures": "7.0.0-beta.2", + "babel-helper-plugin-test-runner": "7.0.0-beta.2", + "babel-plugin-istanbul": "^4.1.5", + "babel-plugin-transform-flow-strip-types": "7.0.0-beta.2", + "babel-preset-env": "2.0.0-beta.2", + "babel-register": "7.0.0-beta.2", + "chai": "^4.0.2", + "codecov": "^2.2.0", + "compat-table": "kangax/compat-table#b8477cc0f6d65c000c46213e654d19f350de9fa8", + "eslint": "^4.8.0", + "eslint-config-babel": "^7.0.2", + "eslint-plugin-flowtype": "^2.37.0", + "flow-bin": "^0.46.0", + "fs-extra": "^3.0.1", + "husky": "^0.13.2", + "lint-staged": "^4.0.0", + "lodash": "^4.17.4", + "mocha": "^3.4.2", + "nyc": "^11.0.3", + "prettier": "1.5.2", + "rimraf": "^2.6.1" + }, + "babel": { + "presets": [ + [ + "env", + { + "targets": { + "node": 4 + }, + "loose": true + } + ] + ], + "plugins": [ + "transform-flow-strip-types" + ], + "env": { + "test": { + "plugins": [ + "istanbul" + ] + } + } + }, + "changelog": { + "repo": "babel/babel-preset-env", + "labels": { + "Tag: Breaking Change": ":boom: Breaking Change", + "Tag: New Feature": ":rocket: New Feature", + "Tag: Bug Fix": ":bug: Bug Fix", + "Tag: Polish": ":nail_care: Polish", + "Tag: Docs": ":memo: Documentation", + "Tag: Internal": ":house: Internal", + "Tag: Chore": "Chore", + "Tag: Deprecation": "Deprecation" + } + }, + "nyc": { + "all": true, + "include": [ + "src/*.js" + ], + "instrument": false, + "sourceMap": false + }, + "lint-staged": { + "src/**/*.js": [ + "prettier --trailing-comma all --write", + "git add" + ], + "scripts/*.js": [ + "prettier --trailing-comma es5 --write", + "git add" + ], + "test/*.js": [ + "prettier --trailing-comma all --write", + "git add" + ], + "package.json": [ + "node ./scripts/yarn-install.js", + "git add yarn.lock" + ] + } +} diff --git a/experimental/babel-preset-env/scripts/build-data.js b/experimental/babel-preset-env/scripts/build-data.js new file mode 100644 index 0000000000..5bbab1fa55 --- /dev/null +++ b/experimental/babel-preset-env/scripts/build-data.js @@ -0,0 +1,287 @@ +"use strict"; + +const fs = require("fs"); +const path = require("path"); + +const flattenDeep = require("lodash/flattenDeep"); +const isEqual = require("lodash/isEqual"); +const mapValues = require("lodash/mapValues"); +const pickBy = require("lodash/pickBy"); +const electronToChromiumVersions = require("electron-to-chromium").versions; + +const electronToChromiumKeys = Object.keys( + electronToChromiumVersions +).reverse(); + +const chromiumToElectronMap = electronToChromiumKeys.reduce((all, electron) => { + all[electronToChromiumVersions[electron]] = +electron; + return all; +}, {}); +const chromiumToElectronVersions = Object.keys(chromiumToElectronMap); + +const findClosestElectronVersion = targetVersion => { + const chromiumVersionsLength = chromiumToElectronVersions.length; + const maxChromium = +chromiumToElectronVersions[chromiumVersionsLength - 1]; + if (targetVersion > maxChromium) return null; + + const closestChrome = chromiumToElectronVersions.find( + version => targetVersion <= version + ); + return chromiumToElectronMap[closestChrome]; +}; + +const chromiumToElectron = chromium => + chromiumToElectronMap[chromium] || findClosestElectronVersion(chromium); + +const renameTests = (tests, getName, category) => + tests.map(test => + Object.assign({}, test, { name: getName(test.name), category }) + ); + +// The following is adapted from compat-table: +// https://github.com/kangax/compat-table/blob/gh-pages/build.js +// +// It parses and interpolates data so environments that "equal" other +// environments (node4 and chrome45), as well as familial relationships (edge +// and ie11) can be handled properly. + +const envs = require("compat-table/environments"); + +const byTestSuite = suite => browser => { + return Array.isArray(browser.test_suites) + ? browser.test_suites.indexOf(suite) > -1 + : true; +}; + +const compatSources = [ + "es6", + "es2016plus", + "esnext", +].reduce((result, source) => { + const data = require(`compat-table/data-${source}`); + data.browsers = pickBy(envs, byTestSuite(source)); + result.push(data); + return result; +}, []); + +const interpolateAllResults = (rawBrowsers, tests) => { + const interpolateResults = res => { + let browser; + let prevBrowser; + let result; + let prevResult; + let prevBid; + + for (const bid in rawBrowsers) { + // For browsers that are essentially equal to other browsers, + // copy over the results. + browser = rawBrowsers[bid]; + if (browser.equals && res[bid] === undefined) { + result = res[browser.equals]; + res[bid] = + browser.ignore_flagged && result === "flagged" ? false : result; + // For each browser, check if the previous browser has the same + // browser full name (e.g. Firefox) or family name (e.g. Chakra) as this one. + } else if ( + prevBrowser && + (prevBrowser.full.replace(/,.+$/, "") === + browser.full.replace(/,.+$/, "") || + (browser.family !== undefined && + prevBrowser.family === browser.family)) + ) { + // For each test, check if the previous browser has a result + // that this browser lacks. + result = res[bid]; + prevResult = res[prevBid]; + if (prevResult !== undefined && result === undefined) { + res[bid] = prevResult; + } + } + prevBrowser = browser; + prevBid = bid; + } + }; + + // Now print the results. + tests.forEach(function(t) { + // Calculate the result totals for tests which consist solely of subtests. + if ("subtests" in t) { + t.subtests.forEach(function(e) { + interpolateResults(e.res); + }); + } else { + interpolateResults(t.res); + } + }); +}; + +compatSources.forEach(({ browsers, tests }) => + interpolateAllResults(browsers, tests) +); + +// End of compat-table code adaptation + +const environments = [ + "chrome", + "opera", + "edge", + "firefox", + "safari", + "node", + "ie", + "android", + "ios", + "phantom", +]; + +const compatibilityTests = flattenDeep( + compatSources.map(data => + data.tests.map(test => { + return test.subtests + ? [ + test, + renameTests( + test.subtests, + name => test.name + " / " + name, + test.category + ), + ] + : test; + }) + ) +); + +const getLowestImplementedVersion = ({ features }, env) => { + const tests = compatibilityTests + .filter(test => { + return ( + features.indexOf(test.name) >= 0 || + // for features === ["DataView"] + // it covers "DataView (Int8)" and "DataView (UInt8)" + (features.length === 1 && test.name.indexOf(features[0]) === 0) + ); + }) + .reduce((result, test) => { + const isBuiltIn = + test.category === "built-ins" || + test.category === "built-in extensions"; + + if (!test.subtests) { + result.push({ + name: test.name, + res: test.res, + isBuiltIn, + }); + } else { + test.subtests.forEach(subtest => + result.push({ + name: `${test.name}/${subtest.name}`, + res: subtest.res, + isBuiltIn, + }) + ); + } + + return result; + }, []); + + const envTests = tests.map(({ res: test, isBuiltIn }, i) => { + // Babel itself doesn't implement the feature correctly, + // don't count against it + // only doing this for built-ins atm + if (!test.babel && isBuiltIn) { + return "-1"; + } + + return ( + Object.keys(test) + .filter(t => t.startsWith(env)) + // Babel assumes strict mode + .filter( + test => tests[i].res[test] === true || tests[i].res[test] === "strict" + ) + // normalize some keys + .map(test => test.replace("_", ".")) + .filter(test => !isNaN(parseFloat(test.replace(env, "")))) + .shift() + ); + }); + + const envFiltered = envTests.filter(t => t); + if (envTests.length > envFiltered.length || envTests.length === 0) { + // envTests.forEach((test, i) => { + // if (!test) { + // // print unsupported features + // if (env === 'node') { + // console.log(`ENV(${env}): ${tests[i].name}`); + // } + // } + // }); + return null; + } + + return envTests.map(str => Number(str.replace(env, ""))).reduce((a, b) => { + return a < b ? b : a; + }); +}; + +const generateData = (environments, features) => { + return mapValues(features, options => { + if (!options.features) { + options = { + features: [options], + }; + } + + const plugin = {}; + + environments.forEach(env => { + const version = getLowestImplementedVersion(options, env); + + if (version !== null) { + plugin[env] = version.toString(); + } + }); + + if (plugin.chrome) { + // add opera + if (plugin.chrome >= 28) { + plugin.opera = (plugin.chrome - 13).toString(); + } else if (plugin.chrome === 5) { + plugin.opera = "12"; + } + + // add electron + const electronVersion = chromiumToElectron(plugin.chrome); + if (electronVersion) { + plugin.electron = electronVersion.toString(); + } + } + + return plugin; + }); +}; + +["plugin", "built-in"].forEach(target => { + const newData = generateData( + environments, + require(`../data/${target}-features`) + ); + const dataPath = path.join(__dirname, `../data/${target}s.json`); + + if (process.argv[2] === "--check") { + const currentData = require(dataPath); + + if (!isEqual(currentData, newData)) { + console.error( + "The newly generated plugin/built-in data does not match the current " + + "files. Re-run `npm run build-data`." + ); + process.exit(1); + } + + process.exit(0); + } + + fs.writeFileSync(dataPath, `${JSON.stringify(newData, null, 2)}\n`); +}); diff --git a/experimental/babel-preset-env/scripts/smoke-test.js b/experimental/babel-preset-env/scripts/smoke-test.js new file mode 100755 index 0000000000..e564053301 --- /dev/null +++ b/experimental/babel-preset-env/scripts/smoke-test.js @@ -0,0 +1,111 @@ +const fs = require("fs-extra"); +const execSync = require("child_process").execSync; +const path = require("path"); +const pkg = require("../package.json"); + +let errorOccurred = false; + +const tempFolderPath = path.join(__dirname, "../tmp"); +const packPath = path.join(__dirname, `../babel-preset-env-${pkg.version}.tgz`); + +try { + console.log("Creating package"); + execSync("npm pack"); + + console.log("Setting up smoke test dependencies"); + + fs.ensureDirSync(tempFolderPath); + process.chdir(tempFolderPath); + + const babelCliVersion = pkg.devDependencies["babel-cli"]; + + if (!babelCliVersion) { + throw new Error("Could not read version of babel-cli from package.json"); + } + + fs.writeFileSync( + path.join(tempFolderPath, "package.json"), + ` +{ + "name": "babel-preset-env-smoke-test", + "private": true, + "version": "1.0.0", + "scripts": { + "build": "babel index.js --out-file index.es6" + }, + "dependencies": { + "babel-cli": "${babelCliVersion}", + "babel-preset-env": "${packPath}" + } +} +` + ); + + execSync("npm install"); + + console.log("Setting up 'usage' smoke test"); + + fs.writeFileSync( + path.join(tempFolderPath, ".babelrc"), + ` +{ + "presets": [ + ["env", { + modules: false, + useBuiltIns: "usage" + }] + ] +} +` + ); + + fs.writeFileSync( + path.join(tempFolderPath, "index.js"), + ` +const foo = new Promise((resolve) => { + resolve(new Map()); +}); +` + ); + + console.log("Running 'usage' smoke test"); + + execSync("npm run build"); + + console.log("Setting up 'entry' smoke test"); + + fs.writeFileSync( + path.join(tempFolderPath, ".babelrc"), + ` +{ + "presets": [ + ["env", { + modules: false, + useBuiltIns: "entry" + }] + ] +} +` + ); + + fs.writeFileSync( + path.join(tempFolderPath, "index.js"), + ` +import "babel-polyfill"; +1 ** 2; +` + ); + + console.log("Running 'entry' smoke test"); + + execSync("npm run build"); +} catch (e) { + console.log(e); + errorOccurred = true; +} + +console.log("Cleaning up"); +fs.removeSync(tempFolderPath); +fs.removeSync(packPath); + +process.exit(errorOccurred ? 1 : 0); diff --git a/experimental/babel-preset-env/scripts/yarn-install.js b/experimental/babel-preset-env/scripts/yarn-install.js new file mode 100644 index 0000000000..079cfc83b5 --- /dev/null +++ b/experimental/babel-preset-env/scripts/yarn-install.js @@ -0,0 +1,13 @@ +"use strict"; + +const exec = require("child_process").exec; + +const runIfYarn = fn => { + exec("yarn -V", error => { + if (error === null) fn(); + }); +}; +runIfYarn(() => { + console.log("`package.json` was changed. Running yarn...🐈"); + exec("yarn"); +}); diff --git a/experimental/babel-preset-env/src/available-plugins.js b/experimental/babel-preset-env/src/available-plugins.js new file mode 100644 index 0000000000..4bee27506c --- /dev/null +++ b/experimental/babel-preset-env/src/available-plugins.js @@ -0,0 +1,37 @@ +export default { + "check-es2015-constants": require("babel-plugin-check-es2015-constants"), + "syntax-async-generators": require("babel-plugin-syntax-async-generators"), + "syntax-object-rest-spread": require("babel-plugin-syntax-object-rest-spread"), + "syntax-optional-catch-binding": require("babel-plugin-syntax-optional-catch-binding"), + "syntax-trailing-function-commas": require("babel-plugin-syntax-trailing-function-commas"), + "transform-async-to-generator": require("babel-plugin-transform-async-to-generator"), + "transform-async-generator-functions": require("babel-plugin-transform-async-generator-functions"), + "transform-es2015-arrow-functions": require("babel-plugin-transform-es2015-arrow-functions"), + "transform-es2015-block-scoped-functions": require("babel-plugin-transform-es2015-block-scoped-functions"), + "transform-es2015-block-scoping": require("babel-plugin-transform-es2015-block-scoping"), + "transform-es2015-classes": require("babel-plugin-transform-es2015-classes"), + "transform-es2015-computed-properties": require("babel-plugin-transform-es2015-computed-properties"), + "transform-es2015-destructuring": require("babel-plugin-transform-es2015-destructuring"), + "transform-es2015-duplicate-keys": require("babel-plugin-transform-es2015-duplicate-keys"), + "transform-es2015-for-of": require("babel-plugin-transform-es2015-for-of"), + "transform-es2015-function-name": require("babel-plugin-transform-es2015-function-name"), + "transform-es2015-literals": require("babel-plugin-transform-es2015-literals"), + "transform-es2015-modules-amd": require("babel-plugin-transform-es2015-modules-amd"), + "transform-es2015-modules-commonjs": require("babel-plugin-transform-es2015-modules-commonjs"), + "transform-es2015-modules-systemjs": require("babel-plugin-transform-es2015-modules-systemjs"), + "transform-es2015-modules-umd": require("babel-plugin-transform-es2015-modules-umd"), + "transform-es2015-object-super": require("babel-plugin-transform-es2015-object-super"), + "transform-es2015-parameters": require("babel-plugin-transform-es2015-parameters"), + "transform-es2015-shorthand-properties": require("babel-plugin-transform-es2015-shorthand-properties"), + "transform-es2015-spread": require("babel-plugin-transform-es2015-spread"), + "transform-es2015-sticky-regex": require("babel-plugin-transform-es2015-sticky-regex"), + "transform-es2015-template-literals": require("babel-plugin-transform-es2015-template-literals"), + "transform-es2015-typeof-symbol": require("babel-plugin-transform-es2015-typeof-symbol"), + "transform-es2015-unicode-regex": require("babel-plugin-transform-es2015-unicode-regex"), + "transform-exponentiation-operator": require("babel-plugin-transform-exponentiation-operator"), + "transform-new-target": require("babel-plugin-transform-new-target"), + "transform-object-rest-spread": require("babel-plugin-transform-object-rest-spread"), + "transform-optional-catch-binding": require("babel-plugin-transform-optional-catch-binding"), + "transform-regenerator": require("babel-plugin-transform-regenerator"), + "transform-unicode-property-regex": require("babel-plugin-transform-unicode-property-regex"), +}; diff --git a/experimental/babel-preset-env/src/built-in-definitions.js b/experimental/babel-preset-env/src/built-in-definitions.js new file mode 100644 index 0000000000..af2c3c1417 --- /dev/null +++ b/experimental/babel-preset-env/src/built-in-definitions.js @@ -0,0 +1,109 @@ +// TODO: this is the opposite of built-in-features so maybe generate one from the other? +export const definitions = { + builtins: { + DataView: "es6.typed.data-view", + Int8Array: "es6.typed.int8-array", + Uint8Array: "es6.typed.uint8-array", + Uint8ClampedArray: "es6.typed.uint8-clamped-array", + Int16Array: "es6.typed.int16-array", + Uint16Array: "es6.typed.uint16-array", + Int32Array: "es6.typed.int32-array", + Uint32Array: "es6.typed.uint32-array", + Float32Array: "es6.typed.float32-array", + Float64Array: "es6.typed.float64-array", + Map: "es6.map", + Set: "es6.set", + WeakMap: "es6.weak-map", + WeakSet: "es6.weak-set", + Promise: "es6.promise", + Symbol: "es6.symbol", + }, + + instanceMethods: { + name: ["es6.function.name"], + fromCodePoint: ["es6.string.from-code-point"], + codePointAt: ["es6.string.code-point-at"], + repeat: ["es6.string.repeat"], + startsWith: ["es6.string.starts-with"], + endsWith: ["es6.string.ends-with"], + includes: ["es6.string.includes", "es7.array.includes"], + flags: ["es6.regexp.flags"], + match: ["es6.regexp.match"], + replace: ["es6.regexp.replace"], + split: ["es6.regexp.split"], + search: ["es6.regexp.search"], + copyWithin: ["es6.array.copy-within"], + find: ["es6.array.find"], + findIndex: ["es6.array.find-index"], + fill: ["es6.array.fill"], + padStart: ["es7.string.pad-start"], + padEnd: ["es7.string.pad-end"], + }, + + staticMethods: { + Array: { + from: "es6.array.from", + of: "es6.array.of", + }, + + Object: { + assign: "es6.object.assign", + is: "es6.object.is", + getOwnPropertySymbols: "es6.object.get-own-property-symbols", + setPrototypeOf: "es6.object.set-prototype-of", + values: "es7.object.values", + entries: "es7.object.entries", + getOwnPropertyDescriptors: "es7.object.get-own-property-descriptors", + }, + + Math: { + acosh: "es6.math.acosh", + asinh: "es6.math.asinh", + atanh: "es6.math.atanh", + cbrt: "es6.math.cbrt", + clz32: "es6.math.clz32", + cosh: "es6.math.cosh", + expm1: "es6.math.expm1", + fround: "es6.math.fround", + hypot: "es6.math.hypot", + imul: "es6.math.imul", + log1p: "es6.math.log1p", + log10: "es6.math.log10", + log2: "es6.math.log2", + sign: "es6.math.sign", + sinh: "es6.math.sinh", + tanh: "es6.math.tanh", + trunc: "es6.math.trunc", + }, + + String: { + raw: "es6.string.raw", + }, + + Number: { + isFinite: "es6.number.is-finite", + isInteger: "es6.number.is-integer", + isSafeInteger: "es6.number.is-safe-integer", + isNaN: "es6.number.is-nan", + EPSILON: "es6.number.epsilon", + MIN_SAFE_INTEGER: "es6.number.min-safe-integer", + MAX_SAFE_INTEGER: "es6.number.max-safe-integer", + }, + + Reflect: { + apply: "es6.reflect.apply", + construct: "es6.reflect.construct", + defineProperty: "es6.reflect.define-property", + deleteProperty: "es6.reflect.delete-property", + get: "es6.reflect.get", + getOwnPropertyDescriptor: "es6.reflect.get-own-property-descriptor", + getPrototypeOf: "es6.reflect.get-prototype-of", + has: "es6.reflect.has", + isExtensible: "es6.reflect.is-extensible", + ownKeys: "es6.reflect.own-keys", + preventExtensions: "es6.reflect.prevent-extensions", + set: "es6.reflect.set", + setPrototypeOf: "es6.reflect.set-prototype-of", + }, + }, +}; diff --git a/experimental/babel-preset-env/src/debug.js b/experimental/babel-preset-env/src/debug.js new file mode 100644 index 0000000000..351e82237b --- /dev/null +++ b/experimental/babel-preset-env/src/debug.js @@ -0,0 +1,75 @@ +/*eslint quotes: ["error", "double", { "avoidEscape": true }]*/ +import semver from "semver"; +import { prettifyVersion, semverify } from "./utils"; + +const wordEnds = size => { + return size > 1 ? "s" : ""; +}; + +export const logMessage = (message, context) => { + const pre = context ? `[${context}] ` : ""; + const logStr = ` ${pre}${message}`; + console.log(logStr); +}; + +export const logPlugin = (plugin, targets, list, context) => { + const envList = list[plugin] || {}; + const filteredList = Object.keys(targets).reduce((a, b) => { + if (!envList[b] || semver.lt(targets[b], semverify(envList[b]))) { + a[b] = prettifyVersion(targets[b]); + } + return a; + }, {}); + + const formattedTargets = JSON.stringify(filteredList) + .replace(/,/g, ", ") + .replace(/^\{"/, '{ "') + .replace(/"\}$/, '" }'); + + logMessage(`${plugin} ${formattedTargets}`, context); +}; + +export const logEntryPolyfills = ( + importPolyfillIncluded, + polyfills, + filename, + onDebug, +) => { + if (!importPolyfillIncluded) { + console.log( + ` +[${filename}] \`import 'babel-polyfill'\` was not found.`, + ); + return; + } + if (!polyfills.size) { + console.log( + ` +[${filename}] Based on your targets, none were added.`, + ); + return; + } + + console.log( + ` +[${filename}] Replaced \`babel-polyfill\` with the following polyfill${wordEnds( + polyfills.size, + )}:`, + ); + onDebug(polyfills); +}; + +export const logUsagePolyfills = (polyfills, filename, onDebug) => { + if (!polyfills.size) { + console.log( + ` +[${filename}] Based on your code and targets, none were added.`, + ); + return; + } + console.log( + ` +[${filename}] Added following polyfill${wordEnds(polyfills.size)}:`, + ); + onDebug(polyfills); +}; diff --git a/experimental/babel-preset-env/src/default-includes.js b/experimental/babel-preset-env/src/default-includes.js new file mode 100644 index 0000000000..f99eec728a --- /dev/null +++ b/experimental/babel-preset-env/src/default-includes.js @@ -0,0 +1,5 @@ +export const defaultWebIncludes = [ + "web.timers", + "web.immediate", + "web.dom.iterable", +]; diff --git a/experimental/babel-preset-env/src/index.js b/experimental/babel-preset-env/src/index.js new file mode 100644 index 0000000000..1ca18587e8 --- /dev/null +++ b/experimental/babel-preset-env/src/index.js @@ -0,0 +1,272 @@ +//@flow + +import semver from "semver"; +import builtInsList from "../data/built-ins.json"; +import { logPlugin } from "./debug"; +import { defaultWebIncludes } from "./default-includes"; +import moduleTransformations from "./module-transformations"; +import normalizeOptions from "./normalize-options.js"; +import pluginList from "../data/plugins.json"; +import { + builtIns as proposalBuiltIns, + features as proposalPlugins, + pluginSyntaxMap, +} from "../data/shipped-proposals.js"; +import useBuiltInsEntryPlugin from "./use-built-ins-entry-plugin"; +import addUsedBuiltInsPlugin from "./use-built-ins-plugin"; +import getTargets from "./targets-parser"; +import availablePlugins from "./available-plugins"; +import { filterStageFromList, prettifyTargets, semverify } from "./utils"; +import type { Plugin, Targets } from "./types"; + +const getPlugin = (pluginName: string) => { + const plugin = availablePlugins[pluginName]; + + if (!plugin) { + throw new Error( + `Could not find plugin "${pluginName}". Ensure there is an entry in ./available-plugins.js for it.`, + ); + } + + return plugin; +}; + +const builtInsListWithoutProposals = filterStageFromList( + builtInsList, + proposalBuiltIns, +); + +const pluginListWithoutProposals = filterStageFromList( + pluginList, + proposalPlugins, +); + +export const isPluginRequired = ( + supportedEnvironments: Targets, + plugin: Targets, +): boolean => { + const targetEnvironments: Array = Object.keys(supportedEnvironments); + + if (targetEnvironments.length === 0) { + return true; + } + + const isRequiredForEnvironments: Array< + string, + > = targetEnvironments.filter(environment => { + // Feature is not implemented in that environment + if (!plugin[environment]) { + return true; + } + + const lowestImplementedVersion: string = plugin[environment]; + const lowestTargetedVersion: string = supportedEnvironments[environment]; + + if (!semver.valid(lowestTargetedVersion)) { + throw new Error( + // eslint-disable-next-line max-len + `Invalid version passed for target "${environment}": "${lowestTargetedVersion}". Versions must be in semver format (major.minor.patch)`, + ); + } + + return semver.gt( + semverify(lowestImplementedVersion), + lowestTargetedVersion, + ); + }); + + return isRequiredForEnvironments.length > 0; +}; + +let hasBeenLogged = false; + +const getBuiltInTargets = targets => { + const builtInTargets = Object.assign({}, targets); + if (builtInTargets.uglify != null) { + delete builtInTargets.uglify; + } + return builtInTargets; +}; + +export const transformIncludesAndExcludes = (opts: Array): Object => { + return opts.reduce( + (result, opt) => { + const target = opt.match(/^(es\d+|web)\./) ? "builtIns" : "plugins"; + result[target].add(opt); + return result; + }, + { + all: opts, + plugins: new Set(), + builtIns: new Set(), + }, + ); +}; + +const getPlatformSpecificDefaultFor = (targets: Targets): ?Array => { + const targetNames = Object.keys(targets); + const isAnyTarget = !targetNames.length; + const isWebTarget = targetNames.some(name => name !== "node"); + + return isAnyTarget || isWebTarget ? defaultWebIncludes : null; +}; + +const filterItems = ( + list, + includes, + excludes, + targets, + defaultItems, +): Set => { + const result = new Set(); + + for (const item in list) { + const excluded = excludes.has(item); + + if (!excluded) { + if (isPluginRequired(targets, list[item])) { + result.add(item); + } else { + const shippedProposalsSyntax = pluginSyntaxMap.get(item); + + if (shippedProposalsSyntax) { + result.add(shippedProposalsSyntax); + } + } + } + } + + if (defaultItems) { + defaultItems.forEach(item => !excludes.has(item) && result.add(item)); + } + + includes.forEach(item => result.add(item)); + + return result; +}; + +export default function buildPreset( + context: Object, + opts: Object = {}, +): { plugins: Array } { + const { + configPath, + debug, + exclude: optionsExclude, + forceAllTransforms, + ignoreBrowserslistConfig, + include: optionsInclude, + loose, + modules, + shippedProposals, + spec, + targets: optionsTargets, + useBuiltIns, + } = normalizeOptions(opts); + // TODO: remove this in next major + let hasUglifyTarget = false; + + if (optionsTargets && optionsTargets.uglify) { + hasUglifyTarget = true; + delete optionsTargets.uglify; + + console.log(""); + console.log("The uglify target has been deprecated. Set the top level"); + console.log("option `forceAllTransforms: true` instead."); + console.log(""); + } + + const targets = getTargets(optionsTargets, { + ignoreBrowserslistConfig, + configPath, + }); + const include = transformIncludesAndExcludes(optionsInclude); + const exclude = transformIncludesAndExcludes(optionsExclude); + + const transformTargets = forceAllTransforms || hasUglifyTarget ? {} : targets; + + const transformations = filterItems( + shippedProposals ? pluginList : pluginListWithoutProposals, + include.plugins, + exclude.plugins, + transformTargets, + ); + + let polyfills; + let polyfillTargets; + + if (useBuiltIns) { + polyfillTargets = getBuiltInTargets(targets); + + polyfills = filterItems( + shippedProposals ? builtInsList : builtInsListWithoutProposals, + include.builtIns, + exclude.builtIns, + polyfillTargets, + getPlatformSpecificDefaultFor(polyfillTargets), + ); + } + + const plugins = []; + const pluginUseBuiltIns = useBuiltIns !== false; + + // NOTE: not giving spec here yet to avoid compatibility issues when + // babel-plugin-transform-es2015-modules-commonjs gets its spec mode + if (modules !== false && moduleTransformations[modules]) { + plugins.push([getPlugin(moduleTransformations[modules]), { loose }]); + } + + transformations.forEach(pluginName => + plugins.push([ + getPlugin(pluginName), + { spec, loose, useBuiltIns: pluginUseBuiltIns }, + ]), + ); + + const regenerator = transformations.has("transform-regenerator"); + + if (debug && !hasBeenLogged) { + hasBeenLogged = true; + console.log("babel-preset-env: `DEBUG` option"); + console.log("\nUsing targets:"); + console.log(JSON.stringify(prettifyTargets(targets), null, 2)); + console.log(`\nUsing modules transform: ${modules.toString()}`); + console.log("\nUsing plugins:"); + transformations.forEach(transform => { + logPlugin(transform, targets, pluginList); + }); + + if (!useBuiltIns) { + console.log( + "\nUsing polyfills: No polyfills were added, since the `useBuiltIns` option was not set.", + ); + } else { + console.log( + ` +Using polyfills with \`${useBuiltIns}\` option:`, + ); + } + } + + if (useBuiltIns === "usage" || useBuiltIns === "entry") { + const pluginOptions = { + debug, + polyfills, + regenerator, + onDebug: (polyfills, context) => { + polyfills.forEach(polyfill => + logPlugin(polyfill, polyfillTargets, builtInsList, context), + ); + }, + }; + + plugins.push([ + useBuiltIns === "usage" ? addUsedBuiltInsPlugin : useBuiltInsEntryPlugin, + pluginOptions, + ]); + } + + return { + plugins, + }; +} diff --git a/experimental/babel-preset-env/src/module-transformations.js b/experimental/babel-preset-env/src/module-transformations.js new file mode 100644 index 0000000000..1a4b6106c9 --- /dev/null +++ b/experimental/babel-preset-env/src/module-transformations.js @@ -0,0 +1,6 @@ +export default { + amd: "transform-es2015-modules-amd", + commonjs: "transform-es2015-modules-commonjs", + systemjs: "transform-es2015-modules-systemjs", + umd: "transform-es2015-modules-umd", +}; diff --git a/experimental/babel-preset-env/src/normalize-options.js b/experimental/babel-preset-env/src/normalize-options.js new file mode 100644 index 0000000000..9c0b2ed139 --- /dev/null +++ b/experimental/babel-preset-env/src/normalize-options.js @@ -0,0 +1,175 @@ +//@flow + +import invariant from "invariant"; +import browserslist from "browserslist"; +import builtInsList from "../data/built-ins.json"; +import { defaultWebIncludes } from "./default-includes"; +import moduleTransformations from "./module-transformations"; +import pluginsList from "../data/plugins.json"; +import type { Targets, Options, ModuleOption, BuiltInsOption } from "./types"; + +const validIncludesAndExcludes = new Set([ + ...Object.keys(pluginsList), + ...Object.keys(moduleTransformations).map(m => moduleTransformations[m]), + ...Object.keys(builtInsList), + ...defaultWebIncludes, +]); + +export const validateIncludesAndExcludes = ( + opts: Array = [], + type: string, +): Array => { + invariant( + Array.isArray(opts), + `Invalid Option: The '${type}' option must be an Array of plugins/built-ins`, + ); + + const unknownOpts = opts.filter(opt => !validIncludesAndExcludes.has(opt)); + + invariant( + unknownOpts.length === 0, + `Invalid Option: The plugins/built-ins '${unknownOpts.join( + ", ", + )}' passed to the '${type}' option are not + valid. Please check data/[plugin-features|built-in-features].js in babel-preset-env`, + ); + + return opts; +}; + +const validBrowserslistTargets = [ + ...Object.keys(browserslist.data), + ...Object.keys(browserslist.aliases), +]; + +export const normalizePluginName = (plugin: string): string => + plugin.replace(/^babel-plugin-/, ""); + +export const normalizePluginNames = (plugins: Array): Array => + plugins.map(normalizePluginName); + +export const checkDuplicateIncludeExcludes = ( + include: Array = [], + exclude: Array = [], +): void => { + const duplicates: Array = include.filter( + opt => exclude.indexOf(opt) >= 0, + ); + + invariant( + duplicates.length === 0, + `Invalid Option: The plugins/built-ins '${duplicates.join( + ", ", + )}' were found in both the "include" and + "exclude" options.`, + ); +}; + +export const validateConfigPathOption = ( + configPath: string = process.cwd(), +) => { + invariant( + typeof configPath === "string", + `Invalid Option: The configPath option '${configPath}' is invalid, only strings are allowed.`, + ); + return configPath; +}; + +export const validateBoolOption = ( + name: string, + value: ?boolean, + defaultValue: boolean, +) => { + if (typeof value === "undefined") { + value = defaultValue; + } + + if (typeof value !== "boolean") { + throw new Error(`Preset env: '${name}' option must be a boolean.`); + } + + return value; +}; + +export const validateIgnoreBrowserslistConfig = ( + ignoreBrowserslistConfig: boolean, +) => + validateBoolOption( + "ignoreBrowserslistConfig", + ignoreBrowserslistConfig, + false, + ); + +export const validateModulesOption = ( + modulesOpt: ModuleOption = "commonjs", +) => { + invariant( + modulesOpt === false || + Object.keys(moduleTransformations).indexOf(modulesOpt) > -1, + `Invalid Option: The 'modules' option must be either 'false' to indicate no modules, or a + module type which can be be one of: 'commonjs' (default), 'amd', 'umd', 'systemjs'.`, + ); + + return modulesOpt; +}; + +export const objectToBrowserslist = (object: Targets) => { + return Object.keys(object).reduce((list, targetName) => { + if (validBrowserslistTargets.indexOf(targetName) >= 0) { + const targetVersion = object[targetName]; + return list.concat(`${targetName} ${targetVersion}`); + } + return list; + }, []); +}; + +export const validateUseBuiltInsOption = ( + builtInsOpt: BuiltInsOption = false, +): BuiltInsOption => { + invariant( + builtInsOpt === "usage" || builtInsOpt === false || builtInsOpt === "entry", + `Invalid Option: The 'useBuiltIns' option must be either + 'false' (default) to indicate no polyfill, + '"entry"' to indicate replacing the entry polyfill, or + '"usage"' to import only used polyfills per file`, + ); + + return builtInsOpt; +}; + +export default function normalizeOptions(opts: Options) { + if (opts.exclude) { + opts.exclude = normalizePluginNames(opts.exclude); + } + + if (opts.include) { + opts.include = normalizePluginNames(opts.include); + } + + checkDuplicateIncludeExcludes(opts.include, opts.exclude); + + return { + configPath: validateConfigPathOption(opts.configPath), + debug: opts.debug, + exclude: validateIncludesAndExcludes(opts.exclude, "exclude"), + forceAllTransforms: validateBoolOption( + "forceAllTransforms", + opts.forceAllTransforms, + false, + ), + ignoreBrowserslistConfig: validateIgnoreBrowserslistConfig( + opts.ignoreBrowserslistConfig, + ), + include: validateIncludesAndExcludes(opts.include, "include"), + loose: validateBoolOption("loose", opts.loose, false), + modules: validateModulesOption(opts.modules), + shippedProposals: validateBoolOption( + "shippedProposals", + opts.shippedProposals, + false, + ), + spec: validateBoolOption("loose", opts.spec, false), + targets: opts.targets, + useBuiltIns: validateUseBuiltInsOption(opts.useBuiltIns), + }; +} diff --git a/experimental/babel-preset-env/src/targets-parser.js b/experimental/babel-preset-env/src/targets-parser.js new file mode 100644 index 0000000000..4b161597d7 --- /dev/null +++ b/experimental/babel-preset-env/src/targets-parser.js @@ -0,0 +1,142 @@ +// @flow + +import browserslist from "browserslist"; +import semver from "semver"; +import { semverify } from "./utils"; +import { objectToBrowserslist } from "./normalize-options"; +import type { Targets } from "./types"; + +const browserNameMap = { + android: "android", + chrome: "chrome", + and_chr: "chrome", + edge: "edge", + firefox: "firefox", + ie: "ie", + ios_saf: "ios", + safari: "safari", +}; + +const isBrowsersQueryValid = (browsers: string | Array): boolean => + typeof browsers === "string" || Array.isArray(browsers); + +const semverMin = (first: ?string, second: string): string => { + return first && semver.lt(first, second) ? first : second; +}; + +const mergeBrowsers = (fromQuery: Targets, fromTarget: Targets) => { + return Object.keys(fromTarget).reduce((queryObj, targKey) => { + if (targKey !== "browsers") { + queryObj[targKey] = fromTarget[targKey]; + } + return queryObj; + }, fromQuery); +}; + +const getLowestVersions = (browsers: Array): Targets => { + return browsers.reduce((all: Object, browser: string): Object => { + const [browserName, browserVersion] = browser.split(" "); + const normalizedBrowserName = browserNameMap[browserName]; + + if (!normalizedBrowserName) { + return all; + } + + try { + // Browser version can return as "10.0-10.2" + const splitVersion = browserVersion.split("-")[0]; + const parsedBrowserVersion = semverify(splitVersion); + + all[normalizedBrowserName] = semverMin( + all[normalizedBrowserName], + parsedBrowserVersion, + ); + } catch (e) {} + + return all; + }, {}); +}; + +const outputDecimalWarning = (decimalTargets: Array): void => { + if (!decimalTargets || !decimalTargets.length) { + return; + } + + console.log("Warning, the following targets are using a decimal version:"); + console.log(""); + decimalTargets.forEach(({ target, value }) => + console.log(` ${target}: ${value}`), + ); + console.log(""); + console.log( + "We recommend using a string for minor/patch versions to avoid numbers like 6.10", + ); + console.log("getting parsed as 6.1, which can lead to unexpected behavior."); + console.log(""); +}; + +const targetParserMap = { + __default: (target, value) => [target, semverify(value)], + + // Parse `node: true` and `node: "current"` to version + node: (target, value) => { + const parsed = + value === true || value === "current" + ? process.versions.node + : semverify(value); + + return [target, parsed]; + }, +}; + +type ParsedResult = { + targets: Targets, + decimalWarnings: Array, +}; +const getTargets = (targets: Object = {}, options: Object = {}): Targets => { + const targetOpts: Targets = {}; + // Parse browsers target via browserslist; + const queryIsValid = isBrowsersQueryValid(targets.browsers); + const browsersquery = queryIsValid ? targets.browsers : null; + if (queryIsValid || !options.ignoreBrowserslistConfig) { + browserslist.defaults = objectToBrowserslist(targets); + + const browsers = browserslist(browsersquery, { path: options.configPath }); + const queryBrowsers = getLowestVersions(browsers); + targets = mergeBrowsers(queryBrowsers, targets); + } + // Parse remaining targets + const parsed = Object.keys(targets).sort().reduce(( + results: ParsedResult, + target: string, + ): ParsedResult => { + if (target !== "browsers") { + const value = targets[target]; + + // Warn when specifying minor/patch as a decimal + if (typeof value === "number" && value % 1 !== 0) { + results.decimalWarnings.push({ target, value }); + } + + // Check if we have a target parser? + const parser = targetParserMap[target] || targetParserMap.__default; + const [parsedTarget, parsedValue] = parser(target, value); + + if (parsedValue) { + // Merge (lowest wins) + results.targets[parsedTarget] = parsedValue; + } + } + + return results; + }, { + targets: targetOpts, + decimalWarnings: [], + }); + + outputDecimalWarning(parsed.decimalWarnings); + + return parsed.targets; +}; + +export default getTargets; diff --git a/experimental/babel-preset-env/src/types.js b/experimental/babel-preset-env/src/types.js new file mode 100644 index 0000000000..2c3ab4c8ce --- /dev/null +++ b/experimental/babel-preset-env/src/types.js @@ -0,0 +1,30 @@ +//@flow + +// Targets +export type Target = string; +export type Targets = { + [target: string]: Target, +}; + +// Options +// Use explicit modules to prevent typo errors. +export type ModuleOption = false | "amd" | "commonjs" | "systemjs" | "umd"; +export type BuiltInsOption = false | "entry" | "usage"; + +export type Options = { + configPath: string, + debug: boolean, + exclude: Array, + forceAllTransforms: boolean, + ignoreBrowserslistConfig: boolean, + include: Array, + loose: boolean, + modules: ModuleOption, + shippedProposals: boolean, + spec: boolean, + targets: Targets, + useBuiltIns: BuiltInsOption, +}; + +// Babel +export type Plugin = [Object, Object]; diff --git a/experimental/babel-preset-env/src/use-built-ins-entry-plugin.js b/experimental/babel-preset-env/src/use-built-ins-entry-plugin.js new file mode 100644 index 0000000000..fa0026a365 --- /dev/null +++ b/experimental/babel-preset-env/src/use-built-ins-entry-plugin.js @@ -0,0 +1,126 @@ +//@flow +import { logEntryPolyfills } from "./debug"; + +type Plugin = { + visitor: Object, + pre: Function, + post: Function, + name: string, +}; + +type RequireType = "require" | "import"; + +function isPolyfillSource(value: string): boolean { + return value === "babel-polyfill"; +} + +export default function({ types: t }: { types: Object }): Plugin { + function createImportDeclaration(polyfill: string): Object { + const declar = t.importDeclaration([], t.stringLiteral(polyfill)); + declar._blockHoist = 3; + return declar; + } + + function createRequireStatement(polyfill: string): Object { + return t.expressionStatement( + t.callExpression(t.identifier("require"), [t.stringLiteral(polyfill)]), + ); + } + + function isRequire(path: Object): boolean { + return ( + t.isExpressionStatement(path.node) && + t.isCallExpression(path.node.expression) && + t.isIdentifier(path.node.expression.callee) && + path.node.expression.callee.name === "require" && + path.node.expression.arguments.length === 1 && + t.isStringLiteral(path.node.expression.arguments[0]) && + isPolyfillSource(path.node.expression.arguments[0].value) + ); + } + + function createImport( + polyfill: string, + requireType: RequireType, + core: ?boolean, + ): Object { + if (core) { + polyfill = `babel-polyfill/lib/core-js/modules/${polyfill}`; + } + + if (requireType === "import") { + return createImportDeclaration(polyfill); + } + return createRequireStatement(polyfill); + } + + function createImports( + polyfills: Array, + requireType: RequireType, + regenerator: boolean, + ): Array { + const items = Array.isArray(polyfills) ? new Set(polyfills) : polyfills; + const imports = []; + + items.forEach(p => imports.push(createImport(p, requireType, true))); + + if (regenerator) { + imports.push( + createImport( + "babel-polyfill/lib/regenerator-runtime/runtime", + requireType, + ), + ); + } + + return imports; + } + + const isPolyfillImport = { + ImportDeclaration(path, state) { + if ( + path.node.specifiers.length === 0 && + isPolyfillSource(path.node.source.value) + ) { + this.importPolyfillIncluded = true; + path.replaceWithMultiple( + createImports(state.opts.polyfills, "import", state.opts.regenerator), + ); + } + }, + Program(path, state) { + path.get("body").forEach(bodyPath => { + if (isRequire(bodyPath)) { + bodyPath.replaceWithMultiple( + createImports( + state.opts.polyfills, + "require", + state.opts.regenerator, + ), + ); + } + }); + }, + }; + + return { + name: "transform-polyfill-require", + visitor: isPolyfillImport, + pre() { + this.numPolyfillImports = 0; + this.importPolyfillIncluded = false; + }, + post() { + const { debug, onDebug, polyfills } = this.opts; + + if (debug) { + logEntryPolyfills( + this.importPolyfillIncluded, + polyfills, + this.file.opts.filename, + onDebug, + ); + } + }, + }; +} diff --git a/experimental/babel-preset-env/src/use-built-ins-plugin.js b/experimental/babel-preset-env/src/use-built-ins-plugin.js new file mode 100644 index 0000000000..851b2d3019 --- /dev/null +++ b/experimental/babel-preset-env/src/use-built-ins-plugin.js @@ -0,0 +1,303 @@ +//@flow + +import { definitions } from "./built-in-definitions"; +import { logUsagePolyfills } from "./debug"; + +type Plugin = { + visitor: Object, + pre: Function, + name: string, +}; + +function isPolyfillSource(value: string): boolean { + return value === "babel-polyfill"; +} + +function warnOnInstanceMethod() { + // state.opts.debug && + // console.warn( + // `Adding a polyfill: An instance method may have been used: ${details}`, + // ); +} + +function has(obj: Object, key: string): boolean { + return Object.prototype.hasOwnProperty.call(obj, key); +} + +function getObjectString(node: Object): string { + if (node.type === "Identifier") { + return node.name; + } else if (node.type === "MemberExpression") { + return `${getObjectString(node.object)}.${getObjectString(node.property)}`; + } + return node.name; +} + +const modulePathMap = { + "regenerator-runtime": "babel-polyfill/lib/regenerator-runtime/runtime", +}; + +const getModulePath = module => { + return ( + modulePathMap[module] || `babel-polyfill/lib/core-js/modules/${module}` + ); +}; + +export default function({ types: t }: { types: Object }): Plugin { + function addImport( + path: Object, + builtIn: string, + builtIns: Set, + ): void { + if (builtIn && !builtIns.has(builtIn)) { + builtIns.add(builtIn); + + const importDec = t.importDeclaration( + [], + t.stringLiteral(getModulePath(builtIn)), + ); + + importDec._blockHoist = 3; + const programPath = path.find(path => path.isProgram()); + programPath.unshiftContainer("body", importDec); + } + } + + function addUnsupported( + path: Object, + polyfills: Set, + builtIn: Array | string, + builtIns: Set, + ): void { + if (Array.isArray(builtIn)) { + for (const i of builtIn) { + if (polyfills.has(i)) { + addImport(path, i, builtIns); + } + } + } else { + if (polyfills.has(builtIn)) { + addImport(path, builtIn, builtIns); + } + } + } + + function isRequire(path: Object): boolean { + return ( + t.isExpressionStatement(path.node) && + t.isCallExpression(path.node.expression) && + t.isIdentifier(path.node.expression.callee) && + path.node.expression.callee.name === "require" && + path.node.expression.arguments.length === 1 && + t.isStringLiteral(path.node.expression.arguments[0]) && + isPolyfillSource(path.node.expression.arguments[0].value) + ); + } + + const addAndRemovePolyfillImports = { + ImportDeclaration(path) { + if ( + path.node.specifiers.length === 0 && + isPolyfillSource(path.node.source.value) + ) { + console.warn( + ` + When setting \`useBuiltIns: 'usage'\`, polyfills are automatically imported when needed. + Please remove the \`import 'babel-polyfill'\` call or use \`useBuiltIns: 'entry'\` instead.`, + ); + path.remove(); + } + }, + Program: { + enter(path) { + path.get("body").forEach(bodyPath => { + if (isRequire(bodyPath)) { + console.warn( + ` + When setting \`useBuiltIns: 'usage'\`, polyfills are automatically imported when needed. + Please remove the \`require('babel-polyfill')\` call or use \`useBuiltIns: 'entry'\` instead.`, + ); + bodyPath.remove(); + } + }); + }, + }, + + // Symbol() + // new Promise + ReferencedIdentifier(path, state) { + const { node, parent, scope } = path; + + if (t.isMemberExpression(parent)) return; + if (!has(definitions.builtins, node.name)) return; + if (scope.getBindingIdentifier(node.name)) return; + + const builtIn = definitions.builtins[node.name]; + addUnsupported(path, state.opts.polyfills, builtIn, this.builtIns); + }, + + // arr[Symbol.iterator]() + CallExpression(path) { + // we can't compile this + if (path.node.arguments.length) return; + + const callee = path.node.callee; + if (!t.isMemberExpression(callee)) return; + if (!callee.computed) return; + if (!path.get("callee.property").matchesPattern("Symbol.iterator")) { + return; + } + + addImport(path, "web.dom.iterable", this.builtIns); + }, + + // Symbol.iterator in arr + BinaryExpression(path) { + if (path.node.operator !== "in") return; + if (!path.get("left").matchesPattern("Symbol.iterator")) return; + + addImport(path, "web.dom.iterable", this.builtIns); + }, + + // yield* + YieldExpression(path) { + if (!path.node.delegate) return; + + addImport(path, "web.dom.iterable", this.builtIns); + }, + + // Array.from + MemberExpression: { + enter(path, state) { + if (!path.isReferenced()) return; + + const { node } = path; + const obj = node.object; + const prop = node.property; + + if (!t.isReferenced(obj, node)) return; + + // doesn't reference the global + if (path.scope.getBindingIdentifier(obj.name)) return; + + if (has(definitions.staticMethods, obj.name)) { + const staticMethods = definitions.staticMethods[obj.name]; + if (has(staticMethods, prop.name)) { + const builtIn = staticMethods[prop.name]; + addUnsupported(path, state.opts.polyfills, builtIn, this.builtIns); + // if (obj.name === "Array" && prop.name === "from") { + // addImport( + // path, + // "babel-polyfill/lib/core-js/modules/web.dom.iterable", + // this.builtIns, + // ); + // } + } + } + + if ( + !node.computed && + t.isIdentifier(prop) && + has(definitions.instanceMethods, prop.name) + ) { + warnOnInstanceMethod(state, getObjectString(node)); + const builtIn = definitions.instanceMethods[prop.name]; + addUnsupported(path, state.opts.polyfills, builtIn, this.builtIns); + } else if (node.computed) { + if ( + t.isStringLiteral(prop) && + has(definitions.instanceMethods, prop.value) + ) { + const builtIn = definitions.instanceMethods[prop.value]; + warnOnInstanceMethod(state, `${obj.name}['${prop.value}']`); + addUnsupported(path, state.opts.polyfills, builtIn, this.builtIns); + } else { + const res = path.get("property").evaluate(); + if (res.confident) { + const builtIn = definitions.instanceMethods[res.value]; + warnOnInstanceMethod(state, `${obj.name}['${res.value}']`); + addUnsupported( + path.get("property"), + state.opts.polyfills, + builtIn, + this.builtIns, + ); + } + } + } + }, + + // Symbol.match + exit(path, state) { + if (!path.isReferenced()) return; + + const { node } = path; + const obj = node.object; + + if (!has(definitions.builtins, obj.name)) return; + if (path.scope.getBindingIdentifier(obj.name)) return; + + const builtIn = definitions.builtins[obj.name]; + addUnsupported(path, state.opts.polyfills, builtIn, this.builtIns); + }, + }, + + // var { repeat, startsWith } = String + VariableDeclarator(path, state) { + if (!path.isReferenced()) return; + + const { node } = path; + const obj = node.init; + + if (!t.isObjectPattern(node.id)) return; + const props = node.id.properties; + + if (!t.isReferenced(obj, node)) return; + + // doesn't reference the global + if (path.scope.getBindingIdentifier(obj.name)) return; + + for (let prop of props) { + prop = prop.key; + if ( + !node.computed && + t.isIdentifier(prop) && + has(definitions.instanceMethods, prop.name) + ) { + warnOnInstanceMethod( + state, + `${path.parentPath.node.kind} { ${prop.name} } = ${obj.name}`, + ); + + const builtIn = definitions.instanceMethods[prop.name]; + addUnsupported(path, state.opts.polyfills, builtIn, this.builtIns); + } + } + }, + + Function(path, state) { + if (!this.usesRegenerator && (path.node.generator || path.node.async)) { + this.usesRegenerator = true; + if (state.opts.regenerator) { + addImport(path, "regenerator-runtime", this.builtIns); + } + } + }, + }; + + return { + name: "use-built-ins", + pre() { + this.builtIns = new Set(); + this.usesRegenerator = false; + }, + post() { + const { debug, onDebug } = this.opts; + + if (debug) { + logUsagePolyfills(this.builtIns, this.file.opts.filename, onDebug); + } + }, + visitor: addAndRemovePolyfillImports, + }; +} diff --git a/experimental/babel-preset-env/src/utils.js b/experimental/babel-preset-env/src/utils.js new file mode 100644 index 0000000000..eb659528c4 --- /dev/null +++ b/experimental/babel-preset-env/src/utils.js @@ -0,0 +1,63 @@ +// @flow + +import semver from "semver"; +import type { Targets } from "./types"; + +// Convert version to a semver value. +// 2.5 -> 2.5.0; 1 -> 1.0.0; +export const semverify = (version: string | number): string => { + if (typeof version === "string" && semver.valid(version)) { + return version; + } + + const split = version.toString().split("."); + + while (split.length < 3) { + split.push("0"); + } + + return split.join("."); +}; + +export const prettifyVersion = (version: string): string => { + if (typeof version !== "string") { + return version; + } + + const parts = [semver.major(version)]; + const minor = semver.minor(version); + const patch = semver.patch(version); + + if (minor || patch) { + parts.push(minor); + } + + if (patch) { + parts.push(patch); + } + + return parts.join("."); +}; + +export const prettifyTargets = (targets: Targets): Object => { + return Object.keys(targets).reduce((results, target) => { + let value = targets[target]; + + if (typeof value === "string") { + value = prettifyVersion(value); + } + + results[target] = value; + return results; + }, {}); +}; + +export const filterStageFromList = (list: any, stageList: any) => { + return Object.keys(list).reduce((result, item) => { + if (!stageList[item]) { + result[item] = list[item]; + } + + return result; + }, {}); +}; diff --git a/experimental/babel-preset-env/test/.eslintrc b/experimental/babel-preset-env/test/.eslintrc new file mode 100644 index 0000000000..d256d6ed85 --- /dev/null +++ b/experimental/babel-preset-env/test/.eslintrc @@ -0,0 +1,8 @@ +{ + "env": { + "mocha": true + }, + "rules": { + "max-len": 0 + } +} diff --git a/experimental/babel-preset-env/test/debug-fixtures.js b/experimental/babel-preset-env/test/debug-fixtures.js new file mode 100644 index 0000000000..90884a0e82 --- /dev/null +++ b/experimental/babel-preset-env/test/debug-fixtures.js @@ -0,0 +1,125 @@ +const chai = require("chai"); +const child = require("child_process"); +const fs = require("fs-extra"); +const helper = require("babel-helper-fixtures"); +const path = require("path"); + +const fixtureLoc = path.join(__dirname, "debug-fixtures"); +const tmpLoc = path.join(__dirname, "tmp"); + +const clear = () => { + process.chdir(__dirname); + if (fs.existsSync(tmpLoc)) fs.removeSync(tmpLoc); + fs.mkdirSync(tmpLoc); + process.chdir(tmpLoc); +}; + +const saveInFiles = files => { + Object.keys(files).forEach(filename => { + const content = files[filename]; + fs.outputFileSync(filename, content); + }); +}; + +const testOutputType = (type, stdTarg, opts) => { + stdTarg = stdTarg.trim(); + stdTarg = stdTarg.replace(/\\/g, "/"); + const optsTarg = opts[type]; + + if (optsTarg) { + const expectStdout = optsTarg.trim(); + chai.expect(stdTarg).to.equal(expectStdout, `${type} didn't match`); + } else { + const file = path.join(opts.testLoc, `${type}.txt`); + console.log(`New test file created: ${file}`); + fs.outputFileSync(file, stdTarg); + } +}; + +const assertTest = (stdout, stderr, opts) => { + testOutputType("stdout", stdout, opts); + if (stderr) { + testOutputType("stderr", stderr, opts); + } +}; + +const buildTest = opts => { + const binLoc = path.join(process.cwd(), "node_modules/.bin/babel"); + + return callback => { + clear(); + saveInFiles(opts.inFiles); + + let args = [binLoc]; + args = args.concat(opts.args); + + const spawn = child.spawn(process.execPath, args); + + let stdout = ""; + let stderr = ""; + + spawn.stdout.on("data", chunk => (stdout += chunk)); + spawn.stderr.on("data", chunk => (stderr += chunk)); + + spawn.on("close", () => { + let err; + + try { + assertTest(stdout, stderr, opts); + } catch (e) { + err = e; + } + + callback(err); + }); + }; +}; + +describe("debug output", () => { + fs.readdirSync(fixtureLoc).forEach(testName => { + if (testName.slice(0, 1) === ".") return; + const testLoc = path.join(fixtureLoc, testName); + if (testName.slice(0, 1) === ".") return; + + const opts = { + args: ["src", "--out-dir", "lib"], + testLoc: testLoc, + }; + + const stdoutLoc = path.join(testLoc, "stdout.txt"); + const stderrLoc = path.join(testLoc, "stderr.txt"); + + if (fs.existsSync(stdoutLoc)) { + opts.stdout = helper.readFile(stdoutLoc); + } + + if (fs.existsSync(stderrLoc)) { + opts.stderr = helper.readFile(stderrLoc); + } + + const optionsLoc = path.join(testLoc, "options.json"); + + if (!fs.existsSync(optionsLoc)) { + throw new Error( + `Debug test '${testName}' is missing an options.json file`, + ); + } + + const inFilesFolderLoc = path.join(testLoc, "in"); + + opts.inFiles = { + ".babelrc": helper.readFile(optionsLoc), + }; + + if (!fs.existsSync(inFilesFolderLoc)) { + opts.inFiles["src/in.js"] = ""; + } else { + fs.readdirSync(inFilesFolderLoc).forEach(filename => { + opts.inFiles[`src/${filename}`] = helper.readFile( + path.join(inFilesFolderLoc, filename), + ); + }); + } + it(testName, buildTest(opts)); + }); +}); diff --git a/experimental/babel-preset-env/test/debug-fixtures/android/in/in.js b/experimental/babel-preset-env/test/debug-fixtures/android/in/in.js new file mode 100644 index 0000000000..b012711b90 --- /dev/null +++ b/experimental/babel-preset-env/test/debug-fixtures/android/in/in.js @@ -0,0 +1 @@ +import 'babel-polyfill'; diff --git a/experimental/babel-preset-env/test/debug-fixtures/android/options.json b/experimental/babel-preset-env/test/debug-fixtures/android/options.json new file mode 100644 index 0000000000..caac961b51 --- /dev/null +++ b/experimental/babel-preset-env/test/debug-fixtures/android/options.json @@ -0,0 +1,11 @@ +{ + "presets": [ + ["../../lib", { + "debug": true, + "targets": { + "browsers": [ "Android >= 4" ] + }, + "useBuiltIns": "entry" + }] + ] +} diff --git a/experimental/babel-preset-env/test/debug-fixtures/android/stdout.txt b/experimental/babel-preset-env/test/debug-fixtures/android/stdout.txt new file mode 100644 index 0000000000..d63450c7db --- /dev/null +++ b/experimental/babel-preset-env/test/debug-fixtures/android/stdout.txt @@ -0,0 +1,126 @@ +babel-preset-env: `DEBUG` option + +Using targets: +{ + "android": "4" +} + +Using modules transform: commonjs + +Using plugins: + check-es2015-constants { "android":"4" } + transform-es2015-arrow-functions { "android":"4" } + transform-es2015-block-scoped-functions { "android":"4" } + transform-es2015-block-scoping { "android":"4" } + transform-es2015-classes { "android":"4" } + transform-es2015-computed-properties { "android":"4" } + transform-es2015-destructuring { "android":"4" } + transform-es2015-duplicate-keys { "android":"4" } + transform-es2015-for-of { "android":"4" } + transform-es2015-function-name { "android":"4" } + transform-es2015-literals { "android":"4" } + transform-es2015-object-super { "android":"4" } + transform-es2015-parameters { "android":"4" } + transform-es2015-shorthand-properties { "android":"4" } + transform-es2015-spread { "android":"4" } + transform-es2015-sticky-regex { "android":"4" } + transform-es2015-template-literals { "android":"4" } + transform-es2015-typeof-symbol { "android":"4" } + transform-es2015-unicode-regex { "android":"4" } + transform-new-target { "android":"4" } + transform-regenerator { "android":"4" } + transform-exponentiation-operator { "android":"4" } + transform-async-to-generator { "android":"4" } + syntax-trailing-function-commas { "android":"4" } + +Using polyfills with `entry` option: + +[src/in.js] Replaced `babel-polyfill` with the following polyfills: + es6.typed.array-buffer { "android":"4" } + es6.typed.int8-array { "android":"4" } + es6.typed.uint8-array { "android":"4" } + es6.typed.uint8-clamped-array { "android":"4" } + es6.typed.int16-array { "android":"4" } + es6.typed.uint16-array { "android":"4" } + es6.typed.int32-array { "android":"4" } + es6.typed.uint32-array { "android":"4" } + es6.typed.float32-array { "android":"4" } + es6.typed.float64-array { "android":"4" } + es6.map { "android":"4" } + es6.set { "android":"4" } + es6.weak-map { "android":"4" } + es6.weak-set { "android":"4" } + es6.reflect.apply { "android":"4" } + es6.reflect.construct { "android":"4" } + es6.reflect.define-property { "android":"4" } + es6.reflect.delete-property { "android":"4" } + es6.reflect.get { "android":"4" } + es6.reflect.get-own-property-descriptor { "android":"4" } + es6.reflect.get-prototype-of { "android":"4" } + es6.reflect.has { "android":"4" } + es6.reflect.is-extensible { "android":"4" } + es6.reflect.own-keys { "android":"4" } + es6.reflect.prevent-extensions { "android":"4" } + es6.reflect.set { "android":"4" } + es6.reflect.set-prototype-of { "android":"4" } + es6.promise { "android":"4" } + es6.symbol { "android":"4" } + es6.object.assign { "android":"4" } + es6.object.is { "android":"4" } + es6.object.set-prototype-of { "android":"4" } + es6.function.name { "android":"4" } + es6.string.raw { "android":"4" } + es6.string.from-code-point { "android":"4" } + es6.string.code-point-at { "android":"4" } + es6.string.repeat { "android":"4" } + es6.string.starts-with { "android":"4" } + es6.string.ends-with { "android":"4" } + es6.string.includes { "android":"4" } + es6.regexp.flags { "android":"4" } + es6.regexp.match { "android":"4" } + es6.regexp.replace { "android":"4" } + es6.regexp.split { "android":"4" } + es6.regexp.search { "android":"4" } + es6.array.from { "android":"4" } + es6.array.of { "android":"4" } + es6.array.copy-within { "android":"4" } + es6.array.find { "android":"4" } + es6.array.find-index { "android":"4" } + es6.array.fill { "android":"4" } + es6.array.iterator { "android":"4" } + es6.number.is-finite { "android":"4" } + es6.number.is-integer { "android":"4" } + es6.number.is-safe-integer { "android":"4" } + es6.number.is-nan { "android":"4" } + es6.number.epsilon { "android":"4" } + es6.number.min-safe-integer { "android":"4" } + es6.number.max-safe-integer { "android":"4" } + es6.number.parse-float { "android":"4" } + es6.number.parse-int { "android":"4" } + es6.math.acosh { "android":"4" } + es6.math.asinh { "android":"4" } + es6.math.atanh { "android":"4" } + es6.math.cbrt { "android":"4" } + es6.math.clz32 { "android":"4" } + es6.math.cosh { "android":"4" } + es6.math.expm1 { "android":"4" } + es6.math.fround { "android":"4" } + es6.math.hypot { "android":"4" } + es6.math.imul { "android":"4" } + es6.math.log1p { "android":"4" } + es6.math.log10 { "android":"4" } + es6.math.log2 { "android":"4" } + es6.math.sign { "android":"4" } + es6.math.sinh { "android":"4" } + es6.math.tanh { "android":"4" } + es6.math.trunc { "android":"4" } + es7.array.includes { "android":"4" } + es7.object.values { "android":"4" } + es7.object.entries { "android":"4" } + es7.object.get-own-property-descriptors { "android":"4" } + es7.string.pad-start { "android":"4" } + es7.string.pad-end { "android":"4" } + web.timers { "android":"4" } + web.immediate { "android":"4" } + web.dom.iterable { "android":"4" } +src/in.js -> lib/in.js \ No newline at end of file diff --git a/experimental/babel-preset-env/test/debug-fixtures/builtins-no-import/in/in.js b/experimental/babel-preset-env/test/debug-fixtures/builtins-no-import/in/in.js new file mode 100644 index 0000000000..e31333abc5 --- /dev/null +++ b/experimental/babel-preset-env/test/debug-fixtures/builtins-no-import/in/in.js @@ -0,0 +1 @@ +function hasAnyoneSeenImportBabelPolyfill() { return false }; diff --git a/experimental/babel-preset-env/test/debug-fixtures/builtins-no-import/options.json b/experimental/babel-preset-env/test/debug-fixtures/builtins-no-import/options.json new file mode 100644 index 0000000000..c852ad03f6 --- /dev/null +++ b/experimental/babel-preset-env/test/debug-fixtures/builtins-no-import/options.json @@ -0,0 +1,11 @@ +{ + "presets": [ + ["../../lib", { + "debug": true, + "targets": { + "node": 6 + }, + "useBuiltIns": "entry" + }] + ] +} diff --git a/experimental/babel-preset-env/test/debug-fixtures/builtins-no-import/stdout.txt b/experimental/babel-preset-env/test/debug-fixtures/builtins-no-import/stdout.txt new file mode 100644 index 0000000000..0c9a4d1c59 --- /dev/null +++ b/experimental/babel-preset-env/test/debug-fixtures/builtins-no-import/stdout.txt @@ -0,0 +1,21 @@ +babel-preset-env: `DEBUG` option + +Using targets: +{ + "node": "6" +} + +Using modules transform: commonjs + +Using plugins: + transform-es2015-destructuring { "node":"6" } + transform-es2015-for-of { "node":"6" } + transform-es2015-function-name { "node":"6" } + transform-exponentiation-operator { "node":"6" } + transform-async-to-generator { "node":"6" } + syntax-trailing-function-commas { "node":"6" } + +Using polyfills with `entry` option: + +[src/in.js] `import 'babel-polyfill'` was not found. +src/in.js -> lib/in.js diff --git a/experimental/babel-preset-env/test/debug-fixtures/builtins-uglify/in/in.js b/experimental/babel-preset-env/test/debug-fixtures/builtins-uglify/in/in.js new file mode 100644 index 0000000000..b012711b90 --- /dev/null +++ b/experimental/babel-preset-env/test/debug-fixtures/builtins-uglify/in/in.js @@ -0,0 +1 @@ +import 'babel-polyfill'; diff --git a/experimental/babel-preset-env/test/debug-fixtures/builtins-uglify/options.json b/experimental/babel-preset-env/test/debug-fixtures/builtins-uglify/options.json new file mode 100644 index 0000000000..99859f1e9d --- /dev/null +++ b/experimental/babel-preset-env/test/debug-fixtures/builtins-uglify/options.json @@ -0,0 +1,13 @@ +{ + "presets": [ + ["../../lib", { + "debug": true, + "targets": { + "chrome": 55, + "uglify": true + }, + "useBuiltIns": "entry", + "modules": false + }] + ] +} diff --git a/experimental/babel-preset-env/test/debug-fixtures/builtins-uglify/stdout.txt b/experimental/babel-preset-env/test/debug-fixtures/builtins-uglify/stdout.txt new file mode 100644 index 0000000000..fef5b06869 --- /dev/null +++ b/experimental/babel-preset-env/test/debug-fixtures/builtins-uglify/stdout.txt @@ -0,0 +1,47 @@ +The uglify target has been deprecated. Set the top level +option `forceAllTransforms: true` instead. + +babel-preset-env: `DEBUG` option + +Using targets: +{ + "chrome": "55" +} + +Using modules transform: false + +Using plugins: + check-es2015-constants {} + transform-es2015-arrow-functions {} + transform-es2015-block-scoped-functions {} + transform-es2015-block-scoping {} + transform-es2015-classes {} + transform-es2015-computed-properties {} + transform-es2015-destructuring {} + transform-es2015-duplicate-keys {} + transform-es2015-for-of {} + transform-es2015-function-name {} + transform-es2015-literals {} + transform-es2015-object-super {} + transform-es2015-parameters {} + transform-es2015-shorthand-properties {} + transform-es2015-spread {} + transform-es2015-sticky-regex {} + transform-es2015-template-literals {} + transform-es2015-typeof-symbol {} + transform-es2015-unicode-regex {} + transform-new-target {} + transform-regenerator {} + transform-exponentiation-operator {} + transform-async-to-generator {} + syntax-trailing-function-commas { "chrome":"55" } + +Using polyfills with `entry` option: + +[src/in.js] Replaced `babel-polyfill` with the following polyfills: + es7.string.pad-start { "chrome":"55" } + es7.string.pad-end { "chrome":"55" } + web.timers { "chrome":"55" } + web.immediate { "chrome":"55" } + web.dom.iterable { "chrome":"55" } +src/in.js -> lib/in.js \ No newline at end of file diff --git a/experimental/babel-preset-env/test/debug-fixtures/builtins/in/in.js b/experimental/babel-preset-env/test/debug-fixtures/builtins/in/in.js new file mode 100644 index 0000000000..b012711b90 --- /dev/null +++ b/experimental/babel-preset-env/test/debug-fixtures/builtins/in/in.js @@ -0,0 +1 @@ +import 'babel-polyfill'; diff --git a/experimental/babel-preset-env/test/debug-fixtures/builtins/options.json b/experimental/babel-preset-env/test/debug-fixtures/builtins/options.json new file mode 100644 index 0000000000..8a1de9062d --- /dev/null +++ b/experimental/babel-preset-env/test/debug-fixtures/builtins/options.json @@ -0,0 +1,12 @@ +{ + "presets": [ + ["../../lib", { + "debug": true, + "targets": { + "browsers": "chrome >= 54, ie 10", + "node": 6 + }, + "useBuiltIns": "entry" + }] + ] +} diff --git a/experimental/babel-preset-env/test/debug-fixtures/builtins/stdout.txt b/experimental/babel-preset-env/test/debug-fixtures/builtins/stdout.txt new file mode 100644 index 0000000000..7e7d9e9c52 --- /dev/null +++ b/experimental/babel-preset-env/test/debug-fixtures/builtins/stdout.txt @@ -0,0 +1,128 @@ +babel-preset-env: `DEBUG` option + +Using targets: +{ + "chrome": "54", + "ie": "10", + "node": "6" +} + +Using modules transform: commonjs + +Using plugins: + check-es2015-constants { "ie":"10" } + transform-es2015-arrow-functions { "ie":"10" } + transform-es2015-block-scoped-functions { "ie":"10" } + transform-es2015-block-scoping { "ie":"10" } + transform-es2015-classes { "ie":"10" } + transform-es2015-computed-properties { "ie":"10" } + transform-es2015-destructuring { "ie":"10", "node":"6" } + transform-es2015-duplicate-keys { "ie":"10" } + transform-es2015-for-of { "ie":"10", "node":"6" } + transform-es2015-function-name { "ie":"10", "node":"6" } + transform-es2015-literals { "ie":"10" } + transform-es2015-object-super { "ie":"10" } + transform-es2015-parameters { "ie":"10" } + transform-es2015-shorthand-properties { "ie":"10" } + transform-es2015-spread { "ie":"10" } + transform-es2015-sticky-regex { "ie":"10" } + transform-es2015-template-literals { "ie":"10" } + transform-es2015-typeof-symbol { "ie":"10" } + transform-es2015-unicode-regex { "ie":"10" } + transform-new-target { "ie":"10" } + transform-regenerator { "ie":"10" } + transform-exponentiation-operator { "ie":"10", "node":"6" } + transform-async-to-generator { "chrome":"54", "ie":"10", "node":"6" } + syntax-trailing-function-commas { "chrome":"54", "ie":"10", "node":"6" } + +Using polyfills with `entry` option: + +[src/in.js] Replaced `babel-polyfill` with the following polyfills: + es6.typed.array-buffer { "ie":"10", "node":"6" } + es6.typed.int8-array { "ie":"10", "node":"6" } + es6.typed.uint8-array { "ie":"10", "node":"6" } + es6.typed.uint8-clamped-array { "ie":"10", "node":"6" } + es6.typed.int16-array { "ie":"10", "node":"6" } + es6.typed.uint16-array { "ie":"10", "node":"6" } + es6.typed.int32-array { "ie":"10", "node":"6" } + es6.typed.uint32-array { "ie":"10", "node":"6" } + es6.typed.float32-array { "ie":"10", "node":"6" } + es6.typed.float64-array { "ie":"10", "node":"6" } + es6.map { "ie":"10", "node":"6" } + es6.set { "ie":"10", "node":"6" } + es6.weak-map { "ie":"10", "node":"6" } + es6.weak-set { "ie":"10", "node":"6" } + es6.reflect.apply { "ie":"10" } + es6.reflect.construct { "ie":"10" } + es6.reflect.define-property { "ie":"10" } + es6.reflect.delete-property { "ie":"10" } + es6.reflect.get { "ie":"10" } + es6.reflect.get-own-property-descriptor { "ie":"10" } + es6.reflect.get-prototype-of { "ie":"10" } + es6.reflect.has { "ie":"10" } + es6.reflect.is-extensible { "ie":"10" } + es6.reflect.own-keys { "ie":"10" } + es6.reflect.prevent-extensions { "ie":"10" } + es6.reflect.set { "ie":"10" } + es6.reflect.set-prototype-of { "ie":"10" } + es6.promise { "ie":"10", "node":"6" } + es6.symbol { "ie":"10", "node":"6" } + es6.object.assign { "ie":"10" } + es6.object.is { "ie":"10" } + es6.object.set-prototype-of { "ie":"10" } + es6.function.name { "ie":"10", "node":"6" } + es6.string.raw { "ie":"10" } + es6.string.from-code-point { "ie":"10" } + es6.string.code-point-at { "ie":"10" } + es6.string.repeat { "ie":"10" } + es6.string.starts-with { "ie":"10" } + es6.string.ends-with { "ie":"10" } + es6.string.includes { "ie":"10" } + es6.regexp.flags { "ie":"10" } + es6.regexp.match { "ie":"10" } + es6.regexp.replace { "ie":"10" } + es6.regexp.split { "ie":"10" } + es6.regexp.search { "ie":"10" } + es6.array.from { "ie":"10", "node":"6" } + es6.array.of { "ie":"10" } + es6.array.copy-within { "ie":"10" } + es6.array.find { "ie":"10" } + es6.array.find-index { "ie":"10" } + es6.array.fill { "ie":"10" } + es6.array.iterator { "ie":"10" } + es6.number.is-finite { "ie":"10" } + es6.number.is-integer { "ie":"10" } + es6.number.is-safe-integer { "ie":"10" } + es6.number.is-nan { "ie":"10" } + es6.number.epsilon { "ie":"10" } + es6.number.min-safe-integer { "ie":"10" } + es6.number.max-safe-integer { "ie":"10" } + es6.number.parse-float { "ie":"10" } + es6.number.parse-int { "ie":"10" } + es6.math.acosh { "ie":"10" } + es6.math.asinh { "ie":"10" } + es6.math.atanh { "ie":"10" } + es6.math.cbrt { "ie":"10" } + es6.math.clz32 { "ie":"10" } + es6.math.cosh { "ie":"10" } + es6.math.expm1 { "ie":"10" } + es6.math.fround { "ie":"10" } + es6.math.hypot { "ie":"10" } + es6.math.imul { "ie":"10" } + es6.math.log1p { "ie":"10" } + es6.math.log10 { "ie":"10" } + es6.math.log2 { "ie":"10" } + es6.math.sign { "ie":"10" } + es6.math.sinh { "ie":"10" } + es6.math.tanh { "ie":"10" } + es6.math.trunc { "ie":"10" } + es7.array.includes { "ie":"10" } + es7.object.values { "ie":"10", "node":"6" } + es7.object.entries { "ie":"10", "node":"6" } + es7.object.get-own-property-descriptors { "ie":"10", "node":"6" } + es7.string.pad-start { "chrome":"54", "ie":"10", "node":"6" } + es7.string.pad-end { "chrome":"54", "ie":"10", "node":"6" } + web.timers { "chrome":"54", "ie":"10", "node":"6" } + web.immediate { "chrome":"54", "ie":"10", "node":"6" } + web.dom.iterable { "chrome":"54", "ie":"10", "node":"6" } +src/in.js -> lib/in.js \ No newline at end of file diff --git a/experimental/babel-preset-env/test/debug-fixtures/electron/in/in.js b/experimental/babel-preset-env/test/debug-fixtures/electron/in/in.js new file mode 100644 index 0000000000..b012711b90 --- /dev/null +++ b/experimental/babel-preset-env/test/debug-fixtures/electron/in/in.js @@ -0,0 +1 @@ +import 'babel-polyfill'; diff --git a/experimental/babel-preset-env/test/debug-fixtures/electron/options.json b/experimental/babel-preset-env/test/debug-fixtures/electron/options.json new file mode 100644 index 0000000000..b07199a014 --- /dev/null +++ b/experimental/babel-preset-env/test/debug-fixtures/electron/options.json @@ -0,0 +1,11 @@ +{ + "presets": [ + ["../../lib", { + "debug": true, + "targets": { + "electron": 0.36 + }, + "useBuiltIns": "entry" + }] + ] +} diff --git a/experimental/babel-preset-env/test/debug-fixtures/electron/stdout.txt b/experimental/babel-preset-env/test/debug-fixtures/electron/stdout.txt new file mode 100644 index 0000000000..162b5bf468 --- /dev/null +++ b/experimental/babel-preset-env/test/debug-fixtures/electron/stdout.txt @@ -0,0 +1,79 @@ +Warning, the following targets are using a decimal version: + + electron: 0.36 + +We recommend using a string for minor/patch versions to avoid numbers like 6.10 +getting parsed as 6.1, which can lead to unexpected behavior. + +babel-preset-env: `DEBUG` option + +Using targets: +{ + "electron": "0.36" +} + +Using modules transform: commonjs + +Using plugins: + check-es2015-constants { "electron":"0.36" } + transform-es2015-block-scoping { "electron":"0.36" } + transform-es2015-destructuring { "electron":"0.36" } + transform-es2015-for-of { "electron":"0.36" } + transform-es2015-function-name { "electron":"0.36" } + transform-es2015-parameters { "electron":"0.36" } + transform-es2015-sticky-regex { "electron":"0.36" } + transform-es2015-unicode-regex { "electron":"0.36" } + transform-regenerator { "electron":"0.36" } + transform-exponentiation-operator { "electron":"0.36" } + transform-async-to-generator { "electron":"0.36" } + syntax-trailing-function-commas { "electron":"0.36" } + +Using polyfills with `entry` option: + +[src/in.js] Replaced `babel-polyfill` with the following polyfills: + es6.typed.array-buffer { "electron":"0.36" } + es6.typed.data-view { "electron":"0.36" } + es6.typed.int8-array { "electron":"0.36" } + es6.typed.uint8-array { "electron":"0.36" } + es6.typed.uint8-clamped-array { "electron":"0.36" } + es6.typed.int16-array { "electron":"0.36" } + es6.typed.uint16-array { "electron":"0.36" } + es6.typed.int32-array { "electron":"0.36" } + es6.typed.uint32-array { "electron":"0.36" } + es6.typed.float32-array { "electron":"0.36" } + es6.typed.float64-array { "electron":"0.36" } + es6.map { "electron":"0.36" } + es6.set { "electron":"0.36" } + es6.weak-map { "electron":"0.36" } + es6.weak-set { "electron":"0.36" } + es6.reflect.apply { "electron":"0.36" } + es6.reflect.construct { "electron":"0.36" } + es6.reflect.define-property { "electron":"0.36" } + es6.reflect.delete-property { "electron":"0.36" } + es6.reflect.get { "electron":"0.36" } + es6.reflect.get-own-property-descriptor { "electron":"0.36" } + es6.reflect.get-prototype-of { "electron":"0.36" } + es6.reflect.has { "electron":"0.36" } + es6.reflect.is-extensible { "electron":"0.36" } + es6.reflect.own-keys { "electron":"0.36" } + es6.reflect.prevent-extensions { "electron":"0.36" } + es6.reflect.set { "electron":"0.36" } + es6.reflect.set-prototype-of { "electron":"0.36" } + es6.promise { "electron":"0.36" } + es6.symbol { "electron":"0.36" } + es6.function.name { "electron":"0.36" } + es6.regexp.flags { "electron":"0.36" } + es6.regexp.match { "electron":"0.36" } + es6.regexp.replace { "electron":"0.36" } + es6.regexp.split { "electron":"0.36" } + es6.regexp.search { "electron":"0.36" } + es6.array.from { "electron":"0.36" } + es7.object.values { "electron":"0.36" } + es7.object.entries { "electron":"0.36" } + es7.object.get-own-property-descriptors { "electron":"0.36" } + es7.string.pad-start { "electron":"0.36" } + es7.string.pad-end { "electron":"0.36" } + web.timers { "electron":"0.36" } + web.immediate { "electron":"0.36" } + web.dom.iterable { "electron":"0.36" } +src/in.js -> lib/in.js diff --git a/experimental/babel-preset-env/test/debug-fixtures/force-all-transforms/in/in.js b/experimental/babel-preset-env/test/debug-fixtures/force-all-transforms/in/in.js new file mode 100644 index 0000000000..b012711b90 --- /dev/null +++ b/experimental/babel-preset-env/test/debug-fixtures/force-all-transforms/in/in.js @@ -0,0 +1 @@ +import 'babel-polyfill'; diff --git a/experimental/babel-preset-env/test/debug-fixtures/force-all-transforms/options.json b/experimental/babel-preset-env/test/debug-fixtures/force-all-transforms/options.json new file mode 100644 index 0000000000..f598e9a286 --- /dev/null +++ b/experimental/babel-preset-env/test/debug-fixtures/force-all-transforms/options.json @@ -0,0 +1,13 @@ +{ + "presets": [ + ["../../lib", { + "debug": true, + "modules": false, + "targets": { + "chrome": 55 + }, + "useBuiltIns": "entry", + "forceAllTransforms": true + }] + ] +} diff --git a/experimental/babel-preset-env/test/debug-fixtures/force-all-transforms/stdout.txt b/experimental/babel-preset-env/test/debug-fixtures/force-all-transforms/stdout.txt new file mode 100644 index 0000000000..9e3a084a14 --- /dev/null +++ b/experimental/babel-preset-env/test/debug-fixtures/force-all-transforms/stdout.txt @@ -0,0 +1,44 @@ +babel-preset-env: `DEBUG` option + +Using targets: +{ + "chrome": "55" +} + +Using modules transform: false + +Using plugins: + check-es2015-constants {} + transform-es2015-arrow-functions {} + transform-es2015-block-scoped-functions {} + transform-es2015-block-scoping {} + transform-es2015-classes {} + transform-es2015-computed-properties {} + transform-es2015-destructuring {} + transform-es2015-duplicate-keys {} + transform-es2015-for-of {} + transform-es2015-function-name {} + transform-es2015-literals {} + transform-es2015-object-super {} + transform-es2015-parameters {} + transform-es2015-shorthand-properties {} + transform-es2015-spread {} + transform-es2015-sticky-regex {} + transform-es2015-template-literals {} + transform-es2015-typeof-symbol {} + transform-es2015-unicode-regex {} + transform-new-target {} + transform-regenerator {} + transform-exponentiation-operator {} + transform-async-to-generator {} + syntax-trailing-function-commas { "chrome":"55" } + +Using polyfills with `entry` option: + +[src/in.js] Replaced `babel-polyfill` with the following polyfills: + es7.string.pad-start { "chrome":"55" } + es7.string.pad-end { "chrome":"55" } + web.timers { "chrome":"55" } + web.immediate { "chrome":"55" } + web.dom.iterable { "chrome":"55" } +src/in.js -> lib/in.js \ No newline at end of file diff --git a/experimental/babel-preset-env/test/debug-fixtures/plugins-only/options.json b/experimental/babel-preset-env/test/debug-fixtures/plugins-only/options.json new file mode 100644 index 0000000000..dac357fb3a --- /dev/null +++ b/experimental/babel-preset-env/test/debug-fixtures/plugins-only/options.json @@ -0,0 +1,17 @@ +{ + "presets": [ + ["../../lib", { + "debug": true, + "exclude": [ + "transform-async-to-generator", + "transform-regenerator", + "transform-es2015-parameters" + ], + "targets": { + "firefox": 52, + "node": 7.4 + }, + "useBuiltIns": false + }] + ] +} diff --git a/experimental/babel-preset-env/test/debug-fixtures/plugins-only/stdout.txt b/experimental/babel-preset-env/test/debug-fixtures/plugins-only/stdout.txt new file mode 100644 index 0000000000..e2a1893e26 --- /dev/null +++ b/experimental/babel-preset-env/test/debug-fixtures/plugins-only/stdout.txt @@ -0,0 +1,26 @@ +Warning, the following targets are using a decimal version: + + node: 7.4 + +We recommend using a string for minor/patch versions to avoid numbers like 6.10 +getting parsed as 6.1, which can lead to unexpected behavior. + +babel-preset-env: `DEBUG` option + +Using targets: +{ + "firefox": "52", + "node": "7.4" +} + +Using modules transform: commonjs + +Using plugins: + transform-es2015-destructuring { "firefox":"52" } + transform-es2015-for-of { "firefox":"52" } + transform-es2015-function-name { "firefox":"52" } + transform-es2015-literals { "firefox":"52" } + syntax-trailing-function-commas { "node":"7.4" } + +Using polyfills: No polyfills were added, since the `useBuiltIns` option was not set. +src/in.js -> lib/in.js diff --git a/experimental/babel-preset-env/test/debug-fixtures/shippedProposals-chrome60/in/in.js b/experimental/babel-preset-env/test/debug-fixtures/shippedProposals-chrome60/in/in.js new file mode 100644 index 0000000000..b012711b90 --- /dev/null +++ b/experimental/babel-preset-env/test/debug-fixtures/shippedProposals-chrome60/in/in.js @@ -0,0 +1 @@ +import 'babel-polyfill'; diff --git a/experimental/babel-preset-env/test/debug-fixtures/shippedProposals-chrome60/options.json b/experimental/babel-preset-env/test/debug-fixtures/shippedProposals-chrome60/options.json new file mode 100644 index 0000000000..a7fc993ff3 --- /dev/null +++ b/experimental/babel-preset-env/test/debug-fixtures/shippedProposals-chrome60/options.json @@ -0,0 +1,12 @@ +{ + "presets": [ + ["../../lib", { + "debug": true, + "targets": { + "browsers": "chrome 60" + }, + "shippedProposals": true, + "useBuiltIns": "entry" + }] + ] +} diff --git a/experimental/babel-preset-env/test/debug-fixtures/shippedProposals-chrome60/stdout.txt b/experimental/babel-preset-env/test/debug-fixtures/shippedProposals-chrome60/stdout.txt new file mode 100644 index 0000000000..121732593f --- /dev/null +++ b/experimental/babel-preset-env/test/debug-fixtures/shippedProposals-chrome60/stdout.txt @@ -0,0 +1,23 @@ +babel-preset-env: `DEBUG` option + +Using targets: +{ + "chrome": "60" +} + +Using modules transform: commonjs + +Using plugins: + transform-async-generator-functions { "chrome":"60" } + syntax-object-rest-spread { "chrome":"60" } + transform-optional-catch-binding { "chrome":"60" } + transform-unicode-property-regex { "chrome":"60" } + +Using polyfills with `entry` option: + +[src/in.js] Replaced `babel-polyfill` with the following polyfills: + es7.promise.finally { "chrome":"60" } + web.timers { "chrome":"60" } + web.immediate { "chrome":"60" } + web.dom.iterable { "chrome":"60" } +src/in.js -> lib/in.js \ No newline at end of file diff --git a/experimental/babel-preset-env/test/debug-fixtures/shippedProposals/in/in.js b/experimental/babel-preset-env/test/debug-fixtures/shippedProposals/in/in.js new file mode 100644 index 0000000000..b012711b90 --- /dev/null +++ b/experimental/babel-preset-env/test/debug-fixtures/shippedProposals/in/in.js @@ -0,0 +1 @@ +import 'babel-polyfill'; diff --git a/experimental/babel-preset-env/test/debug-fixtures/shippedProposals/options.json b/experimental/babel-preset-env/test/debug-fixtures/shippedProposals/options.json new file mode 100644 index 0000000000..40884decf8 --- /dev/null +++ b/experimental/babel-preset-env/test/debug-fixtures/shippedProposals/options.json @@ -0,0 +1,9 @@ +{ + "presets": [ + ["../../lib", { + "debug": true, + "shippedProposals": true, + "useBuiltIns": "entry" + }] + ] +} diff --git a/experimental/babel-preset-env/test/debug-fixtures/shippedProposals/stdout.txt b/experimental/babel-preset-env/test/debug-fixtures/shippedProposals/stdout.txt new file mode 100644 index 0000000000..0a7e7efc43 --- /dev/null +++ b/experimental/babel-preset-env/test/debug-fixtures/shippedProposals/stdout.txt @@ -0,0 +1,130 @@ +babel-preset-env: `DEBUG` option + +Using targets: +{} + +Using modules transform: commonjs + +Using plugins: + check-es2015-constants {} + transform-es2015-arrow-functions {} + transform-es2015-block-scoped-functions {} + transform-es2015-block-scoping {} + transform-es2015-classes {} + transform-es2015-computed-properties {} + transform-es2015-destructuring {} + transform-es2015-duplicate-keys {} + transform-es2015-for-of {} + transform-es2015-function-name {} + transform-es2015-literals {} + transform-es2015-object-super {} + transform-es2015-parameters {} + transform-es2015-shorthand-properties {} + transform-es2015-spread {} + transform-es2015-sticky-regex {} + transform-es2015-template-literals {} + transform-es2015-typeof-symbol {} + transform-es2015-unicode-regex {} + transform-new-target {} + transform-regenerator {} + transform-exponentiation-operator {} + transform-async-to-generator {} + syntax-trailing-function-commas {} + transform-async-generator-functions {} + transform-object-rest-spread {} + transform-optional-catch-binding {} + transform-unicode-property-regex {} + +Using polyfills with `entry` option: + +[src/in.js] Replaced `babel-polyfill` with the following polyfills: + es6.typed.array-buffer {} + es6.typed.data-view {} + es6.typed.int8-array {} + es6.typed.uint8-array {} + es6.typed.uint8-clamped-array {} + es6.typed.int16-array {} + es6.typed.uint16-array {} + es6.typed.int32-array {} + es6.typed.uint32-array {} + es6.typed.float32-array {} + es6.typed.float64-array {} + es6.map {} + es6.set {} + es6.weak-map {} + es6.weak-set {} + es6.reflect.apply {} + es6.reflect.construct {} + es6.reflect.define-property {} + es6.reflect.delete-property {} + es6.reflect.get {} + es6.reflect.get-own-property-descriptor {} + es6.reflect.get-prototype-of {} + es6.reflect.has {} + es6.reflect.is-extensible {} + es6.reflect.own-keys {} + es6.reflect.prevent-extensions {} + es6.reflect.set {} + es6.reflect.set-prototype-of {} + es6.promise {} + es6.symbol {} + es6.object.assign {} + es6.object.is {} + es6.object.set-prototype-of {} + es6.function.name {} + es6.string.raw {} + es6.string.from-code-point {} + es6.string.code-point-at {} + es6.string.repeat {} + es6.string.starts-with {} + es6.string.ends-with {} + es6.string.includes {} + es6.regexp.flags {} + es6.regexp.match {} + es6.regexp.replace {} + es6.regexp.split {} + es6.regexp.search {} + es6.array.from {} + es6.array.of {} + es6.array.copy-within {} + es6.array.find {} + es6.array.find-index {} + es6.array.fill {} + es6.array.iterator {} + es6.number.is-finite {} + es6.number.is-integer {} + es6.number.is-safe-integer {} + es6.number.is-nan {} + es6.number.epsilon {} + es6.number.min-safe-integer {} + es6.number.max-safe-integer {} + es6.number.parse-float {} + es6.number.parse-int {} + es6.math.acosh {} + es6.math.asinh {} + es6.math.atanh {} + es6.math.cbrt {} + es6.math.clz32 {} + es6.math.cosh {} + es6.math.expm1 {} + es6.math.fround {} + es6.math.hypot {} + es6.math.imul {} + es6.math.log1p {} + es6.math.log10 {} + es6.math.log2 {} + es6.math.sign {} + es6.math.sinh {} + es6.math.tanh {} + es6.math.trunc {} + es7.array.includes {} + es7.object.values {} + es7.object.entries {} + es7.object.get-own-property-descriptors {} + es7.string.pad-start {} + es7.string.pad-end {} + es7.promise.finally {} + web.timers {} + web.immediate {} + web.dom.iterable {} +src/in.js -> lib/in.js \ No newline at end of file diff --git a/experimental/babel-preset-env/test/debug-fixtures/specific-targets/in/in.js b/experimental/babel-preset-env/test/debug-fixtures/specific-targets/in/in.js new file mode 100644 index 0000000000..b012711b90 --- /dev/null +++ b/experimental/babel-preset-env/test/debug-fixtures/specific-targets/in/in.js @@ -0,0 +1 @@ +import 'babel-polyfill'; diff --git a/experimental/babel-preset-env/test/debug-fixtures/specific-targets/options.json b/experimental/babel-preset-env/test/debug-fixtures/specific-targets/options.json new file mode 100644 index 0000000000..ae57604c0a --- /dev/null +++ b/experimental/babel-preset-env/test/debug-fixtures/specific-targets/options.json @@ -0,0 +1,11 @@ +{ + "presets": [ + ["../../lib", { + "debug": true, + "targets": { + "browsers": "ie 10, ios 9, safari 7, edge 13, chrome 54, firefox 49" + }, + "useBuiltIns": "entry" + }] + ] +} diff --git a/experimental/babel-preset-env/test/debug-fixtures/specific-targets/stdout.txt b/experimental/babel-preset-env/test/debug-fixtures/specific-targets/stdout.txt new file mode 100644 index 0000000000..16b7be62a0 --- /dev/null +++ b/experimental/babel-preset-env/test/debug-fixtures/specific-targets/stdout.txt @@ -0,0 +1,131 @@ +babel-preset-env: `DEBUG` option + +Using targets: +{ + "chrome": "54", + "edge": "13", + "firefox": "49", + "ie": "10", + "ios": "9", + "safari": "7" +} + +Using modules transform: commonjs + +Using plugins: + check-es2015-constants { "edge":"13", "firefox":"49", "ie":"10", "ios":"9", "safari":"7" } + transform-es2015-arrow-functions { "ie":"10", "ios":"9", "safari":"7" } + transform-es2015-block-scoped-functions { "ie":"10", "ios":"9", "safari":"7" } + transform-es2015-block-scoping { "edge":"13", "firefox":"49", "ie":"10", "ios":"9", "safari":"7" } + transform-es2015-classes { "ie":"10", "ios":"9", "safari":"7" } + transform-es2015-computed-properties { "ie":"10", "safari":"7" } + transform-es2015-destructuring { "edge":"13", "firefox":"49", "ie":"10", "ios":"9", "safari":"7" } + transform-es2015-duplicate-keys { "ie":"10", "safari":"7" } + transform-es2015-for-of { "edge":"13", "firefox":"49", "ie":"10", "ios":"9", "safari":"7" } + transform-es2015-function-name { "edge":"13", "firefox":"49", "ie":"10", "ios":"9", "safari":"7" } + transform-es2015-literals { "firefox":"49", "ie":"10", "safari":"7" } + transform-es2015-object-super { "ie":"10", "ios":"9", "safari":"7" } + transform-es2015-parameters { "edge":"13", "firefox":"49", "ie":"10", "ios":"9", "safari":"7" } + transform-es2015-shorthand-properties { "ie":"10", "safari":"7" } + transform-es2015-spread { "ie":"10", "ios":"9", "safari":"7" } + transform-es2015-sticky-regex { "ie":"10", "ios":"9", "safari":"7" } + transform-es2015-template-literals { "ie":"10", "safari":"7" } + transform-es2015-typeof-symbol { "ie":"10", "safari":"7" } + transform-es2015-unicode-regex { "ie":"10", "ios":"9", "safari":"7" } + transform-new-target { "edge":"13", "ie":"10", "ios":"9", "safari":"7" } + transform-regenerator { "firefox":"49", "ie":"10", "ios":"9", "safari":"7" } + transform-exponentiation-operator { "edge":"13", "firefox":"49", "ie":"10", "ios":"9", "safari":"7" } + transform-async-to-generator { "chrome":"54", "edge":"13", "firefox":"49", "ie":"10", "ios":"9", "safari":"7" } + syntax-trailing-function-commas { "chrome":"54", "edge":"13", "firefox":"49", "ie":"10", "ios":"9", "safari":"7" } + +Using polyfills with `entry` option: + +[src/in.js] Replaced `babel-polyfill` with the following polyfills: + es6.typed.array-buffer { "ie":"10", "ios":"9", "safari":"7" } + es6.typed.int8-array { "ie":"10", "ios":"9", "safari":"7" } + es6.typed.uint8-array { "ie":"10", "ios":"9", "safari":"7" } + es6.typed.uint8-clamped-array { "ie":"10", "ios":"9", "safari":"7" } + es6.typed.int16-array { "ie":"10", "ios":"9", "safari":"7" } + es6.typed.uint16-array { "ie":"10", "ios":"9", "safari":"7" } + es6.typed.int32-array { "ie":"10", "ios":"9", "safari":"7" } + es6.typed.uint32-array { "ie":"10", "ios":"9", "safari":"7" } + es6.typed.float32-array { "ie":"10", "ios":"9", "safari":"7" } + es6.typed.float64-array { "ie":"10", "ios":"9", "safari":"7" } + es6.map { "edge":"13", "firefox":"49", "ie":"10", "ios":"9", "safari":"7" } + es6.set { "edge":"13", "firefox":"49", "ie":"10", "ios":"9", "safari":"7" } + es6.weak-map { "edge":"13", "firefox":"49", "ie":"10", "safari":"7" } + es6.weak-set { "edge":"13", "firefox":"49", "ie":"10", "safari":"7" } + es6.reflect.apply { "ie":"10", "ios":"9", "safari":"7" } + es6.reflect.construct { "ie":"10", "ios":"9", "safari":"7" } + es6.reflect.define-property { "ie":"10", "ios":"9", "safari":"7" } + es6.reflect.delete-property { "ie":"10", "ios":"9", "safari":"7" } + es6.reflect.get { "ie":"10", "ios":"9", "safari":"7" } + es6.reflect.get-own-property-descriptor { "ie":"10", "ios":"9", "safari":"7" } + es6.reflect.get-prototype-of { "ie":"10", "ios":"9", "safari":"7" } + es6.reflect.has { "ie":"10", "ios":"9", "safari":"7" } + es6.reflect.is-extensible { "ie":"10", "ios":"9", "safari":"7" } + es6.reflect.own-keys { "ie":"10", "ios":"9", "safari":"7" } + es6.reflect.prevent-extensions { "ie":"10", "ios":"9", "safari":"7" } + es6.reflect.set { "ie":"10", "ios":"9", "safari":"7" } + es6.reflect.set-prototype-of { "ie":"10", "ios":"9", "safari":"7" } + es6.promise { "ie":"10", "ios":"9", "safari":"7" } + es6.symbol { "edge":"13", "firefox":"49", "ie":"10", "ios":"9", "safari":"7" } + es6.object.assign { "ie":"10", "safari":"7" } + es6.object.is { "ie":"10", "safari":"7" } + es6.object.set-prototype-of { "ie":"10", "safari":"7" } + es6.function.name { "edge":"13", "firefox":"49", "ie":"10", "ios":"9", "safari":"7" } + es6.string.raw { "ie":"10", "safari":"7" } + es6.string.from-code-point { "ie":"10", "safari":"7" } + es6.string.code-point-at { "ie":"10", "safari":"7" } + es6.string.repeat { "ie":"10", "safari":"7" } + es6.string.starts-with { "ie":"10", "safari":"7" } + es6.string.ends-with { "ie":"10", "safari":"7" } + es6.string.includes { "ie":"10", "safari":"7" } + es6.regexp.flags { "edge":"13", "ie":"10", "safari":"7" } + es6.regexp.match { "edge":"13", "ie":"10", "ios":"9", "safari":"7" } + es6.regexp.replace { "edge":"13", "ie":"10", "ios":"9", "safari":"7" } + es6.regexp.split { "edge":"13", "ie":"10", "ios":"9", "safari":"7" } + es6.regexp.search { "edge":"13", "ie":"10", "ios":"9", "safari":"7" } + es6.array.from { "edge":"13", "ie":"10", "ios":"9", "safari":"7" } + es6.array.of { "ie":"10", "safari":"7" } + es6.array.copy-within { "ie":"10", "safari":"7" } + es6.array.find { "ie":"10", "safari":"7" } + es6.array.find-index { "ie":"10", "safari":"7" } + es6.array.fill { "ie":"10", "safari":"7" } + es6.array.iterator { "ie":"10", "safari":"7" } + es6.number.is-finite { "ie":"10", "safari":"7" } + es6.number.is-integer { "ie":"10", "safari":"7" } + es6.number.is-safe-integer { "ie":"10", "safari":"7" } + es6.number.is-nan { "ie":"10", "safari":"7" } + es6.number.epsilon { "ie":"10", "safari":"7" } + es6.number.min-safe-integer { "ie":"10", "safari":"7" } + es6.number.max-safe-integer { "ie":"10", "safari":"7" } + es6.number.parse-float { "ie":"10", "safari":"7" } + es6.number.parse-int { "ie":"10", "safari":"7" } + es6.math.acosh { "ie":"10", "safari":"7" } + es6.math.asinh { "ie":"10", "safari":"7" } + es6.math.atanh { "ie":"10", "safari":"7" } + es6.math.cbrt { "ie":"10", "safari":"7" } + es6.math.clz32 { "ie":"10", "safari":"7" } + es6.math.cosh { "ie":"10", "safari":"7" } + es6.math.expm1 { "ie":"10", "safari":"7" } + es6.math.fround { "ie":"10", "safari":"7" } + es6.math.hypot { "ie":"10", "safari":"7" } + es6.math.imul { "ie":"10" } + es6.math.log1p { "ie":"10", "safari":"7" } + es6.math.log10 { "ie":"10", "safari":"7" } + es6.math.log2 { "ie":"10", "safari":"7" } + es6.math.sign { "ie":"10", "safari":"7" } + es6.math.sinh { "ie":"10", "safari":"7" } + es6.math.tanh { "ie":"10", "safari":"7" } + es6.math.trunc { "ie":"10", "safari":"7" } + es7.array.includes { "edge":"13", "ie":"10", "ios":"9", "safari":"7" } + es7.object.values { "edge":"13", "ie":"10", "ios":"9", "safari":"7" } + es7.object.entries { "edge":"13", "ie":"10", "ios":"9", "safari":"7" } + es7.object.get-own-property-descriptors { "edge":"13", "firefox":"49", "ie":"10", "ios":"9", "safari":"7" } + es7.string.pad-start { "chrome":"54", "edge":"13", "ie":"10", "ios":"9", "safari":"7" } + es7.string.pad-end { "chrome":"54", "edge":"13", "ie":"10", "ios":"9", "safari":"7" } + web.timers { "chrome":"54", "edge":"13", "firefox":"49", "ie":"10", "ios":"9", "safari":"7" } + web.immediate { "chrome":"54", "edge":"13", "firefox":"49", "ie":"10", "ios":"9", "safari":"7" } + web.dom.iterable { "chrome":"54", "edge":"13", "firefox":"49", "ie":"10", "ios":"9", "safari":"7" } +src/in.js -> lib/in.js \ No newline at end of file diff --git a/experimental/babel-preset-env/test/debug-fixtures/usage-none/in/in.js b/experimental/babel-preset-env/test/debug-fixtures/usage-none/in/in.js new file mode 100644 index 0000000000..4ec1fa479e --- /dev/null +++ b/experimental/babel-preset-env/test/debug-fixtures/usage-none/in/in.js @@ -0,0 +1 @@ +var foo = "bar"; diff --git a/experimental/babel-preset-env/test/debug-fixtures/usage-none/in/in2.js b/experimental/babel-preset-env/test/debug-fixtures/usage-none/in/in2.js new file mode 100644 index 0000000000..3fbea9d211 --- /dev/null +++ b/experimental/babel-preset-env/test/debug-fixtures/usage-none/in/in2.js @@ -0,0 +1,5 @@ +var x = 0; + +for (var i = 0; i < 5; i++) { + x += i; +} diff --git a/experimental/babel-preset-env/test/debug-fixtures/usage-none/options.json b/experimental/babel-preset-env/test/debug-fixtures/usage-none/options.json new file mode 100644 index 0000000000..f1f5db8b10 --- /dev/null +++ b/experimental/babel-preset-env/test/debug-fixtures/usage-none/options.json @@ -0,0 +1,13 @@ +{ + "presets": [ + ["../../lib", { + "debug": true, + "targets": { + "chrome": 52, + "firefox": 50, + "ie": 11 + }, + "useBuiltIns": "usage" + }] + ] +} diff --git a/experimental/babel-preset-env/test/debug-fixtures/usage-none/stdout.txt b/experimental/babel-preset-env/test/debug-fixtures/usage-none/stdout.txt new file mode 100644 index 0000000000..35c2ad7ead --- /dev/null +++ b/experimental/babel-preset-env/test/debug-fixtures/usage-none/stdout.txt @@ -0,0 +1,43 @@ +babel-preset-env: `DEBUG` option + +Using targets: +{ + "chrome": "52", + "firefox": "50", + "ie": "11" +} + +Using modules transform: commonjs + +Using plugins: + check-es2015-constants { "firefox":"50", "ie":"11" } + transform-es2015-arrow-functions { "ie":"11" } + transform-es2015-block-scoping { "firefox":"50", "ie":"11" } + transform-es2015-classes { "ie":"11" } + transform-es2015-computed-properties { "ie":"11" } + transform-es2015-destructuring { "firefox":"50", "ie":"11" } + transform-es2015-duplicate-keys { "ie":"11" } + transform-es2015-for-of { "firefox":"50", "ie":"11" } + transform-es2015-function-name { "firefox":"50", "ie":"11" } + transform-es2015-literals { "firefox":"50", "ie":"11" } + transform-es2015-object-super { "ie":"11" } + transform-es2015-parameters { "firefox":"50", "ie":"11" } + transform-es2015-shorthand-properties { "ie":"11" } + transform-es2015-spread { "ie":"11" } + transform-es2015-sticky-regex { "ie":"11" } + transform-es2015-template-literals { "ie":"11" } + transform-es2015-typeof-symbol { "ie":"11" } + transform-es2015-unicode-regex { "ie":"11" } + transform-new-target { "ie":"11" } + transform-regenerator { "firefox":"50", "ie":"11" } + transform-exponentiation-operator { "firefox":"50", "ie":"11" } + transform-async-to-generator { "chrome":"52", "firefox":"50", "ie":"11" } + syntax-trailing-function-commas { "chrome":"52", "firefox":"50", "ie":"11" } + +Using polyfills with `usage` option: + +[src/in.js] Based on your code and targets, none were added. +src/in.js -> lib/in.js + +[src/in2.js] Based on your code and targets, none were added. +src/in2.js -> lib/in2.js \ No newline at end of file diff --git a/experimental/babel-preset-env/test/debug-fixtures/usage-with-import/in/in.js b/experimental/babel-preset-env/test/debug-fixtures/usage-with-import/in/in.js new file mode 100644 index 0000000000..ac43f2a044 --- /dev/null +++ b/experimental/babel-preset-env/test/debug-fixtures/usage-with-import/in/in.js @@ -0,0 +1 @@ +import 'babel-polyfill'; \ No newline at end of file diff --git a/experimental/babel-preset-env/test/debug-fixtures/usage-with-import/options.json b/experimental/babel-preset-env/test/debug-fixtures/usage-with-import/options.json new file mode 100644 index 0000000000..bd129237f8 --- /dev/null +++ b/experimental/babel-preset-env/test/debug-fixtures/usage-with-import/options.json @@ -0,0 +1,11 @@ +{ + "presets": [ + ["../../lib", { + "debug": true, + "targets": { + "chrome": 55 + }, + "useBuiltIns": "usage" + }] + ] +} diff --git a/experimental/babel-preset-env/test/debug-fixtures/usage-with-import/stderr.txt b/experimental/babel-preset-env/test/debug-fixtures/usage-with-import/stderr.txt new file mode 100644 index 0000000000..3b90ffcb27 --- /dev/null +++ b/experimental/babel-preset-env/test/debug-fixtures/usage-with-import/stderr.txt @@ -0,0 +1,2 @@ + When setting `useBuiltIns: 'usage'`, polyfills are automatically imported when needed. + Please remove the `import 'babel-polyfill'` call or use `useBuiltIns: 'entry'` instead. \ No newline at end of file diff --git a/experimental/babel-preset-env/test/debug-fixtures/usage-with-import/stdout.txt b/experimental/babel-preset-env/test/debug-fixtures/usage-with-import/stdout.txt new file mode 100644 index 0000000000..8a6c6ef38e --- /dev/null +++ b/experimental/babel-preset-env/test/debug-fixtures/usage-with-import/stdout.txt @@ -0,0 +1,16 @@ +babel-preset-env: `DEBUG` option + +Using targets: +{ + "chrome": "55" +} + +Using modules transform: commonjs + +Using plugins: + syntax-trailing-function-commas { "chrome":"55" } + +Using polyfills with `usage` option: + +[src/in.js] Based on your code and targets, none were added. +src/in.js -> lib/in.js \ No newline at end of file diff --git a/experimental/babel-preset-env/test/debug-fixtures/usage/in/in.js b/experimental/babel-preset-env/test/debug-fixtures/usage/in/in.js new file mode 100644 index 0000000000..b464d7f172 --- /dev/null +++ b/experimental/babel-preset-env/test/debug-fixtures/usage/in/in.js @@ -0,0 +1,3 @@ +const foo = new Promise((resolve) => { + resolve(new Map()); +}); diff --git a/experimental/babel-preset-env/test/debug-fixtures/usage/in/in2.js b/experimental/babel-preset-env/test/debug-fixtures/usage/in/in2.js new file mode 100644 index 0000000000..4915d62092 --- /dev/null +++ b/experimental/babel-preset-env/test/debug-fixtures/usage/in/in2.js @@ -0,0 +1,3 @@ +function* a() { + yield* 1; +} diff --git a/experimental/babel-preset-env/test/debug-fixtures/usage/options.json b/experimental/babel-preset-env/test/debug-fixtures/usage/options.json new file mode 100644 index 0000000000..f1f5db8b10 --- /dev/null +++ b/experimental/babel-preset-env/test/debug-fixtures/usage/options.json @@ -0,0 +1,13 @@ +{ + "presets": [ + ["../../lib", { + "debug": true, + "targets": { + "chrome": 52, + "firefox": 50, + "ie": 11 + }, + "useBuiltIns": "usage" + }] + ] +} diff --git a/experimental/babel-preset-env/test/debug-fixtures/usage/stdout.txt b/experimental/babel-preset-env/test/debug-fixtures/usage/stdout.txt new file mode 100644 index 0000000000..bc9f0b2a7b --- /dev/null +++ b/experimental/babel-preset-env/test/debug-fixtures/usage/stdout.txt @@ -0,0 +1,47 @@ +babel-preset-env: `DEBUG` option + +Using targets: +{ + "chrome": "52", + "firefox": "50", + "ie": "11" +} + +Using modules transform: commonjs + +Using plugins: + check-es2015-constants { "firefox":"50", "ie":"11" } + transform-es2015-arrow-functions { "ie":"11" } + transform-es2015-block-scoping { "firefox":"50", "ie":"11" } + transform-es2015-classes { "ie":"11" } + transform-es2015-computed-properties { "ie":"11" } + transform-es2015-destructuring { "firefox":"50", "ie":"11" } + transform-es2015-duplicate-keys { "ie":"11" } + transform-es2015-for-of { "firefox":"50", "ie":"11" } + transform-es2015-function-name { "firefox":"50", "ie":"11" } + transform-es2015-literals { "firefox":"50", "ie":"11" } + transform-es2015-object-super { "ie":"11" } + transform-es2015-parameters { "firefox":"50", "ie":"11" } + transform-es2015-shorthand-properties { "ie":"11" } + transform-es2015-spread { "ie":"11" } + transform-es2015-sticky-regex { "ie":"11" } + transform-es2015-template-literals { "ie":"11" } + transform-es2015-typeof-symbol { "ie":"11" } + transform-es2015-unicode-regex { "ie":"11" } + transform-new-target { "ie":"11" } + transform-regenerator { "firefox":"50", "ie":"11" } + transform-exponentiation-operator { "firefox":"50", "ie":"11" } + transform-async-to-generator { "chrome":"52", "firefox":"50", "ie":"11" } + syntax-trailing-function-commas { "chrome":"52", "firefox":"50", "ie":"11" } + +Using polyfills with `usage` option: + +[src/in.js] Added following polyfills: + es6.promise { "ie":"11" } + es6.map { "firefox":"50", "ie":"11" } +src/in.js -> lib/in.js + +[src/in2.js] Added following polyfills: + regenerator-runtime { "chrome":"52", "firefox":"50", "ie":"11" } + web.dom.iterable { "chrome":"52", "firefox":"50", "ie":"11" } +src/in2.js -> lib/in2.js \ No newline at end of file diff --git a/experimental/babel-preset-env/test/debug-fixtures/versions-decimals/in/in.js b/experimental/babel-preset-env/test/debug-fixtures/versions-decimals/in/in.js new file mode 100644 index 0000000000..b012711b90 --- /dev/null +++ b/experimental/babel-preset-env/test/debug-fixtures/versions-decimals/in/in.js @@ -0,0 +1 @@ +import 'babel-polyfill'; diff --git a/experimental/babel-preset-env/test/debug-fixtures/versions-decimals/options.json b/experimental/babel-preset-env/test/debug-fixtures/versions-decimals/options.json new file mode 100644 index 0000000000..5afbc32afc --- /dev/null +++ b/experimental/babel-preset-env/test/debug-fixtures/versions-decimals/options.json @@ -0,0 +1,14 @@ +{ + "presets": [ + ["../../lib", { + "useBuiltIns": "entry", + "debug": true, + "targets": { + "chrome": 54, + "electron": 0.36, + "node": 6.10, + "ie": 10 + } + }] + ] +} diff --git a/experimental/babel-preset-env/test/debug-fixtures/versions-decimals/stdout.txt b/experimental/babel-preset-env/test/debug-fixtures/versions-decimals/stdout.txt new file mode 100644 index 0000000000..1479ccc2dd --- /dev/null +++ b/experimental/babel-preset-env/test/debug-fixtures/versions-decimals/stdout.txt @@ -0,0 +1,138 @@ +Warning, the following targets are using a decimal version: + + electron: 0.36 + node: 6.1 + +We recommend using a string for minor/patch versions to avoid numbers like 6.10 +getting parsed as 6.1, which can lead to unexpected behavior. + +babel-preset-env: `DEBUG` option + +Using targets: +{ + "chrome": "54", + "electron": "0.36", + "ie": "10", + "node": "6.1" +} + +Using modules transform: commonjs + +Using plugins: + check-es2015-constants { "electron":"0.36", "ie":"10" } + transform-es2015-arrow-functions { "ie":"10" } + transform-es2015-block-scoped-functions { "ie":"10" } + transform-es2015-block-scoping { "electron":"0.36", "ie":"10" } + transform-es2015-classes { "ie":"10" } + transform-es2015-computed-properties { "ie":"10" } + transform-es2015-destructuring { "electron":"0.36", "ie":"10", "node":"6.1" } + transform-es2015-duplicate-keys { "ie":"10" } + transform-es2015-for-of { "electron":"0.36", "ie":"10", "node":"6.1" } + transform-es2015-function-name { "electron":"0.36", "ie":"10", "node":"6.1" } + transform-es2015-literals { "ie":"10" } + transform-es2015-object-super { "ie":"10" } + transform-es2015-parameters { "electron":"0.36", "ie":"10" } + transform-es2015-shorthand-properties { "ie":"10" } + transform-es2015-spread { "ie":"10" } + transform-es2015-sticky-regex { "electron":"0.36", "ie":"10" } + transform-es2015-template-literals { "ie":"10" } + transform-es2015-typeof-symbol { "ie":"10" } + transform-es2015-unicode-regex { "electron":"0.36", "ie":"10" } + transform-new-target { "ie":"10" } + transform-regenerator { "electron":"0.36", "ie":"10" } + transform-exponentiation-operator { "electron":"0.36", "ie":"10", "node":"6.1" } + transform-async-to-generator { "chrome":"54", "electron":"0.36", "ie":"10", "node":"6.1" } + syntax-trailing-function-commas { "chrome":"54", "electron":"0.36", "ie":"10", "node":"6.1" } + +Using polyfills with `entry` option: + +[src/in.js] Replaced `babel-polyfill` with the following polyfills: + es6.typed.array-buffer { "electron":"0.36", "ie":"10", "node":"6.1" } + es6.typed.data-view { "electron":"0.36" } + es6.typed.int8-array { "electron":"0.36", "ie":"10", "node":"6.1" } + es6.typed.uint8-array { "electron":"0.36", "ie":"10", "node":"6.1" } + es6.typed.uint8-clamped-array { "electron":"0.36", "ie":"10", "node":"6.1" } + es6.typed.int16-array { "electron":"0.36", "ie":"10", "node":"6.1" } + es6.typed.uint16-array { "electron":"0.36", "ie":"10", "node":"6.1" } + es6.typed.int32-array { "electron":"0.36", "ie":"10", "node":"6.1" } + es6.typed.uint32-array { "electron":"0.36", "ie":"10", "node":"6.1" } + es6.typed.float32-array { "electron":"0.36", "ie":"10", "node":"6.1" } + es6.typed.float64-array { "electron":"0.36", "ie":"10", "node":"6.1" } + es6.map { "electron":"0.36", "ie":"10", "node":"6.1" } + es6.set { "electron":"0.36", "ie":"10", "node":"6.1" } + es6.weak-map { "electron":"0.36", "ie":"10", "node":"6.1" } + es6.weak-set { "electron":"0.36", "ie":"10", "node":"6.1" } + es6.reflect.apply { "electron":"0.36", "ie":"10" } + es6.reflect.construct { "electron":"0.36", "ie":"10" } + es6.reflect.define-property { "electron":"0.36", "ie":"10" } + es6.reflect.delete-property { "electron":"0.36", "ie":"10" } + es6.reflect.get { "electron":"0.36", "ie":"10" } + es6.reflect.get-own-property-descriptor { "electron":"0.36", "ie":"10" } + es6.reflect.get-prototype-of { "electron":"0.36", "ie":"10" } + es6.reflect.has { "electron":"0.36", "ie":"10" } + es6.reflect.is-extensible { "electron":"0.36", "ie":"10" } + es6.reflect.own-keys { "electron":"0.36", "ie":"10" } + es6.reflect.prevent-extensions { "electron":"0.36", "ie":"10" } + es6.reflect.set { "electron":"0.36", "ie":"10" } + es6.reflect.set-prototype-of { "electron":"0.36", "ie":"10" } + es6.promise { "electron":"0.36", "ie":"10", "node":"6.1" } + es6.symbol { "electron":"0.36", "ie":"10", "node":"6.1" } + es6.object.assign { "ie":"10" } + es6.object.is { "ie":"10" } + es6.object.set-prototype-of { "ie":"10" } + es6.function.name { "electron":"0.36", "ie":"10", "node":"6.1" } + es6.string.raw { "ie":"10" } + es6.string.from-code-point { "ie":"10" } + es6.string.code-point-at { "ie":"10" } + es6.string.repeat { "ie":"10" } + es6.string.starts-with { "ie":"10" } + es6.string.ends-with { "ie":"10" } + es6.string.includes { "ie":"10" } + es6.regexp.flags { "electron":"0.36", "ie":"10" } + es6.regexp.match { "electron":"0.36", "ie":"10" } + es6.regexp.replace { "electron":"0.36", "ie":"10" } + es6.regexp.split { "electron":"0.36", "ie":"10" } + es6.regexp.search { "electron":"0.36", "ie":"10" } + es6.array.from { "electron":"0.36", "ie":"10", "node":"6.1" } + es6.array.of { "ie":"10" } + es6.array.copy-within { "ie":"10" } + es6.array.find { "ie":"10" } + es6.array.find-index { "ie":"10" } + es6.array.fill { "ie":"10" } + es6.array.iterator { "ie":"10" } + es6.number.is-finite { "ie":"10" } + es6.number.is-integer { "ie":"10" } + es6.number.is-safe-integer { "ie":"10" } + es6.number.is-nan { "ie":"10" } + es6.number.epsilon { "ie":"10" } + es6.number.min-safe-integer { "ie":"10" } + es6.number.max-safe-integer { "ie":"10" } + es6.number.parse-float { "ie":"10" } + es6.number.parse-int { "ie":"10" } + es6.math.acosh { "ie":"10" } + es6.math.asinh { "ie":"10" } + es6.math.atanh { "ie":"10" } + es6.math.cbrt { "ie":"10" } + es6.math.clz32 { "ie":"10" } + es6.math.cosh { "ie":"10" } + es6.math.expm1 { "ie":"10" } + es6.math.fround { "ie":"10" } + es6.math.hypot { "ie":"10" } + es6.math.imul { "ie":"10" } + es6.math.log1p { "ie":"10" } + es6.math.log10 { "ie":"10" } + es6.math.log2 { "ie":"10" } + es6.math.sign { "ie":"10" } + es6.math.sinh { "ie":"10" } + es6.math.tanh { "ie":"10" } + es6.math.trunc { "ie":"10" } + es7.array.includes { "ie":"10" } + es7.object.values { "electron":"0.36", "ie":"10", "node":"6.1" } + es7.object.entries { "electron":"0.36", "ie":"10", "node":"6.1" } + es7.object.get-own-property-descriptors { "electron":"0.36", "ie":"10", "node":"6.1" } + es7.string.pad-start { "chrome":"54", "electron":"0.36", "ie":"10", "node":"6.1" } + es7.string.pad-end { "chrome":"54", "electron":"0.36", "ie":"10", "node":"6.1" } + web.timers { "chrome":"54", "electron":"0.36", "ie":"10", "node":"6.1" } + web.immediate { "chrome":"54", "electron":"0.36", "ie":"10", "node":"6.1" } + web.dom.iterable { "chrome":"54", "electron":"0.36", "ie":"10", "node":"6.1" } +src/in.js -> lib/in.js \ No newline at end of file diff --git a/experimental/babel-preset-env/test/debug-fixtures/versions-strings/in/in.js b/experimental/babel-preset-env/test/debug-fixtures/versions-strings/in/in.js new file mode 100644 index 0000000000..b012711b90 --- /dev/null +++ b/experimental/babel-preset-env/test/debug-fixtures/versions-strings/in/in.js @@ -0,0 +1 @@ +import 'babel-polyfill'; diff --git a/experimental/babel-preset-env/test/debug-fixtures/versions-strings/options.json b/experimental/babel-preset-env/test/debug-fixtures/versions-strings/options.json new file mode 100644 index 0000000000..c0e3348950 --- /dev/null +++ b/experimental/babel-preset-env/test/debug-fixtures/versions-strings/options.json @@ -0,0 +1,13 @@ +{ + "presets": [ + ["../../lib", { + "useBuiltIns": "entry", + "debug": true, + "targets": { + "chrome": "54", + "node": "6.10", + "ie": "10" + } + }] + ] +} diff --git a/experimental/babel-preset-env/test/debug-fixtures/versions-strings/stdout.txt b/experimental/babel-preset-env/test/debug-fixtures/versions-strings/stdout.txt new file mode 100644 index 0000000000..6d645733de --- /dev/null +++ b/experimental/babel-preset-env/test/debug-fixtures/versions-strings/stdout.txt @@ -0,0 +1,128 @@ +babel-preset-env: `DEBUG` option + +Using targets: +{ + "chrome": "54", + "ie": "10", + "node": "6.10" +} + +Using modules transform: commonjs + +Using plugins: + check-es2015-constants { "ie":"10" } + transform-es2015-arrow-functions { "ie":"10" } + transform-es2015-block-scoped-functions { "ie":"10" } + transform-es2015-block-scoping { "ie":"10" } + transform-es2015-classes { "ie":"10" } + transform-es2015-computed-properties { "ie":"10" } + transform-es2015-destructuring { "ie":"10" } + transform-es2015-duplicate-keys { "ie":"10" } + transform-es2015-for-of { "ie":"10" } + transform-es2015-function-name { "ie":"10" } + transform-es2015-literals { "ie":"10" } + transform-es2015-object-super { "ie":"10" } + transform-es2015-parameters { "ie":"10" } + transform-es2015-shorthand-properties { "ie":"10" } + transform-es2015-spread { "ie":"10" } + transform-es2015-sticky-regex { "ie":"10" } + transform-es2015-template-literals { "ie":"10" } + transform-es2015-typeof-symbol { "ie":"10" } + transform-es2015-unicode-regex { "ie":"10" } + transform-new-target { "ie":"10" } + transform-regenerator { "ie":"10" } + transform-exponentiation-operator { "ie":"10", "node":"6.10" } + transform-async-to-generator { "chrome":"54", "ie":"10", "node":"6.10" } + syntax-trailing-function-commas { "chrome":"54", "ie":"10", "node":"6.10" } + +Using polyfills with `entry` option: + +[src/in.js] Replaced `babel-polyfill` with the following polyfills: + es6.typed.array-buffer { "ie":"10" } + es6.typed.int8-array { "ie":"10" } + es6.typed.uint8-array { "ie":"10" } + es6.typed.uint8-clamped-array { "ie":"10" } + es6.typed.int16-array { "ie":"10" } + es6.typed.uint16-array { "ie":"10" } + es6.typed.int32-array { "ie":"10" } + es6.typed.uint32-array { "ie":"10" } + es6.typed.float32-array { "ie":"10" } + es6.typed.float64-array { "ie":"10" } + es6.map { "ie":"10" } + es6.set { "ie":"10" } + es6.weak-map { "ie":"10" } + es6.weak-set { "ie":"10" } + es6.reflect.apply { "ie":"10" } + es6.reflect.construct { "ie":"10" } + es6.reflect.define-property { "ie":"10" } + es6.reflect.delete-property { "ie":"10" } + es6.reflect.get { "ie":"10" } + es6.reflect.get-own-property-descriptor { "ie":"10" } + es6.reflect.get-prototype-of { "ie":"10" } + es6.reflect.has { "ie":"10" } + es6.reflect.is-extensible { "ie":"10" } + es6.reflect.own-keys { "ie":"10" } + es6.reflect.prevent-extensions { "ie":"10" } + es6.reflect.set { "ie":"10" } + es6.reflect.set-prototype-of { "ie":"10" } + es6.promise { "ie":"10" } + es6.symbol { "ie":"10" } + es6.object.assign { "ie":"10" } + es6.object.is { "ie":"10" } + es6.object.set-prototype-of { "ie":"10" } + es6.function.name { "ie":"10" } + es6.string.raw { "ie":"10" } + es6.string.from-code-point { "ie":"10" } + es6.string.code-point-at { "ie":"10" } + es6.string.repeat { "ie":"10" } + es6.string.starts-with { "ie":"10" } + es6.string.ends-with { "ie":"10" } + es6.string.includes { "ie":"10" } + es6.regexp.flags { "ie":"10" } + es6.regexp.match { "ie":"10" } + es6.regexp.replace { "ie":"10" } + es6.regexp.split { "ie":"10" } + es6.regexp.search { "ie":"10" } + es6.array.from { "ie":"10" } + es6.array.of { "ie":"10" } + es6.array.copy-within { "ie":"10" } + es6.array.find { "ie":"10" } + es6.array.find-index { "ie":"10" } + es6.array.fill { "ie":"10" } + es6.array.iterator { "ie":"10" } + es6.number.is-finite { "ie":"10" } + es6.number.is-integer { "ie":"10" } + es6.number.is-safe-integer { "ie":"10" } + es6.number.is-nan { "ie":"10" } + es6.number.epsilon { "ie":"10" } + es6.number.min-safe-integer { "ie":"10" } + es6.number.max-safe-integer { "ie":"10" } + es6.number.parse-float { "ie":"10" } + es6.number.parse-int { "ie":"10" } + es6.math.acosh { "ie":"10" } + es6.math.asinh { "ie":"10" } + es6.math.atanh { "ie":"10" } + es6.math.cbrt { "ie":"10" } + es6.math.clz32 { "ie":"10" } + es6.math.cosh { "ie":"10" } + es6.math.expm1 { "ie":"10" } + es6.math.fround { "ie":"10" } + es6.math.hypot { "ie":"10" } + es6.math.imul { "ie":"10" } + es6.math.log1p { "ie":"10" } + es6.math.log10 { "ie":"10" } + es6.math.log2 { "ie":"10" } + es6.math.sign { "ie":"10" } + es6.math.sinh { "ie":"10" } + es6.math.tanh { "ie":"10" } + es6.math.trunc { "ie":"10" } + es7.array.includes { "ie":"10" } + es7.object.values { "ie":"10", "node":"6.10" } + es7.object.entries { "ie":"10", "node":"6.10" } + es7.object.get-own-property-descriptors { "ie":"10", "node":"6.10" } + es7.string.pad-start { "chrome":"54", "ie":"10", "node":"6.10" } + es7.string.pad-end { "chrome":"54", "ie":"10", "node":"6.10" } + web.timers { "chrome":"54", "ie":"10", "node":"6.10" } + web.immediate { "chrome":"54", "ie":"10", "node":"6.10" } + web.dom.iterable { "chrome":"54", "ie":"10", "node":"6.10" } +src/in.js -> lib/in.js \ No newline at end of file diff --git a/experimental/babel-preset-env/test/fixtures.js b/experimental/babel-preset-env/test/fixtures.js new file mode 100644 index 0000000000..09cfbc31f5 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures.js @@ -0,0 +1,3 @@ +import runner from "babel-helper-plugin-test-runner"; + +runner(__dirname); diff --git a/experimental/babel-preset-env/test/fixtures/dom-iterable/symbol-iterator-in/actual.js b/experimental/babel-preset-env/test/fixtures/dom-iterable/symbol-iterator-in/actual.js new file mode 100644 index 0000000000..3d72e8e71c --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/dom-iterable/symbol-iterator-in/actual.js @@ -0,0 +1 @@ +Symbol.iterator in arr diff --git a/experimental/babel-preset-env/test/fixtures/dom-iterable/symbol-iterator-in/expected.js b/experimental/babel-preset-env/test/fixtures/dom-iterable/symbol-iterator-in/expected.js new file mode 100644 index 0000000000..ce74075426 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/dom-iterable/symbol-iterator-in/expected.js @@ -0,0 +1,3 @@ +import "babel-polyfill/lib/core-js/modules/es6.symbol"; +import "babel-polyfill/lib/core-js/modules/web.dom.iterable"; +Symbol.iterator in arr; \ No newline at end of file diff --git a/experimental/babel-preset-env/test/fixtures/dom-iterable/symbol-iterator-in/options.json b/experimental/babel-preset-env/test/fixtures/dom-iterable/symbol-iterator-in/options.json new file mode 100644 index 0000000000..fa0e9434e2 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/dom-iterable/symbol-iterator-in/options.json @@ -0,0 +1,8 @@ +{ + "presets": [ + ["../../../../lib", { + "useBuiltIns": "usage", + "modules": false + }] + ] +} diff --git a/experimental/babel-preset-env/test/fixtures/dom-iterable/symbol-iterator/actual.js b/experimental/babel-preset-env/test/fixtures/dom-iterable/symbol-iterator/actual.js new file mode 100644 index 0000000000..c44a50ddfd --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/dom-iterable/symbol-iterator/actual.js @@ -0,0 +1 @@ +arr[Symbol.iterator]() diff --git a/experimental/babel-preset-env/test/fixtures/dom-iterable/symbol-iterator/expected.js b/experimental/babel-preset-env/test/fixtures/dom-iterable/symbol-iterator/expected.js new file mode 100644 index 0000000000..ef4793ceac --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/dom-iterable/symbol-iterator/expected.js @@ -0,0 +1,3 @@ +import "babel-polyfill/lib/core-js/modules/es6.symbol"; +import "babel-polyfill/lib/core-js/modules/web.dom.iterable"; +arr[Symbol.iterator](); \ No newline at end of file diff --git a/experimental/babel-preset-env/test/fixtures/dom-iterable/symbol-iterator/options.json b/experimental/babel-preset-env/test/fixtures/dom-iterable/symbol-iterator/options.json new file mode 100644 index 0000000000..fa0e9434e2 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/dom-iterable/symbol-iterator/options.json @@ -0,0 +1,8 @@ +{ + "presets": [ + ["../../../../lib", { + "useBuiltIns": "usage", + "modules": false + }] + ] +} diff --git a/experimental/babel-preset-env/test/fixtures/dom-iterable/yield-non-star/actual.js b/experimental/babel-preset-env/test/fixtures/dom-iterable/yield-non-star/actual.js new file mode 100644 index 0000000000..927d2f2772 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/dom-iterable/yield-non-star/actual.js @@ -0,0 +1,3 @@ +function* a() { + yield 1; +} diff --git a/experimental/babel-preset-env/test/fixtures/dom-iterable/yield-non-star/expected.js b/experimental/babel-preset-env/test/fixtures/dom-iterable/yield-non-star/expected.js new file mode 100644 index 0000000000..5fd0b56210 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/dom-iterable/yield-non-star/expected.js @@ -0,0 +1,3 @@ +function* a() { + yield 1; +} \ No newline at end of file diff --git a/experimental/babel-preset-env/test/fixtures/dom-iterable/yield-non-star/options.json b/experimental/babel-preset-env/test/fixtures/dom-iterable/yield-non-star/options.json new file mode 100644 index 0000000000..d87fce3e6a --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/dom-iterable/yield-non-star/options.json @@ -0,0 +1,11 @@ +{ + "presets": [ + ["../../../../lib", { + "useBuiltIns": "usage", + "targets": { + "chrome": 55 + }, + "modules": false + }] + ] +} diff --git a/experimental/babel-preset-env/test/fixtures/dom-iterable/yield-star/actual.js b/experimental/babel-preset-env/test/fixtures/dom-iterable/yield-star/actual.js new file mode 100644 index 0000000000..4915d62092 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/dom-iterable/yield-star/actual.js @@ -0,0 +1,3 @@ +function* a() { + yield* 1; +} diff --git a/experimental/babel-preset-env/test/fixtures/dom-iterable/yield-star/expected.js b/experimental/babel-preset-env/test/fixtures/dom-iterable/yield-star/expected.js new file mode 100644 index 0000000000..e9331e225b --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/dom-iterable/yield-star/expected.js @@ -0,0 +1,5 @@ +import "babel-polyfill/lib/core-js/modules/web.dom.iterable"; + +function* a() { + yield* 1; +} \ No newline at end of file diff --git a/experimental/babel-preset-env/test/fixtures/dom-iterable/yield-star/options.json b/experimental/babel-preset-env/test/fixtures/dom-iterable/yield-star/options.json new file mode 100644 index 0000000000..d87fce3e6a --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/dom-iterable/yield-star/options.json @@ -0,0 +1,11 @@ +{ + "presets": [ + ["../../../../lib", { + "useBuiltIns": "usage", + "targets": { + "chrome": 55 + }, + "modules": false + }] + ] +} diff --git a/experimental/babel-preset-env/test/fixtures/plugin-options/filters-duplicates/actual.js b/experimental/babel-preset-env/test/fixtures/plugin-options/filters-duplicates/actual.js new file mode 100644 index 0000000000..d3984c50aa --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/plugin-options/filters-duplicates/actual.js @@ -0,0 +1 @@ +import "babel-polyfill"; diff --git a/experimental/babel-preset-env/test/fixtures/plugin-options/filters-duplicates/expected.js b/experimental/babel-preset-env/test/fixtures/plugin-options/filters-duplicates/expected.js new file mode 100644 index 0000000000..381fec489f --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/plugin-options/filters-duplicates/expected.js @@ -0,0 +1,2 @@ +import "babel-polyfill/lib/core-js/modules/es6.typed.data-view"; +import "babel-polyfill/lib/core-js/modules/es6.reflect.apply"; \ No newline at end of file diff --git a/experimental/babel-preset-env/test/fixtures/plugin-options/filters-duplicates/options.json b/experimental/babel-preset-env/test/fixtures/plugin-options/filters-duplicates/options.json new file mode 100644 index 0000000000..f8b18da618 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/plugin-options/filters-duplicates/options.json @@ -0,0 +1,11 @@ +{ + "plugins": [ + ["../../../../lib/use-built-ins-entry-plugin", { + "polyfills": [ + "es6.typed.data-view", + "es6.typed.data-view", + "es6.reflect.apply" + ] + }] + ] +} diff --git a/experimental/babel-preset-env/test/fixtures/plugin-options/regenerator-false/actual.js b/experimental/babel-preset-env/test/fixtures/plugin-options/regenerator-false/actual.js new file mode 100644 index 0000000000..d3984c50aa --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/plugin-options/regenerator-false/actual.js @@ -0,0 +1 @@ +import "babel-polyfill"; diff --git a/experimental/babel-preset-env/test/fixtures/plugin-options/regenerator-false/options.json b/experimental/babel-preset-env/test/fixtures/plugin-options/regenerator-false/options.json new file mode 100644 index 0000000000..e46957a874 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/plugin-options/regenerator-false/options.json @@ -0,0 +1,8 @@ +{ + "plugins": [ + ["../../../../lib/use-built-ins-entry-plugin", { + "regenerator": false, + "polyfills": [] + }] + ] +} diff --git a/experimental/babel-preset-env/test/fixtures/plugin-options/regenerator-true/actual.js b/experimental/babel-preset-env/test/fixtures/plugin-options/regenerator-true/actual.js new file mode 100644 index 0000000000..d3984c50aa --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/plugin-options/regenerator-true/actual.js @@ -0,0 +1 @@ +import "babel-polyfill"; diff --git a/experimental/babel-preset-env/test/fixtures/plugin-options/regenerator-true/expected.js b/experimental/babel-preset-env/test/fixtures/plugin-options/regenerator-true/expected.js new file mode 100644 index 0000000000..9da2182494 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/plugin-options/regenerator-true/expected.js @@ -0,0 +1 @@ +import "babel-polyfill/lib/regenerator-runtime/runtime"; \ No newline at end of file diff --git a/experimental/babel-preset-env/test/fixtures/plugin-options/regenerator-true/options.json b/experimental/babel-preset-env/test/fixtures/plugin-options/regenerator-true/options.json new file mode 100644 index 0000000000..e274811992 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/plugin-options/regenerator-true/options.json @@ -0,0 +1,8 @@ +{ + "plugins": [ + ["../../../../lib/use-built-ins-entry-plugin", { + "regenerator": true, + "polyfills": [] + }] + ] +} diff --git a/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/builtins-false/actual.js b/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/builtins-false/actual.js new file mode 100644 index 0000000000..45366a4fcb --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/builtins-false/actual.js @@ -0,0 +1,24 @@ +Array.from; // static method +Map; // built-in +new Promise(); // new builtin +Symbol.match; // as member expression +_arr[Symbol.iterator](); // Symbol.iterator + +// no import +Array.asdf; +Array2.from; +Map2; +new Promise2(); +Symbol.asdf; +Symbol2.match; +_arr9[Symbol2.iterator](); +_arr9[Symbol.iterator2](); + +G.assign; // static method +function H(WeakMap) { var blah = new WeakMap(); } // shadowed + +// not covered by this plugin +var asdf = 'copyWithin'; +i[asdf] // computed with identifier +j[`copyWithin`] // computed with template +var { [asdf]: _a } = k; // computed diff --git a/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/builtins-false/expected.js b/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/builtins-false/expected.js new file mode 100644 index 0000000000..b18dead740 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/builtins-false/expected.js @@ -0,0 +1,38 @@ +Array.from; // static method + +Map; // built-in + +new Promise(); // new builtin + +Symbol.match; // as member expression + +_arr[Symbol.iterator](); // Symbol.iterator +// no import + + +Array.asdf; +Array2.from; +Map2; +new Promise2(); +Symbol.asdf; +Symbol2.match; + +_arr9[Symbol2.iterator](); + +_arr9[Symbol.iterator2](); + +G.assign; // static method + +function H(WeakMap) { + var blah = new WeakMap(); +} // shadowed +// not covered by this plugin + + +var asdf = 'copyWithin'; +i[asdf]; // computed with identifier + +j["copyWithin"]; // computed with template + +var _k = k, + _a = _k[asdf]; // computed \ No newline at end of file diff --git a/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/builtins-false/options.json b/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/builtins-false/options.json new file mode 100644 index 0000000000..33eed36353 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/builtins-false/options.json @@ -0,0 +1,8 @@ +{ + "presets": [ + ["../../../../lib", { + "useBuiltIns": false, + "modules": false + }] + ] +} diff --git a/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/builtins-used-instance-methods-native-support/actual.js b/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/builtins-used-instance-methods-native-support/actual.js new file mode 100644 index 0000000000..35cd0f9960 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/builtins-used-instance-methods-native-support/actual.js @@ -0,0 +1,12 @@ +Array.from; // static function +Map; // top level built-in + +// instance methods may have false positives (which is ok) +a.includes(); // method call +b['find'] // computed string? +c.prototype.findIndex(); // .prototype +d.fill.bind(); //.bind +e.padStart.apply(); // .apply +f.padEnd.call(); // .call +String.prototype.startsWith.call; // prototype.call +var { codePointAt, endsWith } = k; // destructuring diff --git a/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/builtins-used-instance-methods-native-support/expected.js b/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/builtins-used-instance-methods-native-support/expected.js new file mode 100644 index 0000000000..c8ed263324 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/builtins-used-instance-methods-native-support/expected.js @@ -0,0 +1,23 @@ +Array.from; // static function + +Map; // top level built-in +// instance methods may have false positives (which is ok) + +a.includes(); // method call + +b['find']; // computed string? + +c.prototype.findIndex(); // .prototype + +d.fill.bind(); //.bind + +e.padStart.apply(); // .apply + +f.padEnd.call(); // .call + +String.prototype.startsWith.call; // prototype.call + +var { + codePointAt, + endsWith +} = k; // destructuring \ No newline at end of file diff --git a/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/builtins-used-instance-methods-native-support/options.json b/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/builtins-used-instance-methods-native-support/options.json new file mode 100644 index 0000000000..e41e024eb2 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/builtins-used-instance-methods-native-support/options.json @@ -0,0 +1,11 @@ +{ + "presets": [ + ["../../../../lib", { + "useBuiltIns": "usage", + "modules": false, + "targets": { + "chrome": 58 + } + }] + ] +} diff --git a/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/builtins-used-instance-methods/actual.js b/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/builtins-used-instance-methods/actual.js new file mode 100644 index 0000000000..4528eff880 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/builtins-used-instance-methods/actual.js @@ -0,0 +1,20 @@ +Array.from; // static function +Map; // top level built-in + +// instance methods may have false positives (which is ok) +a.includes(); // method call +b['find'] // computed string? +c.prototype.findIndex(); // .prototype +d.fill.bind(); //.bind +e.padStart.apply(); // .apply +f.padEnd.call(); // .call +String.prototype.startsWith.call; // prototype.call +var { codePointAt, endsWith } = k; // destructuring + +var asdf = "copyWithin"; +var asdf2 = "split"; +var asdf3 = "re" + "place"; +i[asdf]; // computed with identifier +j[`search`]; // computed with template +k[asdf3] // computed with concat strings +var { [asdf2]: _a } = k; // computed diff --git a/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/builtins-used-instance-methods/expected.js b/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/builtins-used-instance-methods/expected.js new file mode 100644 index 0000000000..167a3e21ca --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/builtins-used-instance-methods/expected.js @@ -0,0 +1,50 @@ +import "babel-polyfill/lib/core-js/modules/es6.regexp.split"; +import "babel-polyfill/lib/core-js/modules/es6.regexp.replace"; +import "babel-polyfill/lib/core-js/modules/es6.regexp.search"; +import "babel-polyfill/lib/core-js/modules/es6.array.copy-within"; +import "babel-polyfill/lib/core-js/modules/es6.string.ends-with"; +import "babel-polyfill/lib/core-js/modules/es6.string.code-point-at"; +import "babel-polyfill/lib/core-js/modules/es6.string.starts-with"; +import "babel-polyfill/lib/core-js/modules/es7.string.pad-end"; +import "babel-polyfill/lib/core-js/modules/es7.string.pad-start"; +import "babel-polyfill/lib/core-js/modules/es6.array.fill"; +import "babel-polyfill/lib/core-js/modules/es6.array.find-index"; +import "babel-polyfill/lib/core-js/modules/es6.array.find"; +import "babel-polyfill/lib/core-js/modules/es7.array.includes"; +import "babel-polyfill/lib/core-js/modules/es6.string.includes"; +import "babel-polyfill/lib/core-js/modules/es6.map"; +import "babel-polyfill/lib/core-js/modules/es6.array.from"; +Array.from; // static function + +Map; // top level built-in +// instance methods may have false positives (which is ok) + +a.includes(); // method call + +b['find']; // computed string? + +c.prototype.findIndex(); // .prototype + +d.fill.bind(); //.bind + +e.padStart.apply(); // .apply + +f.padEnd.call(); // .call + +String.prototype.startsWith.call; // prototype.call + +var _k = k, + codePointAt = _k.codePointAt, + endsWith = _k.endsWith; // destructuring + +var asdf = "copyWithin"; +var asdf2 = "split"; +var asdf3 = "re" + "place"; +i[asdf]; // computed with identifier + +j["search"]; // computed with template + +k[asdf3]; // computed with concat strings + +var _k2 = k, + _a = _k2[asdf2]; // computed \ No newline at end of file diff --git a/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/builtins-used-instance-methods/options.json b/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/builtins-used-instance-methods/options.json new file mode 100644 index 0000000000..fa0e9434e2 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/builtins-used-instance-methods/options.json @@ -0,0 +1,8 @@ +{ + "presets": [ + ["../../../../lib", { + "useBuiltIns": "usage", + "modules": false + }] + ] +} diff --git a/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/builtins-used-native-support/actual.js b/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/builtins-used-native-support/actual.js new file mode 100644 index 0000000000..68285538d3 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/builtins-used-native-support/actual.js @@ -0,0 +1,25 @@ +Array.from; // static method +Map; // built-in +new Promise(); // new builtin +Symbol.match; // as member expression + +// no import +Array.asdf; +Array2.from; +Map2; +new Promise2(); +Symbol.asdf; +Symbol2.match; +_arr9[Symbol2.iterator](); +_arr9[Symbol.iterator2](); + +G.assign; // static method +function H(WeakMap) { + var blah = new WeakMap(); +} // shadowed + +// not covered by this plugin +var asdf = 'copyWithin'; +i[asdf]; // computed with identifier +j[`copyWithin`]; // computed with template +var { [asdf]: _a } = k; // computed diff --git a/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/builtins-used-native-support/expected.js b/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/builtins-used-native-support/expected.js new file mode 100644 index 0000000000..c9edfcc76d --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/builtins-used-native-support/expected.js @@ -0,0 +1,36 @@ +Array.from; // static method + +Map; // built-in + +new Promise(); // new builtin + +Symbol.match; // as member expression +// no import + +Array.asdf; +Array2.from; +Map2; +new Promise2(); +Symbol.asdf; +Symbol2.match; + +_arr9[Symbol2.iterator](); + +_arr9[Symbol.iterator2](); + +G.assign; // static method + +function H(WeakMap) { + var blah = new WeakMap(); +} // shadowed +// not covered by this plugin + + +var asdf = 'copyWithin'; +i[asdf]; // computed with identifier + +j[`copyWithin`]; // computed with template + +var { + [asdf]: _a +} = k; // computed \ No newline at end of file diff --git a/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/builtins-used-native-support/options.json b/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/builtins-used-native-support/options.json new file mode 100644 index 0000000000..e41e024eb2 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/builtins-used-native-support/options.json @@ -0,0 +1,11 @@ +{ + "presets": [ + ["../../../../lib", { + "useBuiltIns": "usage", + "modules": false, + "targets": { + "chrome": 58 + } + }] + ] +} diff --git a/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/builtins-used/actual.js b/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/builtins-used/actual.js new file mode 100644 index 0000000000..fff74225a2 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/builtins-used/actual.js @@ -0,0 +1,18 @@ +Array.from; // static method +Map; // built-in +new Promise(); // new builtin +Symbol.match; // as member expression +_arr[Symbol.iterator](); // Symbol.iterator + +// no import +Array.asdf; +Array2.from; +Map2; +new Promise2(); +Symbol.asdf; +Symbol2.match; +_arr9[Symbol2.iterator](); +_arr9[Symbol.iterator2](); + +G.assign; // static method +function H(WeakMap) { var blah = new WeakMap(); } // shadowed diff --git a/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/builtins-used/expected.js b/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/builtins-used/expected.js new file mode 100644 index 0000000000..6e2d97b81e --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/builtins-used/expected.js @@ -0,0 +1,34 @@ +import "babel-polyfill/lib/core-js/modules/web.dom.iterable"; +import "babel-polyfill/lib/core-js/modules/es6.symbol"; +import "babel-polyfill/lib/core-js/modules/es6.regexp.match"; +import "babel-polyfill/lib/core-js/modules/es6.promise"; +import "babel-polyfill/lib/core-js/modules/es6.map"; +import "babel-polyfill/lib/core-js/modules/es6.array.from"; +Array.from; // static method + +Map; // built-in + +new Promise(); // new builtin + +Symbol.match; // as member expression + +_arr[Symbol.iterator](); // Symbol.iterator +// no import + + +Array.asdf; +Array2.from; +Map2; +new Promise2(); +Symbol.asdf; +Symbol2.match; + +_arr9[Symbol2.iterator](); + +_arr9[Symbol.iterator2](); + +G.assign; // static method + +function H(WeakMap) { + var blah = new WeakMap(); +} // shadowed \ No newline at end of file diff --git a/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/builtins-used/options.json b/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/builtins-used/options.json new file mode 100644 index 0000000000..fa0e9434e2 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/builtins-used/options.json @@ -0,0 +1,8 @@ +{ + "presets": [ + ["../../../../lib", { + "useBuiltIns": "usage", + "modules": false + }] + ] +} diff --git a/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/no-builtins-used/actual.js b/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/no-builtins-used/actual.js new file mode 100644 index 0000000000..f688910ec0 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/no-builtins-used/actual.js @@ -0,0 +1 @@ +var a = 1; diff --git a/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/no-builtins-used/expected.js b/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/no-builtins-used/expected.js new file mode 100644 index 0000000000..16a62bc21d --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/no-builtins-used/expected.js @@ -0,0 +1 @@ +var a = 1; \ No newline at end of file diff --git a/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/no-builtins-used/options.json b/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/no-builtins-used/options.json new file mode 100644 index 0000000000..fa0e9434e2 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/no-builtins-used/options.json @@ -0,0 +1,8 @@ +{ + "presets": [ + ["../../../../lib", { + "useBuiltIns": "usage", + "modules": false + }] + ] +} diff --git a/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/regenerator-used-async-native-support/actual.js b/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/regenerator-used-async-native-support/actual.js new file mode 100644 index 0000000000..8f6724b27f --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/regenerator-used-async-native-support/actual.js @@ -0,0 +1 @@ +async function a(){} diff --git a/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/regenerator-used-async-native-support/expected.js b/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/regenerator-used-async-native-support/expected.js new file mode 100644 index 0000000000..988bf3c6d1 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/regenerator-used-async-native-support/expected.js @@ -0,0 +1 @@ +async function a() {} \ No newline at end of file diff --git a/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/regenerator-used-async-native-support/options.json b/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/regenerator-used-async-native-support/options.json new file mode 100644 index 0000000000..241b880ce4 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/regenerator-used-async-native-support/options.json @@ -0,0 +1,11 @@ +{ + "presets": [ + ["../../../../lib", { + "useBuiltIns": "usage", + "modules": false, + "targets": { + "chrome": 55 + } + }] + ] +} diff --git a/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/regenerator-used-async/actual.js b/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/regenerator-used-async/actual.js new file mode 100644 index 0000000000..8f6724b27f --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/regenerator-used-async/actual.js @@ -0,0 +1 @@ +async function a(){} diff --git a/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/regenerator-used-async/expected.js b/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/regenerator-used-async/expected.js new file mode 100644 index 0000000000..3f344dccf4 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/regenerator-used-async/expected.js @@ -0,0 +1,24 @@ +import "babel-polyfill/lib/core-js/modules/es6.promise"; +import "babel-polyfill/lib/regenerator-runtime/runtime"; + +var a = function () { + var _ref = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee() { + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + case "end": + return _context.stop(); + } + } + }, _callee, this); + })); + + return function a() { + return _ref.apply(this, arguments); + }; +}(); + +function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } function _next(value) { step("next", value); } function _throw(err) { step("throw", err); } _next(); }); }; } diff --git a/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/regenerator-used-async/options.json b/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/regenerator-used-async/options.json new file mode 100644 index 0000000000..fa0e9434e2 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/regenerator-used-async/options.json @@ -0,0 +1,8 @@ +{ + "presets": [ + ["../../../../lib", { + "useBuiltIns": "usage", + "modules": false + }] + ] +} diff --git a/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/regenerator-used-generator-native-support/actual.js b/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/regenerator-used-generator-native-support/actual.js new file mode 100644 index 0000000000..4df46943d2 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/regenerator-used-generator-native-support/actual.js @@ -0,0 +1 @@ +function* a() {} diff --git a/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/regenerator-used-generator-native-support/expected.js b/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/regenerator-used-generator-native-support/expected.js new file mode 100644 index 0000000000..835e1f47c7 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/regenerator-used-generator-native-support/expected.js @@ -0,0 +1 @@ +function* a() {} \ No newline at end of file diff --git a/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/regenerator-used-generator-native-support/options.json b/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/regenerator-used-generator-native-support/options.json new file mode 100644 index 0000000000..ec40d7f000 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/regenerator-used-generator-native-support/options.json @@ -0,0 +1,11 @@ +{ + "presets": [ + ["../../../../lib", { + "useBuiltIns": "usage", + "modules": false, + "targets": { + "node": 6 + } + }] + ] +} diff --git a/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/regenerator-used-generator/actual.js b/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/regenerator-used-generator/actual.js new file mode 100644 index 0000000000..74604e9198 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/regenerator-used-generator/actual.js @@ -0,0 +1 @@ +function* a(){} diff --git a/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/regenerator-used-generator/expected.js b/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/regenerator-used-generator/expected.js new file mode 100644 index 0000000000..617577c5ee --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/regenerator-used-generator/expected.js @@ -0,0 +1,17 @@ +import "babel-polyfill/lib/regenerator-runtime/runtime"; + +var _marked = +/*#__PURE__*/ +regeneratorRuntime.mark(a); + +function a() { + return regeneratorRuntime.wrap(function a$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + case "end": + return _context.stop(); + } + } + }, _marked, this); +} diff --git a/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/regenerator-used-generator/options.json b/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/regenerator-used-generator/options.json new file mode 100644 index 0000000000..fa0e9434e2 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/regenerator-used-generator/options.json @@ -0,0 +1,8 @@ +{ + "presets": [ + ["../../../../lib", { + "useBuiltIns": "usage", + "modules": false + }] + ] +} diff --git a/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/remove-babel-polyfill-import/actual.js b/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/remove-babel-polyfill-import/actual.js new file mode 100644 index 0000000000..a62d650218 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/remove-babel-polyfill-import/actual.js @@ -0,0 +1,4 @@ +import "babel-polyfill"; +import "babel-polyfill"; +require("babel-polyfill"); +require("babel-polyfill"); diff --git a/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/remove-babel-polyfill-import/options.json b/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/remove-babel-polyfill-import/options.json new file mode 100644 index 0000000000..fa0e9434e2 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/remove-babel-polyfill-import/options.json @@ -0,0 +1,8 @@ +{ + "presets": [ + ["../../../../lib", { + "useBuiltIns": "usage", + "modules": false + }] + ] +} diff --git a/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/test-modules-tranform/actual.js b/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/test-modules-tranform/actual.js new file mode 100644 index 0000000000..a2b81d72e3 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/test-modules-tranform/actual.js @@ -0,0 +1 @@ +Promise; diff --git a/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/test-modules-tranform/expected.js b/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/test-modules-tranform/expected.js new file mode 100644 index 0000000000..aba08b73dc --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/test-modules-tranform/expected.js @@ -0,0 +1,5 @@ +"use strict"; + +require("babel-polyfill/lib/core-js/modules/es6.promise"); + +Promise; \ No newline at end of file diff --git a/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/test-modules-tranform/options.json b/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/test-modules-tranform/options.json new file mode 100644 index 0000000000..18d3b5de7f --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/test-modules-tranform/options.json @@ -0,0 +1,7 @@ +{ + "presets": [ + ["../../../../lib", { + "useBuiltIns": "usage" + }] + ] +} diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/.use-builtins-all-exec/exec.js b/experimental/babel-preset-env/test/fixtures/preset-options/.use-builtins-all-exec/exec.js new file mode 100644 index 0000000000..c73aa3f1f2 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/.use-builtins-all-exec/exec.js @@ -0,0 +1,3 @@ +if (parseInt(process.version.slice(1)) > 5) { + require('babel-polyfill'); +} diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/.use-builtins-all-exec/options.json b/experimental/babel-preset-env/test/fixtures/preset-options/.use-builtins-all-exec/options.json new file mode 100644 index 0000000000..18d3b5de7f --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/.use-builtins-all-exec/options.json @@ -0,0 +1,7 @@ +{ + "presets": [ + ["../../../../lib", { + "useBuiltIns": "usage" + }] + ] +} diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/browserslist-config-ignore-with-false/actual.js b/experimental/babel-preset-env/test/fixtures/preset-options/browserslist-config-ignore-with-false/actual.js new file mode 100644 index 0000000000..54b82a09ad --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/browserslist-config-ignore-with-false/actual.js @@ -0,0 +1 @@ +const a = 1; diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/browserslist-config-ignore-with-false/browserslist b/experimental/babel-preset-env/test/fixtures/preset-options/browserslist-config-ignore-with-false/browserslist new file mode 100644 index 0000000000..d0ae78fe6a --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/browserslist-config-ignore-with-false/browserslist @@ -0,0 +1 @@ +chrome 55 diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/browserslist-config-ignore-with-false/expected.js b/experimental/babel-preset-env/test/fixtures/preset-options/browserslist-config-ignore-with-false/expected.js new file mode 100644 index 0000000000..f688910ec0 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/browserslist-config-ignore-with-false/expected.js @@ -0,0 +1 @@ +var a = 1; diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/browserslist-config-ignore-with-false/options.json b/experimental/babel-preset-env/test/fixtures/preset-options/browserslist-config-ignore-with-false/options.json new file mode 100644 index 0000000000..7a72b85d66 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/browserslist-config-ignore-with-false/options.json @@ -0,0 +1,10 @@ +{ + "presets": [ + ["../../../../lib", { + "configPath": "../fixtures/preset-options/browserslist-config-ignore-with-false", + "modules": false, + "debug": true, + "ignoreBrowserslistConfig": true + }] + ] +} diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/browserslist-config/actual.js b/experimental/babel-preset-env/test/fixtures/preset-options/browserslist-config/actual.js new file mode 100644 index 0000000000..54b82a09ad --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/browserslist-config/actual.js @@ -0,0 +1 @@ +const a = 1; diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/browserslist-config/browserslist b/experimental/babel-preset-env/test/fixtures/preset-options/browserslist-config/browserslist new file mode 100644 index 0000000000..d0ae78fe6a --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/browserslist-config/browserslist @@ -0,0 +1 @@ +chrome 55 diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/browserslist-config/expected.js b/experimental/babel-preset-env/test/fixtures/preset-options/browserslist-config/expected.js new file mode 100644 index 0000000000..54b82a09ad --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/browserslist-config/expected.js @@ -0,0 +1 @@ +const a = 1; diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/browserslist-config/options.json b/experimental/babel-preset-env/test/fixtures/preset-options/browserslist-config/options.json new file mode 100644 index 0000000000..cdff36cfbd --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/browserslist-config/options.json @@ -0,0 +1,9 @@ +{ + "presets": [ + ["../../../../lib", { + "configPath": "../fixtures/preset-options/browserslist-config", + "modules": false, + "debug": true + }] + ] +} diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/browserslist-package-ignore-with-array/actual.js b/experimental/babel-preset-env/test/fixtures/preset-options/browserslist-package-ignore-with-array/actual.js new file mode 100644 index 0000000000..54b82a09ad --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/browserslist-package-ignore-with-array/actual.js @@ -0,0 +1 @@ +const a = 1; diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/browserslist-package-ignore-with-array/expected.js b/experimental/babel-preset-env/test/fixtures/preset-options/browserslist-package-ignore-with-array/expected.js new file mode 100644 index 0000000000..54b82a09ad --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/browserslist-package-ignore-with-array/expected.js @@ -0,0 +1 @@ +const a = 1; diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/browserslist-package-ignore-with-array/options.json b/experimental/babel-preset-env/test/fixtures/preset-options/browserslist-package-ignore-with-array/options.json new file mode 100644 index 0000000000..a9aec49f3c --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/browserslist-package-ignore-with-array/options.json @@ -0,0 +1,13 @@ +{ + "presets": [ + ["../../../../lib", { + "configPath": "../fixtures/preset-options/browserslist-package-ignore-with-array", + "targets": { + "chrome": 55, + "browsers": [] + }, + "modules": false, + "debug": true + }] + ] +} diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/browserslist-package-ignore-with-array/package.json b/experimental/babel-preset-env/test/fixtures/preset-options/browserslist-package-ignore-with-array/package.json new file mode 100644 index 0000000000..409d45c7fc --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/browserslist-package-ignore-with-array/package.json @@ -0,0 +1,3 @@ +{ + "browserslist": "> 2%" +} diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/browserslist-package/actual.js b/experimental/babel-preset-env/test/fixtures/preset-options/browserslist-package/actual.js new file mode 100644 index 0000000000..54b82a09ad --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/browserslist-package/actual.js @@ -0,0 +1 @@ +const a = 1; diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/browserslist-package/expected.js b/experimental/babel-preset-env/test/fixtures/preset-options/browserslist-package/expected.js new file mode 100644 index 0000000000..f688910ec0 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/browserslist-package/expected.js @@ -0,0 +1 @@ +var a = 1; diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/browserslist-package/options.json b/experimental/babel-preset-env/test/fixtures/preset-options/browserslist-package/options.json new file mode 100644 index 0000000000..cbc113ac67 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/browserslist-package/options.json @@ -0,0 +1,12 @@ +{ + "presets": [ + ["../../../../lib", { + "configPath": "../fixtures/preset-options/browserslist-package", + "targets": { + "chrome": 55 + }, + "modules": false, + "debug": true + }] + ] +} diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/browserslist-package/package.json b/experimental/babel-preset-env/test/fixtures/preset-options/browserslist-package/package.json new file mode 100644 index 0000000000..409d45c7fc --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/browserslist-package/package.json @@ -0,0 +1,3 @@ +{ + "browserslist": "> 2%" +} diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/electron/actual.js b/experimental/babel-preset-env/test/fixtures/preset-options/electron/actual.js new file mode 100644 index 0000000000..428919e358 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/electron/actual.js @@ -0,0 +1,3 @@ +import "babel-polyfill"; + +a ** b; diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/electron/expected.js b/experimental/babel-preset-env/test/fixtures/preset-options/electron/expected.js new file mode 100644 index 0000000000..4767fb618a --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/electron/expected.js @@ -0,0 +1,9 @@ +import "babel-polyfill/lib/core-js/modules/es7.object.values"; +import "babel-polyfill/lib/core-js/modules/es7.object.entries"; +import "babel-polyfill/lib/core-js/modules/es7.object.get-own-property-descriptors"; +import "babel-polyfill/lib/core-js/modules/es7.string.pad-start"; +import "babel-polyfill/lib/core-js/modules/es7.string.pad-end"; +import "babel-polyfill/lib/core-js/modules/web.timers"; +import "babel-polyfill/lib/core-js/modules/web.immediate"; +import "babel-polyfill/lib/core-js/modules/web.dom.iterable"; +a ** b; \ No newline at end of file diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/electron/options.json b/experimental/babel-preset-env/test/fixtures/preset-options/electron/options.json new file mode 100644 index 0000000000..2e2bef018a --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/electron/options.json @@ -0,0 +1,11 @@ +{ + "presets": [ + ["../../../../lib", { + "targets": { + "electron": "1.4" + }, + "modules": false, + "useBuiltIns": "entry" + }] + ] +} diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/empty-options/actual.js b/experimental/babel-preset-env/test/fixtures/preset-options/empty-options/actual.js new file mode 100644 index 0000000000..ba2d7615b7 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/empty-options/actual.js @@ -0,0 +1 @@ +const a = "1"; diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/empty-options/expected.js b/experimental/babel-preset-env/test/fixtures/preset-options/empty-options/expected.js new file mode 100644 index 0000000000..2c64b68bbb --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/empty-options/expected.js @@ -0,0 +1 @@ +var a = "1"; diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/empty-options/options.json b/experimental/babel-preset-env/test/fixtures/preset-options/empty-options/options.json new file mode 100644 index 0000000000..df639ff3c2 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/empty-options/options.json @@ -0,0 +1,5 @@ +{ + "presets": [ + ["../../../../lib", {}] + ] +} diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/exclude-built-ins/actual.js b/experimental/babel-preset-env/test/fixtures/preset-options/exclude-built-ins/actual.js new file mode 100644 index 0000000000..15d192df49 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/exclude-built-ins/actual.js @@ -0,0 +1 @@ +import "babel-polyfill"; \ No newline at end of file diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/exclude-built-ins/options.json b/experimental/babel-preset-env/test/fixtures/preset-options/exclude-built-ins/options.json new file mode 100644 index 0000000000..b05901e3e9 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/exclude-built-ins/options.json @@ -0,0 +1,18 @@ +{ + "presets": [ + ["../../../../lib", { + "targets": { + "chrome": 55 + }, + "modules": false, + "useBuiltIns": "entry", + "exclude": [ + "es7.string.pad-start", + "es7.string.pad-end", + "web.timers", + "web.immediate", + "web.dom.iterable" + ] + }] + ] +} diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/exclude-include/actual.js b/experimental/babel-preset-env/test/fixtures/preset-options/exclude-include/actual.js new file mode 100644 index 0000000000..730d8eb539 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/exclude-include/actual.js @@ -0,0 +1,7 @@ +import "babel-polyfill"; + +async function a() { + await 1; +} + +(() => {}) \ No newline at end of file diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/exclude-include/expected.js b/experimental/babel-preset-env/test/fixtures/preset-options/exclude-include/expected.js new file mode 100644 index 0000000000..b5e4f0e3ae --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/exclude-include/expected.js @@ -0,0 +1,11 @@ +import "babel-polyfill/lib/core-js/modules/es7.string.pad-end"; +import "babel-polyfill/lib/core-js/modules/web.timers"; +import "babel-polyfill/lib/core-js/modules/web.immediate"; +import "babel-polyfill/lib/core-js/modules/web.dom.iterable"; +import "babel-polyfill/lib/core-js/modules/es6.map"; + +async function a() { + await 1; +} + +(function () {}); \ No newline at end of file diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/exclude-include/options.json b/experimental/babel-preset-env/test/fixtures/preset-options/exclude-include/options.json new file mode 100644 index 0000000000..a67b72c183 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/exclude-include/options.json @@ -0,0 +1,20 @@ +{ + "presets": [ + ["../../../../lib", { + "targets": { + "chrome": 55 + }, + "modules": false, + "useBuiltIns": "entry", + "exclude": [ + "transform-async-to-generator", + "transform-regenerator", + "es7.string.pad-start" + ], + "include": [ + "transform-es2015-arrow-functions", + "es6.map" + ] + }] + ] +} diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/exclude-regenerator/actual.js b/experimental/babel-preset-env/test/fixtures/preset-options/exclude-regenerator/actual.js new file mode 100644 index 0000000000..d3984c50aa --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/exclude-regenerator/actual.js @@ -0,0 +1 @@ +import "babel-polyfill"; diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/exclude-regenerator/expected.js b/experimental/babel-preset-env/test/fixtures/preset-options/exclude-regenerator/expected.js new file mode 100644 index 0000000000..d034b4560a --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/exclude-regenerator/expected.js @@ -0,0 +1,88 @@ +import "babel-polyfill/lib/core-js/modules/es6.typed.array-buffer"; +import "babel-polyfill/lib/core-js/modules/es6.typed.data-view"; +import "babel-polyfill/lib/core-js/modules/es6.typed.int8-array"; +import "babel-polyfill/lib/core-js/modules/es6.typed.uint8-array"; +import "babel-polyfill/lib/core-js/modules/es6.typed.uint8-clamped-array"; +import "babel-polyfill/lib/core-js/modules/es6.typed.int16-array"; +import "babel-polyfill/lib/core-js/modules/es6.typed.uint16-array"; +import "babel-polyfill/lib/core-js/modules/es6.typed.int32-array"; +import "babel-polyfill/lib/core-js/modules/es6.typed.uint32-array"; +import "babel-polyfill/lib/core-js/modules/es6.typed.float32-array"; +import "babel-polyfill/lib/core-js/modules/es6.typed.float64-array"; +import "babel-polyfill/lib/core-js/modules/es6.map"; +import "babel-polyfill/lib/core-js/modules/es6.set"; +import "babel-polyfill/lib/core-js/modules/es6.weak-map"; +import "babel-polyfill/lib/core-js/modules/es6.weak-set"; +import "babel-polyfill/lib/core-js/modules/es6.reflect.apply"; +import "babel-polyfill/lib/core-js/modules/es6.reflect.construct"; +import "babel-polyfill/lib/core-js/modules/es6.reflect.define-property"; +import "babel-polyfill/lib/core-js/modules/es6.reflect.delete-property"; +import "babel-polyfill/lib/core-js/modules/es6.reflect.get"; +import "babel-polyfill/lib/core-js/modules/es6.reflect.get-own-property-descriptor"; +import "babel-polyfill/lib/core-js/modules/es6.reflect.get-prototype-of"; +import "babel-polyfill/lib/core-js/modules/es6.reflect.has"; +import "babel-polyfill/lib/core-js/modules/es6.reflect.is-extensible"; +import "babel-polyfill/lib/core-js/modules/es6.reflect.own-keys"; +import "babel-polyfill/lib/core-js/modules/es6.reflect.prevent-extensions"; +import "babel-polyfill/lib/core-js/modules/es6.reflect.set"; +import "babel-polyfill/lib/core-js/modules/es6.reflect.set-prototype-of"; +import "babel-polyfill/lib/core-js/modules/es6.promise"; +import "babel-polyfill/lib/core-js/modules/es6.symbol"; +import "babel-polyfill/lib/core-js/modules/es6.object.assign"; +import "babel-polyfill/lib/core-js/modules/es6.object.is"; +import "babel-polyfill/lib/core-js/modules/es6.object.set-prototype-of"; +import "babel-polyfill/lib/core-js/modules/es6.function.name"; +import "babel-polyfill/lib/core-js/modules/es6.string.raw"; +import "babel-polyfill/lib/core-js/modules/es6.string.from-code-point"; +import "babel-polyfill/lib/core-js/modules/es6.string.code-point-at"; +import "babel-polyfill/lib/core-js/modules/es6.string.repeat"; +import "babel-polyfill/lib/core-js/modules/es6.string.starts-with"; +import "babel-polyfill/lib/core-js/modules/es6.string.ends-with"; +import "babel-polyfill/lib/core-js/modules/es6.string.includes"; +import "babel-polyfill/lib/core-js/modules/es6.regexp.flags"; +import "babel-polyfill/lib/core-js/modules/es6.regexp.match"; +import "babel-polyfill/lib/core-js/modules/es6.regexp.replace"; +import "babel-polyfill/lib/core-js/modules/es6.regexp.split"; +import "babel-polyfill/lib/core-js/modules/es6.regexp.search"; +import "babel-polyfill/lib/core-js/modules/es6.array.from"; +import "babel-polyfill/lib/core-js/modules/es6.array.of"; +import "babel-polyfill/lib/core-js/modules/es6.array.copy-within"; +import "babel-polyfill/lib/core-js/modules/es6.array.find"; +import "babel-polyfill/lib/core-js/modules/es6.array.find-index"; +import "babel-polyfill/lib/core-js/modules/es6.array.fill"; +import "babel-polyfill/lib/core-js/modules/es6.array.iterator"; +import "babel-polyfill/lib/core-js/modules/es6.number.is-finite"; +import "babel-polyfill/lib/core-js/modules/es6.number.is-integer"; +import "babel-polyfill/lib/core-js/modules/es6.number.is-safe-integer"; +import "babel-polyfill/lib/core-js/modules/es6.number.is-nan"; +import "babel-polyfill/lib/core-js/modules/es6.number.epsilon"; +import "babel-polyfill/lib/core-js/modules/es6.number.min-safe-integer"; +import "babel-polyfill/lib/core-js/modules/es6.number.max-safe-integer"; +import "babel-polyfill/lib/core-js/modules/es6.number.parse-float"; +import "babel-polyfill/lib/core-js/modules/es6.number.parse-int"; +import "babel-polyfill/lib/core-js/modules/es6.math.acosh"; +import "babel-polyfill/lib/core-js/modules/es6.math.asinh"; +import "babel-polyfill/lib/core-js/modules/es6.math.atanh"; +import "babel-polyfill/lib/core-js/modules/es6.math.cbrt"; +import "babel-polyfill/lib/core-js/modules/es6.math.clz32"; +import "babel-polyfill/lib/core-js/modules/es6.math.cosh"; +import "babel-polyfill/lib/core-js/modules/es6.math.expm1"; +import "babel-polyfill/lib/core-js/modules/es6.math.fround"; +import "babel-polyfill/lib/core-js/modules/es6.math.hypot"; +import "babel-polyfill/lib/core-js/modules/es6.math.imul"; +import "babel-polyfill/lib/core-js/modules/es6.math.log1p"; +import "babel-polyfill/lib/core-js/modules/es6.math.log10"; +import "babel-polyfill/lib/core-js/modules/es6.math.log2"; +import "babel-polyfill/lib/core-js/modules/es6.math.sign"; +import "babel-polyfill/lib/core-js/modules/es6.math.sinh"; +import "babel-polyfill/lib/core-js/modules/es6.math.tanh"; +import "babel-polyfill/lib/core-js/modules/es6.math.trunc"; +import "babel-polyfill/lib/core-js/modules/es7.array.includes"; +import "babel-polyfill/lib/core-js/modules/es7.object.values"; +import "babel-polyfill/lib/core-js/modules/es7.object.entries"; +import "babel-polyfill/lib/core-js/modules/es7.object.get-own-property-descriptors"; +import "babel-polyfill/lib/core-js/modules/es7.string.pad-start"; +import "babel-polyfill/lib/core-js/modules/es7.string.pad-end"; +import "babel-polyfill/lib/core-js/modules/web.timers"; +import "babel-polyfill/lib/core-js/modules/web.immediate"; +import "babel-polyfill/lib/core-js/modules/web.dom.iterable"; diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/exclude-regenerator/options.json b/experimental/babel-preset-env/test/fixtures/preset-options/exclude-regenerator/options.json new file mode 100644 index 0000000000..514d13251d --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/exclude-regenerator/options.json @@ -0,0 +1,9 @@ +{ + "presets": [ + ["../../../../lib", { + "modules": false, + "useBuiltIns": "entry", + "exclude": ["transform-regenerator"] + }] + ] +} diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/exclude/actual.js b/experimental/babel-preset-env/test/fixtures/preset-options/exclude/actual.js new file mode 100644 index 0000000000..c70b44b5a4 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/exclude/actual.js @@ -0,0 +1,3 @@ +async function a() { + await 1; +} diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/exclude/expected.js b/experimental/babel-preset-env/test/fixtures/preset-options/exclude/expected.js new file mode 100644 index 0000000000..5c88836e9e --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/exclude/expected.js @@ -0,0 +1,3 @@ +async function a() { + await 1; +} \ No newline at end of file diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/exclude/options.json b/experimental/babel-preset-env/test/fixtures/preset-options/exclude/options.json new file mode 100644 index 0000000000..7c6d3bfb0e --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/exclude/options.json @@ -0,0 +1,12 @@ +{ + "presets": [ + ["../../../../lib", { + "modules": false, + "useBuiltIns": "usage", + "exclude": [ + "transform-async-to-generator", + "transform-regenerator" + ] + }] + ] +} diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/ie-11-built-ins/actual.js b/experimental/babel-preset-env/test/fixtures/preset-options/ie-11-built-ins/actual.js new file mode 100644 index 0000000000..d3984c50aa --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/ie-11-built-ins/actual.js @@ -0,0 +1 @@ +import "babel-polyfill"; diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/ie-11-built-ins/expected.js b/experimental/babel-preset-env/test/fixtures/preset-options/ie-11-built-ins/expected.js new file mode 100644 index 0000000000..dff3ec0551 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/ie-11-built-ins/expected.js @@ -0,0 +1,87 @@ +import "babel-polyfill/lib/core-js/modules/es6.typed.array-buffer"; +import "babel-polyfill/lib/core-js/modules/es6.typed.int8-array"; +import "babel-polyfill/lib/core-js/modules/es6.typed.uint8-array"; +import "babel-polyfill/lib/core-js/modules/es6.typed.uint8-clamped-array"; +import "babel-polyfill/lib/core-js/modules/es6.typed.int16-array"; +import "babel-polyfill/lib/core-js/modules/es6.typed.uint16-array"; +import "babel-polyfill/lib/core-js/modules/es6.typed.int32-array"; +import "babel-polyfill/lib/core-js/modules/es6.typed.uint32-array"; +import "babel-polyfill/lib/core-js/modules/es6.typed.float32-array"; +import "babel-polyfill/lib/core-js/modules/es6.typed.float64-array"; +import "babel-polyfill/lib/core-js/modules/es6.map"; +import "babel-polyfill/lib/core-js/modules/es6.set"; +import "babel-polyfill/lib/core-js/modules/es6.weak-map"; +import "babel-polyfill/lib/core-js/modules/es6.weak-set"; +import "babel-polyfill/lib/core-js/modules/es6.reflect.apply"; +import "babel-polyfill/lib/core-js/modules/es6.reflect.construct"; +import "babel-polyfill/lib/core-js/modules/es6.reflect.define-property"; +import "babel-polyfill/lib/core-js/modules/es6.reflect.delete-property"; +import "babel-polyfill/lib/core-js/modules/es6.reflect.get"; +import "babel-polyfill/lib/core-js/modules/es6.reflect.get-own-property-descriptor"; +import "babel-polyfill/lib/core-js/modules/es6.reflect.get-prototype-of"; +import "babel-polyfill/lib/core-js/modules/es6.reflect.has"; +import "babel-polyfill/lib/core-js/modules/es6.reflect.is-extensible"; +import "babel-polyfill/lib/core-js/modules/es6.reflect.own-keys"; +import "babel-polyfill/lib/core-js/modules/es6.reflect.prevent-extensions"; +import "babel-polyfill/lib/core-js/modules/es6.reflect.set"; +import "babel-polyfill/lib/core-js/modules/es6.reflect.set-prototype-of"; +import "babel-polyfill/lib/core-js/modules/es6.promise"; +import "babel-polyfill/lib/core-js/modules/es6.symbol"; +import "babel-polyfill/lib/core-js/modules/es6.object.assign"; +import "babel-polyfill/lib/core-js/modules/es6.object.is"; +import "babel-polyfill/lib/core-js/modules/es6.function.name"; +import "babel-polyfill/lib/core-js/modules/es6.string.raw"; +import "babel-polyfill/lib/core-js/modules/es6.string.from-code-point"; +import "babel-polyfill/lib/core-js/modules/es6.string.code-point-at"; +import "babel-polyfill/lib/core-js/modules/es6.string.repeat"; +import "babel-polyfill/lib/core-js/modules/es6.string.starts-with"; +import "babel-polyfill/lib/core-js/modules/es6.string.ends-with"; +import "babel-polyfill/lib/core-js/modules/es6.string.includes"; +import "babel-polyfill/lib/core-js/modules/es6.regexp.flags"; +import "babel-polyfill/lib/core-js/modules/es6.regexp.match"; +import "babel-polyfill/lib/core-js/modules/es6.regexp.replace"; +import "babel-polyfill/lib/core-js/modules/es6.regexp.split"; +import "babel-polyfill/lib/core-js/modules/es6.regexp.search"; +import "babel-polyfill/lib/core-js/modules/es6.array.from"; +import "babel-polyfill/lib/core-js/modules/es6.array.of"; +import "babel-polyfill/lib/core-js/modules/es6.array.copy-within"; +import "babel-polyfill/lib/core-js/modules/es6.array.find"; +import "babel-polyfill/lib/core-js/modules/es6.array.find-index"; +import "babel-polyfill/lib/core-js/modules/es6.array.fill"; +import "babel-polyfill/lib/core-js/modules/es6.array.iterator"; +import "babel-polyfill/lib/core-js/modules/es6.number.is-finite"; +import "babel-polyfill/lib/core-js/modules/es6.number.is-integer"; +import "babel-polyfill/lib/core-js/modules/es6.number.is-safe-integer"; +import "babel-polyfill/lib/core-js/modules/es6.number.is-nan"; +import "babel-polyfill/lib/core-js/modules/es6.number.epsilon"; +import "babel-polyfill/lib/core-js/modules/es6.number.min-safe-integer"; +import "babel-polyfill/lib/core-js/modules/es6.number.max-safe-integer"; +import "babel-polyfill/lib/core-js/modules/es6.number.parse-float"; +import "babel-polyfill/lib/core-js/modules/es6.number.parse-int"; +import "babel-polyfill/lib/core-js/modules/es6.math.acosh"; +import "babel-polyfill/lib/core-js/modules/es6.math.asinh"; +import "babel-polyfill/lib/core-js/modules/es6.math.atanh"; +import "babel-polyfill/lib/core-js/modules/es6.math.cbrt"; +import "babel-polyfill/lib/core-js/modules/es6.math.clz32"; +import "babel-polyfill/lib/core-js/modules/es6.math.cosh"; +import "babel-polyfill/lib/core-js/modules/es6.math.expm1"; +import "babel-polyfill/lib/core-js/modules/es6.math.fround"; +import "babel-polyfill/lib/core-js/modules/es6.math.hypot"; +import "babel-polyfill/lib/core-js/modules/es6.math.imul"; +import "babel-polyfill/lib/core-js/modules/es6.math.log1p"; +import "babel-polyfill/lib/core-js/modules/es6.math.log10"; +import "babel-polyfill/lib/core-js/modules/es6.math.log2"; +import "babel-polyfill/lib/core-js/modules/es6.math.sign"; +import "babel-polyfill/lib/core-js/modules/es6.math.sinh"; +import "babel-polyfill/lib/core-js/modules/es6.math.tanh"; +import "babel-polyfill/lib/core-js/modules/es6.math.trunc"; +import "babel-polyfill/lib/core-js/modules/es7.array.includes"; +import "babel-polyfill/lib/core-js/modules/es7.object.values"; +import "babel-polyfill/lib/core-js/modules/es7.object.entries"; +import "babel-polyfill/lib/core-js/modules/es7.object.get-own-property-descriptors"; +import "babel-polyfill/lib/core-js/modules/es7.string.pad-start"; +import "babel-polyfill/lib/core-js/modules/es7.string.pad-end"; +import "babel-polyfill/lib/core-js/modules/web.timers"; +import "babel-polyfill/lib/core-js/modules/web.immediate"; +import "babel-polyfill/lib/core-js/modules/web.dom.iterable"; +import "babel-polyfill/lib/regenerator-runtime/runtime"; diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/ie-11-built-ins/options.json b/experimental/babel-preset-env/test/fixtures/preset-options/ie-11-built-ins/options.json new file mode 100644 index 0000000000..cebe1cb0d4 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/ie-11-built-ins/options.json @@ -0,0 +1,12 @@ +{ + "presets": [ + ["../../../../lib", { + "targets": { + "ie": 11 + }, + "modules": false, + "useBuiltIns": "entry", + "modules": false + }] + ] +} diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/include-built-ins/actual.js b/experimental/babel-preset-env/test/fixtures/preset-options/include-built-ins/actual.js new file mode 100644 index 0000000000..15d192df49 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/include-built-ins/actual.js @@ -0,0 +1 @@ +import "babel-polyfill"; \ No newline at end of file diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/include-built-ins/expected.js b/experimental/babel-preset-env/test/fixtures/preset-options/include-built-ins/expected.js new file mode 100644 index 0000000000..69f52e5fad --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/include-built-ins/expected.js @@ -0,0 +1,7 @@ +import "babel-polyfill/lib/core-js/modules/es7.string.pad-start"; +import "babel-polyfill/lib/core-js/modules/es7.string.pad-end"; +import "babel-polyfill/lib/core-js/modules/web.timers"; +import "babel-polyfill/lib/core-js/modules/web.immediate"; +import "babel-polyfill/lib/core-js/modules/web.dom.iterable"; +import "babel-polyfill/lib/core-js/modules/es6.map"; +import "babel-polyfill/lib/core-js/modules/es6.set"; \ No newline at end of file diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/include-built-ins/options.json b/experimental/babel-preset-env/test/fixtures/preset-options/include-built-ins/options.json new file mode 100644 index 0000000000..74a59214cd --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/include-built-ins/options.json @@ -0,0 +1,15 @@ +{ + "presets": [ + ["../../../../lib", { + "targets": { + "chrome": 55 + }, + "include": [ + "es6.map", + "es6.set" + ], + "modules": false, + "useBuiltIns": "entry" + }] + ] +} diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/include/actual.js b/experimental/babel-preset-env/test/fixtures/preset-options/include/actual.js new file mode 100644 index 0000000000..4b992e32e1 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/include/actual.js @@ -0,0 +1 @@ +import a from "a"; diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/include/expected.js b/experimental/babel-preset-env/test/fixtures/preset-options/include/expected.js new file mode 100644 index 0000000000..5948a626bd --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/include/expected.js @@ -0,0 +1,5 @@ +"use strict"; + +var _a = _interopRequireDefault(require("a")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/include/options.json b/experimental/babel-preset-env/test/fixtures/preset-options/include/options.json new file mode 100644 index 0000000000..abc0443b29 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/include/options.json @@ -0,0 +1,9 @@ +{ + "presets": [ + ["../../../../lib", { + "targets": {}, + "include": ["transform-es2015-modules-commonjs"], + "modules": false + }] + ] +} diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/ios-10/actual.js b/experimental/babel-preset-env/test/fixtures/preset-options/ios-10/actual.js new file mode 100644 index 0000000000..02d939c57f --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/ios-10/actual.js @@ -0,0 +1 @@ +const a = () => 1; diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/ios-10/expected.js b/experimental/babel-preset-env/test/fixtures/preset-options/ios-10/expected.js new file mode 100644 index 0000000000..b7ca4a8586 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/ios-10/expected.js @@ -0,0 +1 @@ +const a = () => 1; \ No newline at end of file diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/ios-10/options.json b/experimental/babel-preset-env/test/fixtures/preset-options/ios-10/options.json new file mode 100644 index 0000000000..25d6c970e1 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/ios-10/options.json @@ -0,0 +1,10 @@ +{ + "presets": [ + ["../../../../lib", { + "targets": { + "browsers": ["ios >= 10"] + }, + "modules": false + }] + ] +} diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/ios-6/actual.js b/experimental/babel-preset-env/test/fixtures/preset-options/ios-6/actual.js new file mode 100644 index 0000000000..c3fee8a175 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/ios-6/actual.js @@ -0,0 +1 @@ +import "core-js"; diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/ios-6/expected.js b/experimental/babel-preset-env/test/fixtures/preset-options/ios-6/expected.js new file mode 100644 index 0000000000..bd6332b8ba --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/ios-6/expected.js @@ -0,0 +1 @@ +import "core-js"; \ No newline at end of file diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/ios-6/options.json b/experimental/babel-preset-env/test/fixtures/preset-options/ios-6/options.json new file mode 100644 index 0000000000..38d936c33c --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/ios-6/options.json @@ -0,0 +1,11 @@ +{ + "presets": [ + ["../../../../lib", { + "targets": { + "browsers": ["ios >= 6"] + }, + "modules": false, + "useBuiltIns": "usage" + }] + ] +} diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/modules-false/actual.js b/experimental/babel-preset-env/test/fixtures/preset-options/modules-false/actual.js new file mode 100644 index 0000000000..4b992e32e1 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/modules-false/actual.js @@ -0,0 +1 @@ +import a from "a"; diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/modules-false/expected.js b/experimental/babel-preset-env/test/fixtures/preset-options/modules-false/expected.js new file mode 100644 index 0000000000..6705308072 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/modules-false/expected.js @@ -0,0 +1 @@ +import a from "a"; \ No newline at end of file diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/modules-false/options.json b/experimental/babel-preset-env/test/fixtures/preset-options/modules-false/options.json new file mode 100644 index 0000000000..1f29c71c16 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/modules-false/options.json @@ -0,0 +1,7 @@ +{ + "presets": [ + ["../../../../lib", { + "modules": false + }] + ] +} diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/no-options/actual.js b/experimental/babel-preset-env/test/fixtures/preset-options/no-options/actual.js new file mode 100644 index 0000000000..ba2d7615b7 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/no-options/actual.js @@ -0,0 +1 @@ +const a = "1"; diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/no-options/expected.js b/experimental/babel-preset-env/test/fixtures/preset-options/no-options/expected.js new file mode 100644 index 0000000000..2c64b68bbb --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/no-options/expected.js @@ -0,0 +1 @@ +var a = "1"; diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/no-options/options.json b/experimental/babel-preset-env/test/fixtures/preset-options/no-options/options.json new file mode 100644 index 0000000000..84a75e8721 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/no-options/options.json @@ -0,0 +1,5 @@ +{ + "presets": [ + "../../../../lib" + ] +} diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/no-transform/actual.js b/experimental/babel-preset-env/test/fixtures/preset-options/no-transform/actual.js new file mode 100644 index 0000000000..31f2d79f9a --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/no-transform/actual.js @@ -0,0 +1,2 @@ +import "not-core-js"; +import "not-babel-polyfill"; diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/no-transform/expected.js b/experimental/babel-preset-env/test/fixtures/preset-options/no-transform/expected.js new file mode 100644 index 0000000000..e6e20a7905 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/no-transform/expected.js @@ -0,0 +1,2 @@ +import "not-core-js"; +import "not-babel-polyfill"; \ No newline at end of file diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/no-transform/options.json b/experimental/babel-preset-env/test/fixtures/preset-options/no-transform/options.json new file mode 100644 index 0000000000..c8b43a8de0 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/no-transform/options.json @@ -0,0 +1,11 @@ +{ + "presets": [ + ["../../../../lib", { + "targets": { + "chrome": "55" + }, + "modules": false, + "useBuiltIns": "usage" + }] + ] +} diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/shippedProposals-use-builtins-entry/actual.js b/experimental/babel-preset-env/test/fixtures/preset-options/shippedProposals-use-builtins-entry/actual.js new file mode 100644 index 0000000000..d95854b64f --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/shippedProposals-use-builtins-entry/actual.js @@ -0,0 +1,6 @@ +let { x, y, ...z } = { x: 1, y: 2, a: 3, b: 4 }; +let n = { x, y, ...z }; +async function* agf() { + await 1; + yield 2; +} diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/shippedProposals-use-builtins-entry/expected.js b/experimental/babel-preset-env/test/fixtures/preset-options/shippedProposals-use-builtins-entry/expected.js new file mode 100644 index 0000000000..8631e82721 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/shippedProposals-use-builtins-entry/expected.js @@ -0,0 +1,58 @@ +var agf = function () { + var _ref = _asyncGenerator.wrap( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee() { + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + _context.next = 2; + return _asyncGenerator.await(1); + + case 2: + _context.next = 4; + return 2; + + case 4: + case "end": + return _context.stop(); + } + } + }, _callee, this); + })); + + return function agf() { + return _ref.apply(this, arguments); + }; +}(); + +function AwaitValue(value) { this.value = value; } + +function AsyncGenerator(gen) { var front, back; function send(key, arg) { return new Promise(function (resolve, reject) { var request = { key: key, arg: arg, resolve: resolve, reject: reject, next: null }; if (back) { back = back.next = request; } else { front = back = request; resume(key, arg); } }); } function resume(key, arg) { try { var result = gen[key](arg); var value = result.value; if (value instanceof AwaitValue) { Promise.resolve(value.value).then(function (arg) { resume("next", arg); }, function (arg) { resume("throw", arg); }); } else { settle(result.done ? "return" : "normal", result.value); } } catch (err) { settle("throw", err); } } function settle(type, value) { switch (type) { case "return": front.resolve({ value: value, done: true }); break; case "throw": front.reject(value); break; default: front.resolve({ value: value, done: false }); break; } front = front.next; if (front) { resume(front.key, front.arg); } else { back = null; } } this._invoke = send; if (typeof gen.return !== "function") { this.return = undefined; } } + +if (typeof Symbol === "function" && Symbol.asyncIterator) { AsyncGenerator.prototype[Symbol.asyncIterator] = function () { return this; }; } + +AsyncGenerator.prototype.next = function (arg) { return this._invoke("next", arg); }; + +AsyncGenerator.prototype.throw = function (arg) { return this._invoke("throw", arg); }; + +AsyncGenerator.prototype.return = function (arg) { return this._invoke("return", arg); }; + +var _asyncGenerator = { wrap: function wrap(fn) { return function () { return new AsyncGenerator(fn.apply(this, arguments)); }; }, await: function _await(value) { return new AwaitValue(value); } }; + +function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } + +var _x$y$a$b = { + x: 1, + y: 2, + a: 3, + b: 4 +}, + x = _x$y$a$b.x, + y = _x$y$a$b.y, + z = _objectWithoutProperties(_x$y$a$b, ["x", "y"]); + +var n = Object.assign({ + x: x, + y: y +}, z); diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/shippedProposals-use-builtins-entry/options.json b/experimental/babel-preset-env/test/fixtures/preset-options/shippedProposals-use-builtins-entry/options.json new file mode 100644 index 0000000000..8a799417be --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/shippedProposals-use-builtins-entry/options.json @@ -0,0 +1,8 @@ +{ + "presets": [ + ["../../../../lib", { + "shippedProposals": true, + "useBuiltIns": "entry" + }] + ] +} diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/shippedProposals-use-builtins-usage/actual.js b/experimental/babel-preset-env/test/fixtures/preset-options/shippedProposals-use-builtins-usage/actual.js new file mode 100644 index 0000000000..d95854b64f --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/shippedProposals-use-builtins-usage/actual.js @@ -0,0 +1,6 @@ +let { x, y, ...z } = { x: 1, y: 2, a: 3, b: 4 }; +let n = { x, y, ...z }; +async function* agf() { + await 1; + yield 2; +} diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/shippedProposals-use-builtins-usage/expected.js b/experimental/babel-preset-env/test/fixtures/preset-options/shippedProposals-use-builtins-usage/expected.js new file mode 100644 index 0000000000..2521c92ba7 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/shippedProposals-use-builtins-usage/expected.js @@ -0,0 +1,68 @@ +"use strict"; + +require("babel-polyfill/lib/core-js/modules/es6.symbol"); + +require("babel-polyfill/lib/core-js/modules/es6.promise"); + +require("babel-polyfill/lib/regenerator-runtime/runtime"); + +require("babel-polyfill/lib/core-js/modules/es6.object.assign"); + +var agf = function () { + var _ref = _asyncGenerator.wrap( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee() { + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + _context.next = 2; + return _asyncGenerator.await(1); + + case 2: + _context.next = 4; + return 2; + + case 4: + case "end": + return _context.stop(); + } + } + }, _callee, this); + })); + + return function agf() { + return _ref.apply(this, arguments); + }; +}(); + +function AwaitValue(value) { this.value = value; } + +function AsyncGenerator(gen) { var front, back; function send(key, arg) { return new Promise(function (resolve, reject) { var request = { key: key, arg: arg, resolve: resolve, reject: reject, next: null }; if (back) { back = back.next = request; } else { front = back = request; resume(key, arg); } }); } function resume(key, arg) { try { var result = gen[key](arg); var value = result.value; if (value instanceof AwaitValue) { Promise.resolve(value.value).then(function (arg) { resume("next", arg); }, function (arg) { resume("throw", arg); }); } else { settle(result.done ? "return" : "normal", result.value); } } catch (err) { settle("throw", err); } } function settle(type, value) { switch (type) { case "return": front.resolve({ value: value, done: true }); break; case "throw": front.reject(value); break; default: front.resolve({ value: value, done: false }); break; } front = front.next; if (front) { resume(front.key, front.arg); } else { back = null; } } this._invoke = send; if (typeof gen.return !== "function") { this.return = undefined; } } + +if (typeof Symbol === "function" && Symbol.asyncIterator) { AsyncGenerator.prototype[Symbol.asyncIterator] = function () { return this; }; } + +AsyncGenerator.prototype.next = function (arg) { return this._invoke("next", arg); }; + +AsyncGenerator.prototype.throw = function (arg) { return this._invoke("throw", arg); }; + +AsyncGenerator.prototype.return = function (arg) { return this._invoke("return", arg); }; + +var _asyncGenerator = { wrap: function wrap(fn) { return function () { return new AsyncGenerator(fn.apply(this, arguments)); }; }, await: function _await(value) { return new AwaitValue(value); } }; + +function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } + +var _x$y$a$b = { + x: 1, + y: 2, + a: 3, + b: 4 +}, + x = _x$y$a$b.x, + y = _x$y$a$b.y, + z = _objectWithoutProperties(_x$y$a$b, ["x", "y"]); + +var n = Object.assign({ + x: x, + y: y +}, z); diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/shippedProposals-use-builtins-usage/options.json b/experimental/babel-preset-env/test/fixtures/preset-options/shippedProposals-use-builtins-usage/options.json new file mode 100644 index 0000000000..d1b9e87480 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/shippedProposals-use-builtins-usage/options.json @@ -0,0 +1,8 @@ +{ + "presets": [ + ["../../../../lib", { + "shippedProposals": true, + "useBuiltIns": "usage" + }] + ] +} diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/shippedProposals/actual.js b/experimental/babel-preset-env/test/fixtures/preset-options/shippedProposals/actual.js new file mode 100644 index 0000000000..d95854b64f --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/shippedProposals/actual.js @@ -0,0 +1,6 @@ +let { x, y, ...z } = { x: 1, y: 2, a: 3, b: 4 }; +let n = { x, y, ...z }; +async function* agf() { + await 1; + yield 2; +} diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/shippedProposals/expected.js b/experimental/babel-preset-env/test/fixtures/preset-options/shippedProposals/expected.js new file mode 100644 index 0000000000..ce684e00a5 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/shippedProposals/expected.js @@ -0,0 +1,60 @@ +var agf = function () { + var _ref = _asyncGenerator.wrap( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee() { + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + _context.next = 2; + return _asyncGenerator.await(1); + + case 2: + _context.next = 4; + return 2; + + case 4: + case "end": + return _context.stop(); + } + } + }, _callee, this); + })); + + return function agf() { + return _ref.apply(this, arguments); + }; +}(); + +function AwaitValue(value) { this.value = value; } + +function AsyncGenerator(gen) { var front, back; function send(key, arg) { return new Promise(function (resolve, reject) { var request = { key: key, arg: arg, resolve: resolve, reject: reject, next: null }; if (back) { back = back.next = request; } else { front = back = request; resume(key, arg); } }); } function resume(key, arg) { try { var result = gen[key](arg); var value = result.value; if (value instanceof AwaitValue) { Promise.resolve(value.value).then(function (arg) { resume("next", arg); }, function (arg) { resume("throw", arg); }); } else { settle(result.done ? "return" : "normal", result.value); } } catch (err) { settle("throw", err); } } function settle(type, value) { switch (type) { case "return": front.resolve({ value: value, done: true }); break; case "throw": front.reject(value); break; default: front.resolve({ value: value, done: false }); break; } front = front.next; if (front) { resume(front.key, front.arg); } else { back = null; } } this._invoke = send; if (typeof gen.return !== "function") { this.return = undefined; } } + +if (typeof Symbol === "function" && Symbol.asyncIterator) { AsyncGenerator.prototype[Symbol.asyncIterator] = function () { return this; }; } + +AsyncGenerator.prototype.next = function (arg) { return this._invoke("next", arg); }; + +AsyncGenerator.prototype.throw = function (arg) { return this._invoke("throw", arg); }; + +AsyncGenerator.prototype.return = function (arg) { return this._invoke("return", arg); }; + +var _asyncGenerator = { wrap: function wrap(fn) { return function () { return new AsyncGenerator(fn.apply(this, arguments)); }; }, await: function _await(value) { return new AwaitValue(value); } }; + +function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } + +function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } + +var _x$y$a$b = { + x: 1, + y: 2, + a: 3, + b: 4 +}, + x = _x$y$a$b.x, + y = _x$y$a$b.y, + z = _objectWithoutProperties(_x$y$a$b, ["x", "y"]); + +var n = _extends({ + x: x, + y: y +}, z); diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/shippedProposals/options.json b/experimental/babel-preset-env/test/fixtures/preset-options/shippedProposals/options.json new file mode 100644 index 0000000000..897e16fb7c --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/shippedProposals/options.json @@ -0,0 +1,7 @@ +{ + "presets": [ + ["../../../../lib", { + "shippedProposals": true + }] + ] +} diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/spec/actual.js b/experimental/babel-preset-env/test/fixtures/preset-options/spec/actual.js new file mode 100644 index 0000000000..51403eebdc --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/spec/actual.js @@ -0,0 +1,2 @@ +const bar = "bar"; +const x = () => `foo${bar}`; diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/spec/expected.js b/experimental/babel-preset-env/test/fixtures/preset-options/spec/expected.js new file mode 100644 index 0000000000..e5b2a5f752 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/spec/expected.js @@ -0,0 +1,11 @@ +var _this = this; + +function _newArrowCheck(innerThis, boundThis) { if (innerThis !== boundThis) { throw new TypeError("Cannot instantiate an arrow function"); } } + +var bar = "bar"; + +var x = function x() { + _newArrowCheck(this, _this); + + return "foo".concat(bar); +}.bind(this); diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/spec/options.json b/experimental/babel-preset-env/test/fixtures/preset-options/spec/options.json new file mode 100644 index 0000000000..8aefcdc8ed --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/spec/options.json @@ -0,0 +1,7 @@ +{ + "presets": [ + ["../../../../lib", { + "spec": true + }] + ] +} diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/uglify/actual.js b/experimental/babel-preset-env/test/fixtures/preset-options/uglify/actual.js new file mode 100644 index 0000000000..6ce39f1020 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/uglify/actual.js @@ -0,0 +1,3 @@ +import "babel-polyfill"; + +const a = 1; diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/uglify/expected.js b/experimental/babel-preset-env/test/fixtures/preset-options/uglify/expected.js new file mode 100644 index 0000000000..642aca9388 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/uglify/expected.js @@ -0,0 +1,7 @@ +import "babel-polyfill/lib/core-js/modules/es7.string.pad-start"; +import "babel-polyfill/lib/core-js/modules/es7.string.pad-end"; +import "babel-polyfill/lib/core-js/modules/web.timers"; +import "babel-polyfill/lib/core-js/modules/web.immediate"; +import "babel-polyfill/lib/core-js/modules/web.dom.iterable"; +import "babel-polyfill/lib/regenerator-runtime/runtime"; +var a = 1; \ No newline at end of file diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/uglify/options.json b/experimental/babel-preset-env/test/fixtures/preset-options/uglify/options.json new file mode 100644 index 0000000000..63bd00a05c --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/uglify/options.json @@ -0,0 +1,12 @@ +{ + "presets": [ + ["../../../../lib", { + "targets": { + "chrome": 55, + "uglify": true + }, + "modules": false, + "useBuiltIns": "entry" + }] + ] +} diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-all/actual.js b/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-all/actual.js new file mode 100644 index 0000000000..d3984c50aa --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-all/actual.js @@ -0,0 +1 @@ +import "babel-polyfill"; diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-all/expected.js b/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-all/expected.js new file mode 100644 index 0000000000..3f44cad315 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-all/expected.js @@ -0,0 +1,89 @@ +import "babel-polyfill/lib/core-js/modules/es6.typed.array-buffer"; +import "babel-polyfill/lib/core-js/modules/es6.typed.data-view"; +import "babel-polyfill/lib/core-js/modules/es6.typed.int8-array"; +import "babel-polyfill/lib/core-js/modules/es6.typed.uint8-array"; +import "babel-polyfill/lib/core-js/modules/es6.typed.uint8-clamped-array"; +import "babel-polyfill/lib/core-js/modules/es6.typed.int16-array"; +import "babel-polyfill/lib/core-js/modules/es6.typed.uint16-array"; +import "babel-polyfill/lib/core-js/modules/es6.typed.int32-array"; +import "babel-polyfill/lib/core-js/modules/es6.typed.uint32-array"; +import "babel-polyfill/lib/core-js/modules/es6.typed.float32-array"; +import "babel-polyfill/lib/core-js/modules/es6.typed.float64-array"; +import "babel-polyfill/lib/core-js/modules/es6.map"; +import "babel-polyfill/lib/core-js/modules/es6.set"; +import "babel-polyfill/lib/core-js/modules/es6.weak-map"; +import "babel-polyfill/lib/core-js/modules/es6.weak-set"; +import "babel-polyfill/lib/core-js/modules/es6.reflect.apply"; +import "babel-polyfill/lib/core-js/modules/es6.reflect.construct"; +import "babel-polyfill/lib/core-js/modules/es6.reflect.define-property"; +import "babel-polyfill/lib/core-js/modules/es6.reflect.delete-property"; +import "babel-polyfill/lib/core-js/modules/es6.reflect.get"; +import "babel-polyfill/lib/core-js/modules/es6.reflect.get-own-property-descriptor"; +import "babel-polyfill/lib/core-js/modules/es6.reflect.get-prototype-of"; +import "babel-polyfill/lib/core-js/modules/es6.reflect.has"; +import "babel-polyfill/lib/core-js/modules/es6.reflect.is-extensible"; +import "babel-polyfill/lib/core-js/modules/es6.reflect.own-keys"; +import "babel-polyfill/lib/core-js/modules/es6.reflect.prevent-extensions"; +import "babel-polyfill/lib/core-js/modules/es6.reflect.set"; +import "babel-polyfill/lib/core-js/modules/es6.reflect.set-prototype-of"; +import "babel-polyfill/lib/core-js/modules/es6.promise"; +import "babel-polyfill/lib/core-js/modules/es6.symbol"; +import "babel-polyfill/lib/core-js/modules/es6.object.assign"; +import "babel-polyfill/lib/core-js/modules/es6.object.is"; +import "babel-polyfill/lib/core-js/modules/es6.object.set-prototype-of"; +import "babel-polyfill/lib/core-js/modules/es6.function.name"; +import "babel-polyfill/lib/core-js/modules/es6.string.raw"; +import "babel-polyfill/lib/core-js/modules/es6.string.from-code-point"; +import "babel-polyfill/lib/core-js/modules/es6.string.code-point-at"; +import "babel-polyfill/lib/core-js/modules/es6.string.repeat"; +import "babel-polyfill/lib/core-js/modules/es6.string.starts-with"; +import "babel-polyfill/lib/core-js/modules/es6.string.ends-with"; +import "babel-polyfill/lib/core-js/modules/es6.string.includes"; +import "babel-polyfill/lib/core-js/modules/es6.regexp.flags"; +import "babel-polyfill/lib/core-js/modules/es6.regexp.match"; +import "babel-polyfill/lib/core-js/modules/es6.regexp.replace"; +import "babel-polyfill/lib/core-js/modules/es6.regexp.split"; +import "babel-polyfill/lib/core-js/modules/es6.regexp.search"; +import "babel-polyfill/lib/core-js/modules/es6.array.from"; +import "babel-polyfill/lib/core-js/modules/es6.array.of"; +import "babel-polyfill/lib/core-js/modules/es6.array.copy-within"; +import "babel-polyfill/lib/core-js/modules/es6.array.find"; +import "babel-polyfill/lib/core-js/modules/es6.array.find-index"; +import "babel-polyfill/lib/core-js/modules/es6.array.fill"; +import "babel-polyfill/lib/core-js/modules/es6.array.iterator"; +import "babel-polyfill/lib/core-js/modules/es6.number.is-finite"; +import "babel-polyfill/lib/core-js/modules/es6.number.is-integer"; +import "babel-polyfill/lib/core-js/modules/es6.number.is-safe-integer"; +import "babel-polyfill/lib/core-js/modules/es6.number.is-nan"; +import "babel-polyfill/lib/core-js/modules/es6.number.epsilon"; +import "babel-polyfill/lib/core-js/modules/es6.number.min-safe-integer"; +import "babel-polyfill/lib/core-js/modules/es6.number.max-safe-integer"; +import "babel-polyfill/lib/core-js/modules/es6.number.parse-float"; +import "babel-polyfill/lib/core-js/modules/es6.number.parse-int"; +import "babel-polyfill/lib/core-js/modules/es6.math.acosh"; +import "babel-polyfill/lib/core-js/modules/es6.math.asinh"; +import "babel-polyfill/lib/core-js/modules/es6.math.atanh"; +import "babel-polyfill/lib/core-js/modules/es6.math.cbrt"; +import "babel-polyfill/lib/core-js/modules/es6.math.clz32"; +import "babel-polyfill/lib/core-js/modules/es6.math.cosh"; +import "babel-polyfill/lib/core-js/modules/es6.math.expm1"; +import "babel-polyfill/lib/core-js/modules/es6.math.fround"; +import "babel-polyfill/lib/core-js/modules/es6.math.hypot"; +import "babel-polyfill/lib/core-js/modules/es6.math.imul"; +import "babel-polyfill/lib/core-js/modules/es6.math.log1p"; +import "babel-polyfill/lib/core-js/modules/es6.math.log10"; +import "babel-polyfill/lib/core-js/modules/es6.math.log2"; +import "babel-polyfill/lib/core-js/modules/es6.math.sign"; +import "babel-polyfill/lib/core-js/modules/es6.math.sinh"; +import "babel-polyfill/lib/core-js/modules/es6.math.tanh"; +import "babel-polyfill/lib/core-js/modules/es6.math.trunc"; +import "babel-polyfill/lib/core-js/modules/es7.array.includes"; +import "babel-polyfill/lib/core-js/modules/es7.object.values"; +import "babel-polyfill/lib/core-js/modules/es7.object.entries"; +import "babel-polyfill/lib/core-js/modules/es7.object.get-own-property-descriptors"; +import "babel-polyfill/lib/core-js/modules/es7.string.pad-start"; +import "babel-polyfill/lib/core-js/modules/es7.string.pad-end"; +import "babel-polyfill/lib/core-js/modules/web.timers"; +import "babel-polyfill/lib/core-js/modules/web.immediate"; +import "babel-polyfill/lib/core-js/modules/web.dom.iterable"; +import "babel-polyfill/lib/regenerator-runtime/runtime"; diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-all/options.json b/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-all/options.json new file mode 100644 index 0000000000..21eec2f1a1 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-all/options.json @@ -0,0 +1,8 @@ +{ + "presets": [ + ["../../../../lib", { + "modules": false, + "useBuiltIns": "entry" + }] + ] +} diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-chrome-48/actual.js b/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-chrome-48/actual.js new file mode 100644 index 0000000000..7d70ec7d7b --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-chrome-48/actual.js @@ -0,0 +1,2 @@ +import "babel-polyfill"; +1 ** 2; diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-chrome-48/expected.js b/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-chrome-48/expected.js new file mode 100644 index 0000000000..88ffc1069b --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-chrome-48/expected.js @@ -0,0 +1,46 @@ +import "babel-polyfill/lib/core-js/modules/es6.typed.array-buffer"; +import "babel-polyfill/lib/core-js/modules/es6.typed.int8-array"; +import "babel-polyfill/lib/core-js/modules/es6.typed.uint8-array"; +import "babel-polyfill/lib/core-js/modules/es6.typed.uint8-clamped-array"; +import "babel-polyfill/lib/core-js/modules/es6.typed.int16-array"; +import "babel-polyfill/lib/core-js/modules/es6.typed.uint16-array"; +import "babel-polyfill/lib/core-js/modules/es6.typed.int32-array"; +import "babel-polyfill/lib/core-js/modules/es6.typed.uint32-array"; +import "babel-polyfill/lib/core-js/modules/es6.typed.float32-array"; +import "babel-polyfill/lib/core-js/modules/es6.typed.float64-array"; +import "babel-polyfill/lib/core-js/modules/es6.map"; +import "babel-polyfill/lib/core-js/modules/es6.set"; +import "babel-polyfill/lib/core-js/modules/es6.weak-map"; +import "babel-polyfill/lib/core-js/modules/es6.weak-set"; +import "babel-polyfill/lib/core-js/modules/es6.reflect.apply"; +import "babel-polyfill/lib/core-js/modules/es6.reflect.construct"; +import "babel-polyfill/lib/core-js/modules/es6.reflect.define-property"; +import "babel-polyfill/lib/core-js/modules/es6.reflect.delete-property"; +import "babel-polyfill/lib/core-js/modules/es6.reflect.get"; +import "babel-polyfill/lib/core-js/modules/es6.reflect.get-own-property-descriptor"; +import "babel-polyfill/lib/core-js/modules/es6.reflect.get-prototype-of"; +import "babel-polyfill/lib/core-js/modules/es6.reflect.has"; +import "babel-polyfill/lib/core-js/modules/es6.reflect.is-extensible"; +import "babel-polyfill/lib/core-js/modules/es6.reflect.own-keys"; +import "babel-polyfill/lib/core-js/modules/es6.reflect.prevent-extensions"; +import "babel-polyfill/lib/core-js/modules/es6.reflect.set"; +import "babel-polyfill/lib/core-js/modules/es6.reflect.set-prototype-of"; +import "babel-polyfill/lib/core-js/modules/es6.promise"; +import "babel-polyfill/lib/core-js/modules/es6.symbol"; +import "babel-polyfill/lib/core-js/modules/es6.function.name"; +import "babel-polyfill/lib/core-js/modules/es6.regexp.flags"; +import "babel-polyfill/lib/core-js/modules/es6.regexp.match"; +import "babel-polyfill/lib/core-js/modules/es6.regexp.replace"; +import "babel-polyfill/lib/core-js/modules/es6.regexp.split"; +import "babel-polyfill/lib/core-js/modules/es6.regexp.search"; +import "babel-polyfill/lib/core-js/modules/es6.array.from"; +import "babel-polyfill/lib/core-js/modules/es7.object.values"; +import "babel-polyfill/lib/core-js/modules/es7.object.entries"; +import "babel-polyfill/lib/core-js/modules/es7.object.get-own-property-descriptors"; +import "babel-polyfill/lib/core-js/modules/es7.string.pad-start"; +import "babel-polyfill/lib/core-js/modules/es7.string.pad-end"; +import "babel-polyfill/lib/core-js/modules/web.timers"; +import "babel-polyfill/lib/core-js/modules/web.immediate"; +import "babel-polyfill/lib/core-js/modules/web.dom.iterable"; +import "babel-polyfill/lib/regenerator-runtime/runtime"; +Math.pow(1, 2); \ No newline at end of file diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-chrome-48/options.json b/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-chrome-48/options.json new file mode 100644 index 0000000000..c975d957a6 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-chrome-48/options.json @@ -0,0 +1,11 @@ +{ + "presets": [ + ["../../../../lib", { + "targets": { + "chrome": 48 + }, + "modules": false, + "useBuiltIns": "entry" + }] + ] +} diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-chrome-49/actual.js b/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-chrome-49/actual.js new file mode 100644 index 0000000000..7d70ec7d7b --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-chrome-49/actual.js @@ -0,0 +1,2 @@ +import "babel-polyfill"; +1 ** 2; diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-chrome-49/expected.js b/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-chrome-49/expected.js new file mode 100644 index 0000000000..1109e4f079 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-chrome-49/expected.js @@ -0,0 +1,32 @@ +import "babel-polyfill/lib/core-js/modules/es6.typed.array-buffer"; +import "babel-polyfill/lib/core-js/modules/es6.typed.int8-array"; +import "babel-polyfill/lib/core-js/modules/es6.typed.uint8-array"; +import "babel-polyfill/lib/core-js/modules/es6.typed.uint8-clamped-array"; +import "babel-polyfill/lib/core-js/modules/es6.typed.int16-array"; +import "babel-polyfill/lib/core-js/modules/es6.typed.uint16-array"; +import "babel-polyfill/lib/core-js/modules/es6.typed.int32-array"; +import "babel-polyfill/lib/core-js/modules/es6.typed.uint32-array"; +import "babel-polyfill/lib/core-js/modules/es6.typed.float32-array"; +import "babel-polyfill/lib/core-js/modules/es6.typed.float64-array"; +import "babel-polyfill/lib/core-js/modules/es6.map"; +import "babel-polyfill/lib/core-js/modules/es6.set"; +import "babel-polyfill/lib/core-js/modules/es6.weak-map"; +import "babel-polyfill/lib/core-js/modules/es6.weak-set"; +import "babel-polyfill/lib/core-js/modules/es6.promise"; +import "babel-polyfill/lib/core-js/modules/es6.symbol"; +import "babel-polyfill/lib/core-js/modules/es6.function.name"; +import "babel-polyfill/lib/core-js/modules/es6.regexp.match"; +import "babel-polyfill/lib/core-js/modules/es6.regexp.replace"; +import "babel-polyfill/lib/core-js/modules/es6.regexp.split"; +import "babel-polyfill/lib/core-js/modules/es6.regexp.search"; +import "babel-polyfill/lib/core-js/modules/es6.array.from"; +import "babel-polyfill/lib/core-js/modules/es7.object.values"; +import "babel-polyfill/lib/core-js/modules/es7.object.entries"; +import "babel-polyfill/lib/core-js/modules/es7.object.get-own-property-descriptors"; +import "babel-polyfill/lib/core-js/modules/es7.string.pad-start"; +import "babel-polyfill/lib/core-js/modules/es7.string.pad-end"; +import "babel-polyfill/lib/core-js/modules/web.timers"; +import "babel-polyfill/lib/core-js/modules/web.immediate"; +import "babel-polyfill/lib/core-js/modules/web.dom.iterable"; +import "babel-polyfill/lib/regenerator-runtime/runtime"; +Math.pow(1, 2); \ No newline at end of file diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-chrome-49/options.json b/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-chrome-49/options.json new file mode 100644 index 0000000000..0570d4dc43 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-chrome-49/options.json @@ -0,0 +1,11 @@ +{ + "presets": [ + ["../../../../lib", { + "targets": { + "chrome": 49 + }, + "modules": false, + "useBuiltIns": "entry" + }] + ] +} diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-chromeandroid/actual.js b/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-chromeandroid/actual.js new file mode 100644 index 0000000000..7d70ec7d7b --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-chromeandroid/actual.js @@ -0,0 +1,2 @@ +import "babel-polyfill"; +1 ** 2; diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-chromeandroid/expected.js b/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-chromeandroid/expected.js new file mode 100644 index 0000000000..0b92eeda57 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-chromeandroid/expected.js @@ -0,0 +1,4 @@ +import "babel-polyfill/lib/core-js/modules/web.timers"; +import "babel-polyfill/lib/core-js/modules/web.immediate"; +import "babel-polyfill/lib/core-js/modules/web.dom.iterable"; +1 ** 2; \ No newline at end of file diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-chromeandroid/options.json b/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-chromeandroid/options.json new file mode 100644 index 0000000000..9a973f7d8f --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-chromeandroid/options.json @@ -0,0 +1,11 @@ +{ + "presets": [ + ["../../../../lib", { + "targets": { + "browsers": "chromeandroid 59" + }, + "modules": false, + "useBuiltIns": "entry" + }] + ] +} diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-ie-9/actual.js b/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-ie-9/actual.js new file mode 100644 index 0000000000..d3984c50aa --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-ie-9/actual.js @@ -0,0 +1 @@ +import "babel-polyfill"; diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-ie-9/expected.js b/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-ie-9/expected.js new file mode 100644 index 0000000000..3f44cad315 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-ie-9/expected.js @@ -0,0 +1,89 @@ +import "babel-polyfill/lib/core-js/modules/es6.typed.array-buffer"; +import "babel-polyfill/lib/core-js/modules/es6.typed.data-view"; +import "babel-polyfill/lib/core-js/modules/es6.typed.int8-array"; +import "babel-polyfill/lib/core-js/modules/es6.typed.uint8-array"; +import "babel-polyfill/lib/core-js/modules/es6.typed.uint8-clamped-array"; +import "babel-polyfill/lib/core-js/modules/es6.typed.int16-array"; +import "babel-polyfill/lib/core-js/modules/es6.typed.uint16-array"; +import "babel-polyfill/lib/core-js/modules/es6.typed.int32-array"; +import "babel-polyfill/lib/core-js/modules/es6.typed.uint32-array"; +import "babel-polyfill/lib/core-js/modules/es6.typed.float32-array"; +import "babel-polyfill/lib/core-js/modules/es6.typed.float64-array"; +import "babel-polyfill/lib/core-js/modules/es6.map"; +import "babel-polyfill/lib/core-js/modules/es6.set"; +import "babel-polyfill/lib/core-js/modules/es6.weak-map"; +import "babel-polyfill/lib/core-js/modules/es6.weak-set"; +import "babel-polyfill/lib/core-js/modules/es6.reflect.apply"; +import "babel-polyfill/lib/core-js/modules/es6.reflect.construct"; +import "babel-polyfill/lib/core-js/modules/es6.reflect.define-property"; +import "babel-polyfill/lib/core-js/modules/es6.reflect.delete-property"; +import "babel-polyfill/lib/core-js/modules/es6.reflect.get"; +import "babel-polyfill/lib/core-js/modules/es6.reflect.get-own-property-descriptor"; +import "babel-polyfill/lib/core-js/modules/es6.reflect.get-prototype-of"; +import "babel-polyfill/lib/core-js/modules/es6.reflect.has"; +import "babel-polyfill/lib/core-js/modules/es6.reflect.is-extensible"; +import "babel-polyfill/lib/core-js/modules/es6.reflect.own-keys"; +import "babel-polyfill/lib/core-js/modules/es6.reflect.prevent-extensions"; +import "babel-polyfill/lib/core-js/modules/es6.reflect.set"; +import "babel-polyfill/lib/core-js/modules/es6.reflect.set-prototype-of"; +import "babel-polyfill/lib/core-js/modules/es6.promise"; +import "babel-polyfill/lib/core-js/modules/es6.symbol"; +import "babel-polyfill/lib/core-js/modules/es6.object.assign"; +import "babel-polyfill/lib/core-js/modules/es6.object.is"; +import "babel-polyfill/lib/core-js/modules/es6.object.set-prototype-of"; +import "babel-polyfill/lib/core-js/modules/es6.function.name"; +import "babel-polyfill/lib/core-js/modules/es6.string.raw"; +import "babel-polyfill/lib/core-js/modules/es6.string.from-code-point"; +import "babel-polyfill/lib/core-js/modules/es6.string.code-point-at"; +import "babel-polyfill/lib/core-js/modules/es6.string.repeat"; +import "babel-polyfill/lib/core-js/modules/es6.string.starts-with"; +import "babel-polyfill/lib/core-js/modules/es6.string.ends-with"; +import "babel-polyfill/lib/core-js/modules/es6.string.includes"; +import "babel-polyfill/lib/core-js/modules/es6.regexp.flags"; +import "babel-polyfill/lib/core-js/modules/es6.regexp.match"; +import "babel-polyfill/lib/core-js/modules/es6.regexp.replace"; +import "babel-polyfill/lib/core-js/modules/es6.regexp.split"; +import "babel-polyfill/lib/core-js/modules/es6.regexp.search"; +import "babel-polyfill/lib/core-js/modules/es6.array.from"; +import "babel-polyfill/lib/core-js/modules/es6.array.of"; +import "babel-polyfill/lib/core-js/modules/es6.array.copy-within"; +import "babel-polyfill/lib/core-js/modules/es6.array.find"; +import "babel-polyfill/lib/core-js/modules/es6.array.find-index"; +import "babel-polyfill/lib/core-js/modules/es6.array.fill"; +import "babel-polyfill/lib/core-js/modules/es6.array.iterator"; +import "babel-polyfill/lib/core-js/modules/es6.number.is-finite"; +import "babel-polyfill/lib/core-js/modules/es6.number.is-integer"; +import "babel-polyfill/lib/core-js/modules/es6.number.is-safe-integer"; +import "babel-polyfill/lib/core-js/modules/es6.number.is-nan"; +import "babel-polyfill/lib/core-js/modules/es6.number.epsilon"; +import "babel-polyfill/lib/core-js/modules/es6.number.min-safe-integer"; +import "babel-polyfill/lib/core-js/modules/es6.number.max-safe-integer"; +import "babel-polyfill/lib/core-js/modules/es6.number.parse-float"; +import "babel-polyfill/lib/core-js/modules/es6.number.parse-int"; +import "babel-polyfill/lib/core-js/modules/es6.math.acosh"; +import "babel-polyfill/lib/core-js/modules/es6.math.asinh"; +import "babel-polyfill/lib/core-js/modules/es6.math.atanh"; +import "babel-polyfill/lib/core-js/modules/es6.math.cbrt"; +import "babel-polyfill/lib/core-js/modules/es6.math.clz32"; +import "babel-polyfill/lib/core-js/modules/es6.math.cosh"; +import "babel-polyfill/lib/core-js/modules/es6.math.expm1"; +import "babel-polyfill/lib/core-js/modules/es6.math.fround"; +import "babel-polyfill/lib/core-js/modules/es6.math.hypot"; +import "babel-polyfill/lib/core-js/modules/es6.math.imul"; +import "babel-polyfill/lib/core-js/modules/es6.math.log1p"; +import "babel-polyfill/lib/core-js/modules/es6.math.log10"; +import "babel-polyfill/lib/core-js/modules/es6.math.log2"; +import "babel-polyfill/lib/core-js/modules/es6.math.sign"; +import "babel-polyfill/lib/core-js/modules/es6.math.sinh"; +import "babel-polyfill/lib/core-js/modules/es6.math.tanh"; +import "babel-polyfill/lib/core-js/modules/es6.math.trunc"; +import "babel-polyfill/lib/core-js/modules/es7.array.includes"; +import "babel-polyfill/lib/core-js/modules/es7.object.values"; +import "babel-polyfill/lib/core-js/modules/es7.object.entries"; +import "babel-polyfill/lib/core-js/modules/es7.object.get-own-property-descriptors"; +import "babel-polyfill/lib/core-js/modules/es7.string.pad-start"; +import "babel-polyfill/lib/core-js/modules/es7.string.pad-end"; +import "babel-polyfill/lib/core-js/modules/web.timers"; +import "babel-polyfill/lib/core-js/modules/web.immediate"; +import "babel-polyfill/lib/core-js/modules/web.dom.iterable"; +import "babel-polyfill/lib/regenerator-runtime/runtime"; diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-ie-9/options.json b/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-ie-9/options.json new file mode 100644 index 0000000000..9f6cf02b9a --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-ie-9/options.json @@ -0,0 +1,12 @@ +{ + "presets": [ + ["../../../../lib", { + "targets": { + "ie": 9 + }, + "modules": false, + "useBuiltIns": "entry", + "modules": false + }] + ] +} diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-import/actual.js b/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-import/actual.js new file mode 100644 index 0000000000..7d70ec7d7b --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-import/actual.js @@ -0,0 +1,2 @@ +import "babel-polyfill"; +1 ** 2; diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-import/expected.js b/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-import/expected.js new file mode 100644 index 0000000000..0feee5e2c9 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-import/expected.js @@ -0,0 +1,6 @@ +import "babel-polyfill/lib/core-js/modules/es7.string.pad-start"; +import "babel-polyfill/lib/core-js/modules/es7.string.pad-end"; +import "babel-polyfill/lib/core-js/modules/web.timers"; +import "babel-polyfill/lib/core-js/modules/web.immediate"; +import "babel-polyfill/lib/core-js/modules/web.dom.iterable"; +1 ** 2; \ No newline at end of file diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-import/options.json b/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-import/options.json new file mode 100644 index 0000000000..7c15d7db40 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-import/options.json @@ -0,0 +1,11 @@ +{ + "presets": [ + ["../../../../lib", { + "targets": { + "chrome": 55 + }, + "modules": false, + "useBuiltIns": "entry" + }] + ] +} diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-node-web/actual.js b/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-node-web/actual.js new file mode 100644 index 0000000000..d3984c50aa --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-node-web/actual.js @@ -0,0 +1 @@ +import "babel-polyfill"; diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-node-web/expected.js b/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-node-web/expected.js new file mode 100644 index 0000000000..550d2e365b --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-node-web/expected.js @@ -0,0 +1,6 @@ +import "babel-polyfill/lib/core-js/modules/es7.string.pad-start"; +import "babel-polyfill/lib/core-js/modules/es7.string.pad-end"; +import "babel-polyfill/lib/core-js/modules/web.timers"; +import "babel-polyfill/lib/core-js/modules/web.immediate"; +import "babel-polyfill/lib/core-js/modules/web.dom.iterable"; +import "babel-polyfill/lib/regenerator-runtime/runtime"; \ No newline at end of file diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-node-web/options.json b/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-node-web/options.json new file mode 100644 index 0000000000..b478f84ee7 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-node-web/options.json @@ -0,0 +1,13 @@ +{ + "presets": [ + ["../../../../lib", { + "targets": { + "chrome": "55", + "node": "7.6", + "uglify": true + }, + "modules": false, + "useBuiltIns": "entry" + }] + ] +} diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-node/actual.js b/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-node/actual.js new file mode 100644 index 0000000000..d3984c50aa --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-node/actual.js @@ -0,0 +1 @@ +import "babel-polyfill"; diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-node/expected.js b/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-node/expected.js new file mode 100644 index 0000000000..8de0c91159 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-node/expected.js @@ -0,0 +1,3 @@ +import "babel-polyfill/lib/core-js/modules/es7.string.pad-start"; +import "babel-polyfill/lib/core-js/modules/es7.string.pad-end"; +import "babel-polyfill/lib/regenerator-runtime/runtime"; \ No newline at end of file diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-node/options.json b/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-node/options.json new file mode 100644 index 0000000000..002aaf86fc --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-node/options.json @@ -0,0 +1,12 @@ +{ + "presets": [ + ["../../../../lib", { + "targets": { + "node": "7.6", + "uglify": true + }, + "modules": false, + "useBuiltIns": "entry" + }] + ] +} diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-require/actual.js b/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-require/actual.js new file mode 100644 index 0000000000..e17e21f341 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-require/actual.js @@ -0,0 +1,3 @@ +require("babel-polyfill"); + +1 ** 2; diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-require/expected.js b/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-require/expected.js new file mode 100644 index 0000000000..f91ef28dec --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-require/expected.js @@ -0,0 +1,11 @@ +require("babel-polyfill/lib/core-js/modules/es7.string.pad-start"); + +require("babel-polyfill/lib/core-js/modules/es7.string.pad-end"); + +require("babel-polyfill/lib/core-js/modules/web.timers"); + +require("babel-polyfill/lib/core-js/modules/web.immediate"); + +require("babel-polyfill/lib/core-js/modules/web.dom.iterable"); + +1 ** 2; \ No newline at end of file diff --git a/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-require/options.json b/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-require/options.json new file mode 100644 index 0000000000..a31ebe2f8e --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-require/options.json @@ -0,0 +1,11 @@ +{ + "presets": [ + ["../../../../lib", { + "targets": { + "chrome": "55" + }, + "modules": false, + "useBuiltIns": "entry" + }] + ] +} diff --git a/experimental/babel-preset-env/test/fixtures/sanity/check-es2015-constants/exec.js b/experimental/babel-preset-env/test/fixtures/sanity/check-es2015-constants/exec.js new file mode 100644 index 0000000000..26dd9d7713 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/sanity/check-es2015-constants/exec.js @@ -0,0 +1,2 @@ +const one = 123; +one = 432; diff --git a/experimental/babel-preset-env/test/fixtures/sanity/check-es2015-constants/options.json b/experimental/babel-preset-env/test/fixtures/sanity/check-es2015-constants/options.json new file mode 100644 index 0000000000..25bb3f6508 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/sanity/check-es2015-constants/options.json @@ -0,0 +1,6 @@ +{ + "presets": [ + ["../../../../lib"] + ], + "throws": "\"one\" is read-only" +} diff --git a/experimental/babel-preset-env/test/fixtures/sanity/transform-duplicate-keys/actual.js b/experimental/babel-preset-env/test/fixtures/sanity/transform-duplicate-keys/actual.js new file mode 100644 index 0000000000..d7bc7a47fb --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/sanity/transform-duplicate-keys/actual.js @@ -0,0 +1 @@ +var a = { b:1, b: 2}; diff --git a/experimental/babel-preset-env/test/fixtures/sanity/transform-duplicate-keys/expected.js b/experimental/babel-preset-env/test/fixtures/sanity/transform-duplicate-keys/expected.js new file mode 100644 index 0000000000..f6a8e65dca --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/sanity/transform-duplicate-keys/expected.js @@ -0,0 +1,5 @@ +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +var a = _defineProperty({ + b: 1 +}, "b", 2); \ No newline at end of file diff --git a/experimental/babel-preset-env/test/fixtures/sanity/transform-duplicate-keys/options.json b/experimental/babel-preset-env/test/fixtures/sanity/transform-duplicate-keys/options.json new file mode 100644 index 0000000000..1f29c71c16 --- /dev/null +++ b/experimental/babel-preset-env/test/fixtures/sanity/transform-duplicate-keys/options.json @@ -0,0 +1,7 @@ +{ + "presets": [ + ["../../../../lib", { + "modules": false + }] + ] +} diff --git a/experimental/babel-preset-env/test/index.spec.js b/experimental/babel-preset-env/test/index.spec.js new file mode 100644 index 0000000000..0fb2c335b2 --- /dev/null +++ b/experimental/babel-preset-env/test/index.spec.js @@ -0,0 +1,143 @@ +"use strict"; + +const babelPresetEnv = require("../lib/index.js"); +const assert = require("assert"); + +describe("babel-preset-env", () => { + describe("isPluginRequired", () => { + const MAX_VERSION = `${Number.MAX_SAFE_INTEGER}.0.0`; + + it("returns true if no targets are specified", () => { + assert.strictEqual(babelPresetEnv.isPluginRequired({}, {}), true); + }); + + it("returns true if plugin feature is not implemented in one or more targets", () => { + let targets; + const plugin = { + edge: false, + firefox: 45, + chrome: 49, + }; + + targets = { + chrome: MAX_VERSION, + firefox: MAX_VERSION, + }; + assert.strictEqual( + babelPresetEnv.isPluginRequired(targets, plugin), + false, + ); + + targets = { + edge: "12", + }; + assert.strictEqual( + babelPresetEnv.isPluginRequired(targets, plugin), + true, + ); + }); + + it("returns false if plugin feature is implemented by lower than target", () => { + const plugin = { + chrome: 49, + }; + const targets = { + chrome: MAX_VERSION, + }; + + assert.strictEqual( + babelPresetEnv.isPluginRequired(targets, plugin), + false, + ); + }); + + it("returns false if plugin feature is implemented is equal to target", () => { + const plugin = { + chrome: 49, + }; + const targets = { + chrome: "49.0.0", + }; + assert.strictEqual( + babelPresetEnv.isPluginRequired(targets, plugin), + false, + ); + }); + + it("returns true if plugin feature is implemented is greater than target", () => { + const plugin = { + chrome: 50, + }; + const targets = { + chrome: "49.0.0", + }; + assert.strictEqual( + babelPresetEnv.isPluginRequired(targets, plugin), + true, + ); + }); + + it("returns true if uglify is specified as a target", () => { + const plugin = { + chrome: 50, + }; + const targets = { + chrome: "55.0.0", + uglify: true, + }; + assert.strictEqual( + babelPresetEnv.isPluginRequired(targets, plugin), + true, + ); + }); + + it("returns when target is a decimal", () => { + const plugin = { + node: 6.9, + }; + const targets = { + node: "6.10.0", + }; + assert.strictEqual( + babelPresetEnv.isPluginRequired(targets, plugin), + false, + ); + }); + + it("throws an error if target version is invalid", () => { + const plugin = { + chrome: 50, + }; + const targets = { + chrome: 55, + }; + assert.throws(() => babelPresetEnv.isPluginRequired(targets, plugin)); + }); + }); + + describe("transformIncludesAndExcludes", () => { + it("should return in transforms array", () => { + assert.deepEqual( + babelPresetEnv.transformIncludesAndExcludes([ + "transform-es2015-arrow-functions", + ]), + { + all: ["transform-es2015-arrow-functions"], + plugins: new Set(["transform-es2015-arrow-functions"]), + builtIns: new Set(), + }, + ); + }); + + it("should return in built-ins array", () => { + assert.deepEqual( + babelPresetEnv.transformIncludesAndExcludes(["es6.map"]), + { + all: ["es6.map"], + plugins: new Set(), + builtIns: new Set(["es6.map"]), + }, + ); + }); + }); +}); diff --git a/experimental/babel-preset-env/test/normalize-options.spec.js b/experimental/babel-preset-env/test/normalize-options.spec.js new file mode 100644 index 0000000000..ffdb7e8697 --- /dev/null +++ b/experimental/babel-preset-env/test/normalize-options.spec.js @@ -0,0 +1,142 @@ +"use strict"; + +const normalizeOptions = require("../lib/normalize-options.js"); +const assert = require("assert"); + +const { + checkDuplicateIncludeExcludes, + normalizePluginNames, + validateBoolOption, + validateIncludesAndExcludes, + validateModulesOption, +} = normalizeOptions; + +describe("normalize-options", () => { + describe("normalizeOptions", () => { + it("should return normalized `include` and `exclude`", () => { + const normalized = normalizeOptions.default({ + include: [ + "babel-plugin-transform-es2015-spread", + "transform-es2015-classes", + ], + }); + assert.deepEqual(normalized.include, [ + "transform-es2015-spread", + "transform-es2015-classes", + ]); + }); + + it("should throw if duplicate names in `include` and `exclude`", () => { + const normalizeWithSameIncludes = () => { + normalizeOptions.default({ + include: ["babel-plugin-transform-es2015-spread"], + exclude: ["transform-es2015-spread"], + }); + }; + assert.throws(normalizeWithSameIncludes, Error); + }); + }); + + describe("validateBoolOption", () => { + it("`undefined` option returns false", () => { + assert(validateBoolOption("test", undefined, false) === false); + }); + + it("`false` option returns false", () => { + assert(validateBoolOption("test", false, false) === false); + }); + + it("`true` option returns true", () => { + assert(validateBoolOption("test", true, false) === true); + }); + + it("array option is invalid", () => { + assert.throws(() => { + validateBoolOption("test", [], false); + }); + }); + }); + + describe("checkDuplicateIncludeExcludes", function() { + it("should throw if duplicate names in both", function() { + assert.throws(() => { + checkDuplicateIncludeExcludes( + ["transform-regenerator", "map"], + ["transform-regenerator", "map"], + ); + }, Error); + }); + + it("should not throw if no duplicate names in both", function() { + assert.doesNotThrow(() => { + checkDuplicateIncludeExcludes(["transform-regenerator"], ["map"]); + }, Error); + }); + }); + + describe("normalizePluginNames", function() { + it("should drop `babel-plugin-` prefix if needed", function() { + assert.deepEqual( + normalizePluginNames([ + "babel-plugin-transform-es2015-object-super", + "transform-es2015-parameters", + ]), + ["transform-es2015-object-super", "transform-es2015-parameters"], + ); + }); + + it("should not throw if no duplicate names in both", function() { + assert.doesNotThrow(() => { + checkDuplicateIncludeExcludes(["transform-regenerator"], ["map"]); + }, Error); + }); + }); + + describe("validateModulesOption", () => { + it("`undefined` option returns commonjs", () => { + assert(validateModulesOption() === "commonjs"); + }); + + it("`false` option returns commonjs", () => { + assert(validateModulesOption(false) === false); + }); + + it("commonjs option is valid", () => { + assert(validateModulesOption("commonjs") === "commonjs"); + }); + + it("systemjs option is valid", () => { + assert(validateModulesOption("systemjs") === "systemjs"); + }); + + it("amd option is valid", () => { + assert(validateModulesOption("amd") === "amd"); + }); + + it("umd option is valid", () => { + assert(validateModulesOption("umd") === "umd"); + }); + + it("`true` option is invalid", () => { + assert.throws(() => { + validateModulesOption(true); + }, Error); + }); + + it("array option is invalid", () => { + assert.throws(() => { + assert(validateModulesOption([])); + }, Error); + }); + }); + describe("validateIncludesAndExcludes", function() { + it("should return empty arrays if undefined", function() { + assert.deepEqual(validateIncludesAndExcludes(), []); + }); + it("should throw if not in features", function() { + assert.throws(() => { + validateIncludesAndExcludes(["asdf"]); + }, Error); + }); + }); +}); diff --git a/experimental/babel-preset-env/test/targets-parser.spec.js b/experimental/babel-preset-env/test/targets-parser.spec.js new file mode 100644 index 0000000000..204a7d3457 --- /dev/null +++ b/experimental/babel-preset-env/test/targets-parser.spec.js @@ -0,0 +1,86 @@ +import assert from "assert"; +import getTargets from "../src/targets-parser"; + +describe("getTargets", () => { + it("parses", () => { + assert.deepEqual( + getTargets({ + chrome: 49, + firefox: "55", + ie: "9", + node: "6.10", + electron: "1.6", + }), + { + chrome: "49.0.0", + electron: "1.6.0", + firefox: "55.0.0", + ie: "9.0.0", + node: "6.10.0", + }, + ); + }); + + describe("browser", () => { + it("merges browser key targets", () => { + assert.deepEqual( + getTargets({ + browsers: "chrome 56, ie 11, firefox 51, safari 9", + chrome: "49", + firefox: "55", + ie: "9", + }), + { + chrome: "49.0.0", + firefox: "55.0.0", + ie: "9.0.0", + safari: "9.0.0", + }, + ); + }); + + it("ignores invalid", () => { + assert.deepEqual( + getTargets({ + browsers: 59, + chrome: "49", + firefox: "55", + ie: "11", + }), + { + chrome: "49.0.0", + firefox: "55.0.0", + ie: "11.0.0", + }, + ); + }); + }); + + describe("node", () => { + it("should return the current node version with option 'current'", () => { + assert.deepEqual( + getTargets({ + node: true, + }), + { + node: process.versions.node, + }, + ); + }); + }); + + describe("electron", () => { + it("should be its own target", () => { + assert.deepEqual( + getTargets({ + chrome: "46", + electron: "0.34", + }), + { + chrome: "46.0.0", + electron: "0.34.0", + }, + ); + }); + }); +}); diff --git a/experimental/babel-preset-env/test/utils.spec.js b/experimental/babel-preset-env/test/utils.spec.js new file mode 100644 index 0000000000..9dbc454ae2 --- /dev/null +++ b/experimental/babel-preset-env/test/utils.spec.js @@ -0,0 +1,57 @@ +"use strict"; + +const utils = require("../lib/utils"); +const assert = require("assert"); + +const { prettifyTargets, prettifyVersion, semverify } = utils; + +describe("utils", () => { + describe("semverify", () => { + it("returns", () => { + assert.strictEqual(semverify("1"), "1.0.0"); + assert.strictEqual(semverify("1.0"), "1.0.0"); + assert.strictEqual(semverify("1.0.0"), "1.0.0"); + assert.strictEqual(semverify(1), "1.0.0"); + assert.strictEqual(semverify(1.2), "1.2.0"); + }); + }); + + describe("prettifyVersion", () => { + it("returns", () => { + assert.strictEqual(prettifyVersion(true), true); + assert.strictEqual(prettifyVersion("0.16.0"), "0.16"); + assert.strictEqual(prettifyVersion("1.0.0"), "1"); + assert.strictEqual(prettifyVersion("1.1.0"), "1.1"); + assert.strictEqual(prettifyVersion("1.0.2"), "1.0.2"); + assert.strictEqual(prettifyVersion("1.2.3"), "1.2.3"); + }); + }); + + describe("prettifyTargets", () => { + it("returns", () => { + assert.deepStrictEqual(prettifyTargets({}), {}); + + assert.deepStrictEqual( + prettifyTargets({ + uglify: true, + }), + { + uglify: true, + }, + ); + + assert.deepStrictEqual( + prettifyTargets({ + chrome: "54.0.0", + electron: "1.6.0", + node: "0.12.0", + }), + { + chrome: "54", + electron: "1.6", + node: "0.12", + }, + ); + }); + }); +}); diff --git a/experimental/babel-preset-env/yarn.lock b/experimental/babel-preset-env/yarn.lock new file mode 100644 index 0000000000..c6bc325a31 --- /dev/null +++ b/experimental/babel-preset-env/yarn.lock @@ -0,0 +1,4996 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +abab@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/abab/-/abab-1.0.3.tgz#b81de5f7274ec4e756d797cd834f303642724e5d" + +abbrev@1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.0.tgz#d0554c2256636e2f56e7c2e5ad183f859428d81f" + +acorn-globals@^1.0.4: + version "1.0.9" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-1.0.9.tgz#55bb5e98691507b74579d0513413217c380c54cf" + dependencies: + acorn "^2.1.0" + +acorn-jsx@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" + dependencies: + acorn "^3.0.4" + +acorn@^2.1.0, acorn@^2.4.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-2.7.0.tgz#ab6e7d9d886aaca8b085bc3312b79a198433f0e7" + +acorn@^3.0.4: + version "3.3.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" + +acorn@^4.0.3: + version "4.0.11" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.11.tgz#edcda3bd937e7556410d42ed5860f67399c794c0" + +acorn@^5.0.1: + version "5.0.3" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.0.3.tgz#c460df08491463f028ccb82eab3730bf01087b3d" + +acorn@^5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.1.2.tgz#911cb53e036807cf0fa778dc5d370fbd864246d7" + +ajv-keywords@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-2.1.0.tgz#a296e17f7bfae7c1ce4f7e0de53d29cb32162df0" + +ajv@^4.9.1: + version "4.11.8" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" + dependencies: + co "^4.6.0" + json-stable-stringify "^1.0.1" + +ajv@^5.2.0, ajv@^5.2.3: + version "5.2.3" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.2.3.tgz#c06f598778c44c6b161abafe3466b81ad1814ed2" + dependencies: + co "^4.6.0" + fast-deep-equal "^1.0.0" + json-schema-traverse "^0.3.0" + json-stable-stringify "^1.0.1" + +align-text@^0.1.1, align-text@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" + dependencies: + kind-of "^3.0.2" + longest "^1.0.1" + repeat-string "^1.5.2" + +amdefine@>=0.0.4: + version "1.0.1" + resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" + +ansi-escapes@^1.0.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e" + +ansi-escapes@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.0.0.tgz#ec3e8b4e9f8064fc02c3ac9b65f1c275bda8ef92" + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + +ansi-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + +ansi-styles@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.0.tgz#c159b8d5be0f9e5a6f346dab94f16ce022161b88" + dependencies: + color-convert "^1.9.0" + +ansidiff@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/ansidiff/-/ansidiff-1.0.0.tgz#d4a3ed89ab1670f20c097def759f34d944478aab" + dependencies: + diff "1.0" + +anymatch@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.0.tgz#a3e52fa39168c825ff57b0248126ce5a8ff95507" + dependencies: + arrify "^1.0.0" + micromatch "^2.1.5" + +app-root-path@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/app-root-path/-/app-root-path-2.0.1.tgz#cd62dcf8e4fd5a417efc664d2e5b10653c651b46" + +append-transform@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-0.4.0.tgz#d76ebf8ca94d276e247a36bad44a4b74ab611991" + dependencies: + default-require-extensions "^1.0.0" + +aproba@^1.0.3: + version "1.1.1" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.1.1.tgz#95d3600f07710aa0e9298c726ad5ecf2eacbabab" + +archy@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" + +are-we-there-yet@~1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz#bb5dca382bb94f05e15194373d16fd3ba1ca110d" + dependencies: + delegates "^1.0.0" + readable-stream "^2.0.6" + +argparse@^1.0.7: + version "1.0.9" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86" + dependencies: + sprintf-js "~1.0.2" + +argv@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/argv/-/argv-0.0.2.tgz#ecbd16f8949b157183711b1bda334f37840185ab" + +arr-diff@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" + dependencies: + arr-flatten "^1.0.1" + +arr-flatten@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.0.3.tgz#a274ed85ac08849b6bd7847c4580745dc51adfb1" + +array-includes@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.0.3.tgz#184b48f62d92d7452bb31b323165c7f8bd02266d" + dependencies: + define-properties "^1.1.2" + es-abstract "^1.7.0" + +array-union@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" + dependencies: + array-uniq "^1.0.1" + +array-uniq@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + +array-unique@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" + +arrify@^1.0.0, arrify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + +asn1@~0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + +assert-plus@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" + +assertion-error@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.0.2.tgz#13ca515d86206da0bac66e834dd397d87581094c" + +ast-types@0.9.6: + version "0.9.6" + resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.9.6.tgz#102c9e9e9005d3e7e3829bf0c4fa24ee862ee9b9" + +astquery@latest: + version "0.0.11" + resolved "https://registry.yarnpkg.com/astquery/-/astquery-0.0.11.tgz#1538c54d3f3a788c362942ef2bab139036fe9cdd" + +async-each@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" + +async@^1.4.0: + version "1.5.2" + resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + +aws-sign2@~0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" + +aws4@^1.2.1: + version "1.6.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" + +babel-cli@7.0.0-beta.2: + version "7.0.0-beta.2" + resolved "https://registry.yarnpkg.com/babel-cli/-/babel-cli-7.0.0-beta.2.tgz#2aad00a444a3d053b5e52c58c7f97e75287e8d30" + dependencies: + babel-core "7.0.0-beta.2" + babel-polyfill "7.0.0-beta.2" + babel-register "7.0.0-beta.2" + commander "^2.8.1" + convert-source-map "^1.1.0" + fs-readdir-recursive "^1.0.0" + glob "^7.0.0" + lodash "^4.2.0" + output-file-sync "^2.0.0" + slash "^1.0.0" + source-map "^0.5.0" + optionalDependencies: + chokidar "^1.6.1" + +babel-code-frame@7.0.0-beta.0: + version "7.0.0-beta.0" + resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-7.0.0-beta.0.tgz#418a7b5f3f7dc9a4670e61b1158b4c5661bec98d" + dependencies: + chalk "^2.0.0" + esutils "^2.0.2" + js-tokens "^3.0.0" + +babel-code-frame@7.0.0-beta.2: + version "7.0.0-beta.2" + resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-7.0.0-beta.2.tgz#fd02b03243d907063e042630a561c50661d03684" + dependencies: + chalk "^2.0.0" + esutils "^2.0.2" + js-tokens "^3.0.0" + +babel-code-frame@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.22.0.tgz#027620bee567a88c32561574e7fd0801d33118e4" + dependencies: + chalk "^1.1.0" + esutils "^2.0.2" + js-tokens "^3.0.0" + +babel-core@7.0.0-beta.2: + version "7.0.0-beta.2" + resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-7.0.0-beta.2.tgz#33826a99ba63b172ad5bfeb1f2f13652fe79d402" + dependencies: + babel-code-frame "7.0.0-beta.2" + babel-generator "7.0.0-beta.2" + babel-helpers "7.0.0-beta.2" + babel-messages "7.0.0-beta.2" + babel-template "7.0.0-beta.2" + babel-traverse "7.0.0-beta.2" + babel-types "7.0.0-beta.2" + babylon "7.0.0-beta.25" + convert-source-map "^1.1.0" + debug "^3.0.1" + json5 "^0.5.0" + lodash "^4.2.0" + micromatch "^2.3.11" + resolve "^1.3.2" + source-map "^0.5.0" + +babel-core@^6.24.1, babel-core@latest: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.24.1.tgz#8c428564dce1e1f41fb337ec34f4c3b022b5ad83" + dependencies: + babel-code-frame "^6.22.0" + babel-generator "^6.24.1" + babel-helpers "^6.24.1" + babel-messages "^6.23.0" + babel-register "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + babylon "^6.11.0" + convert-source-map "^1.1.0" + debug "^2.1.1" + json5 "^0.5.0" + lodash "^4.2.0" + minimatch "^3.0.2" + path-is-absolute "^1.0.0" + private "^0.1.6" + slash "^1.0.0" + source-map "^0.5.0" + +babel-eslint@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-8.0.1.tgz#5d718be7a328625d006022eb293ed3008cbd6346" + dependencies: + babel-code-frame "7.0.0-beta.0" + babel-traverse "7.0.0-beta.0" + babel-types "7.0.0-beta.0" + babylon "7.0.0-beta.22" + +babel-generator@7.0.0-beta.2: + version "7.0.0-beta.2" + resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-7.0.0-beta.2.tgz#e09bbd818c006486c3af938e4d71f99532614115" + dependencies: + babel-messages "7.0.0-beta.2" + babel-types "7.0.0-beta.2" + jsesc "^2.5.1" + lodash "^4.2.0" + source-map "^0.5.0" + trim-right "^1.0.1" + +babel-generator@^6.18.0, babel-generator@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.24.1.tgz#e715f486c58ded25649d888944d52aa07c5d9497" + dependencies: + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + detect-indent "^4.0.0" + jsesc "^1.3.0" + lodash "^4.2.0" + source-map "^0.5.0" + trim-right "^1.0.1" + +babel-helper-annotate-as-pure@7.0.0-beta.2: + version "7.0.0-beta.2" + resolved "https://registry.yarnpkg.com/babel-helper-annotate-as-pure/-/babel-helper-annotate-as-pure-7.0.0-beta.2.tgz#e41c37c53202305fc9829cdd407487f14f7d5c99" + dependencies: + babel-types "7.0.0-beta.2" + +babel-helper-bindify-decorators@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz#14c19e5f142d7b47f19a52431e52b1ccbc40a330" + dependencies: + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-builder-binary-assignment-operator-visitor@7.0.0-beta.2: + version "7.0.0-beta.2" + resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-7.0.0-beta.2.tgz#a9d510e27835c25c3de167813abb7a655c3c5a57" + dependencies: + babel-helper-explode-assignable-expression "7.0.0-beta.2" + babel-types "7.0.0-beta.2" + +babel-helper-builder-binary-assignment-operator-visitor@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664" + dependencies: + babel-helper-explode-assignable-expression "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-call-delegate@7.0.0-beta.2: + version "7.0.0-beta.2" + resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-7.0.0-beta.2.tgz#5236afdc19f937624b3bfbb0bc2bac82428f00c1" + dependencies: + babel-helper-hoist-variables "7.0.0-beta.2" + babel-traverse "7.0.0-beta.2" + babel-types "7.0.0-beta.2" + +babel-helper-call-delegate@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d" + dependencies: + babel-helper-hoist-variables "^6.24.1" + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-define-map@7.0.0-beta.2: + version "7.0.0-beta.2" + resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-7.0.0-beta.2.tgz#c485b4ed51ea501b88090b695fe2a1c74fb2f510" + dependencies: + babel-helper-function-name "7.0.0-beta.2" + babel-types "7.0.0-beta.2" + lodash "^4.2.0" + +babel-helper-define-map@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.24.1.tgz#7a9747f258d8947d32d515f6aa1c7bd02204a080" + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + lodash "^4.2.0" + +babel-helper-explode-assignable-expression@7.0.0-beta.2: + version "7.0.0-beta.2" + resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-7.0.0-beta.2.tgz#e14263dc5cfeb32aa99bfd60da283722e2955f0d" + dependencies: + babel-traverse "7.0.0-beta.2" + babel-types "7.0.0-beta.2" + +babel-helper-explode-assignable-expression@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa" + dependencies: + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-explode-class@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-explode-class/-/babel-helper-explode-class-6.24.1.tgz#7dc2a3910dee007056e1e31d640ced3d54eaa9eb" + dependencies: + babel-helper-bindify-decorators "^6.24.1" + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-fixtures@7.0.0-beta.2: + version "7.0.0-beta.2" + resolved "https://registry.yarnpkg.com/babel-helper-fixtures/-/babel-helper-fixtures-7.0.0-beta.2.tgz#df7d82fb358c73899872bff4dcb7419a395577c0" + dependencies: + lodash "^4.2.0" + semver "^5.3.0" + try-resolve "^1.0.0" + +babel-helper-function-name@7.0.0-beta.0: + version "7.0.0-beta.0" + resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-7.0.0-beta.0.tgz#d1b6779b647e5c5c31ebeb05e13b998e4d352d56" + dependencies: + babel-helper-get-function-arity "7.0.0-beta.0" + babel-template "7.0.0-beta.0" + babel-traverse "7.0.0-beta.0" + babel-types "7.0.0-beta.0" + +babel-helper-function-name@7.0.0-beta.2: + version "7.0.0-beta.2" + resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-7.0.0-beta.2.tgz#f051ccee25525210e113738e46e1a122654a6bee" + dependencies: + babel-helper-get-function-arity "7.0.0-beta.2" + babel-template "7.0.0-beta.2" + babel-traverse "7.0.0-beta.2" + babel-types "7.0.0-beta.2" + +babel-helper-function-name@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9" + dependencies: + babel-helper-get-function-arity "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-get-function-arity@7.0.0-beta.0: + version "7.0.0-beta.0" + resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-7.0.0-beta.0.tgz#9d1ab7213bb5efe1ef1638a8ea1489969b5a8b6e" + dependencies: + babel-types "7.0.0-beta.0" + +babel-helper-get-function-arity@7.0.0-beta.2: + version "7.0.0-beta.2" + resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-7.0.0-beta.2.tgz#65df223685018f8f7e199f6b8f2ccc3cb9079d84" + dependencies: + babel-types "7.0.0-beta.2" + +babel-helper-get-function-arity@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-hoist-variables@7.0.0-beta.2: + version "7.0.0-beta.2" + resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-7.0.0-beta.2.tgz#61fd4c88c186ec64b8e113b63eee5d77c5b7eb56" + dependencies: + babel-types "7.0.0-beta.2" + +babel-helper-hoist-variables@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-module-transforms@7.0.0-beta.2: + version "7.0.0-beta.2" + resolved "https://registry.yarnpkg.com/babel-helper-module-transforms/-/babel-helper-module-transforms-7.0.0-beta.2.tgz#35ea803c290ef91deb12eab79c01dc6317ac8d1a" + dependencies: + babel-template "7.0.0-beta.2" + babel-types "7.0.0-beta.2" + lodash "^4.2.0" + +babel-helper-optimise-call-expression@7.0.0-beta.2: + version "7.0.0-beta.2" + resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-7.0.0-beta.2.tgz#486b19aedcf62aba892f3599b2c5393cc711c814" + dependencies: + babel-types "7.0.0-beta.2" + +babel-helper-optimise-call-expression@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-plugin-test-runner@7.0.0-beta.2: + version "7.0.0-beta.2" + resolved "https://registry.yarnpkg.com/babel-helper-plugin-test-runner/-/babel-helper-plugin-test-runner-7.0.0-beta.2.tgz#e6cd4c90f7b3e1860bbca6cbaf49e4138a759219" + dependencies: + babel-helper-transform-fixture-test-runner "7.0.0-beta.2" + +babel-helper-regex@7.0.0-beta.2: + version "7.0.0-beta.2" + resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-7.0.0-beta.2.tgz#64b8d906210fcb0582848fecba6a7edf6e19840e" + dependencies: + lodash "^4.2.0" + +babel-helper-regex@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.24.1.tgz#d36e22fab1008d79d88648e32116868128456ce8" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + lodash "^4.2.0" + +babel-helper-regex@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz#325c59f902f82f24b74faceed0363954f6495e72" + dependencies: + babel-runtime "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + +babel-helper-remap-async-to-generator@7.0.0-beta.2: + version "7.0.0-beta.2" + resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-7.0.0-beta.2.tgz#88834569ac9ee504398eb20cdd735ecd25cbb4de" + dependencies: + babel-helper-wrap-function "7.0.0-beta.2" + babel-template "7.0.0-beta.2" + babel-traverse "7.0.0-beta.2" + babel-types "7.0.0-beta.2" + +babel-helper-remap-async-to-generator@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b" + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-replace-supers@7.0.0-beta.2: + version "7.0.0-beta.2" + resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-7.0.0-beta.2.tgz#8c5441d95851b7ba86be4127ba1422b661b46c69" + dependencies: + babel-helper-optimise-call-expression "7.0.0-beta.2" + babel-messages "7.0.0-beta.2" + babel-template "7.0.0-beta.2" + babel-traverse "7.0.0-beta.2" + babel-types "7.0.0-beta.2" + +babel-helper-replace-supers@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a" + dependencies: + babel-helper-optimise-call-expression "^6.24.1" + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-transform-fixture-test-runner@7.0.0-beta.2: + version "7.0.0-beta.2" + resolved "https://registry.yarnpkg.com/babel-helper-transform-fixture-test-runner/-/babel-helper-transform-fixture-test-runner-7.0.0-beta.2.tgz#3df66f0b08a7652d63db025d6ca196ace7885f5f" + dependencies: + babel-code-frame "7.0.0-beta.2" + babel-core "7.0.0-beta.2" + babel-helper-fixtures "7.0.0-beta.2" + babel-polyfill "7.0.0-beta.2" + chai "^4.1.0" + lodash "^4.2.0" + resolve "^1.3.2" + source-map "^0.5.0" + +babel-helper-wrap-function@7.0.0-beta.2: + version "7.0.0-beta.2" + resolved "https://registry.yarnpkg.com/babel-helper-wrap-function/-/babel-helper-wrap-function-7.0.0-beta.2.tgz#255b31b11a9e312836cdc30ad99a8133c141a696" + dependencies: + babel-helper-function-name "7.0.0-beta.2" + babel-template "7.0.0-beta.2" + babel-traverse "7.0.0-beta.2" + babel-types "7.0.0-beta.2" + +babel-helpers@7.0.0-beta.2: + version "7.0.0-beta.2" + resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-7.0.0-beta.2.tgz#a2f5f85e6c8e2739fa68e9137fdc0966538150f5" + dependencies: + babel-template "7.0.0-beta.2" + babel-traverse "7.0.0-beta.2" + babel-types "7.0.0-beta.2" + +babel-helpers@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" + dependencies: + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-messages@7.0.0-beta.0: + version "7.0.0-beta.0" + resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-7.0.0-beta.0.tgz#6df01296e49fc8fbd0637394326a167f36da817b" + +babel-messages@7.0.0-beta.2: + version "7.0.0-beta.2" + resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-7.0.0-beta.2.tgz#b6f685a7e81d8995ca72b70fc8039466990f81d8" + +babel-messages@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-check-es2015-constants@7.0.0-beta.2: + version "7.0.0-beta.2" + resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-7.0.0-beta.2.tgz#0d63c05ffa6e7c90aa0b39ece04a4c03e53e6216" + +babel-plugin-check-es2015-constants@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-istanbul@^4.1.5: + version "4.1.5" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.5.tgz#6760cdd977f411d3e175bb064f2bc327d99b2b6e" + dependencies: + find-up "^2.1.0" + istanbul-lib-instrument "^1.7.5" + test-exclude "^4.1.1" + +babel-plugin-syntax-async-functions@7.0.0-beta.0: + version "7.0.0-beta.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-7.0.0-beta.0.tgz#2d4074c6167cc78e0bdc49de65902f90e09b59de" + +babel-plugin-syntax-async-functions@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" + +babel-plugin-syntax-async-generators@7.0.0-beta.0: + version "7.0.0-beta.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-7.0.0-beta.0.tgz#a89061e968d4f4c2ee2f8a5b9c84eed19ec48488" + +babel-plugin-syntax-async-generators@7.0.0-beta.2: + version "7.0.0-beta.2" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-7.0.0-beta.2.tgz#e7a71351a10f6d3d58df6caf7d4479d401506b7a" + +babel-plugin-syntax-async-generators@^6.5.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz#6bc963ebb16eccbae6b92b596eb7f35c342a8b9a" + +babel-plugin-syntax-class-constructor-call@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-constructor-call/-/babel-plugin-syntax-class-constructor-call-6.18.0.tgz#9cb9d39fe43c8600bec8146456ddcbd4e1a76416" + +babel-plugin-syntax-class-properties@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz#d7eb23b79a317f8543962c505b827c7d6cac27de" + +babel-plugin-syntax-decorators@^6.13.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz#312563b4dbde3cc806cee3e416cceeaddd11ac0b" + +babel-plugin-syntax-do-expressions@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-do-expressions/-/babel-plugin-syntax-do-expressions-6.13.0.tgz#5747756139aa26d390d09410b03744ba07e4796d" + +babel-plugin-syntax-dynamic-import@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz#8d6a26229c83745a9982a441051572caa179b1da" + +babel-plugin-syntax-exponentiation-operator@7.0.0-beta.0: + version "7.0.0-beta.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-7.0.0-beta.0.tgz#0e09f65168b7dd2cc73ad7af547036ff128eb7d6" + +babel-plugin-syntax-exponentiation-operator@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de" + +babel-plugin-syntax-export-extensions@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-export-extensions/-/babel-plugin-syntax-export-extensions-6.13.0.tgz#70a1484f0f9089a4e84ad44bac353c95b9b12721" + +babel-plugin-syntax-flow@7.0.0-beta.2: + version "7.0.0-beta.2" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-7.0.0-beta.2.tgz#978f49f54ea8090abdeebffbb661bd0f49818f79" + +babel-plugin-syntax-function-bind@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-function-bind/-/babel-plugin-syntax-function-bind-6.13.0.tgz#48c495f177bdf31a981e732f55adc0bdd2601f46" + +babel-plugin-syntax-object-rest-spread@7.0.0-beta.0: + version "7.0.0-beta.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-7.0.0-beta.0.tgz#34a1eee484acfb0a89effc364e386a8d769286eb" + +babel-plugin-syntax-object-rest-spread@7.0.0-beta.2: + version "7.0.0-beta.2" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-7.0.0-beta.2.tgz#0322736751b11ab6edcea5a02d610abbcdeb194f" + +babel-plugin-syntax-object-rest-spread@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" + +babel-plugin-syntax-optional-catch-binding@7.0.0-beta.0: + version "7.0.0-beta.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-optional-catch-binding/-/babel-plugin-syntax-optional-catch-binding-7.0.0-beta.0.tgz#9c92545c42865954c544f480648e179ba15757fb" + +babel-plugin-syntax-optional-catch-binding@7.0.0-beta.2: + version "7.0.0-beta.2" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-optional-catch-binding/-/babel-plugin-syntax-optional-catch-binding-7.0.0-beta.2.tgz#78fbc368d8aa7a4307abb00adadfaee721f9f23b" + +babel-plugin-syntax-trailing-function-commas@7.0.0-beta.0: + version "7.0.0-beta.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz#aa213c1435e2bffeb6fca842287ef534ad05d5cf" + +babel-plugin-syntax-trailing-function-commas@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3" + +babel-plugin-transform-async-generator-functions@7.0.0-beta.2: + version "7.0.0-beta.2" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-7.0.0-beta.2.tgz#0fe554857b69a0dd4fb52fe41ad268c739dbf313" + dependencies: + babel-helper-remap-async-to-generator "7.0.0-beta.2" + babel-plugin-syntax-async-generators "7.0.0-beta.2" + +babel-plugin-transform-async-generator-functions@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz#f058900145fd3e9907a6ddf28da59f215258a5db" + dependencies: + babel-helper-remap-async-to-generator "^6.24.1" + babel-plugin-syntax-async-generators "^6.5.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-async-to-generator@7.0.0-beta.2: + version "7.0.0-beta.2" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-7.0.0-beta.2.tgz#2bf1cd55cc1c72fc8872a1cd48b58f4171cca786" + dependencies: + babel-helper-remap-async-to-generator "7.0.0-beta.2" + babel-plugin-syntax-async-functions "7.0.0-beta.0" + +babel-plugin-transform-async-to-generator@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761" + dependencies: + babel-helper-remap-async-to-generator "^6.24.1" + babel-plugin-syntax-async-functions "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-class-constructor-call@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-constructor-call/-/babel-plugin-transform-class-constructor-call-6.24.1.tgz#80dc285505ac067dcb8d6c65e2f6f11ab7765ef9" + dependencies: + babel-plugin-syntax-class-constructor-call "^6.18.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-class-properties@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz#6a79763ea61d33d36f37b611aa9def81a81b46ac" + dependencies: + babel-helper-function-name "^6.24.1" + babel-plugin-syntax-class-properties "^6.8.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-decorators@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.24.1.tgz#788013d8f8c6b5222bdf7b344390dfd77569e24d" + dependencies: + babel-helper-explode-class "^6.24.1" + babel-plugin-syntax-decorators "^6.13.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-types "^6.24.1" + +babel-plugin-transform-do-expressions@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-do-expressions/-/babel-plugin-transform-do-expressions-6.22.0.tgz#28ccaf92812d949c2cd1281f690c8fdc468ae9bb" + dependencies: + babel-plugin-syntax-do-expressions "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-arrow-functions@7.0.0-beta.2: + version "7.0.0-beta.2" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-7.0.0-beta.2.tgz#152f73140038d620af0c692fec0a81352f4a3683" + +babel-plugin-transform-es2015-arrow-functions@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-block-scoped-functions@7.0.0-beta.2: + version "7.0.0-beta.2" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-7.0.0-beta.2.tgz#605a5df1efa8d5cdc5fbb652d875ad416a773522" + +babel-plugin-transform-es2015-block-scoped-functions@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-block-scoping@7.0.0-beta.2: + version "7.0.0-beta.2" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-7.0.0-beta.2.tgz#10c3558253fe7ac693814d7676ef7fc50af001a1" + dependencies: + babel-template "7.0.0-beta.2" + babel-traverse "7.0.0-beta.2" + babel-types "7.0.0-beta.2" + lodash "^4.2.0" + +babel-plugin-transform-es2015-block-scoping@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.24.1.tgz#76c295dc3a4741b1665adfd3167215dcff32a576" + dependencies: + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + lodash "^4.2.0" + +babel-plugin-transform-es2015-classes@7.0.0-beta.2: + version "7.0.0-beta.2" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-7.0.0-beta.2.tgz#f5fc0beae85bcbc61776113461f9b336c0de9052" + dependencies: + babel-helper-annotate-as-pure "7.0.0-beta.2" + babel-helper-define-map "7.0.0-beta.2" + babel-helper-function-name "7.0.0-beta.2" + babel-helper-optimise-call-expression "7.0.0-beta.2" + babel-helper-replace-supers "7.0.0-beta.2" + babel-messages "7.0.0-beta.2" + babel-template "7.0.0-beta.2" + babel-traverse "7.0.0-beta.2" + babel-types "7.0.0-beta.2" + +babel-plugin-transform-es2015-classes@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db" + dependencies: + babel-helper-define-map "^6.24.1" + babel-helper-function-name "^6.24.1" + babel-helper-optimise-call-expression "^6.24.1" + babel-helper-replace-supers "^6.24.1" + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-computed-properties@7.0.0-beta.2: + version "7.0.0-beta.2" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-7.0.0-beta.2.tgz#f3c697863925828281a21d9acd5fd6ec09fbdcbf" + dependencies: + babel-template "7.0.0-beta.2" + +babel-plugin-transform-es2015-computed-properties@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3" + dependencies: + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-destructuring@7.0.0-beta.2: + version "7.0.0-beta.2" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-7.0.0-beta.2.tgz#a4666be4ce96086c337ed8ff4a21c6870915f48b" + +babel-plugin-transform-es2015-destructuring@^6.22.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-duplicate-keys@7.0.0-beta.2: + version "7.0.0-beta.2" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-7.0.0-beta.2.tgz#fafc5cac8ec9a94da46789e7cdd92f09e094a308" + dependencies: + babel-types "7.0.0-beta.2" + +babel-plugin-transform-es2015-duplicate-keys@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-for-of@7.0.0-beta.2: + version "7.0.0-beta.2" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-7.0.0-beta.2.tgz#82802261b857047b0a1ac89be9a973d8a7707e83" + +babel-plugin-transform-es2015-for-of@^6.22.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-function-name@7.0.0-beta.2: + version "7.0.0-beta.2" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-7.0.0-beta.2.tgz#cbfcc6bc3cc78e95faa1bb75aec540e9cf2bccfb" + dependencies: + babel-helper-function-name "7.0.0-beta.2" + babel-types "7.0.0-beta.2" + +babel-plugin-transform-es2015-function-name@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b" + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-literals@7.0.0-beta.2: + version "7.0.0-beta.2" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-7.0.0-beta.2.tgz#c4572add2b9c977081a51fda4fc208d68a06070e" + +babel-plugin-transform-es2015-literals@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-modules-amd@7.0.0-beta.2: + version "7.0.0-beta.2" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-7.0.0-beta.2.tgz#e05baf478f3c1e9b28eb31eb5c34fec8f3a3d7c8" + dependencies: + babel-helper-module-transforms "7.0.0-beta.2" + babel-template "7.0.0-beta.2" + +babel-plugin-transform-es2015-modules-amd@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154" + dependencies: + babel-plugin-transform-es2015-modules-commonjs "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-modules-commonjs@7.0.0-beta.2: + version "7.0.0-beta.2" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-7.0.0-beta.2.tgz#2e9ecbadadeaf40bb19109baee586aac9a97aed4" + dependencies: + babel-helper-module-transforms "7.0.0-beta.2" + babel-types "7.0.0-beta.2" + +babel-plugin-transform-es2015-modules-commonjs@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.24.1.tgz#d3e310b40ef664a36622200097c6d440298f2bfe" + dependencies: + babel-plugin-transform-strict-mode "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-modules-systemjs@7.0.0-beta.2: + version "7.0.0-beta.2" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-7.0.0-beta.2.tgz#f25a3f6e6f01e14cf9f32dda3433594942983863" + dependencies: + babel-helper-hoist-variables "7.0.0-beta.2" + babel-template "7.0.0-beta.2" + +babel-plugin-transform-es2015-modules-systemjs@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23" + dependencies: + babel-helper-hoist-variables "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-modules-umd@7.0.0-beta.2: + version "7.0.0-beta.2" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-7.0.0-beta.2.tgz#b781bf06e2bb36290ba4bb6c6119a79905d5f0be" + dependencies: + babel-helper-module-transforms "7.0.0-beta.2" + babel-template "7.0.0-beta.2" + +babel-plugin-transform-es2015-modules-umd@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468" + dependencies: + babel-plugin-transform-es2015-modules-amd "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-object-super@7.0.0-beta.2: + version "7.0.0-beta.2" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-7.0.0-beta.2.tgz#64512343955490ba37dc9c2db7b88b5f2d08e580" + dependencies: + babel-helper-replace-supers "7.0.0-beta.2" + +babel-plugin-transform-es2015-object-super@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d" + dependencies: + babel-helper-replace-supers "^6.24.1" + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-parameters@7.0.0-beta.2: + version "7.0.0-beta.2" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-7.0.0-beta.2.tgz#afcd3ca75726928584d1d2ed8920e3489e984be6" + dependencies: + babel-helper-call-delegate "7.0.0-beta.2" + babel-helper-get-function-arity "7.0.0-beta.2" + babel-template "7.0.0-beta.2" + babel-traverse "7.0.0-beta.2" + babel-types "7.0.0-beta.2" + +babel-plugin-transform-es2015-parameters@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b" + dependencies: + babel-helper-call-delegate "^6.24.1" + babel-helper-get-function-arity "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-shorthand-properties@7.0.0-beta.2: + version "7.0.0-beta.2" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-7.0.0-beta.2.tgz#8dc07cb267ce6c316c78618053aa7c3278cc5c6d" + dependencies: + babel-types "7.0.0-beta.2" + +babel-plugin-transform-es2015-shorthand-properties@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-spread@7.0.0-beta.2: + version "7.0.0-beta.2" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-7.0.0-beta.2.tgz#c166da155f2edf8d23d6b6c53056740bce95f83d" + +babel-plugin-transform-es2015-spread@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-sticky-regex@7.0.0-beta.2: + version "7.0.0-beta.2" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-7.0.0-beta.2.tgz#5be492f3196013d1560c6a515f8a688e7fd64e3a" + dependencies: + babel-helper-regex "7.0.0-beta.2" + babel-types "7.0.0-beta.2" + +babel-plugin-transform-es2015-sticky-regex@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc" + dependencies: + babel-helper-regex "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-template-literals@7.0.0-beta.2: + version "7.0.0-beta.2" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-7.0.0-beta.2.tgz#5e2b3ae3625c28b5ad40542e53237fe68c5d7e56" + +babel-plugin-transform-es2015-template-literals@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-typeof-symbol@7.0.0-beta.2: + version "7.0.0-beta.2" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-7.0.0-beta.2.tgz#6bfd212ea3b3c273b13281ce40a7e3a2f4c90c7b" + +babel-plugin-transform-es2015-typeof-symbol@^6.22.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-unicode-regex@7.0.0-beta.2: + version "7.0.0-beta.2" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-7.0.0-beta.2.tgz#e44133951a26254fb161f0a26dda16b5b59188a0" + dependencies: + babel-helper-regex "7.0.0-beta.2" + regexpu-core "^4.1.3" + +babel-plugin-transform-es2015-unicode-regex@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9" + dependencies: + babel-helper-regex "^6.24.1" + babel-runtime "^6.22.0" + regexpu-core "^2.0.0" + +babel-plugin-transform-exponentiation-operator@7.0.0-beta.2: + version "7.0.0-beta.2" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-7.0.0-beta.2.tgz#50886381b685e1196d0c89965ca35ec8e6b42710" + dependencies: + babel-helper-builder-binary-assignment-operator-visitor "7.0.0-beta.2" + babel-plugin-syntax-exponentiation-operator "7.0.0-beta.0" + +babel-plugin-transform-exponentiation-operator@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e" + dependencies: + babel-helper-builder-binary-assignment-operator-visitor "^6.24.1" + babel-plugin-syntax-exponentiation-operator "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-export-extensions@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-export-extensions/-/babel-plugin-transform-export-extensions-6.22.0.tgz#53738b47e75e8218589eea946cbbd39109bbe653" + dependencies: + babel-plugin-syntax-export-extensions "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-flow-strip-types@7.0.0-beta.2: + version "7.0.0-beta.2" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-7.0.0-beta.2.tgz#4711953000af4f35bdd115f933f96e3e4d569998" + dependencies: + babel-plugin-syntax-flow "7.0.0-beta.2" + +babel-plugin-transform-function-bind@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-function-bind/-/babel-plugin-transform-function-bind-6.22.0.tgz#c6fb8e96ac296a310b8cf8ea401462407ddf6a97" + dependencies: + babel-plugin-syntax-function-bind "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-new-target@7.0.0-beta.2: + version "7.0.0-beta.2" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-new-target/-/babel-plugin-transform-new-target-7.0.0-beta.2.tgz#cf8f1a6d068dfdf1d10bc57ac6596c34f1d96bcd" + +babel-plugin-transform-object-rest-spread@7.0.0-beta.2: + version "7.0.0-beta.2" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-7.0.0-beta.2.tgz#57b1c4346646d483d1ac8dc608c5c3870620ac7e" + dependencies: + babel-plugin-syntax-object-rest-spread "7.0.0-beta.2" + +babel-plugin-transform-object-rest-spread@^6.22.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.23.0.tgz#875d6bc9be761c58a2ae3feee5dc4895d8c7f921" + dependencies: + babel-plugin-syntax-object-rest-spread "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-optional-catch-binding@7.0.0-beta.2: + version "7.0.0-beta.2" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-optional-catch-binding/-/babel-plugin-transform-optional-catch-binding-7.0.0-beta.2.tgz#b84a95c4a8ae5fd4700a0f2ae6c305c9adad9c4d" + dependencies: + babel-plugin-syntax-optional-catch-binding "7.0.0-beta.2" + +babel-plugin-transform-regenerator@7.0.0-beta.2: + version "7.0.0-beta.2" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-7.0.0-beta.2.tgz#f286bef81a00455742e876f0f606f4e4597120d4" + dependencies: + regenerator-transform "0.10.0" + +babel-plugin-transform-regenerator@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.24.1.tgz#b8da305ad43c3c99b4848e4fe4037b770d23c418" + dependencies: + regenerator-transform "0.9.11" + +babel-plugin-transform-strict-mode@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-unicode-property-regex@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-unicode-property-regex/-/babel-plugin-transform-unicode-property-regex-2.0.5.tgz#24922190f9598384d258a6c8e7409309dc6f3898" + dependencies: + babel-helper-regex "^6.26.0" + regexpu-core "^4.1.3" + +babel-polyfill@7.0.0-beta.2: + version "7.0.0-beta.2" + resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-7.0.0-beta.2.tgz#fdbae0cb20f03dd5ed8e857b58b55c4c34161615" + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.11.0" + +babel-polyfill@latest: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.23.0.tgz#8364ca62df8eafb830499f699177466c3b03499d" + dependencies: + babel-runtime "^6.22.0" + core-js "^2.4.0" + regenerator-runtime "^0.10.0" + +babel-preset-env@2.0.0-beta.2: + version "2.0.0-beta.2" + resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-2.0.0-beta.2.tgz#2ec7b9d7c3ede4008f830c194e75cc22a6b86b8e" + dependencies: + babel-plugin-check-es2015-constants "7.0.0-beta.2" + babel-plugin-syntax-async-generators "7.0.0-beta.0" + babel-plugin-syntax-object-rest-spread "7.0.0-beta.0" + babel-plugin-syntax-optional-catch-binding "7.0.0-beta.0" + babel-plugin-syntax-trailing-function-commas "7.0.0-beta.0" + babel-plugin-transform-async-generator-functions "7.0.0-beta.2" + babel-plugin-transform-async-to-generator "7.0.0-beta.2" + babel-plugin-transform-es2015-arrow-functions "7.0.0-beta.2" + babel-plugin-transform-es2015-block-scoped-functions "7.0.0-beta.2" + babel-plugin-transform-es2015-block-scoping "7.0.0-beta.2" + babel-plugin-transform-es2015-classes "7.0.0-beta.2" + babel-plugin-transform-es2015-computed-properties "7.0.0-beta.2" + babel-plugin-transform-es2015-destructuring "7.0.0-beta.2" + babel-plugin-transform-es2015-duplicate-keys "7.0.0-beta.2" + babel-plugin-transform-es2015-for-of "7.0.0-beta.2" + babel-plugin-transform-es2015-function-name "7.0.0-beta.2" + babel-plugin-transform-es2015-literals "7.0.0-beta.2" + babel-plugin-transform-es2015-modules-amd "7.0.0-beta.2" + babel-plugin-transform-es2015-modules-commonjs "7.0.0-beta.2" + babel-plugin-transform-es2015-modules-systemjs "7.0.0-beta.2" + babel-plugin-transform-es2015-modules-umd "7.0.0-beta.2" + babel-plugin-transform-es2015-object-super "7.0.0-beta.2" + babel-plugin-transform-es2015-parameters "7.0.0-beta.2" + babel-plugin-transform-es2015-shorthand-properties "7.0.0-beta.2" + babel-plugin-transform-es2015-spread "7.0.0-beta.2" + babel-plugin-transform-es2015-sticky-regex "7.0.0-beta.2" + babel-plugin-transform-es2015-template-literals "7.0.0-beta.2" + babel-plugin-transform-es2015-typeof-symbol "7.0.0-beta.2" + babel-plugin-transform-es2015-unicode-regex "7.0.0-beta.2" + babel-plugin-transform-exponentiation-operator "7.0.0-beta.2" + babel-plugin-transform-new-target "7.0.0-beta.2" + babel-plugin-transform-object-rest-spread "7.0.0-beta.2" + babel-plugin-transform-optional-catch-binding "7.0.0-beta.2" + babel-plugin-transform-regenerator "7.0.0-beta.2" + babel-plugin-transform-unicode-property-regex "^2.0.5" + browserslist "^2.4.0" + invariant "^2.2.2" + semver "^5.3.0" + +babel-preset-es2015@latest: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz#d44050d6bc2c9feea702aaf38d727a0210538939" + dependencies: + babel-plugin-check-es2015-constants "^6.22.0" + babel-plugin-transform-es2015-arrow-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoping "^6.24.1" + babel-plugin-transform-es2015-classes "^6.24.1" + babel-plugin-transform-es2015-computed-properties "^6.24.1" + babel-plugin-transform-es2015-destructuring "^6.22.0" + babel-plugin-transform-es2015-duplicate-keys "^6.24.1" + babel-plugin-transform-es2015-for-of "^6.22.0" + babel-plugin-transform-es2015-function-name "^6.24.1" + babel-plugin-transform-es2015-literals "^6.22.0" + babel-plugin-transform-es2015-modules-amd "^6.24.1" + babel-plugin-transform-es2015-modules-commonjs "^6.24.1" + babel-plugin-transform-es2015-modules-systemjs "^6.24.1" + babel-plugin-transform-es2015-modules-umd "^6.24.1" + babel-plugin-transform-es2015-object-super "^6.24.1" + babel-plugin-transform-es2015-parameters "^6.24.1" + babel-plugin-transform-es2015-shorthand-properties "^6.24.1" + babel-plugin-transform-es2015-spread "^6.22.0" + babel-plugin-transform-es2015-sticky-regex "^6.24.1" + babel-plugin-transform-es2015-template-literals "^6.22.0" + babel-plugin-transform-es2015-typeof-symbol "^6.22.0" + babel-plugin-transform-es2015-unicode-regex "^6.24.1" + babel-plugin-transform-regenerator "^6.24.1" + +babel-preset-es2016@latest: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-preset-es2016/-/babel-preset-es2016-6.24.1.tgz#f900bf93e2ebc0d276df9b8ab59724ebfd959f8b" + dependencies: + babel-plugin-transform-exponentiation-operator "^6.24.1" + +babel-preset-es2017@latest: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-preset-es2017/-/babel-preset-es2017-6.24.1.tgz#597beadfb9f7f208bcfd8a12e9b2b29b8b2f14d1" + dependencies: + babel-plugin-syntax-trailing-function-commas "^6.22.0" + babel-plugin-transform-async-to-generator "^6.24.1" + +babel-preset-stage-0@latest: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-preset-stage-0/-/babel-preset-stage-0-6.24.1.tgz#5642d15042f91384d7e5af8bc88b1db95b039e6a" + dependencies: + babel-plugin-transform-do-expressions "^6.22.0" + babel-plugin-transform-function-bind "^6.22.0" + babel-preset-stage-1 "^6.24.1" + +babel-preset-stage-1@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-preset-stage-1/-/babel-preset-stage-1-6.24.1.tgz#7692cd7dcd6849907e6ae4a0a85589cfb9e2bfb0" + dependencies: + babel-plugin-transform-class-constructor-call "^6.24.1" + babel-plugin-transform-export-extensions "^6.22.0" + babel-preset-stage-2 "^6.24.1" + +babel-preset-stage-2@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-preset-stage-2/-/babel-preset-stage-2-6.24.1.tgz#d9e2960fb3d71187f0e64eec62bc07767219bdc1" + dependencies: + babel-plugin-syntax-dynamic-import "^6.18.0" + babel-plugin-transform-class-properties "^6.24.1" + babel-plugin-transform-decorators "^6.24.1" + babel-preset-stage-3 "^6.24.1" + +babel-preset-stage-3@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-preset-stage-3/-/babel-preset-stage-3-6.24.1.tgz#836ada0a9e7a7fa37cb138fb9326f87934a48395" + dependencies: + babel-plugin-syntax-trailing-function-commas "^6.22.0" + babel-plugin-transform-async-generator-functions "^6.24.1" + babel-plugin-transform-async-to-generator "^6.24.1" + babel-plugin-transform-exponentiation-operator "^6.24.1" + babel-plugin-transform-object-rest-spread "^6.22.0" + +babel-register@7.0.0-beta.2: + version "7.0.0-beta.2" + resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-7.0.0-beta.2.tgz#735423f7c4a9d8df8786b32962168d51e2973a09" + dependencies: + babel-core "7.0.0-beta.2" + core-js "^2.4.0" + find-cache-dir "^1.0.0" + home-or-tmp "^3.0.0" + lodash "^4.2.0" + mkdirp "^0.5.1" + pirates "^3.0.1" + source-map-support "^0.4.2" + +babel-register@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.24.1.tgz#7e10e13a2f71065bdfad5a1787ba45bca6ded75f" + dependencies: + babel-core "^6.24.1" + babel-runtime "^6.22.0" + core-js "^2.4.0" + home-or-tmp "^2.0.0" + lodash "^4.2.0" + mkdirp "^0.5.1" + source-map-support "^0.4.2" + +babel-runtime@^6.18.0, babel-runtime@^6.22.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.23.0.tgz#0a9489f144de70efb3ce4300accdb329e2fc543b" + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.10.0" + +babel-runtime@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.11.0" + +babel-template@7.0.0-beta.0: + version "7.0.0-beta.0" + resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-7.0.0-beta.0.tgz#85083cf9e4395d5e48bf5154d7a8d6991cafecfb" + dependencies: + babel-traverse "7.0.0-beta.0" + babel-types "7.0.0-beta.0" + babylon "7.0.0-beta.22" + lodash "^4.2.0" + +babel-template@7.0.0-beta.2: + version "7.0.0-beta.2" + resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-7.0.0-beta.2.tgz#e5140a36854c113e12680110f0975daf09d4b4c0" + dependencies: + babel-traverse "7.0.0-beta.2" + babel-types "7.0.0-beta.2" + babylon "7.0.0-beta.25" + lodash "^4.2.0" + +babel-template@^6.16.0, babel-template@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.24.1.tgz#04ae514f1f93b3a2537f2a0f60a5a45fb8308333" + dependencies: + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + babylon "^6.11.0" + lodash "^4.2.0" + +babel-traverse@7.0.0-beta.0: + version "7.0.0-beta.0" + resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-7.0.0-beta.0.tgz#da14be9b762f62a2f060db464eaafdd8cd072a41" + dependencies: + babel-code-frame "7.0.0-beta.0" + babel-helper-function-name "7.0.0-beta.0" + babel-messages "7.0.0-beta.0" + babel-types "7.0.0-beta.0" + babylon "7.0.0-beta.22" + debug "^3.0.1" + globals "^10.0.0" + invariant "^2.2.0" + lodash "^4.2.0" + +babel-traverse@7.0.0-beta.2: + version "7.0.0-beta.2" + resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-7.0.0-beta.2.tgz#4073ace28b2602bb250cc6473a49730f516214bb" + dependencies: + babel-code-frame "7.0.0-beta.2" + babel-helper-function-name "7.0.0-beta.2" + babel-messages "7.0.0-beta.2" + babel-types "7.0.0-beta.2" + babylon "7.0.0-beta.25" + debug "^3.0.1" + globals "^10.0.0" + invariant "^2.2.0" + lodash "^4.2.0" + +babel-traverse@^6.18.0, babel-traverse@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.24.1.tgz#ab36673fd356f9a0948659e7b338d5feadb31695" + dependencies: + babel-code-frame "^6.22.0" + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + babylon "^6.15.0" + debug "^2.2.0" + globals "^9.0.0" + invariant "^2.2.0" + lodash "^4.2.0" + +babel-types@7.0.0-beta.0: + version "7.0.0-beta.0" + resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-7.0.0-beta.0.tgz#eb8b6e556470e6dcc4aef982d79ad229469b5169" + dependencies: + esutils "^2.0.2" + lodash "^4.2.0" + to-fast-properties "^2.0.0" + +babel-types@7.0.0-beta.2: + version "7.0.0-beta.2" + resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-7.0.0-beta.2.tgz#ea2352b5a439cdcf892966abccadc585a0244c65" + dependencies: + esutils "^2.0.2" + lodash "^4.2.0" + to-fast-properties "^2.0.0" + +babel-types@^6.18.0, babel-types@^6.19.0, babel-types@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.24.1.tgz#a136879dc15b3606bda0d90c1fc74304c2ff0975" + dependencies: + babel-runtime "^6.22.0" + esutils "^2.0.2" + lodash "^4.2.0" + to-fast-properties "^1.0.1" + +babel-types@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" + dependencies: + babel-runtime "^6.26.0" + esutils "^2.0.2" + lodash "^4.17.4" + to-fast-properties "^1.0.3" + +babylon@7.0.0-beta.22: + version "7.0.0-beta.22" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.22.tgz#74f0ad82ed7c7c3cfeab74cf684f815104161b65" + +babylon@7.0.0-beta.25: + version "7.0.0-beta.25" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.25.tgz#5fff5062b7082203b1bc5cab488e154cfee0202a" + +babylon@^6.11.0, babylon@^6.15.0: + version "6.17.0" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.17.0.tgz#37da948878488b9c4e3c4038893fa3314b3fc932" + +babylon@^6.17.4: + version "6.17.4" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.17.4.tgz#3e8b7402b88d22c3423e137a1577883b15ff869a" + +babylon@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" + +balanced-match@^0.4.1: + version "0.4.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + +base62@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/base62/-/base62-1.1.2.tgz#22ced6a49913565bc0b8d9a11563a465c084124c" + +bcrypt-pbkdf@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d" + dependencies: + tweetnacl "^0.14.3" + +binary-extensions@^1.0.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.8.0.tgz#48ec8d16df4377eae5fa5884682480af4d95c774" + +block-stream@*: + version "0.0.9" + resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" + dependencies: + inherits "~2.0.0" + +boolbase@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + +boom@2.x.x: + version "2.10.1" + resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" + dependencies: + hoek "2.x.x" + +brace-expansion@^1.0.0: + version "1.1.7" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.7.tgz#3effc3c50e000531fb720eaff80f0ae8ef23cf59" + dependencies: + balanced-match "^0.4.1" + concat-map "0.0.1" + +brace-expansion@^1.1.7: + version "1.1.8" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292" + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^1.8.2: + version "1.8.5" + resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" + dependencies: + expand-range "^1.8.1" + preserve "^0.2.0" + repeat-element "^1.1.2" + +browser-stdout@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.0.tgz#f351d32969d32fa5d7a5567154263d928ae3bd1f" + +browserslist@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-2.4.0.tgz#693ee93d01e66468a6348da5498e011f578f87f8" + dependencies: + caniuse-lite "^1.0.30000718" + electron-to-chromium "^1.3.18" + +buffer-shims@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51" + +builtin-modules@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" + +caching-transform@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/caching-transform/-/caching-transform-1.0.1.tgz#6dbdb2f20f8d8fbce79f3e94e9d1742dcdf5c0a1" + dependencies: + md5-hex "^1.2.0" + mkdirp "^0.5.1" + write-file-atomic "^1.1.4" + +caller-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" + dependencies: + callsites "^0.2.0" + +callsites@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" + +camelcase@^1.0.2: + version "1.2.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" + +camelcase@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" + +camelcase@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" + +caniuse-lite@^1.0.30000718: + version "1.0.30000733" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000733.tgz#ebfc48254117cc0c66197a4536cb4397a6cfbccd" + +caseless@~0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7" + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + +center-align@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" + dependencies: + align-text "^0.1.3" + lazy-cache "^1.0.3" + +chai@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/chai/-/chai-4.0.2.tgz#2f7327c4de6f385dd7787999e2ab02697a32b83b" + dependencies: + assertion-error "^1.0.1" + check-error "^1.0.1" + deep-eql "^2.0.1" + get-func-name "^2.0.0" + pathval "^1.0.0" + type-detect "^4.0.0" + +chai@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/chai/-/chai-4.1.0.tgz#331a0391b55c3af8740ae9c3b7458bc1c3805e6d" + dependencies: + assertion-error "^1.0.1" + check-error "^1.0.1" + deep-eql "^2.0.1" + get-func-name "^2.0.0" + pathval "^1.0.0" + type-detect "^4.0.0" + +chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +chalk@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.0.1.tgz#dbec49436d2ae15f536114e76d14656cdbc0f44d" + dependencies: + ansi-styles "^3.1.0" + escape-string-regexp "^1.0.5" + supports-color "^4.0.0" + +chalk@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.1.0.tgz#ac5becf14fa21b99c6c92ca7a7d7cfd5b17e743e" + dependencies: + ansi-styles "^3.1.0" + escape-string-regexp "^1.0.5" + supports-color "^4.0.0" + +check-error@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" + +cheerio@^0.20.0: + version "0.20.0" + resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-0.20.0.tgz#5c710f2bab95653272842ba01c6ea61b3545ec35" + dependencies: + css-select "~1.2.0" + dom-serializer "~0.1.0" + entities "~1.1.1" + htmlparser2 "~3.8.1" + lodash "^4.1.0" + optionalDependencies: + jsdom "^7.0.2" + +chokidar@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.6.1.tgz#2f4447ab5e96e50fb3d789fd90d4c72e0e4c70c2" + dependencies: + anymatch "^1.3.0" + async-each "^1.0.0" + glob-parent "^2.0.0" + inherits "^2.0.1" + is-binary-path "^1.0.0" + is-glob "^2.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.0.0" + optionalDependencies: + fsevents "^1.0.0" + +ci-info@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.0.0.tgz#dc5285f2b4e251821683681c381c3388f46ec534" + +circular-json@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.1.tgz#be8b36aefccde8b3ca7aa2d6afc07a37242c0d2d" + +cli-cursor@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987" + dependencies: + restore-cursor "^1.0.1" + +cli-cursor@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + dependencies: + restore-cursor "^2.0.0" + +cli-spinners@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-0.1.2.tgz#bb764d88e185fb9e1e6a2a1f19772318f605e31c" + +cli-truncate@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-0.2.1.tgz#9f15cfbb0705005369216c626ac7d05ab90dd574" + dependencies: + slice-ansi "0.0.4" + string-width "^1.0.1" + +cli-width@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.1.0.tgz#b234ca209b29ef66fc518d9b98d5847b00edf00a" + +cli@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cli/-/cli-1.0.1.tgz#22817534f24bfa4950c34d532d48ecbc621b8c14" + dependencies: + exit "0.1.2" + glob "^7.1.1" + +cliui@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" + dependencies: + center-align "^0.1.1" + right-align "^0.1.1" + wordwrap "0.0.2" + +cliui@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrap-ansi "^2.0.0" + +clone-buffer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58" + +clone-stats@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-1.0.0.tgz#b3782dff8bb5474e18b9b6bf0fdfe782f8777680" + +clone@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.1.tgz#d217d1e961118e3ac9a4b8bba3285553bf647cdb" + +cloneable-readable@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/cloneable-readable/-/cloneable-readable-1.0.0.tgz#a6290d413f217a61232f95e458ff38418cfb0117" + dependencies: + inherits "^2.0.1" + process-nextick-args "^1.0.6" + through2 "^2.0.1" + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + +codecov@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/codecov/-/codecov-2.2.0.tgz#2d06817ceb8891eca6368836d4fb6bf6cc04ffd1" + dependencies: + argv "0.0.2" + request "2.79.0" + urlgrey "0.4.4" + +color-convert@^1.9.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.0.tgz#1accf97dd739b983bf994d56fec8f95853641b7a" + dependencies: + color-name "^1.1.1" + +color-name@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + +combined-stream@^1.0.5, combined-stream@~1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009" + dependencies: + delayed-stream "~1.0.0" + +commander@2.9.0, commander@2.9.x, commander@^2.5.0, commander@^2.8.1, commander@^2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" + dependencies: + graceful-readlink ">= 1.0.0" + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + +commoner@^0.10.1: + version "0.10.8" + resolved "https://registry.yarnpkg.com/commoner/-/commoner-0.10.8.tgz#34fc3672cd24393e8bb47e70caa0293811f4f2c5" + dependencies: + commander "^2.5.0" + detective "^4.3.1" + glob "^5.0.15" + graceful-fs "^4.1.2" + iconv-lite "^0.4.5" + mkdirp "^0.5.0" + private "^0.1.6" + q "^1.1.2" + recast "^0.11.17" + +compat-table@kangax/compat-table#b8477cc0f6d65c000c46213e654d19f350de9fa8: + version "0.0.0" + resolved "https://codeload.github.com/kangax/compat-table/tar.gz/b8477cc0f6d65c000c46213e654d19f350de9fa8" + dependencies: + babel-core latest + babel-polyfill latest + babel-preset-es2015 latest + babel-preset-es2016 latest + babel-preset-es2017 latest + babel-preset-stage-0 latest + chalk "^1.1.3" + cheerio "^0.20.0" + core-js latest + es5-shim latest + es6-shim latest + es6-transpiler latest + es7-shim latest + esdown latest + espree latest + esprima latest + google-closure-compiler-js "^20170521.0.0" + jshint latest + jstransform latest + lodash.pickby "^4.6.0" + object.assign "^4.0.4" + traceur latest + typescript latest + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + +concat-stream@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7" + dependencies: + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +console-browserify@1.1.x: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10" + dependencies: + date-now "^0.1.4" + +console-control-strings@^1.0.0, console-control-strings@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + +convert-source-map@^1.1.0, convert-source-map@^1.3.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.0.tgz#9acd70851c6d5dfdd93d9282e5edf94a03ff46b5" + +core-js@^2.4.0, core-js@latest: + version "2.4.1" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e" + +core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + +cosmiconfig@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-1.1.0.tgz#0dea0f9804efdfb929fbb1b188e25553ea053d37" + dependencies: + graceful-fs "^4.1.2" + js-yaml "^3.4.3" + minimist "^1.2.0" + object-assign "^4.0.1" + os-homedir "^1.0.1" + parse-json "^2.2.0" + pinkie-promise "^2.0.0" + require-from-string "^1.1.0" + +cross-spawn@^4, cross-spawn@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-4.0.2.tgz#7b9247621c23adfdd3856004a823cbe397424d41" + dependencies: + lru-cache "^4.0.1" + which "^1.2.9" + +cross-spawn@^5.0.1, cross-spawn@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" + dependencies: + lru-cache "^4.0.1" + shebang-command "^1.2.0" + which "^1.2.9" + +cryptiles@2.x.x: + version "2.0.5" + resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" + dependencies: + boom "2.x.x" + +css-select@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" + dependencies: + boolbase "~1.0.0" + css-what "2.1" + domutils "1.5.1" + nth-check "~1.0.1" + +css-what@2.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.0.tgz#9467d032c38cfaefb9f2d79501253062f87fa1bd" + +cssom@0.3.x, "cssom@>= 0.3.0 < 0.4.0": + version "0.3.2" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.2.tgz#b8036170c79f07a90ff2f16e22284027a243848b" + +"cssstyle@>= 0.2.29 < 0.3.0": + version "0.2.37" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-0.2.37.tgz#541097234cb2513c83ceed3acddc27ff27987d54" + dependencies: + cssom "0.3.x" + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + dependencies: + assert-plus "^1.0.0" + +date-fns@^1.27.2: + version "1.28.4" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.28.4.tgz#7938aec34ba31fc8bd134d2344bc2e0bbfd95165" + +date-now@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" + +debug-log@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/debug-log/-/debug-log-1.0.1.tgz#2307632d4c04382b8df8a32f70b895046d52745f" + +debug@2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.0.tgz#bc596bcabe7617f11d9fa15361eded5608b8499b" + dependencies: + ms "0.7.2" + +debug@^2.1.1, debug@^2.2.0, debug@^2.6.3: + version "2.6.6" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.6.tgz#a9fa6fbe9ca43cf1e79f73b75c0189cbb7d6db5a" + dependencies: + ms "0.7.3" + +debug@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.0.1.tgz#0564c612b521dc92d9f2988f0549e34f9c98db64" + dependencies: + ms "2.0.0" + +decamelize@^1.0.0, decamelize@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + +deep-eql@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-2.0.2.tgz#b1bac06e56f0a76777686d50c9feb75c2ed7679a" + dependencies: + type-detect "^3.0.0" + +deep-extend@~0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.1.tgz#efe4113d08085f4e6f9687759810f807469e2253" + +deep-is@~0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + +default-require-extensions@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-1.0.0.tgz#f37ea15d3e13ffd9b437d33e1a75b5fb97874cb8" + dependencies: + strip-bom "^2.0.0" + +define-properties@^1.0.1, define-properties@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94" + dependencies: + foreach "^2.0.5" + object-keys "^1.0.8" + +defined@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" + +del@^2.0.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" + dependencies: + globby "^5.0.0" + is-path-cwd "^1.0.0" + is-path-in-cwd "^1.0.0" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + rimraf "^2.2.8" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + +detect-indent@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" + dependencies: + repeating "^2.0.0" + +detective@^4.3.1: + version "4.5.0" + resolved "https://registry.yarnpkg.com/detective/-/detective-4.5.0.tgz#6e5a8c6b26e6c7a254b1c6b6d7490d98ec91edd1" + dependencies: + acorn "^4.0.3" + defined "^1.0.0" + +diff@1.0: + version "1.0.8" + resolved "https://registry.yarnpkg.com/diff/-/diff-1.0.8.tgz#343276308ec991b7bc82267ed55bc1411f971666" + +diff@3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9" + +doctrine@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.0.0.tgz#c73d8d2909d22291e1a007a395804da8b665fe63" + dependencies: + esutils "^2.0.2" + isarray "^1.0.0" + +dom-serializer@0, dom-serializer@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82" + dependencies: + domelementtype "~1.1.1" + entities "~1.1.1" + +domelementtype@1, domelementtype@~1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b" + +domhandler@2.3: + version "2.3.0" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.3.0.tgz#2de59a0822d5027fabff6f032c2b25a2a8abe738" + dependencies: + domelementtype "1" + +domutils@1.5, domutils@1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" + dependencies: + dom-serializer "0" + domelementtype "1" + +ecc-jsbn@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" + dependencies: + jsbn "~0.1.0" + +electron-to-chromium@^1.3.18: + version "1.3.21" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.21.tgz#a967ebdcfe8ed0083fc244d1894022a8e8113ea2" + +elegant-spinner@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e" + +entities@1.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-1.0.0.tgz#b2987aa3821347fcde642b24fdfc9e4fb712bf26" + +entities@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0" + +error-ex@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc" + dependencies: + is-arrayish "^0.2.1" + +es-abstract@^1.2.1, es-abstract@^1.4.3, es-abstract@^1.5.1, es-abstract@^1.6.1, es-abstract@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.7.0.tgz#dfade774e01bfcd97f96180298c449c8623fb94c" + dependencies: + es-to-primitive "^1.1.1" + function-bind "^1.1.0" + is-callable "^1.1.3" + is-regex "^1.0.3" + +es-to-primitive@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d" + dependencies: + is-callable "^1.1.1" + is-date-object "^1.0.1" + is-symbol "^1.0.1" + +es5-shim@latest: + version "4.5.9" + resolved "https://registry.yarnpkg.com/es5-shim/-/es5-shim-4.5.9.tgz#2a1e2b9e583ff5fed0c20a3ee2cbf3f75230a5c0" + +es5-shim@~4.0.0: + version "4.0.6" + resolved "https://registry.yarnpkg.com/es5-shim/-/es5-shim-4.0.6.tgz#443bf1f0503cdeabceb01ec80a84af1b8f1ca9f7" + +es6-shim@latest: + version "0.35.3" + resolved "https://registry.yarnpkg.com/es6-shim/-/es6-shim-0.35.3.tgz#9bfb7363feffff87a6cdb6cd93e405ec3c4b6f26" + +es6-transpiler@latest: + version "0.7.18" + resolved "https://registry.yarnpkg.com/es6-transpiler/-/es6-transpiler-0.7.18.tgz#de5209544d1bb2c282caed0acb7fdba731ed655f" + dependencies: + ansidiff "~1.0.0" + astquery latest + es5-shim "~4.0.0" + es6-shim latest + jsesc latest + regenerate latest + simple-fmt "~0.1.0" + simple-is "~0.2.0" + string-alter latest + stringmap "~0.2.0" + stringset "~0.2.0" + +es7-shim@latest: + version "6.0.0" + resolved "https://registry.yarnpkg.com/es7-shim/-/es7-shim-6.0.0.tgz#0c430b40b8505ad15570721a8d8dd4eb0c553155" + dependencies: + array-includes "^3.0.2" + object.entries "^1.0.3" + object.getownpropertydescriptors "^2.0.2" + object.values "^1.0.3" + string-at "^1.0.1" + string.prototype.padend "^3.0.0" + string.prototype.padstart "^3.0.0" + string.prototype.trimleft "^2.0.0" + string.prototype.trimright "^2.0.0" + +escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + +escodegen@^1.6.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.8.1.tgz#5a5b53af4693110bebb0867aa3430dd3b70a1018" + dependencies: + esprima "^2.7.1" + estraverse "^1.9.1" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.2.0" + +esdown@latest: + version "1.1.16" + resolved "https://registry.yarnpkg.com/esdown/-/esdown-1.1.16.tgz#0ef0382fcabd14db10adfbeccf109257d2838d9e" + +eslint-config-babel@^7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/eslint-config-babel/-/eslint-config-babel-7.0.2.tgz#cbde74f61cee087d8cd6e607fcfa087869a02d99" + +eslint-plugin-flowtype@^2.37.0: + version "2.37.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-2.37.0.tgz#2b09694deea6efdd8354eccd328db134b2d8b6d5" + dependencies: + lodash "^4.15.0" + +eslint-scope@^3.7.1: + version "3.7.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8" + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint@^4.8.0: + version "4.8.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.8.0.tgz#229ef0e354e0e61d837c7a80fdfba825e199815e" + dependencies: + ajv "^5.2.0" + babel-code-frame "^6.22.0" + chalk "^2.1.0" + concat-stream "^1.6.0" + cross-spawn "^5.1.0" + debug "^3.0.1" + doctrine "^2.0.0" + eslint-scope "^3.7.1" + espree "^3.5.1" + esquery "^1.0.0" + estraverse "^4.2.0" + esutils "^2.0.2" + file-entry-cache "^2.0.0" + functional-red-black-tree "^1.0.1" + glob "^7.1.2" + globals "^9.17.0" + ignore "^3.3.3" + imurmurhash "^0.1.4" + inquirer "^3.0.6" + is-resolvable "^1.0.0" + js-yaml "^3.9.1" + json-stable-stringify "^1.0.1" + levn "^0.3.0" + lodash "^4.17.4" + minimatch "^3.0.2" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + optionator "^0.8.2" + path-is-inside "^1.0.2" + pluralize "^7.0.0" + progress "^2.0.0" + require-uncached "^1.0.3" + semver "^5.3.0" + strip-ansi "^4.0.0" + strip-json-comments "~2.0.1" + table "^4.0.1" + text-table "~0.2.0" + +espree@^3.5.1: + version "3.5.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.1.tgz#0c988b8ab46db53100a1954ae4ba995ddd27d87e" + dependencies: + acorn "^5.1.1" + acorn-jsx "^3.0.0" + +espree@latest: + version "3.4.2" + resolved "https://registry.yarnpkg.com/espree/-/espree-3.4.2.tgz#38dbdedbedc95b8961a1fbf04734a8f6a9c8c592" + dependencies: + acorn "^5.0.1" + acorn-jsx "^3.0.0" + +esprima-fb@^15001.1.0-dev-harmony-fb: + version "15001.1.0-dev-harmony-fb" + resolved "https://registry.yarnpkg.com/esprima-fb/-/esprima-fb-15001.1.0-dev-harmony-fb.tgz#30a947303c6b8d5e955bee2b99b1d233206a6901" + +esprima@^2.7.1: + version "2.7.3" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" + +esprima@^3.1.1, esprima@latest, esprima@~3.1.0: + version "3.1.3" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" + +esprima@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804" + +esquery@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.0.tgz#cfba8b57d7fba93f17298a8a006a04cda13d80fa" + dependencies: + estraverse "^4.0.0" + +esrecurse@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.1.0.tgz#4713b6536adf7f2ac4f327d559e7756bff648220" + dependencies: + estraverse "~4.1.0" + object-assign "^4.0.1" + +estraverse@^1.9.1: + version "1.9.3" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44" + +estraverse@^4.0.0, estraverse@^4.1.1, estraverse@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" + +estraverse@~4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.1.1.tgz#f6caca728933a850ef90661d0e17982ba47111a2" + +esutils@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" + +execa@^0.5.0: + version "0.5.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-0.5.1.tgz#de3fb85cb8d6e91c85bcbceb164581785cb57b36" + dependencies: + cross-spawn "^4.0.0" + get-stream "^2.2.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +execa@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" + dependencies: + cross-spawn "^5.0.1" + get-stream "^3.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +exit-hook@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" + +exit@0.1.2, exit@0.1.x: + version "0.1.2" + resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + +expand-brackets@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" + dependencies: + is-posix-bracket "^0.1.0" + +expand-range@^1.8.1: + version "1.8.2" + resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" + dependencies: + fill-range "^2.1.0" + +extend@~3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" + +external-editor@^2.0.4: + version "2.0.5" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.0.5.tgz#52c249a3981b9ba187c7cacf5beb50bf1d91a6bc" + dependencies: + iconv-lite "^0.4.17" + jschardet "^1.4.2" + tmp "^0.0.33" + +extglob@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" + dependencies: + is-extglob "^1.0.0" + +extsprintf@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550" + +fast-deep-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz#96256a3bc975595eb36d82e9929d060d893439ff" + +fast-levenshtein@~2.0.4: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + +figures@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" + dependencies: + escape-string-regexp "^1.0.5" + object-assign "^4.1.0" + +figures@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" + dependencies: + escape-string-regexp "^1.0.5" + +file-entry-cache@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" + dependencies: + flat-cache "^1.2.1" + object-assign "^4.0.1" + +filename-regex@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" + +fill-range@^2.1.0: + version "2.2.3" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723" + dependencies: + is-number "^2.1.0" + isobject "^2.0.0" + randomatic "^1.1.3" + repeat-element "^1.1.2" + repeat-string "^1.5.2" + +find-cache-dir@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-0.1.1.tgz#c8defae57c8a52a8a784f9e31c57c742e993a0b9" + dependencies: + commondir "^1.0.1" + mkdirp "^0.5.1" + pkg-dir "^1.0.0" + +find-cache-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-1.0.0.tgz#9288e3e9e3cc3748717d39eade17cf71fc30ee6f" + dependencies: + commondir "^1.0.1" + make-dir "^1.0.0" + pkg-dir "^2.0.0" + +find-parent-dir@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/find-parent-dir/-/find-parent-dir-0.3.0.tgz#33c44b429ab2b2f0646299c5f9f718f376ff8d54" + +find-up@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" + dependencies: + path-exists "^2.0.0" + pinkie-promise "^2.0.0" + +find-up@^2.0.0, find-up@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + dependencies: + locate-path "^2.0.0" + +flat-cache@^1.2.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.2.2.tgz#fa86714e72c21db88601761ecf2f555d1abc6b96" + dependencies: + circular-json "^0.3.1" + del "^2.0.2" + graceful-fs "^4.1.2" + write "^0.2.1" + +flow-bin@^0.46.0: + version "0.46.0" + resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.46.0.tgz#06ad7fe19dddb1042264438064a2a32fee12b872" + +for-in@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + +for-own@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" + dependencies: + for-in "^1.0.1" + +foreach@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" + +foreground-child@^1.5.3, foreground-child@^1.5.6: + version "1.5.6" + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-1.5.6.tgz#4fd71ad2dfde96789b980a5c0a295937cb2f5ce9" + dependencies: + cross-spawn "^4" + signal-exit "^3.0.0" + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + +form-data@~2.1.1: + version "2.1.4" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.4.tgz#33c183acf193276ecaa98143a69e94bfee1750d1" + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.5" + mime-types "^2.1.12" + +fs-extra@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-3.0.1.tgz#3794f378c58b342ea7dbbb23095109c4b3b62291" + dependencies: + graceful-fs "^4.1.2" + jsonfile "^3.0.0" + universalify "^0.1.0" + +fs-readdir-recursive@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.0.0.tgz#8cd1745c8b4f8a29c8caec392476921ba195f560" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + +fsevents@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.1.tgz#f19fd28f43eeaf761680e519a203c4d0b3d31aff" + dependencies: + nan "^2.3.0" + node-pre-gyp "^0.6.29" + +fstream-ignore@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105" + dependencies: + fstream "^1.0.0" + inherits "2" + minimatch "^3.0.0" + +fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2: + version "1.0.11" + resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" + dependencies: + graceful-fs "^4.1.2" + inherits "~2.0.0" + mkdirp ">=0.5 0" + rimraf "2" + +function-bind@^1.0.2, function-bind@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.0.tgz#16176714c801798e4e8f2cf7f7529467bb4a5771" + +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + +gauge@~2.7.1: + version "2.7.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" + dependencies: + aproba "^1.0.3" + console-control-strings "^1.0.0" + has-unicode "^2.0.0" + object-assign "^4.1.0" + signal-exit "^3.0.0" + string-width "^1.0.1" + strip-ansi "^3.0.1" + wide-align "^1.1.0" + +generate-function@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74" + +generate-object-property@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0" + dependencies: + is-property "^1.0.0" + +get-caller-file@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5" + +get-func-name@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" + +get-stream@^2.2.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-2.3.1.tgz#5f38f93f346009666ee0150a054167f91bdd95de" + dependencies: + object-assign "^4.0.1" + pinkie-promise "^2.0.0" + +get-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + dependencies: + assert-plus "^1.0.0" + +glob-base@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" + dependencies: + glob-parent "^2.0.0" + is-glob "^2.0.0" + +glob-parent@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" + dependencies: + is-glob "^2.0.0" + +glob@5.0.x, glob@^5.0.15: + version "5.0.15" + resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" + dependencies: + inflight "^1.0.4" + inherits "2" + minimatch "2 || 3" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@7.1.1, glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.2" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-10.0.0.tgz#a5803a1abe923b52bc33a59cffeaf6e0748cf3f7" + +globals@^9.0.0: + version "9.17.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-9.17.0.tgz#0c0ca696d9b9bb694d2e5470bd37777caad50286" + +globals@^9.17.0: + version "9.18.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" + +globby@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" + dependencies: + array-union "^1.0.1" + arrify "^1.0.0" + glob "^7.0.3" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +google-closure-compiler-js@^20170521.0.0: + version "20170521.0.0" + resolved "https://registry.yarnpkg.com/google-closure-compiler-js/-/google-closure-compiler-js-20170521.0.0.tgz#9ac5fd6818aa500333a199ed0a9d0449e52120c9" + dependencies: + minimist "^1.2.0" + vinyl "^2.0.1" + webpack-core "^0.6.8" + +graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6: + version "4.1.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" + +"graceful-readlink@>= 1.0.0": + version "1.0.1" + resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" + +growl@1.9.2: + version "1.9.2" + resolved "https://registry.yarnpkg.com/growl/-/growl-1.9.2.tgz#0ea7743715db8d8de2c5ede1775e1b45ac85c02f" + +handlebars@^4.0.3: + version "4.0.7" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.7.tgz#e97325aeb8ea0b9e12b9c4dd73c4c312ad0ede59" + dependencies: + async "^1.4.0" + optimist "^0.6.1" + source-map "^0.4.4" + optionalDependencies: + uglify-js "^2.6" + +har-schema@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e" + +har-validator@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d" + dependencies: + chalk "^1.1.1" + commander "^2.9.0" + is-my-json-valid "^2.12.4" + pinkie-promise "^2.0.0" + +har-validator@~4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a" + dependencies: + ajv "^4.9.1" + har-schema "^1.0.5" + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + dependencies: + ansi-regex "^2.0.0" + +has-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" + +has-flag@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" + +has-unicode@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + +has@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28" + dependencies: + function-bind "^1.0.2" + +hawk@~3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" + dependencies: + boom "2.x.x" + cryptiles "2.x.x" + hoek "2.x.x" + sntp "1.x.x" + +hoek@2.x.x: + version "2.16.3" + resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" + +home-or-tmp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.1" + +home-or-tmp@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-3.0.0.tgz#57a8fe24cf33cdd524860a15821ddc25c86671fb" + +hosted-git-info@^2.1.4: + version "2.4.2" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.4.2.tgz#0076b9f46a270506ddbaaea56496897460612a67" + +htmlparser2@3.8.x, htmlparser2@~3.8.1: + version "3.8.3" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.8.3.tgz#996c28b191516a8be86501a7d79757e5c70c1068" + dependencies: + domelementtype "1" + domhandler "2.3" + domutils "1.5" + entities "1.0" + readable-stream "1.1" + +http-signature@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" + dependencies: + assert-plus "^0.2.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +husky@^0.13.2: + version "0.13.3" + resolved "https://registry.yarnpkg.com/husky/-/husky-0.13.3.tgz#bc2066080badc8b8fe3516e881f5bc68a57052ff" + dependencies: + chalk "^1.1.3" + find-parent-dir "^0.3.0" + is-ci "^1.0.9" + normalize-path "^1.0.0" + +iconv-lite@^0.4.17: + version "0.4.19" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" + +iconv-lite@^0.4.5: + version "0.4.17" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.17.tgz#4fdaa3b38acbc2c031b045d0edcdfe1ecab18c8d" + +ignore@^3.3.3: + version "3.3.5" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.5.tgz#c4e715455f6073a8d7e5dae72d2fc9d71663dba6" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + +indent-string@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" + dependencies: + repeating "^2.0.0" + +indent-string@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.1.0.tgz#08ff4334603388399b329e6b9538dc7a3cf5de7d" + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + +ini@~1.3.0: + version "1.3.4" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e" + +inquirer@^3.0.6: + version "3.3.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9" + dependencies: + ansi-escapes "^3.0.0" + chalk "^2.0.0" + cli-cursor "^2.1.0" + cli-width "^2.0.0" + external-editor "^2.0.4" + figures "^2.0.0" + lodash "^4.3.0" + mute-stream "0.0.7" + run-async "^2.2.0" + rx-lite "^4.0.8" + rx-lite-aggregates "^4.0.8" + string-width "^2.1.0" + strip-ansi "^4.0.0" + through "^2.3.6" + +invariant@^2.2.0, invariant@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360" + dependencies: + loose-envify "^1.0.0" + +invert-kv@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + +is-binary-path@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + dependencies: + binary-extensions "^1.0.0" + +is-buffer@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.5.tgz#1f3b26ef613b214b88cbca23cc6c01d87961eecc" + +is-builtin-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" + dependencies: + builtin-modules "^1.0.0" + +is-callable@^1.1.1, is-callable@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2" + +is-ci@^1.0.9: + version "1.0.10" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.0.10.tgz#f739336b2632365061a9d48270cd56ae3369318e" + dependencies: + ci-info "^1.0.0" + +is-date-object@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" + +is-dotfile@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.2.tgz#2c132383f39199f8edc268ca01b9b007d205cc4d" + +is-equal-shallow@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" + dependencies: + is-primitive "^2.0.0" + +is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + +is-extglob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" + +is-finite@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + +is-glob@^2.0.0, is-glob@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" + dependencies: + is-extglob "^1.0.0" + +is-my-json-valid@^2.12.4: + version "2.16.0" + resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz#f079dd9bfdae65ee2038aae8acbc86ab109e3693" + dependencies: + generate-function "^2.0.0" + generate-object-property "^1.1.0" + jsonpointer "^4.0.0" + xtend "^4.0.0" + +is-number@^2.0.2, is-number@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" + dependencies: + kind-of "^3.0.2" + +is-path-cwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" + +is-path-in-cwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz#6477582b8214d602346094567003be8a9eac04dc" + dependencies: + is-path-inside "^1.0.0" + +is-path-inside@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.0.tgz#fc06e5a1683fbda13de667aff717bbc10a48f37f" + dependencies: + path-is-inside "^1.0.1" + +is-plain-obj@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + +is-posix-bracket@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" + +is-primitive@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" + +is-promise@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" + +is-property@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" + +is-regex@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" + dependencies: + has "^1.0.1" + +is-resolvable@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.0.0.tgz#8df57c61ea2e3c501408d100fb013cf8d6e0cc62" + dependencies: + tryit "^1.0.1" + +is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + +is-symbol@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572" + +is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + +is-utf8@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" + +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + +isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + dependencies: + isarray "1.0.0" + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + +istanbul-lib-coverage@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz#73bfb998885299415c93d38a3e9adf784a77a9da" + +istanbul-lib-hook@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.0.7.tgz#dd6607f03076578fe7d6f2a630cf143b49bacddc" + dependencies: + append-transform "^0.4.0" + +istanbul-lib-instrument@^1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.7.4.tgz#e9fd920e4767f3d19edc765e2d6b3f5ccbd0eea8" + dependencies: + babel-generator "^6.18.0" + babel-template "^6.16.0" + babel-traverse "^6.18.0" + babel-types "^6.18.0" + babylon "^6.17.4" + istanbul-lib-coverage "^1.1.1" + semver "^5.3.0" + +istanbul-lib-instrument@^1.7.5: + version "1.8.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.8.0.tgz#66f6c9421cc9ec4704f76f2db084ba9078a2b532" + dependencies: + babel-generator "^6.18.0" + babel-template "^6.16.0" + babel-traverse "^6.18.0" + babel-types "^6.18.0" + babylon "^6.18.0" + istanbul-lib-coverage "^1.1.1" + semver "^5.3.0" + +istanbul-lib-report@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz#f0e55f56655ffa34222080b7a0cd4760e1405fc9" + dependencies: + istanbul-lib-coverage "^1.1.1" + mkdirp "^0.5.1" + path-parse "^1.0.5" + supports-color "^3.1.2" + +istanbul-lib-source-maps@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.1.tgz#a6fe1acba8ce08eebc638e572e294d267008aa0c" + dependencies: + debug "^2.6.3" + istanbul-lib-coverage "^1.1.1" + mkdirp "^0.5.1" + rimraf "^2.6.1" + source-map "^0.5.3" + +istanbul-reports@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.1.1.tgz#042be5c89e175bc3f86523caab29c014e77fee4e" + dependencies: + handlebars "^4.0.3" + +jodid25519@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/jodid25519/-/jodid25519-1.0.2.tgz#06d4912255093419477d425633606e0e90782967" + dependencies: + jsbn "~0.1.0" + +js-tokens@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7" + +js-yaml@^3.4.3: + version "3.8.3" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.8.3.tgz#33a05ec481c850c8875929166fe1beb61c728766" + dependencies: + argparse "^1.0.7" + esprima "^3.1.1" + +js-yaml@^3.9.1: + version "3.10.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.10.0.tgz#2e78441646bd4682e963f22b6e92823c309c62dc" + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + +jschardet@^1.4.2: + version "1.5.1" + resolved "https://registry.yarnpkg.com/jschardet/-/jschardet-1.5.1.tgz#c519f629f86b3a5bedba58a88d311309eec097f9" + +jsdom@^7.0.2: + version "7.2.2" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-7.2.2.tgz#40b402770c2bda23469096bee91ab675e3b1fc6e" + dependencies: + abab "^1.0.0" + acorn "^2.4.0" + acorn-globals "^1.0.4" + cssom ">= 0.3.0 < 0.4.0" + cssstyle ">= 0.2.29 < 0.3.0" + escodegen "^1.6.1" + nwmatcher ">= 1.3.7 < 2.0.0" + parse5 "^1.5.1" + request "^2.55.0" + sax "^1.1.4" + symbol-tree ">= 3.1.0 < 4.0.0" + tough-cookie "^2.2.0" + webidl-conversions "^2.0.0" + whatwg-url-compat "~0.6.5" + xml-name-validator ">= 2.0.1 < 3.0.0" + +jsesc@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" + +jsesc@^2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.1.tgz#e421a2a8e20d6b0819df28908f782526b96dd1fe" + +jsesc@latest: + version "2.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.0.tgz#ce895de28feb034dcbf55fbeeabbcaeb63d73086" + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + +jshint@latest: + version "2.9.4" + resolved "https://registry.yarnpkg.com/jshint/-/jshint-2.9.4.tgz#5e3ba97848d5290273db514aee47fe24cf592934" + dependencies: + cli "~1.0.0" + console-browserify "1.1.x" + exit "0.1.x" + htmlparser2 "3.8.x" + lodash "3.7.x" + minimatch "~3.0.2" + shelljs "0.3.x" + strip-json-comments "1.0.x" + +json-schema-traverse@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" + +json-schema@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + +json-stable-stringify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" + dependencies: + jsonify "~0.0.0" + +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + +json3@3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" + +json5@^0.5.0: + version "0.5.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" + +jsonfile@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-3.0.0.tgz#92e7c7444e5ffd5fa32e6a9ae8b85034df8347d0" + optionalDependencies: + graceful-fs "^4.1.6" + +jsonify@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" + +jsonpointer@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9" + +jsprim@^1.2.2: + version "1.4.0" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.0.tgz#a3b87e40298d8c380552d8cc7628a0bb95a22918" + dependencies: + assert-plus "1.0.0" + extsprintf "1.0.2" + json-schema "0.2.3" + verror "1.3.6" + +jstransform@latest: + version "11.0.3" + resolved "https://registry.yarnpkg.com/jstransform/-/jstransform-11.0.3.tgz#09a78993e0ae4d4ef4487f6155a91f6190cb4223" + dependencies: + base62 "^1.1.0" + commoner "^0.10.1" + esprima-fb "^15001.1.0-dev-harmony-fb" + object-assign "^2.0.0" + source-map "^0.4.2" + +kind-of@^3.0.2: + version "3.2.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.0.tgz#b58abe4d5c044ad33726a8c1525b48cf891bff07" + dependencies: + is-buffer "^1.1.5" + +lazy-cache@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" + +lcid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" + dependencies: + invert-kv "^1.0.0" + +levn@^0.3.0, levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +lint-staged@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-4.0.0.tgz#c15669f598614a6e68090303e175a799d48e0d85" + dependencies: + app-root-path "^2.0.0" + cosmiconfig "^1.1.0" + execa "^0.7.0" + listr "^0.12.0" + lodash.chunk "^4.2.0" + minimatch "^3.0.0" + npm-which "^3.0.1" + p-map "^1.1.1" + staged-git-files "0.0.4" + +listr-silent-renderer@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz#924b5a3757153770bf1a8e3fbf74b8bbf3f9242e" + +listr-update-renderer@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/listr-update-renderer/-/listr-update-renderer-0.2.0.tgz#ca80e1779b4e70266807e8eed1ad6abe398550f9" + dependencies: + chalk "^1.1.3" + cli-truncate "^0.2.1" + elegant-spinner "^1.0.1" + figures "^1.7.0" + indent-string "^3.0.0" + log-symbols "^1.0.2" + log-update "^1.0.2" + strip-ansi "^3.0.1" + +listr-verbose-renderer@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/listr-verbose-renderer/-/listr-verbose-renderer-0.4.0.tgz#44dc01bb0c34a03c572154d4d08cde9b1dc5620f" + dependencies: + chalk "^1.1.3" + cli-cursor "^1.0.2" + date-fns "^1.27.2" + figures "^1.7.0" + +listr@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/listr/-/listr-0.12.0.tgz#6bce2c0f5603fa49580ea17cd6a00cc0e5fa451a" + dependencies: + chalk "^1.1.3" + cli-truncate "^0.2.1" + figures "^1.7.0" + indent-string "^2.1.0" + is-promise "^2.1.0" + is-stream "^1.1.0" + listr-silent-renderer "^1.1.1" + listr-update-renderer "^0.2.0" + listr-verbose-renderer "^0.4.0" + log-symbols "^1.0.2" + log-update "^1.0.2" + ora "^0.2.3" + p-map "^1.1.1" + rxjs "^5.0.0-beta.11" + stream-to-observable "^0.1.0" + strip-ansi "^3.0.1" + +load-json-file@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + pinkie-promise "^2.0.0" + strip-bom "^2.0.0" + +load-json-file@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + strip-bom "^3.0.0" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + +lodash._baseassign@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz#8c38a099500f215ad09e59f1722fd0c52bfe0a4e" + dependencies: + lodash._basecopy "^3.0.0" + lodash.keys "^3.0.0" + +lodash._basecopy@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36" + +lodash._basecreate@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz#1bc661614daa7fc311b7d03bf16806a0213cf821" + +lodash._getnative@^3.0.0: + version "3.9.1" + resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" + +lodash._isiterateecall@^3.0.0: + version "3.0.9" + resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c" + +lodash.chunk@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.chunk/-/lodash.chunk-4.2.0.tgz#66e5ce1f76ed27b4303d8c6512e8d1216e8106bc" + +lodash.create@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/lodash.create/-/lodash.create-3.1.1.tgz#d7f2849f0dbda7e04682bb8cd72ab022461debe7" + dependencies: + lodash._baseassign "^3.0.0" + lodash._basecreate "^3.0.0" + lodash._isiterateecall "^3.0.0" + +lodash.isarguments@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" + +lodash.isarray@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" + +lodash.keys@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" + dependencies: + lodash._getnative "^3.0.0" + lodash.isarguments "^3.0.0" + lodash.isarray "^3.0.0" + +lodash.pickby@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.pickby/-/lodash.pickby-4.6.0.tgz#7dea21d8c18d7703a27c704c15d3b84a67e33aff" + +lodash@3.7.x: + version "3.7.0" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.7.0.tgz#3678bd8ab995057c07ade836ed2ef087da811d45" + +lodash@^4.1.0, lodash@^4.15.0, lodash@^4.17.4, lodash@^4.2.0, lodash@^4.3.0: + version "4.17.4" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" + +log-symbols@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18" + dependencies: + chalk "^1.0.0" + +log-update@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/log-update/-/log-update-1.0.2.tgz#19929f64c4093d2d2e7075a1dad8af59c296b8d1" + dependencies: + ansi-escapes "^1.0.0" + cli-cursor "^1.0.2" + +longest@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" + +loose-envify@^1.0.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848" + dependencies: + js-tokens "^3.0.0" + +lru-cache@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.0.2.tgz#1d17679c069cda5d040991a09dbc2c0db377e55e" + dependencies: + pseudomap "^1.0.1" + yallist "^2.0.0" + +make-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.0.0.tgz#97a011751e91dd87cfadef58832ebb04936de978" + dependencies: + pify "^2.3.0" + +md5-hex@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/md5-hex/-/md5-hex-1.3.0.tgz#d2c4afe983c4370662179b8cad145219135046c4" + dependencies: + md5-o-matic "^0.1.1" + +md5-o-matic@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/md5-o-matic/-/md5-o-matic-0.1.1.tgz#822bccd65e117c514fab176b25945d54100a03c3" + +mem@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" + dependencies: + mimic-fn "^1.0.0" + +merge-source-map@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/merge-source-map/-/merge-source-map-1.0.3.tgz#da1415f2722a5119db07b14c4f973410863a2abf" + dependencies: + source-map "^0.5.3" + +micromatch@^2.1.5, micromatch@^2.3.11: + version "2.3.11" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" + dependencies: + arr-diff "^2.0.0" + array-unique "^0.2.1" + braces "^1.8.2" + expand-brackets "^0.1.4" + extglob "^0.3.1" + filename-regex "^2.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.1" + kind-of "^3.0.2" + normalize-path "^2.0.1" + object.omit "^2.0.0" + parse-glob "^3.0.4" + regex-cache "^0.4.2" + +mime-db@~1.27.0: + version "1.27.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.27.0.tgz#820f572296bbd20ec25ed55e5b5de869e5436eb1" + +mime-types@^2.1.12, mime-types@~2.1.7: + version "2.1.15" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.15.tgz#a4ebf5064094569237b8cf70046776d09fc92aed" + dependencies: + mime-db "~1.27.0" + +mimic-fn@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18" + +"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2, minimatch@~3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774" + dependencies: + brace-expansion "^1.0.0" + +minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + dependencies: + brace-expansion "^1.1.7" + +minimist@0.0.8, minimist@~0.0.1: + version "0.0.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + +minimist@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" + +mkdirp@0.5.1, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + dependencies: + minimist "0.0.8" + +mocha@^3.4.2: + version "3.4.2" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-3.4.2.tgz#d0ef4d332126dbf18d0d640c9b382dd48be97594" + dependencies: + browser-stdout "1.3.0" + commander "2.9.0" + debug "2.6.0" + diff "3.2.0" + escape-string-regexp "1.0.5" + glob "7.1.1" + growl "1.9.2" + json3 "3.3.2" + lodash.create "3.1.1" + mkdirp "0.5.1" + supports-color "3.1.2" + +ms@0.7.2: + version "0.7.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765" + +ms@0.7.3: + version "0.7.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.3.tgz#708155a5e44e33f5fd0fc53e81d0d40a91be1fff" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + +mute-stream@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" + +nan@^2.3.0: + version "2.6.2" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.6.2.tgz#e4ff34e6c95fdfb5aecc08de6596f43605a7db45" + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + +node-modules-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" + +node-pre-gyp@^0.6.29: + version "0.6.34" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.34.tgz#94ad1c798a11d7fc67381b50d47f8cc18d9799f7" + dependencies: + mkdirp "^0.5.1" + nopt "^4.0.1" + npmlog "^4.0.2" + rc "^1.1.7" + request "^2.81.0" + rimraf "^2.6.1" + semver "^5.3.0" + tar "^2.2.1" + tar-pack "^3.4.0" + +nopt@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" + dependencies: + abbrev "1" + osenv "^0.1.4" + +normalize-package-data@^2.3.2: + version "2.3.8" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.3.8.tgz#d819eda2a9dedbd1ffa563ea4071d936782295bb" + dependencies: + hosted-git-info "^2.1.4" + is-builtin-module "^1.0.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-path@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-1.0.0.tgz#32d0e472f91ff345701c15a8311018d3b0a90379" + +normalize-path@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + dependencies: + remove-trailing-separator "^1.0.1" + +npm-path@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/npm-path/-/npm-path-2.0.3.tgz#15cff4e1c89a38da77f56f6055b24f975dfb2bbe" + dependencies: + which "^1.2.10" + +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + dependencies: + path-key "^2.0.0" + +npm-which@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/npm-which/-/npm-which-3.0.1.tgz#9225f26ec3a285c209cae67c3b11a6b4ab7140aa" + dependencies: + commander "^2.9.0" + npm-path "^2.0.2" + which "^1.2.10" + +npmlog@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.0.2.tgz#d03950e0e78ce1527ba26d2a7592e9348ac3e75f" + dependencies: + are-we-there-yet "~1.1.2" + console-control-strings "~1.1.0" + gauge "~2.7.1" + set-blocking "~2.0.0" + +nth-check@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.1.tgz#9929acdf628fc2c41098deab82ac580cf149aae4" + dependencies: + boolbase "~1.0.0" + +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + +"nwmatcher@>= 1.3.7 < 2.0.0": + version "1.3.9" + resolved "https://registry.yarnpkg.com/nwmatcher/-/nwmatcher-1.3.9.tgz#8bab486ff7fa3dfd086656bbe8b17116d3692d2a" + +nyc@^11.0.3: + version "11.1.0" + resolved "https://registry.yarnpkg.com/nyc/-/nyc-11.1.0.tgz#d6b3c5e16892a25af63138ba484676aa8a22eda7" + dependencies: + archy "^1.0.0" + arrify "^1.0.1" + caching-transform "^1.0.0" + convert-source-map "^1.3.0" + debug-log "^1.0.1" + default-require-extensions "^1.0.0" + find-cache-dir "^0.1.1" + find-up "^2.1.0" + foreground-child "^1.5.3" + glob "^7.0.6" + istanbul-lib-coverage "^1.1.1" + istanbul-lib-hook "^1.0.7" + istanbul-lib-instrument "^1.7.4" + istanbul-lib-report "^1.1.1" + istanbul-lib-source-maps "^1.2.1" + istanbul-reports "^1.1.1" + md5-hex "^1.2.0" + merge-source-map "^1.0.2" + micromatch "^2.3.11" + mkdirp "^0.5.0" + resolve-from "^2.0.0" + rimraf "^2.5.4" + signal-exit "^3.0.1" + spawn-wrap "^1.3.8" + test-exclude "^4.1.1" + yargs "^8.0.1" + yargs-parser "^5.0.0" + +oauth-sign@~0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" + +object-assign@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-2.1.1.tgz#43c36e5d569ff8e4816c4efa8be02d26967c18aa" + +object-assign@^4.0.1, object-assign@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + +object-keys@^1.0.10, object-keys@^1.0.8: + version "1.0.11" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d" + +object.assign@^4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.0.4.tgz#b1c9cc044ef1b9fe63606fc141abbb32e14730cc" + dependencies: + define-properties "^1.1.2" + function-bind "^1.1.0" + object-keys "^1.0.10" + +object.entries@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.0.4.tgz#1bf9a4dd2288f5b33f3a993d257661f05d161a5f" + dependencies: + define-properties "^1.1.2" + es-abstract "^1.6.1" + function-bind "^1.1.0" + has "^1.0.1" + +object.getownpropertydescriptors@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16" + dependencies: + define-properties "^1.1.2" + es-abstract "^1.5.1" + +object.omit@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" + dependencies: + for-own "^0.1.4" + is-extendable "^0.1.1" + +object.values@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.0.4.tgz#e524da09b4f66ff05df457546ec72ac99f13069a" + dependencies: + define-properties "^1.1.2" + es-abstract "^1.6.1" + function-bind "^1.1.0" + has "^1.0.1" + +once@^1.3.0, once@^1.3.3: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + dependencies: + wrappy "1" + +onetime@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" + +onetime@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" + dependencies: + mimic-fn "^1.0.0" + +optimist@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" + dependencies: + minimist "~0.0.1" + wordwrap "~0.0.2" + +optionator@^0.8.1, optionator@^0.8.2: + version "0.8.2" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.4" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + wordwrap "~1.0.0" + +ora@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/ora/-/ora-0.2.3.tgz#37527d220adcd53c39b73571d754156d5db657a4" + dependencies: + chalk "^1.1.1" + cli-cursor "^1.0.2" + cli-spinners "^0.1.2" + object-assign "^4.0.1" + +os-homedir@^1.0.0, os-homedir@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + +os-locale@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.0.0.tgz#15918ded510522b81ee7ae5a309d54f639fc39a4" + dependencies: + execa "^0.5.0" + lcid "^1.0.0" + mem "^1.1.0" + +os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + +osenv@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.4.tgz#42fe6d5953df06c8064be6f176c3d05aaaa34644" + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.0" + +output-file-sync@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/output-file-sync/-/output-file-sync-2.0.0.tgz#5d348a1a1eaed1ad168648a01a2d6d13078ce987" + dependencies: + graceful-fs "^4.1.11" + is-plain-obj "^1.1.0" + mkdirp "^0.5.1" + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + +p-limit@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.1.0.tgz#b07ff2d9a5d88bec806035895a2bab66a27988bc" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + dependencies: + p-limit "^1.1.0" + +p-map@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.1.1.tgz#05f5e4ae97a068371bc2a5cc86bfbdbc19c4ae7a" + +parse-glob@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" + dependencies: + glob-base "^0.3.0" + is-dotfile "^1.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.0" + +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + dependencies: + error-ex "^1.2.0" + +parse5@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-1.5.1.tgz#9b7f3b0de32be78dc2401b17573ccaf0f6f59d94" + +path-exists@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" + dependencies: + pinkie-promise "^2.0.0" + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + +path-is-inside@^1.0.1, path-is-inside@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" + +path-key@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + +path-parse@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" + +path-type@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" + dependencies: + graceful-fs "^4.1.2" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +path-type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" + dependencies: + pify "^2.0.0" + +pathval@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.0.tgz#b942e6d4bde653005ef6b71361def8727d0645e0" + +performance-now@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" + +pify@^2.0.0, pify@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + +pirates@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-3.0.1.tgz#8a87bf9ab7f58d6c3deee6a1a1c892ffe823811f" + dependencies: + node-modules-regexp "^1.0.0" + +pkg-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4" + dependencies: + find-up "^1.0.0" + +pkg-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" + dependencies: + find-up "^2.1.0" + +pluralize@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777" + +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + +preserve@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" + +prettier@1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.5.2.tgz#7ea0751da27b93bfb6cecfcec509994f52d83bb3" + +private@^0.1.6, private@~0.1.5: + version "0.1.7" + resolved "https://registry.yarnpkg.com/private/-/private-0.1.7.tgz#68ce5e8a1ef0a23bb570cc28537b5332aba63ef1" + +process-nextick-args@^1.0.6, process-nextick-args@~1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" + +progress@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.0.tgz#8a1be366bf8fc23db2bd23f10c6fe920b4389d1f" + +pseudomap@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + +punycode@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + +q@^1.1.2: + version "1.5.0" + resolved "https://registry.yarnpkg.com/q/-/q-1.5.0.tgz#dd01bac9d06d30e6f219aecb8253ee9ebdc308f1" + +qs@~6.3.0: + version "6.3.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.2.tgz#e75bd5f6e268122a2a0e0bda630b2550c166502c" + +qs@~6.4.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" + +randomatic@^1.1.3: + version "1.1.6" + resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.6.tgz#110dcabff397e9dcff7c0789ccc0a49adf1ec5bb" + dependencies: + is-number "^2.0.2" + kind-of "^3.0.2" + +rc@^1.1.7: + version "1.2.1" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.1.tgz#2e03e8e42ee450b8cb3dce65be1bf8974e1dfd95" + dependencies: + deep-extend "~0.4.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + +read-pkg-up@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" + dependencies: + find-up "^1.0.0" + read-pkg "^1.0.0" + +read-pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" + dependencies: + find-up "^2.0.0" + read-pkg "^2.0.0" + +read-pkg@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" + dependencies: + load-json-file "^1.0.0" + normalize-package-data "^2.3.2" + path-type "^1.0.0" + +read-pkg@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" + dependencies: + load-json-file "^2.0.0" + normalize-package-data "^2.3.2" + path-type "^2.0.0" + +readable-stream@1.1: + version "1.1.13" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.13.tgz#f6eef764f514c89e2b9e23146a75ba106756d23e" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.2.2: + version "2.2.9" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.9.tgz#cf78ec6f4a6d1eb43d26488cac97f042e74b7fc8" + dependencies: + buffer-shims "~1.0.0" + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "~1.0.0" + process-nextick-args "~1.0.6" + string_decoder "~1.0.0" + util-deprecate "~1.0.1" + +readable-stream@^2.1.5: + version "2.3.3" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~1.0.6" + safe-buffer "~5.1.1" + string_decoder "~1.0.3" + util-deprecate "~1.0.1" + +readdirp@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" + dependencies: + graceful-fs "^4.1.2" + minimatch "^3.0.2" + readable-stream "^2.0.2" + set-immediate-shim "^1.0.1" + +recast@^0.11.17: + version "0.11.23" + resolved "https://registry.yarnpkg.com/recast/-/recast-0.11.23.tgz#451fd3004ab1e4df9b4e4b66376b2a21912462d3" + dependencies: + ast-types "0.9.6" + esprima "~3.1.0" + private "~0.1.5" + source-map "~0.5.0" + +regenerate-unicode-properties@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-5.1.1.tgz#f5b947b5b7514b79ce58a756659724fa9444c06b" + dependencies: + regenerate "^1.3.2" + +regenerate@^1.2.1, regenerate@^1.3.2, regenerate@latest: + version "1.3.2" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.2.tgz#d1941c67bad437e1be76433add5b385f95b19260" + +regenerate@^1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.3.tgz#0c336d3980553d755c39b586ae3b20aa49c82b7f" + +regenerator-runtime@^0.10.0: + version "0.10.5" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658" + +regenerator-runtime@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz#7e54fe5b5ccd5d6624ea6255c3473be090b802e1" + +regenerator-transform@0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.0.tgz#f9ab3eac9cc2de38431d996a6a8abf1c50f2e459" + dependencies: + babel-runtime "^6.18.0" + babel-types "^6.19.0" + private "^0.1.6" + +regenerator-transform@0.9.11: + version "0.9.11" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.9.11.tgz#3a7d067520cb7b7176769eb5ff868691befe1283" + dependencies: + babel-runtime "^6.18.0" + babel-types "^6.19.0" + private "^0.1.6" + +regex-cache@^0.4.2: + version "0.4.3" + resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145" + dependencies: + is-equal-shallow "^0.1.3" + is-primitive "^2.0.0" + +regexpu-core@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" + dependencies: + regenerate "^1.2.1" + regjsgen "^0.2.0" + regjsparser "^0.1.4" + +regexpu-core@^4.1.3: + version "4.1.3" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.1.3.tgz#fb81616dbbc2a917a7419b33f8379144f51eb8d0" + dependencies: + regenerate "^1.3.3" + regenerate-unicode-properties "^5.1.1" + regjsgen "^0.3.0" + regjsparser "^0.2.1" + unicode-match-property-ecmascript "^1.0.3" + unicode-match-property-value-ecmascript "^1.0.1" + +regjsgen@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" + +regjsgen@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.3.0.tgz#0ee4a3e9276430cda25f1e789ea6c15b87b0cb43" + +regjsparser@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" + dependencies: + jsesc "~0.5.0" + +regjsparser@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.2.1.tgz#c3787553faf04e775c302102ef346d995000ec1c" + dependencies: + jsesc "~0.5.0" + +remove-trailing-separator@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.0.1.tgz#615ebb96af559552d4bf4057c8436d486ab63cc4" + +repeat-element@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" + +repeat-string@^1.5.2: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + +repeating@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" + dependencies: + is-finite "^1.0.0" + +replace-ext@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb" + +request@2.79.0, request@^2.55.0: + version "2.79.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de" + dependencies: + aws-sign2 "~0.6.0" + aws4 "^1.2.1" + caseless "~0.11.0" + combined-stream "~1.0.5" + extend "~3.0.0" + forever-agent "~0.6.1" + form-data "~2.1.1" + har-validator "~2.0.6" + hawk "~3.1.3" + http-signature "~1.1.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.7" + oauth-sign "~0.8.1" + qs "~6.3.0" + stringstream "~0.0.4" + tough-cookie "~2.3.0" + tunnel-agent "~0.4.1" + uuid "^3.0.0" + +request@^2.81.0: + version "2.81.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" + dependencies: + aws-sign2 "~0.6.0" + aws4 "^1.2.1" + caseless "~0.12.0" + combined-stream "~1.0.5" + extend "~3.0.0" + forever-agent "~0.6.1" + form-data "~2.1.1" + har-validator "~4.2.1" + hawk "~3.1.3" + http-signature "~1.1.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.7" + oauth-sign "~0.8.1" + performance-now "^0.2.0" + qs "~6.4.0" + safe-buffer "^5.0.1" + stringstream "~0.0.4" + tough-cookie "~2.3.0" + tunnel-agent "^0.6.0" + uuid "^3.0.0" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + +require-from-string@^1.1.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-1.2.1.tgz#529c9ccef27380adfec9a2f965b649bbee636418" + +require-main-filename@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" + +require-uncached@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" + dependencies: + caller-path "^0.1.0" + resolve-from "^1.0.0" + +resolve-from@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" + +resolve-from@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-2.0.0.tgz#9480ab20e94ffa1d9e80a804c7ea147611966b57" + +resolve@^1.3.2: + version "1.3.3" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.3.3.tgz#655907c3469a8680dc2de3a275a8fdd69691f0e5" + dependencies: + path-parse "^1.0.5" + +restore-cursor@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541" + dependencies: + exit-hook "^1.0.0" + onetime "^1.0.0" + +restore-cursor@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" + dependencies: + onetime "^2.0.0" + signal-exit "^3.0.2" + +right-align@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" + dependencies: + align-text "^0.1.1" + +rimraf@2, rimraf@^2.2.8, rimraf@^2.3.3, rimraf@^2.5.1, rimraf@^2.5.4, rimraf@^2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.1.tgz#c2338ec643df7a1b7fe5c54fa86f57428a55f33d" + dependencies: + glob "^7.0.5" + +rsvp@^3.0.13: + version "3.5.0" + resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-3.5.0.tgz#a62c573a4ae4e1dfd0697ebc6242e79c681eaa34" + +run-async@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" + dependencies: + is-promise "^2.1.0" + +rx-lite-aggregates@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be" + dependencies: + rx-lite "*" + +rx-lite@*, rx-lite@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444" + +rxjs@^5.0.0-beta.11: + version "5.3.0" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.3.0.tgz#d88ccbdd46af290cbdb97d5d8055e52453fabe2d" + dependencies: + symbol-observable "^1.0.1" + +safe-buffer@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.0.1.tgz#d263ca54696cd8a306b5ca6551e92de57918fbe7" + +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" + +sax@^1.1.4: + version "1.2.2" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.2.tgz#fd8631a23bc7826bef5d871bdb87378c95647828" + +"semver@2 || 3 || 4 || 5", semver@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" + +semver@^4.3.3: + version "4.3.6" + resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da" + +set-blocking@^2.0.0, set-blocking@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + +set-immediate-shim@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + dependencies: + shebang-regex "^1.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + +shelljs@0.3.x: + version "0.3.0" + resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.3.0.tgz#3596e6307a781544f591f37da618360f31db57b1" + +signal-exit@^3.0.0, signal-exit@^3.0.1, signal-exit@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" + +simple-fmt@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/simple-fmt/-/simple-fmt-0.1.0.tgz#191bf566a59e6530482cb25ab53b4a8dc85c3a6b" + +simple-is@~0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/simple-is/-/simple-is-0.2.0.tgz#2abb75aade39deb5cc815ce10e6191164850baf0" + +slash@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" + +slice-ansi@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" + +slice-ansi@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d" + dependencies: + is-fullwidth-code-point "^2.0.0" + +slide@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" + +sntp@1.x.x: + version "1.0.9" + resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" + dependencies: + hoek "2.x.x" + +source-list-map@~0.1.7: + version "0.1.8" + resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-0.1.8.tgz#c550b2ab5427f6b3f21f5afead88c4f5587b2106" + +source-map-support@^0.4.2: + version "0.4.15" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.15.tgz#03202df65c06d2bd8c7ec2362a193056fef8d3b1" + dependencies: + source-map "^0.5.6" + +source-map-support@~0.2.8: + version "0.2.10" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.2.10.tgz#ea5a3900a1c1cb25096a0ae8cc5c2b4b10ded3dc" + dependencies: + source-map "0.1.32" + +source-map@0.1.32: + version "0.1.32" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.32.tgz#c8b6c167797ba4740a8ea33252162ff08591b266" + dependencies: + amdefine ">=0.0.4" + +source-map@^0.4.2, source-map@^0.4.4, source-map@~0.4.1: + version "0.4.4" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" + dependencies: + amdefine ">=0.0.4" + +source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.0, source-map@~0.5.1: + version "0.5.6" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" + +source-map@~0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.2.0.tgz#dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d" + dependencies: + amdefine ">=0.0.4" + +spawn-wrap@^1.3.8: + version "1.3.8" + resolved "https://registry.yarnpkg.com/spawn-wrap/-/spawn-wrap-1.3.8.tgz#fa2a79b990cbb0bb0018dca6748d88367b19ec31" + dependencies: + foreground-child "^1.5.6" + mkdirp "^0.5.0" + os-homedir "^1.0.1" + rimraf "^2.3.3" + signal-exit "^3.0.2" + which "^1.2.4" + +spdx-correct@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40" + dependencies: + spdx-license-ids "^1.0.2" + +spdx-expression-parse@~1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c" + +spdx-license-ids@^1.0.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + +sshpk@^1.7.0: + version "1.13.0" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.0.tgz#ff2a3e4fd04497555fed97b39a0fd82fafb3a33c" + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + dashdash "^1.12.0" + getpass "^0.1.1" + optionalDependencies: + bcrypt-pbkdf "^1.0.0" + ecc-jsbn "~0.1.1" + jodid25519 "^1.0.0" + jsbn "~0.1.0" + tweetnacl "~0.14.0" + +staged-git-files@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/staged-git-files/-/staged-git-files-0.0.4.tgz#d797e1b551ca7a639dec0237dc6eb4bb9be17d35" + +stream-to-observable@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/stream-to-observable/-/stream-to-observable-0.1.0.tgz#45bf1d9f2d7dc09bed81f1c307c430e68b84cffe" + +string-alter@latest: + version "0.7.3" + resolved "https://registry.yarnpkg.com/string-alter/-/string-alter-0.7.3.tgz#a99f203d7293396348b49fc723dd7ab0a0b8d892" + +string-at@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/string-at/-/string-at-1.0.1.tgz#73b755adbaac3e178dabe7e4d7d79de56003fb37" + dependencies: + define-properties "^1.0.1" + es-abstract "^1.2.1" + function-bind "^1.0.2" + +string-width@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +string-width@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.0.0.tgz#635c5436cc72a6e0c387ceca278d4e2eec52687e" + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^3.0.0" + +string-width@^2.1.0, string-width@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +string.prototype.padend@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.0.0.tgz#f3aaef7c1719f170c5eab1c32bf780d96e21f2f0" + dependencies: + define-properties "^1.1.2" + es-abstract "^1.4.3" + function-bind "^1.0.2" + +string.prototype.padstart@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/string.prototype.padstart/-/string.prototype.padstart-3.0.0.tgz#5bcfad39f4649bb2d031292e19bcf0b510d4b242" + dependencies: + define-properties "^1.1.2" + es-abstract "^1.4.3" + function-bind "^1.0.2" + +string.prototype.trimleft@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.0.0.tgz#68b6aa8e162c6a80e76e3a8a0c2e747186e271ff" + dependencies: + define-properties "^1.1.2" + function-bind "^1.0.2" + +string.prototype.trimright@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.0.0.tgz#ab4a56d802a01fbe7293e11e84f24dc8164661dd" + dependencies: + define-properties "^1.1.2" + function-bind "^1.0.2" + +string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + +string_decoder@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.0.tgz#f06f41157b664d86069f84bdbdc9b0d8ab281667" + dependencies: + buffer-shims "~1.0.0" + +string_decoder@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab" + dependencies: + safe-buffer "~5.1.0" + +stringmap@~0.2.0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/stringmap/-/stringmap-0.2.2.tgz#556c137b258f942b8776f5b2ef582aa069d7d1b1" + +stringset@~0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/stringset/-/stringset-0.2.1.tgz#ef259c4e349344377fcd1c913dd2e848c9c042b5" + +stringstream@~0.0.4: + version "0.0.5" + resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" + +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + dependencies: + ansi-regex "^3.0.0" + +strip-bom@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" + dependencies: + is-utf8 "^0.2.0" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + +strip-json-comments@1.0.x: + version "1.0.4" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-1.0.4.tgz#1e15fbcac97d3ee99bf2d73b4c656b082bbafb91" + +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + +supports-color@3.1.2, supports-color@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.1.2.tgz#72a262894d9d408b956ca05ff37b2ed8a6e2a2d5" + dependencies: + has-flag "^1.0.0" + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + +supports-color@^4.0.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.2.1.tgz#65a4bb2631e90e02420dba5554c375a4754bb836" + dependencies: + has-flag "^2.0.0" + +symbol-observable@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.4.tgz#29bf615d4aa7121bdd898b22d4b3f9bc4e2aa03d" + +"symbol-tree@>= 3.1.0 < 4.0.0": + version "3.2.2" + resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6" + +table@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/table/-/table-4.0.2.tgz#a33447375391e766ad34d3486e6e2aedc84d2e36" + dependencies: + ajv "^5.2.3" + ajv-keywords "^2.1.0" + chalk "^2.1.0" + lodash "^4.17.4" + slice-ansi "1.0.0" + string-width "^2.1.1" + +tar-pack@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.0.tgz#23be2d7f671a8339376cbdb0b8fe3fdebf317984" + dependencies: + debug "^2.2.0" + fstream "^1.0.10" + fstream-ignore "^1.0.5" + once "^1.3.3" + readable-stream "^2.1.4" + rimraf "^2.5.1" + tar "^2.2.1" + uid-number "^0.0.6" + +tar@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" + dependencies: + block-stream "*" + fstream "^1.0.2" + inherits "2" + +test-exclude@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-4.1.1.tgz#4d84964b0966b0087ecc334a2ce002d3d9341e26" + dependencies: + arrify "^1.0.1" + micromatch "^2.3.11" + object-assign "^4.1.0" + read-pkg-up "^1.0.1" + require-main-filename "^1.0.1" + +text-table@~0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + +through2@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be" + dependencies: + readable-stream "^2.1.5" + xtend "~4.0.1" + +through@^2.3.6: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + dependencies: + os-tmpdir "~1.0.2" + +to-fast-properties@^1.0.1, to-fast-properties@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + +tough-cookie@^2.2.0, tough-cookie@~2.3.0: + version "2.3.2" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a" + dependencies: + punycode "^1.4.1" + +tr46@~0.0.1: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + +traceur@latest: + version "0.0.111" + resolved "https://registry.yarnpkg.com/traceur/-/traceur-0.0.111.tgz#c04de74d14696c3373427de4fc08ecaf913fc3a1" + dependencies: + commander "2.9.x" + glob "5.0.x" + rsvp "^3.0.13" + semver "^4.3.3" + source-map-support "~0.2.8" + +trim-right@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" + +try-resolve@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/try-resolve/-/try-resolve-1.0.1.tgz#cfde6fabd72d63e5797cfaab873abbe8e700e912" + +tryit@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/tryit/-/tryit-1.0.3.tgz#393be730a9446fd1ead6da59a014308f36c289cb" + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + dependencies: + safe-buffer "^5.0.1" + +tunnel-agent@~0.4.1: + version "0.4.3" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + dependencies: + prelude-ls "~1.1.2" + +type-detect@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-3.0.0.tgz#46d0cc8553abb7b13a352b0d6dea2fd58f2d9b55" + +type-detect@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.3.tgz#0e3f2670b44099b0b46c284d136a7ef49c74c2ea" + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + +typescript@latest: + version "2.3.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.3.2.tgz#f0f045e196f69a72f06b25fd3bd39d01c3ce9984" + +uglify-js@^2.6: + version "2.8.22" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.22.tgz#d54934778a8da14903fa29a326fb24c0ab51a1a0" + dependencies: + source-map "~0.5.1" + yargs "~3.10.0" + optionalDependencies: + uglify-to-browserify "~1.0.0" + +uglify-to-browserify@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" + +uid-number@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" + +unicode-canonical-property-names-ecmascript@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.2.tgz#08ef9ec454392fc5ed99b08a70524ae3881c0306" + +unicode-match-property-ecmascript@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.3.tgz#db9b1cb4ffc67e0c5583780b1b59370e4cbe97b9" + dependencies: + unicode-canonical-property-names-ecmascript "^1.0.2" + unicode-property-aliases-ecmascript "^1.0.3" + +unicode-match-property-value-ecmascript@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.0.1.tgz#fea059120a016f403afd3bf586162b4db03e0604" + +unicode-property-aliases-ecmascript@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.3.tgz#ac3522583b9e630580f916635333e00c5ead690d" + +universalify@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.0.tgz#9eb1c4651debcc670cc94f1a75762332bb967778" + +urlgrey@0.4.4: + version "0.4.4" + resolved "https://registry.yarnpkg.com/urlgrey/-/urlgrey-0.4.4.tgz#892fe95960805e85519f1cd4389f2cb4cbb7652f" + +util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + +uuid@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1" + +validate-npm-package-license@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc" + dependencies: + spdx-correct "~1.0.0" + spdx-expression-parse "~1.0.0" + +verror@1.3.6: + version "1.3.6" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.3.6.tgz#cff5df12946d297d2baaefaa2689e25be01c005c" + dependencies: + extsprintf "1.0.2" + +vinyl@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.1.0.tgz#021f9c2cf951d6b939943c89eb5ee5add4fd924c" + dependencies: + clone "^2.1.1" + clone-buffer "^1.0.0" + clone-stats "^1.0.0" + cloneable-readable "^1.0.0" + remove-trailing-separator "^1.0.1" + replace-ext "^1.0.0" + +webidl-conversions@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-2.0.1.tgz#3bf8258f7d318c7443c36f2e169402a1a6703506" + +webpack-core@^0.6.8: + version "0.6.9" + resolved "https://registry.yarnpkg.com/webpack-core/-/webpack-core-0.6.9.tgz#fc571588c8558da77be9efb6debdc5a3b172bdc2" + dependencies: + source-list-map "~0.1.7" + source-map "~0.4.1" + +whatwg-url-compat@~0.6.5: + version "0.6.5" + resolved "https://registry.yarnpkg.com/whatwg-url-compat/-/whatwg-url-compat-0.6.5.tgz#00898111af689bb097541cd5a45ca6c8798445bf" + dependencies: + tr46 "~0.0.1" + +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + +which@^1.2.10, which@^1.2.4, which@^1.2.9: + version "1.2.14" + resolved "https://registry.yarnpkg.com/which/-/which-1.2.14.tgz#9a87c4378f03e827cecaf1acdf56c736c01c14e5" + dependencies: + isexe "^2.0.0" + +wide-align@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.0.tgz#40edde802a71fea1f070da3e62dcda2e7add96ad" + dependencies: + string-width "^1.0.1" + +window-size@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" + +wordwrap@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" + +wordwrap@~0.0.2: + version "0.0.3" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" + +wordwrap@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + +write-file-atomic@^1.1.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-1.3.4.tgz#f807a4f0b1d9e913ae7a48112e6cc3af1991b45f" + dependencies: + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + slide "^1.1.5" + +write@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" + dependencies: + mkdirp "^0.5.1" + +"xml-name-validator@>= 2.0.1 < 3.0.0": + version "2.0.1" + resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-2.0.1.tgz#4d8b8f1eccd3419aa362061becef515e1e559635" + +xtend@^4.0.0, xtend@~4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" + +y18n@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" + +yallist@^2.0.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + +yargs-parser@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a" + dependencies: + camelcase "^3.0.0" + +yargs-parser@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-7.0.0.tgz#8d0ac42f16ea55debd332caf4c4038b3e3f5dfd9" + dependencies: + camelcase "^4.1.0" + +yargs@^8.0.1: + version "8.0.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-8.0.2.tgz#6299a9055b1cefc969ff7e79c1d918dceb22c360" + dependencies: + camelcase "^4.1.0" + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + os-locale "^2.0.0" + read-pkg-up "^2.0.0" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^2.0.0" + which-module "^2.0.0" + y18n "^3.2.1" + yargs-parser "^7.0.0" + +yargs@~3.10.0: + version "3.10.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" + dependencies: + camelcase "^1.0.2" + cliui "^2.1.0" + decamelize "^1.0.0" + window-size "0.1.0"