From 176b2888d62a000d3380b6f3c38ab2e4f233e306 Mon Sep 17 00:00:00 2001 From: Thomas Wang Date: Tue, 20 Nov 2018 13:13:57 -0800 Subject: [PATCH] Setup addon tests --- .eslintignore | 2 + package.json | 6 +- test/fastboot-build-test.js | 63 +++++++++++ test/fastboot-test.js | 52 +++++++++ test/fixtures/dummy/app/app.js | 14 +++ test/fixtures/dummy/app/components/.gitkeep | 0 test/fixtures/dummy/app/controllers/.gitkeep | 0 test/fixtures/dummy/app/helpers/.gitkeep | 0 test/fixtures/dummy/app/index.html | 25 +++++ test/fixtures/dummy/app/models/.gitkeep | 0 test/fixtures/dummy/app/resolver.js | 3 + test/fixtures/dummy/app/router.js | 12 +++ test/fixtures/dummy/app/routes/.gitkeep | 0 test/fixtures/dummy/app/routes/index.js | 15 +++ test/fixtures/dummy/app/styles/app.css | 0 .../dummy/app/templates/application.hbs | 3 + .../dummy/app/templates/components/.gitkeep | 0 test/fixtures/dummy/app/templates/index.hbs | 7 ++ test/fixtures/dummy/config/environment.js | 55 ++++++++++ test/fixtures/dummy/config/targets.js | 18 ++++ test/fixtures/dummy/ember-cli-build.js | 12 +++ test/fixtures/dummy/public/omg.json | 3 + test/fixtures/dummy/public/robots.txt | 3 + yarn.lock | 101 ++++++++++++++++-- 24 files changed, 386 insertions(+), 8 deletions(-) create mode 100644 test/fastboot-build-test.js create mode 100644 test/fastboot-test.js create mode 100644 test/fixtures/dummy/app/app.js create mode 100644 test/fixtures/dummy/app/components/.gitkeep create mode 100644 test/fixtures/dummy/app/controllers/.gitkeep create mode 100644 test/fixtures/dummy/app/helpers/.gitkeep create mode 100644 test/fixtures/dummy/app/index.html create mode 100644 test/fixtures/dummy/app/models/.gitkeep create mode 100644 test/fixtures/dummy/app/resolver.js create mode 100644 test/fixtures/dummy/app/router.js create mode 100644 test/fixtures/dummy/app/routes/.gitkeep create mode 100644 test/fixtures/dummy/app/routes/index.js create mode 100644 test/fixtures/dummy/app/styles/app.css create mode 100644 test/fixtures/dummy/app/templates/application.hbs create mode 100644 test/fixtures/dummy/app/templates/components/.gitkeep create mode 100644 test/fixtures/dummy/app/templates/index.hbs create mode 100644 test/fixtures/dummy/config/environment.js create mode 100644 test/fixtures/dummy/config/targets.js create mode 100644 test/fixtures/dummy/ember-cli-build.js create mode 100644 test/fixtures/dummy/public/omg.json create mode 100644 test/fixtures/dummy/public/robots.txt diff --git a/.eslintignore b/.eslintignore index fd20a38c..a2fa8a46 100644 --- a/.eslintignore +++ b/.eslintignore @@ -17,3 +17,5 @@ /.node_modules.ember-try/ /bower.json.ember-try /package.json.ember-try + +test/fixtures \ No newline at end of file diff --git a/package.json b/package.json index bd3d9440..c80b44ef 100644 --- a/package.json +++ b/package.json @@ -35,9 +35,11 @@ "devDependencies": { "broccoli-asset-rev": "^2.4.5", "broccoli-test-helper": "^1.2.0", - "chai": "^4.1.2", + "chai": "^4.2.0", + "chai-fs": "^2.0.0", "co": "^4.6.0", "ember-cli": "~3.5.1", + "ember-cli-addon-tests": "^0.11.0", "ember-cli-dependency-checker": "^3.0.0", "ember-cli-htmlbars": "^3.0.1", "ember-cli-fastboot": "^2.0.0", @@ -57,6 +59,8 @@ "eslint": "^5.9.0", "eslint-plugin-ember": "^6.0.1", "eslint-plugin-node": "^8.0.0", + "fs-extra": "^7.0.1", + "glob": "^7.1.3", "lerna-changelog": "^0.8.2", "loader.js": "^4.2.3", "mocha": "^5.2.0" diff --git a/test/fastboot-build-test.js b/test/fastboot-build-test.js new file mode 100644 index 00000000..fe6c59be --- /dev/null +++ b/test/fastboot-build-test.js @@ -0,0 +1,63 @@ +'use strict'; +const chai = require('chai'); +const expect = chai.expect; +chai.use(require('chai-fs')); + +const glob = require('glob'); + +const AddonTestApp = require('ember-cli-addon-tests').AddonTestApp; + +describe('it builds with ember-cli-fastboot', function() { + this.timeout(300000); + + let app; + + before(function() { + app = new AddonTestApp(); + + return app + .create('dummy', { skipNpm: true }) + .then(app => + app.editPackageJSON(pkg => { + pkg.devDependencies['ember-cli-fastboot'] = '*'; + }) + ) + .then(() => app.run('npm', 'install')); + }); + + it('builds into dist/ember-fetch/fetch-fastboot.js', function() { + return app.runEmberCommand('build').then(function() { + expect(app.filePath('dist/index.html')).to.be.a.file(); + expect(app.filePath('dist/ember-fetch/fastboot-fetch.js')).to.be.a.file(); + expect(app.filePath('dist/assets/dummy-fastboot.js')).to.be.a.file(); + }); + }); + + it('produces a production build with --environment=production', function() { + return app + .runEmberCommand('build', '--environment=production') + .then(function() { + expect(app.filePath('dist/index.html')).to.be.a.file(); + expect(find('dist/ember-fetch/fastboot-fetch-*.js')).to.be.a.file(); + expect(find('dist/ember-fetch/fastboot-fetch-*.js')).to.match( + /fastboot-fetch-\w{32}/, + 'file name should contain MD5 fingerprint' + ); + + expect(find('dist/assets/dummy-fastboot-*.js')).to.be.a.file(); + expect(find('dist/assets/dummy-fastboot-*.js')).to.match( + /dummy-fastboot-\w{32}/, + 'file name should contain MD5 fingerprint' + ); + }); + }); + + function find(globPath) { + globPath = app.filePath(globPath); + let files = glob.sync(globPath); + + expect(files.length).to.equal(1, globPath); + + return files[0]; + } +}); diff --git a/test/fastboot-test.js b/test/fastboot-test.js new file mode 100644 index 00000000..a18e9279 --- /dev/null +++ b/test/fastboot-test.js @@ -0,0 +1,52 @@ +'use strict'; +const request = require('request'); +const get = require('rsvp').denodeify(request); +const chai = require('chai'); +const expect = chai.expect; +chai.use(require('chai-fs')); + +const AddonTestApp = require('ember-cli-addon-tests').AddonTestApp; + +describe('renders in fastboot build', function() { + this.timeout(300000); + + let app; + + before(function() { + app = new AddonTestApp(); + + return app + .create('dummy', { skipNpm: true }) + .then(app => + app.editPackageJSON(pkg => { + pkg.devDependencies['ember-cli-fastboot'] = '*'; + // These 2 are in ember-fetch's package.json, symlinking to dummy won't help resolve + pkg.devDependencies['abortcontroller-polyfill'] = '*'; + pkg.devDependencies['node-fetch'] = '*'; + }) + ) + .then(function() { + return app.run('npm', 'install'); + }) + .then(function() { + return app.startServer({ + command: 'serve' + }); + }); + }); + + after(function() { + return app.stopServer(); + }); + + it('fetches in fastboot mode', function() { + return get({ + url: 'http://localhost:49741/', + headers: { + Accept: 'text/html' + } + }).then(function(response) { + expect(response.body).to.contain('Hello World! fetch'); + }); + }); +}); diff --git a/test/fixtures/dummy/app/app.js b/test/fixtures/dummy/app/app.js new file mode 100644 index 00000000..b3b2bd67 --- /dev/null +++ b/test/fixtures/dummy/app/app.js @@ -0,0 +1,14 @@ +import Application from '@ember/application'; +import Resolver from './resolver'; +import loadInitializers from 'ember-load-initializers'; +import config from './config/environment'; + +const App = Application.extend({ + modulePrefix: config.modulePrefix, + podModulePrefix: config.podModulePrefix, + Resolver +}); + +loadInitializers(App, config.modulePrefix); + +export default App; diff --git a/test/fixtures/dummy/app/components/.gitkeep b/test/fixtures/dummy/app/components/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/test/fixtures/dummy/app/controllers/.gitkeep b/test/fixtures/dummy/app/controllers/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/test/fixtures/dummy/app/helpers/.gitkeep b/test/fixtures/dummy/app/helpers/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/test/fixtures/dummy/app/index.html b/test/fixtures/dummy/app/index.html new file mode 100644 index 00000000..61400b20 --- /dev/null +++ b/test/fixtures/dummy/app/index.html @@ -0,0 +1,25 @@ + + + + + + Dummy + + + + {{content-for "head"}} + + + + + {{content-for "head-footer"}} + + + {{content-for "body"}} + + + + + {{content-for "body-footer"}} + + diff --git a/test/fixtures/dummy/app/models/.gitkeep b/test/fixtures/dummy/app/models/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/test/fixtures/dummy/app/resolver.js b/test/fixtures/dummy/app/resolver.js new file mode 100644 index 00000000..2fb563d6 --- /dev/null +++ b/test/fixtures/dummy/app/resolver.js @@ -0,0 +1,3 @@ +import Resolver from 'ember-resolver'; + +export default Resolver; diff --git a/test/fixtures/dummy/app/router.js b/test/fixtures/dummy/app/router.js new file mode 100644 index 00000000..d0bb0095 --- /dev/null +++ b/test/fixtures/dummy/app/router.js @@ -0,0 +1,12 @@ +import EmberRouter from '@ember/routing/router'; +import config from './config/environment'; + +const Router = EmberRouter.extend({ + location: config.locationType, + rootURL: config.rootURL +}); + +Router.map(function() { +}); + +export default Router; diff --git a/test/fixtures/dummy/app/routes/.gitkeep b/test/fixtures/dummy/app/routes/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/test/fixtures/dummy/app/routes/index.js b/test/fixtures/dummy/app/routes/index.js new file mode 100644 index 00000000..b0e19f27 --- /dev/null +++ b/test/fixtures/dummy/app/routes/index.js @@ -0,0 +1,15 @@ +import Route from '@ember/routing/route'; +import { hash } from 'rsvp'; +import fetch from 'fetch'; +import ajax from 'ember-fetch/ajax'; + +export default Route.extend({ + model: function() { + return hash({ + fetch: fetch('/omg.json').then(function(request) { + return request.json(); + }), + ajax: ajax('/omg.json') + }); + } +}); diff --git a/test/fixtures/dummy/app/styles/app.css b/test/fixtures/dummy/app/styles/app.css new file mode 100644 index 00000000..e69de29b diff --git a/test/fixtures/dummy/app/templates/application.hbs b/test/fixtures/dummy/app/templates/application.hbs new file mode 100644 index 00000000..f8bc38e7 --- /dev/null +++ b/test/fixtures/dummy/app/templates/application.hbs @@ -0,0 +1,3 @@ +

Welcome to Ember

+ +{{outlet}} diff --git a/test/fixtures/dummy/app/templates/components/.gitkeep b/test/fixtures/dummy/app/templates/components/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/test/fixtures/dummy/app/templates/index.hbs b/test/fixtures/dummy/app/templates/index.hbs new file mode 100644 index 00000000..821a4151 --- /dev/null +++ b/test/fixtures/dummy/app/templates/index.hbs @@ -0,0 +1,7 @@ +
+ Hello {{model.fetch.name}}! fetch +
+ +
+ Hello {{model.ajax.name}}! ajax +
\ No newline at end of file diff --git a/test/fixtures/dummy/config/environment.js b/test/fixtures/dummy/config/environment.js new file mode 100644 index 00000000..d54171f3 --- /dev/null +++ b/test/fixtures/dummy/config/environment.js @@ -0,0 +1,55 @@ +'use strict'; + +module.exports = function(environment) { + let ENV = { + modulePrefix: 'dummy', + environment, + rootURL: '/', + locationType: 'auto', + EmberENV: { + FEATURES: { + // Here you can enable experimental features on an ember canary build + // e.g. 'with-controller': true + }, + EXTEND_PROTOTYPES: { + // Prevent Ember Data from overriding Date.parse. + Date: false + } + }, + + APP: { + // Here you can pass flags/options to your application instance + // when it is created + }, + + fastboot: { + hostWhitelist: [/^localhost:\d+$/] + } + }; + + if (environment === 'development') { + // ENV.APP.LOG_RESOLVER = true; + // ENV.APP.LOG_ACTIVE_GENERATION = true; + // ENV.APP.LOG_TRANSITIONS = true; + // ENV.APP.LOG_TRANSITIONS_INTERNAL = true; + // ENV.APP.LOG_VIEW_LOOKUPS = true; + } + + if (environment === 'test') { + // Testem prefers this... + ENV.locationType = 'none'; + + // keep test console output quieter + ENV.APP.LOG_ACTIVE_GENERATION = false; + ENV.APP.LOG_VIEW_LOOKUPS = false; + + ENV.APP.rootElement = '#ember-testing'; + ENV.APP.autoboot = false; + } + + if (environment === 'production') { + // here you can enable a production-specific feature + } + + return ENV; +}; diff --git a/test/fixtures/dummy/config/targets.js b/test/fixtures/dummy/config/targets.js new file mode 100644 index 00000000..8ffae363 --- /dev/null +++ b/test/fixtures/dummy/config/targets.js @@ -0,0 +1,18 @@ +'use strict'; + +const browsers = [ + 'last 1 Chrome versions', + 'last 1 Firefox versions', + 'last 1 Safari versions' +]; + +const isCI = !!process.env.CI; +const isProduction = process.env.EMBER_ENV === 'production'; + +if (isCI || isProduction) { + browsers.push('ie 11'); +} + +module.exports = { + browsers +}; diff --git a/test/fixtures/dummy/ember-cli-build.js b/test/fixtures/dummy/ember-cli-build.js new file mode 100644 index 00000000..c97cc4ce --- /dev/null +++ b/test/fixtures/dummy/ember-cli-build.js @@ -0,0 +1,12 @@ +'use strict'; + +const EmberApp = require('ember-cli/lib/broccoli/ember-app'); + +module.exports = function(defaults) { + let app = new EmberApp(defaults, { + // Add options here + 'ember-fetch': { + } + }); + return app.toTree(); +}; diff --git a/test/fixtures/dummy/public/omg.json b/test/fixtures/dummy/public/omg.json new file mode 100644 index 00000000..7f9c526a --- /dev/null +++ b/test/fixtures/dummy/public/omg.json @@ -0,0 +1,3 @@ +{ + "name": "World" +} \ No newline at end of file diff --git a/test/fixtures/dummy/public/robots.txt b/test/fixtures/dummy/public/robots.txt new file mode 100644 index 00000000..f5916452 --- /dev/null +++ b/test/fixtures/dummy/public/robots.txt @@ -0,0 +1,3 @@ +# http://www.robotstxt.org +User-agent: * +Disallow: diff --git a/yarn.lock b/yarn.lock index 9b302ad2..5a7cfb5a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -849,6 +849,14 @@ array-equal@^1.0.0: resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM= +array-events@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/array-events/-/array-events-0.2.0.tgz#ff42ac53e66f485d6f883234c32252bc2286130e" + integrity sha1-/0KsU+ZvSF1viDI0wyJSvCKGEw4= + dependencies: + async-arrays "*" + extended-emitter "*" + array-find-index@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" @@ -913,6 +921,13 @@ ast-types@0.9.6: resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.9.6.tgz#102c9e9e9005d3e7e3829bf0c4fa24ee862ee9b9" integrity sha1-ECyenpAF0+fjgpvwxPok7oYu6bk= +async-arrays@*: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-arrays/-/async-arrays-1.0.1.tgz#347af2b70f2a7a5767a2d5679cc42bbf1c220fd9" + integrity sha1-NHrytw8qeldnotVnnMQrvxwiD9k= + dependencies: + sift "*" + async-disk-cache@^1.2.1: version "1.3.3" resolved "https://registry.yarnpkg.com/async-disk-cache/-/async-disk-cache-1.3.3.tgz#6040486660b370e4051cd9fa9fee275e1fae3728" @@ -1624,6 +1639,13 @@ better-assert@~1.0.0: resolved "https://registry.yarnpkg.com/binaryextensions/-/binaryextensions-2.1.2.tgz#c83c3d74233ba7674e4f313cb2a2b70f54e94b7c" integrity sha512-xVNN69YGDghOqCCtA6FI7avYrr02mTJjOgB0/f1VPD3pJC8QEvjTKWc4epDx8AqxxA75NI0QpVM2gPJXUbE4Tg== +bit-mask@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bit-mask/-/bit-mask-1.0.2.tgz#42f708362119611d6223cd53202c79428bf70b81" + integrity sha512-UGtq08LSiazxL4zVmBzrhdCWnT4RWx3JhhD/3crhfv8xxjnVHxf/WoVjEstjSUaZeZRP7kZrWNqup1VvUClCaQ== + dependencies: + array-events "^0.2.0" + blank-object@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/blank-object/-/blank-object-1.0.2.tgz#f990793fbe9a8c8dd013fb3219420bec81d5f4b9" @@ -2334,6 +2356,11 @@ calculate-cache-key-for-tree@^1.1.0: dependencies: json-stable-stringify "^1.0.1" +call-me-maybe@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" + integrity sha1-JtII6onje1y95gJQoV8DHBak1ms= + caller-path@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" @@ -2406,7 +2433,15 @@ caseless@~0.12.0: resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= -chai@^4.1.2: +chai-fs@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/chai-fs/-/chai-fs-2.0.0.tgz#35ae039fbbb0710f5122aae17faba1e8f41107c6" + integrity sha1-Na4Dn7uwcQ9RIqrhf6uh6PQRB8Y= + dependencies: + bit-mask "^1.0.1" + readdir-enhanced "^1.4.0" + +chai@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/chai/-/chai-4.2.0.tgz#760aa72cf20e3795e84b12877ce0e83737aa29e5" integrity sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw== @@ -3002,6 +3037,11 @@ delegates@^1.0.0: resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= +denodeify@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/denodeify/-/denodeify-1.2.1.tgz#3a36287f5034e699e7577901052c2e6c94251631" + integrity sha1-OjYof1A05pnnV3kBBSwubJQlFjE= + depd@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" @@ -3111,6 +3151,21 @@ ember-assign-polyfill@~2.4.0: ember-cli-babel "^6.6.0" ember-cli-version-checker "^2.0.0" +ember-cli-addon-tests@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/ember-cli-addon-tests/-/ember-cli-addon-tests-0.11.0.tgz#7f5a07ce91317b9b06c792274e6d6a2cc43f1ee9" + integrity sha1-f1oHzpExe5sGx5InTm1qLMQ/Huk= + dependencies: + chalk "^2.0.1" + debug "^3.0.0" + denodeify "^1.2.1" + findup-sync "^2.0.0" + fs-extra "^4.0.2" + lodash "^4.0.0" + semver "^5.3.0" + symlink-or-copy "^1.1.3" + temp "^0.8.3" + ember-cli-babel@^6.0.0-beta.4, ember-cli-babel@^6.11.0, ember-cli-babel@^6.12.0, ember-cli-babel@^6.16.0, ember-cli-babel@^6.6.0, ember-cli-babel@^6.8.1, ember-cli-babel@^6.8.2: version "6.17.2" resolved "https://registry.yarnpkg.com/ember-cli-babel/-/ember-cli-babel-6.17.2.tgz#f0d53d2fb95e70c15d8db84760d045f88f458f69" @@ -3725,7 +3780,7 @@ es-to-primitive@^1.1.1: is-date-object "^1.0.1" is-symbol "^1.0.2" -es6-promise@^4.0.3: +es6-promise@^4.0.3, es6-promise@^4.1.0: version "4.2.5" resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.5.tgz#da6d0d5692efb461e082c14817fe2427d8f5d054" integrity sha512-n6wvpdE43VFtJq+lUDYDBFUwV8TZbuGXLV4D6wKafg13ldznKsyEvatubnmUe31zcvelSzOHF+XbaT+Bl9ObDg== @@ -4082,6 +4137,14 @@ extend@^3.0.0, extend@~3.0.2: resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== +extended-emitter@*: + version "1.0.2" + resolved "https://registry.yarnpkg.com/extended-emitter/-/extended-emitter-1.0.2.tgz#a2521ab93f3b1b69a35ff3a35da9889385a99ba0" + integrity sha1-olIauT87G2mjX/OjXamIk4Wpm6A= + dependencies: + sift "*" + wolfy87-eventemitter "*" + external-editor@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-1.1.1.tgz#12d7b0db850f7ff7e7081baf4005700060c4600b" @@ -4513,7 +4576,7 @@ fs-extra@^6.0.1: jsonfile "^4.0.0" universalify "^0.1.0" -fs-extra@^7.0.0: +fs-extra@^7.0.0, fs-extra@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== @@ -4708,6 +4771,11 @@ glob-parent@^2.0.0: dependencies: is-glob "^2.0.0" +glob-to-regexp@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" + integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= + glob@7.1.2: version "7.1.2" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" @@ -4731,7 +4799,7 @@ glob@^5.0.10: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.4, glob@^7.0.5, glob@^7.1.2: +glob@^7.0.4, glob@^7.0.5, glob@^7.1.2, glob@^7.1.3: version "7.1.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== @@ -6229,7 +6297,7 @@ lodash.values@~2.3.0: dependencies: lodash.keys "~2.3.0" -lodash@^4.17.10, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.3.0, lodash@^4.6.1: +lodash@^4.0.0, lodash@^4.17.10, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.3.0, lodash@^4.6.1: version "4.17.11" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== @@ -7576,6 +7644,15 @@ readable-stream@~1.0.2: isarray "0.0.1" string_decoder "~0.10.x" +readdir-enhanced@^1.4.0: + version "1.5.2" + resolved "https://registry.yarnpkg.com/readdir-enhanced/-/readdir-enhanced-1.5.2.tgz#61463048690ac6a455b75b62fa78a88f8dc85e53" + integrity sha1-YUYwSGkKxqRVt1ti+nioj43IXlM= + dependencies: + call-me-maybe "^1.0.1" + es6-promise "^4.1.0" + glob-to-regexp "^0.3.0" + recast@^0.11.3: version "0.11.23" resolved "https://registry.yarnpkg.com/recast/-/recast-0.11.23.tgz#451fd3004ab1e4df9b4e4b66376b2a21912462d3" @@ -8134,6 +8211,11 @@ shellwords@^0.1.1: resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== +sift@*: + version "7.0.1" + resolved "https://registry.yarnpkg.com/sift/-/sift-7.0.1.tgz#47d62c50b159d316f1372f8b53f9c10cd21a4b08" + integrity sha512-oqD7PMJ+uO6jV9EQCl0LrRw1OwsiPsiFQR5AR30heR+4Dl7jBBbDLnNvWiak20tzZlSE1H7RB30SX/1j/YYT7g== + signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" @@ -8603,7 +8685,7 @@ supports-color@^5.3.0: dependencies: has-flag "^3.0.0" -symlink-or-copy@^1.0.0, symlink-or-copy@^1.0.1, symlink-or-copy@^1.1.8, symlink-or-copy@^1.2.0: +symlink-or-copy@^1.0.0, symlink-or-copy@^1.0.1, symlink-or-copy@^1.1.3, symlink-or-copy@^1.1.8, symlink-or-copy@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/symlink-or-copy/-/symlink-or-copy-1.2.0.tgz#5d49108e2ab824a34069b68974486c290020b393" integrity sha512-W31+GLiBmU/ZR02Ii0mVZICuNEN9daZ63xZMPDsYgPgNjMtg+atqLEGI7PPI936jYSQZxoLb/63xos8Adrx4Eg== @@ -8640,7 +8722,7 @@ tar@^4: safe-buffer "^5.1.2" yallist "^3.0.2" -temp@0.8.3: +temp@0.8.3, temp@^0.8.3: version "0.8.3" resolved "https://registry.yarnpkg.com/temp/-/temp-0.8.3.tgz#e0c6bc4d26b903124410e4fed81103014dfc1f59" integrity sha1-4Ma8TSa5AxJEEOT+2BEDAU38H1k= @@ -9219,6 +9301,11 @@ wide-align@^1.1.0: dependencies: string-width "^1.0.2 || 2" +wolfy87-eventemitter@*: + version "5.2.5" + resolved "https://registry.yarnpkg.com/wolfy87-eventemitter/-/wolfy87-eventemitter-5.2.5.tgz#e7af2adbb84e481c65edeb2a2e01032c8ff1b88f" + integrity sha512-1Og5JkuMNZfZcDn76HM1ktUqG8MOMWKpaGdExM1pcTloUNSBkx4Mti3/jRKSTt1vI3P7S8BTkFogqMbc7m3A7Q== + wordwrap@~0.0.2: version "0.0.3" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107"