diff --git a/.gitignore b/.gitignore index d009877860f..8c355bd0d8e 100644 --- a/.gitignore +++ b/.gitignore @@ -33,6 +33,7 @@ tmp.bpm tmp.spade tests/source node_modules +yarn-error.log bundle/ *~ publish_to_bower/ diff --git a/.travis.yml b/.travis.yml index ce1d8aa8afa..ffd8d05656a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -38,7 +38,7 @@ branches: only: - master - beta - - stable + - release # npm version tags - /^v\d+\.\d+\.\d+/ diff --git a/bin/run-tests.js b/bin/run-tests.js index 9bbed5a49e3..30b4a07f3c1 100755 --- a/bin/run-tests.js +++ b/bin/run-tests.js @@ -14,6 +14,7 @@ var path = require('path'); var finalhandler = require('finalhandler'); var http = require('http'); var serveStatic = require('serve-static'); +var puppeteer = require('puppeteer'); // Serve up public/ftp folder. var serve = serveStatic('./dist/', { index: ['index.html', 'index.htm'] }); @@ -28,6 +29,9 @@ var PORT = 13141; // Listen. server.listen(PORT); +// Cache the Chrome browser instance when launched for new pages. +var browserPromise; + function run(queryString) { return new RSVP.Promise(function(resolve, reject) { var url = 'http://localhost:' + PORT + '/tests/?' + queryString; @@ -40,9 +44,11 @@ function runInBrowser(url, retries, resolve, reject) { console.log('Running Chrome headless: ' + url); - var puppeteer = require('puppeteer'); + if (!browserPromise) { + browserPromise = puppeteer.launch(); + } - puppeteer.launch().then(function(browser) { + browserPromise.then(function(browser) { browser.newPage().then(function(page) { /* globals window */ var crashed; @@ -136,52 +142,55 @@ function runInBrowser(url, retries, resolve, reject) { ' failed.' ); - if (typeof window.callPhantom === 'function') { - window.callPhantom({ - name: 'QUnit.done', - data: result, - }); - } + window.callPhantom({ + name: 'QUnit.done', + data: result, + }); }); }); }; - page.exposeFunction('callPhantom', function(message) { - if (message && message.name === 'QUnit.done') { - result = message.data; - var failed = !result || !result.total || result.failed; + return page + .exposeFunction('callPhantom', function(message) { + page.close(); - if (!result.total) { - console.error('No tests were executed. Are you loading tests asynchronously?'); - } + if (message && message.name === 'QUnit.done') { + result = message.data; + var failed = !result || !result.total || result.failed; - var code = failed ? 1 : 0; - result.code = code; + if (!result.total) { + console.error('No tests were executed. Are you loading tests asynchronously?'); + } - if (!crashed && code === 0) { - resolve(result); - } else if (crashed) { - console.log(chalk.red('Browser crashed with exit code ' + code)); + var code = failed ? 1 : 0; + result.code = code; - if (retries > 1) { - console.log(chalk.yellow('Retrying... ¯_(ツ)_/¯')); - runInBrowser(url, retries - 1, resolve, reject); - } else { - console.log(chalk.red('Giving up! (╯°□°)╯︵ ┻━┻')); - console.log( - chalk.yellow('This might be a known issue with Chrome headless, skipping for now') - ); + if (!crashed && code === 0) { resolve(result); + } else if (crashed) { + console.log(chalk.red('Browser crashed with exit code ' + code)); + + if (retries > 1) { + console.log(chalk.yellow('Retrying... ¯\\_(ツ)_/¯')); + runInBrowser(url, retries - 1, resolve, reject); + } else { + console.log(chalk.red('Giving up! (╯°□°)╯︵ ┻━┻')); + console.log( + chalk.yellow('This might be a known issue with Chrome headless, skipping for now') + ); + resolve(result); + } + } else { + reject(result); } - } else { - reject(result); } - } - }); - - page.evaluateOnNewDocument(addLogging); - - page.goto(url, { timeout: 900 }); + }) + .then(function() { + return page.evaluateOnNewDocument(addLogging); + }) + .then(function() { + return page.goto(url, { timeout: 900 }); + }); }); }); } diff --git a/blueprints/initializer-test/mocha-files/tests/unit/initializers/__name__-test.js b/blueprints/initializer-test/mocha-files/tests/unit/initializers/__name__-test.js index 5cad7fb4658..0f233516706 100644 --- a/blueprints/initializer-test/mocha-files/tests/unit/initializers/__name__-test.js +++ b/blueprints/initializer-test/mocha-files/tests/unit/initializers/__name__-test.js @@ -3,7 +3,7 @@ import { describe, it, beforeEach, afterEach } from 'mocha'; import { run } from '@ember/runloop'; import Application from '@ember/application'; import { initialize } from '<%= dasherizedModulePrefix %>/initializers/<%= dasherizedModuleName %>'; -import destroyApp from '../../helpers/destroy-app'; +<% if (destroyAppExists) { %>import destroyApp from '../../helpers/destroy-app';<% } %> describe('<%= friendlyTestName %>', function() { let application; @@ -16,7 +16,7 @@ describe('<%= friendlyTestName %>', function() { }); afterEach(function() { - destroyApp(application); + <% if (destroyAppExists) { %>destroyApp(application);<% } else { %>run(application, 'destroy');<% } %> }); // Replace this with your real tests. diff --git a/blueprints/initializer-test/qunit-files/tests/unit/initializers/__name__-test.js b/blueprints/initializer-test/qunit-files/tests/unit/initializers/__name__-test.js index 38630689960..bd7fab05b45 100644 --- a/blueprints/initializer-test/qunit-files/tests/unit/initializers/__name__-test.js +++ b/blueprints/initializer-test/qunit-files/tests/unit/initializers/__name__-test.js @@ -3,7 +3,7 @@ import { run } from '@ember/runloop'; import { initialize } from '<%= dasherizedModulePrefix %>/initializers/<%= dasherizedModuleName %>'; import { module, test } from 'qunit'; -<% if (destroyAppExists) { %>import destroyApp from '../../helpers/destroy-app';<% } else { %>import { run } from '@ember/runloop'; <% } %> +<% if (destroyAppExists) { %>import destroyApp from '../../helpers/destroy-app';<% } %> module('<%= friendlyTestName %>', { beforeEach() { diff --git a/blueprints/service-test/index.js b/blueprints/service-test/index.js index e4f134c7ca7..ffb4ae4f4dd 100644 --- a/blueprints/service-test/index.js +++ b/blueprints/service-test/index.js @@ -1,10 +1,38 @@ 'use strict'; const useTestFrameworkDetector = require('../test-framework-detector'); +const isModuleUnificationProject = require('../module-unification').isModuleUnificationProject; module.exports = useTestFrameworkDetector({ description: 'Generates a service unit test.', - locals: function(options) { + + fileMapTokens() { + if (isModuleUnificationProject(this.project)) { + return { + __root__(options) { + if (options.pod) { + throw "Pods aren't supported within a module unification app"; + } + + return 'src'; + }, + __testType__() { + return ''; + }, + }; + } else { + return { + __root__() { + return 'tests'; + }, + __testType__() { + return 'unit'; + }, + }; + } + }, + + locals(options) { return { friendlyTestDescription: ['Unit', 'Service', options.entity.name].join(' | '), }; diff --git a/blueprints/service-test/mocha-0.12-files/tests/unit/__path__/__test__.js b/blueprints/service-test/mocha-0.12-files/__root__/__testType__/__path__/__test__.js similarity index 100% rename from blueprints/service-test/mocha-0.12-files/tests/unit/__path__/__test__.js rename to blueprints/service-test/mocha-0.12-files/__root__/__testType__/__path__/__test__.js diff --git a/blueprints/service-test/mocha-files/tests/unit/__path__/__test__.js b/blueprints/service-test/mocha-files/__root__/__testType__/__path__/__test__.js similarity index 100% rename from blueprints/service-test/mocha-files/tests/unit/__path__/__test__.js rename to blueprints/service-test/mocha-files/__root__/__testType__/__path__/__test__.js diff --git a/blueprints/service-test/qunit-files/tests/unit/__path__/__test__.js b/blueprints/service-test/qunit-files/__root__/__testType__/__path__/__test__.js similarity index 100% rename from blueprints/service-test/qunit-files/tests/unit/__path__/__test__.js rename to blueprints/service-test/qunit-files/__root__/__testType__/__path__/__test__.js diff --git a/blueprints/service-test/qunit-rfc-232-files/tests/unit/__path__/__test__.js b/blueprints/service-test/qunit-rfc-232-files/__root__/__testType__/__path__/__test__.js similarity index 100% rename from blueprints/service-test/qunit-rfc-232-files/tests/unit/__path__/__test__.js rename to blueprints/service-test/qunit-rfc-232-files/__root__/__testType__/__path__/__test__.js diff --git a/blueprints/service/index.js b/blueprints/service/index.js index 15567f6d17e..c65fe260b62 100644 --- a/blueprints/service/index.js +++ b/blueprints/service/index.js @@ -1,5 +1,21 @@ 'use strict'; +const isModuleUnificationProject = require('../module-unification').isModuleUnificationProject; + module.exports = { description: 'Generates a service.', + + fileMapTokens() { + if (isModuleUnificationProject(this.project)) { + return { + __root__(options) { + if (options.pod) { + throw "Pods aren't supported within a module unification app"; + } + + return 'src'; + }, + }; + } + }, }; diff --git a/lib/index.js b/lib/index.js index 5ae47411596..3e902d3e2a5 100644 --- a/lib/index.js +++ b/lib/index.js @@ -66,6 +66,7 @@ module.exports = { files: ['jquery.js'], }); + let emberSourceDistPath = path.join(__dirname, '..', 'dist'); var emberFiles = [ 'ember-runtime.js', 'ember-template-compiler.js', @@ -81,12 +82,12 @@ module.exports = { return flat.concat(jsAndMap); }, []) .filter(function(file) { - var fullPath = path.join(__dirname, '..', 'dist', file); + var fullPath = path.join(emberSourceDistPath, file); return fs.existsSync(fullPath); }); - var ember = new Funnel(__dirname + '../dist', { + var ember = new Funnel(emberSourceDistPath, { destDir: 'ember', files: emberFiles, }); diff --git a/node-tests/blueprints/component-test-test.js b/node-tests/blueprints/component-test-test.js index ff7f9cf12b4..b0444147171 100644 --- a/node-tests/blueprints/component-test-test.js +++ b/node-tests/blueprints/component-test-test.js @@ -8,6 +8,7 @@ const emberNew = blueprintHelpers.emberNew; const emberGenerate = blueprintHelpers.emberGenerate; const emberGenerateDestroy = blueprintHelpers.emberGenerateDestroy; const modifyPackages = blueprintHelpers.modifyPackages; +const expectError = require('../helpers/expect-error'); const chai = require('ember-cli-blueprint-test-helpers/chai'); const expect = chai.expect; @@ -15,16 +16,6 @@ const expect = chai.expect; const generateFakePackageManifest = require('../helpers/generate-fake-package-manifest'); const fixture = require('../helpers/fixture'); -function expectError(promise, expectedErrorText) { - return promise - .then(() => { - throw 'the command should raise an exception'; - }) - .catch(error => { - expect(error).to.equal(expectedErrorText); - }); -} - describe('Blueprint: component-test', function() { setupTestHooks(this); diff --git a/node-tests/blueprints/service-test.js b/node-tests/blueprints/service-test.js index fa8bb2e750d..7b3a328932f 100644 --- a/node-tests/blueprints/service-test.js +++ b/node-tests/blueprints/service-test.js @@ -5,9 +5,11 @@ const setupTestHooks = blueprintHelpers.setupTestHooks; const emberNew = blueprintHelpers.emberNew; const emberGenerateDestroy = blueprintHelpers.emberGenerateDestroy; const setupPodConfig = blueprintHelpers.setupPodConfig; +const expectError = require('../helpers/expect-error'); const chai = require('ember-cli-blueprint-test-helpers/chai'); const expect = chai.expect; +const fs = require('fs-extra'); describe('Blueprint: service', function() { setupTestHooks(this); @@ -96,6 +98,43 @@ describe('Blueprint: service', function() { }); }); + describe('in app - module unification', function() { + beforeEach(function() { + return emberNew().then(() => fs.ensureDirSync('src')); + }); + + it('service foo', function() { + return emberGenerateDestroy(['service', 'foo'], _file => { + expect(_file('src/services/foo.js')) + .to.contain("import Service from '@ember/service';") + .to.contain('export default Service.extend({\n});'); + + expect(_file('src/services/foo-test.js')) + .to.contain("import { moduleFor, test } from 'ember-qunit';") + .to.contain("moduleFor('service:foo'"); + }); + }); + + it('service foo/bar', function() { + return emberGenerateDestroy(['service', 'foo/bar'], _file => { + expect(_file('src/services/foo/bar.js')) + .to.contain("import Service from '@ember/service';") + .to.contain('export default Service.extend({\n});'); + + expect(_file('src/services/foo/bar-test.js')) + .to.contain("import { moduleFor, test } from 'ember-qunit';") + .to.contain("moduleFor('service:foo/bar'"); + }); + }); + + it('service foo --pod', function() { + return expectError( + emberGenerateDestroy(['service', 'foo', '--pod']), + "Pods aren't supported within a module unification app" + ); + }); + }); + describe('in addon', function() { beforeEach(function() { return emberNew({ target: 'addon' }); @@ -133,4 +172,38 @@ describe('Blueprint: service', function() { }); }); }); + + describe('in addon - module unification', function() { + beforeEach(function() { + return emberNew({ target: 'addon' }).then(() => fs.ensureDirSync('src')); + }); + + it('service foo', function() { + return emberGenerateDestroy(['service', 'foo'], _file => { + expect(_file('src/services/foo.js')) + .to.contain("import Service from '@ember/service';") + .to.contain('export default Service.extend({\n});'); + + expect(_file('src/services/foo-test.js')) + .to.contain("import { moduleFor, test } from 'ember-qunit';") + .to.contain("moduleFor('service:foo'"); + + expect(_file('app/services/foo.js')).to.not.exist; + }); + }); + + it('service foo/bar', function() { + return emberGenerateDestroy(['service', 'foo/bar'], _file => { + expect(_file('src/services/foo/bar.js')) + .to.contain("import Service from '@ember/service';") + .to.contain('export default Service.extend({\n});'); + + expect(_file('src/services/foo/bar-test.js')) + .to.contain("import { moduleFor, test } from 'ember-qunit';") + .to.contain("moduleFor('service:foo/bar'"); + + expect(_file('app/services/foo/bar.js')).to.not.exist; + }); + }); + }); }); diff --git a/node-tests/fixtures/acceptance-test/mocha.js b/node-tests/fixtures/acceptance-test/mocha.js index b848b07699e..b2a8f0b6171 100644 --- a/node-tests/fixtures/acceptance-test/mocha.js +++ b/node-tests/fixtures/acceptance-test/mocha.js @@ -1,7 +1,7 @@ import { describe, it, beforeEach, afterEach } from 'mocha'; import { expect } from 'chai'; import startApp from 'my-app/tests/helpers/start-app'; -import destroyApp from 'my-app/tests/helpers/destroy-app'; +import { run } from '@ember/runloop'; describe('Acceptance | foo', function() { let application; @@ -11,7 +11,7 @@ describe('Acceptance | foo', function() { }); afterEach(function() { - destroyApp(application); + run(application, 'destroy'); }); it('can visit /foo', function() { diff --git a/node-tests/fixtures/initializer-test/default.js b/node-tests/fixtures/initializer-test/default.js index e5b1f28bc08..362f4f6d2eb 100644 --- a/node-tests/fixtures/initializer-test/default.js +++ b/node-tests/fixtures/initializer-test/default.js @@ -3,7 +3,7 @@ import { run } from '@ember/runloop'; import { initialize } from 'my-app/initializers/foo'; import { module, test } from 'qunit'; -import destroyApp from '../../helpers/destroy-app'; + module('Unit | Initializer | foo', { beforeEach() { @@ -13,7 +13,7 @@ module('Unit | Initializer | foo', { }); }, afterEach() { - destroyApp(this.application); + run(this.application, 'destroy'); } }); diff --git a/node-tests/fixtures/initializer-test/dummy.js b/node-tests/fixtures/initializer-test/dummy.js index 35bad949824..5777e3e8973 100644 --- a/node-tests/fixtures/initializer-test/dummy.js +++ b/node-tests/fixtures/initializer-test/dummy.js @@ -3,7 +3,7 @@ import { run } from '@ember/runloop'; import { initialize } from 'dummy/initializers/foo'; import { module, test } from 'qunit'; -import destroyApp from '../../helpers/destroy-app'; + module('Unit | Initializer | foo', { beforeEach() { @@ -13,7 +13,7 @@ module('Unit | Initializer | foo', { }); }, afterEach() { - destroyApp(this.application); + run(this.application, 'destroy'); } }); diff --git a/node-tests/fixtures/initializer-test/mocha.js b/node-tests/fixtures/initializer-test/mocha.js index c8a0f261bcc..95daa82e159 100644 --- a/node-tests/fixtures/initializer-test/mocha.js +++ b/node-tests/fixtures/initializer-test/mocha.js @@ -3,7 +3,7 @@ import { describe, it, beforeEach, afterEach } from 'mocha'; import { run } from '@ember/runloop'; import Application from '@ember/application'; import { initialize } from 'my-app/initializers/foo'; -import destroyApp from '../../helpers/destroy-app'; + describe('Unit | Initializer | foo', function() { let application; @@ -16,7 +16,7 @@ describe('Unit | Initializer | foo', function() { }); afterEach(function() { - destroyApp(application); + run(application, 'destroy'); }); // Replace this with your real tests. diff --git a/node-tests/fixtures/initializer-test/rfc232.js b/node-tests/fixtures/initializer-test/rfc232.js index 7586f355d13..9a45208e1ab 100644 --- a/node-tests/fixtures/initializer-test/rfc232.js +++ b/node-tests/fixtures/initializer-test/rfc232.js @@ -3,7 +3,7 @@ import Application from '@ember/application'; import { initialize } from 'my-app/initializers/foo'; import { module, test } from 'qunit'; import { setupTest } from 'ember-qunit'; -import destroyApp from '../../helpers/destroy-app'; +import { run } from '@ember/runloop'; module('Unit | Initializer | foo', function(hooks) { setupTest(hooks); @@ -19,7 +19,7 @@ module('Unit | Initializer | foo', function(hooks) { }); hooks.afterEach(function() { - destroyApp(this.application); + run(this.application, 'destroy'); }); // Replace this with your real tests. diff --git a/node-tests/fixtures/instance-initializer-test/default.js b/node-tests/fixtures/instance-initializer-test/default.js index 680067e0667..52de0c7c8be 100644 --- a/node-tests/fixtures/instance-initializer-test/default.js +++ b/node-tests/fixtures/instance-initializer-test/default.js @@ -2,7 +2,6 @@ import Application from '@ember/application'; import { run } from '@ember/runloop'; import { initialize } from 'my-app/instance-initializers/foo'; import { module, test } from 'qunit'; -import destroyApp from '../../helpers/destroy-app'; module('Unit | Instance Initializer | foo', { beforeEach() { @@ -13,7 +12,7 @@ module('Unit | Instance Initializer | foo', { }, afterEach() { run(this.appInstance, 'destroy'); - destroyApp(this.application); + run(this.application, 'destroy'); } }); diff --git a/node-tests/fixtures/instance-initializer-test/dummy.js b/node-tests/fixtures/instance-initializer-test/dummy.js index ff4cc535f3a..9b5fba7bda8 100644 --- a/node-tests/fixtures/instance-initializer-test/dummy.js +++ b/node-tests/fixtures/instance-initializer-test/dummy.js @@ -2,7 +2,6 @@ import Application from '@ember/application'; import { run } from '@ember/runloop'; import { initialize } from 'dummy/instance-initializers/foo'; import { module, test } from 'qunit'; -import destroyApp from '../../helpers/destroy-app'; module('Unit | Instance Initializer | foo', { beforeEach() { @@ -13,7 +12,7 @@ module('Unit | Instance Initializer | foo', { }, afterEach() { run(this.appInstance, 'destroy'); - destroyApp(this.application); + run(this.application, 'destroy'); } }); diff --git a/node-tests/fixtures/instance-initializer-test/rfc232.js b/node-tests/fixtures/instance-initializer-test/rfc232.js index d3378f08aef..0d0522b0618 100644 --- a/node-tests/fixtures/instance-initializer-test/rfc232.js +++ b/node-tests/fixtures/instance-initializer-test/rfc232.js @@ -3,7 +3,7 @@ import Application from '@ember/application'; import { initialize } from 'my-app/instance-initializers/foo'; import { module, test } from 'qunit'; import { setupTest } from 'ember-qunit'; -import destroyApp from '../../helpers/destroy-app'; +import { run } from '@ember/runloop'; module('Unit | Instance Initializer | foo', function(hooks) { setupTest(hooks); @@ -18,8 +18,8 @@ module('Unit | Instance Initializer | foo', function(hooks) { this.instance = this.application.buildInstance(); }); hooks.afterEach(function() { - destroyApp(this.application); - destroyApp(this.instance); + run(this.application, 'destroy'); + run(this.instance, 'destroy'); }); // Replace this with your real tests. diff --git a/node-tests/helpers/expect-error.js b/node-tests/helpers/expect-error.js new file mode 100644 index 00000000000..d70e88ba21e --- /dev/null +++ b/node-tests/helpers/expect-error.js @@ -0,0 +1,14 @@ +'use strict'; + +const chai = require('ember-cli-blueprint-test-helpers/chai'); +const expect = chai.expect; + +module.exports = function expectError(promise, expectedErrorText) { + return promise + .then(() => { + throw 'the command should raise an exception'; + }) + .catch(error => { + expect(error).to.equal(expectedErrorText); + }); +}; diff --git a/package.json b/package.json index 1cc15ddac1d..ad4a1d3cdae 100644 --- a/package.json +++ b/package.json @@ -107,7 +107,7 @@ "broccoli-uglify-sourcemap": "^2.0.2", "common-tags": "^1.7.2", "dag-map": "^2.0.2", - "ember-cli": "github:ember-cli/ember-cli#76175513c5e49caf5405b7304e83ddf3e799c68e", + "ember-cli": "github:ember-cli/ember-cli#8f5a13a02d8ea5a04683565340611161c63bef89", "ember-cli-blueprint-test-helpers": "^0.18.3", "ember-cli-browserstack": "^0.0.6", "ember-cli-dependency-checker": "^2.1.0", diff --git a/packages/ember-application/lib/system/application-instance.js b/packages/ember-application/lib/system/application-instance.js index de6d9038b81..9738e67636d 100644 --- a/packages/ember-application/lib/system/application-instance.js +++ b/packages/ember-application/lib/system/application-instance.js @@ -367,7 +367,7 @@ class BootOptions { /** Run in a full browser environment. - When this flag is set to `false`, it will disable most browser-specific + When this flag is set to `true`, it will disable most browser-specific and interactive features. Specifically: * It does not use `jQuery` to append the root view; the `rootElement` diff --git a/packages/ember-application/tests/system/application_test.js b/packages/ember-application/tests/system/application_test.js index 7c711990867..0112417ae01 100644 --- a/packages/ember-application/tests/system/application_test.js +++ b/packages/ember-application/tests/system/application_test.js @@ -1,5 +1,5 @@ /*globals EmberDev */ -import { VERSION } from 'ember'; +import VERSION from 'ember/version'; import { ENV, context } from 'ember-environment'; import { libraries, setNamespaceSearchDisabled } from 'ember-metal'; import { getDebugFunction, setDebugFunction } from 'ember-debug'; diff --git a/packages/ember-environment/lib/index.js b/packages/ember-environment/lib/index.js index 652913b20bf..de0842e7520 100644 --- a/packages/ember-environment/lib/index.js +++ b/packages/ember-environment/lib/index.js @@ -16,6 +16,10 @@ export const ENV = (typeof global.ENV === 'object' && global.ENV) || {}; +export function getENV() { + return ENV; +} + // ENABLE_ALL_FEATURES was documented, but you can't actually enable non optional features. if (ENV.ENABLE_ALL_FEATURES) { ENV.ENABLE_OPTIONAL_FEATURES = true; @@ -66,19 +70,6 @@ ENV.LOG_STACKTRACE_ON_DEPRECATION = defaultTrue(ENV.LOG_STACKTRACE_ON_DEPRECATIO */ ENV.LOG_VERSION = defaultTrue(ENV.LOG_VERSION); -/** - Debug parameter you can turn on. This will log all bindings that fire to - the console. This should be disabled in production code. Note that you - can also enable this from the console or temporarily. - - @property LOG_BINDINGS - @for EmberENV - @type Boolean - @default false - @public -*/ -ENV.LOG_BINDINGS = defaultFalse(ENV.LOG_BINDINGS); - ENV.RAISE_ON_DEPRECATION = defaultFalse(ENV.RAISE_ON_DEPRECATION); /** @@ -131,6 +122,14 @@ export const context = { lookup: originalContext.lookup || global, }; +export function getLookup() { + return context.lookup; +} + +export function setLookup(value) { + context.lookup = value; +} + // TODO: cleanup single source of truth issues with this stuff export const environment = hasDOM ? { diff --git a/packages/ember-metal/lib/index.js b/packages/ember-metal/lib/index.js index bd98e46289f..16ea7d61e7d 100644 --- a/packages/ember-metal/lib/index.js +++ b/packages/ember-metal/lib/index.js @@ -80,7 +80,7 @@ export { default as setProperties } from './set_properties'; export { default as expandProperties } from './expand_properties'; export { addObserver, removeObserver } from './observer'; -export { Mixin, aliasMethod, mixin, observer, required, REQUIRED } from './mixin'; +export { Mixin, aliasMethod, mixin, observer } from './mixin'; export { default as InjectedProperty } from './injected_property'; export { setHasViews, tagForProperty, tagFor, markObjectAsDirty } from './tags'; export { default as runInTransaction, didRender, assertNotRendered } from './transaction'; diff --git a/packages/ember-metal/lib/libraries.js b/packages/ember-metal/lib/libraries.js index 355f96a34cc..4033022fc22 100644 --- a/packages/ember-metal/lib/libraries.js +++ b/packages/ember-metal/lib/libraries.js @@ -2,6 +2,8 @@ import { warn, debug } from 'ember-debug'; import { DEBUG } from 'ember-env-flags'; import { get } from './property_get'; import { EMBER_LIBRARIES_ISREGISTERED } from 'ember/features'; +import VERSION from 'ember/version'; + /** @module ember */ @@ -82,5 +84,7 @@ if (DEBUG) { debug('-------------------------------'); }; } +const LIBRARIES = new Libraries(); +LIBRARIES.registerCoreLibrary('Ember', VERSION); -export default new Libraries(); +export default LIBRARIES; diff --git a/packages/ember-metal/lib/mixin.js b/packages/ember-metal/lib/mixin.js index dc4b7dd3ecb..a210d0170bb 100644 --- a/packages/ember-metal/lib/mixin.js +++ b/packages/ember-metal/lib/mixin.js @@ -3,7 +3,7 @@ */ import { EMBER_METAL_ES5_GETTERS } from 'ember/features'; import { assign, guidFor, ROOT, wrap, makeArray } from 'ember-utils'; -import { assert, deprecate } from 'ember-debug'; +import { assert } from 'ember-debug'; import { DEBUG } from 'ember-env-flags'; import { ENV } from 'ember-environment'; import { descriptorFor, meta as metaFor, peekMeta } from './meta'; @@ -171,10 +171,6 @@ function applyMergedProperties(obj, key, value, values) { function addNormalizedProperty(base, key, value, meta, descs, values, concats, mergings) { if (value instanceof Descriptor) { - if (ENV._ENABLE_PROPERTY_REQUIRED_SUPPORT && value === REQUIRED && descs[key]) { - return CONTINUE; - } - // Wrap descriptor function to implement // _super() if needed if (value._getter) { @@ -317,10 +313,6 @@ function applyMixin(obj, mixins, partial) { desc = descs[key]; value = values[key]; - if (ENV._ENABLE_PROPERTY_REQUIRED_SUPPORT && desc === REQUIRED) { - continue; - } - while (desc && desc instanceof Alias) { let followed = followAlias(obj, desc, descs, values); desc = followed.desc; @@ -655,24 +647,6 @@ function _keys(mixin, ret = new Set(), seen = new Set()) { return ret; } -const REQUIRED = new Descriptor(); -REQUIRED.toString = () => '(Required Property)'; - -/** - Denotes a required property for a mixin - - @method required - @for Ember - @private -*/ -export function required() { - deprecate('Ember.required is deprecated as its behavior is inconsistent and unreliable.', false, { - id: 'ember-metal.required', - until: '3.0.0', - }); - return REQUIRED; -} - class Alias extends Descriptor { constructor(methodName) { super(); @@ -763,4 +737,4 @@ export function observer(...args) { return func; } -export { Mixin, REQUIRED }; +export { Mixin }; diff --git a/packages/ember-metal/lib/namespace_search.js b/packages/ember-metal/lib/namespace_search.js index 26ede84cd26..5e72158eaa7 100644 --- a/packages/ember-metal/lib/namespace_search.js +++ b/packages/ember-metal/lib/namespace_search.js @@ -185,7 +185,7 @@ function calculateToString(target) { let superclass = target; do { superclass = Object.getPrototypeOf(superclass); - if (superclass === Function.prototype) { + if (superclass === Function.prototype || superclass === Object.prototype) { break; } str = getName(target); diff --git a/packages/ember-metal/tests/mixin/required_test.js b/packages/ember-metal/tests/mixin/required_test.js deleted file mode 100644 index 17173b562e8..00000000000 --- a/packages/ember-metal/tests/mixin/required_test.js +++ /dev/null @@ -1,60 +0,0 @@ -import { mixin, Mixin, required, get } from '../..'; -import { ENV } from 'ember-environment'; -import { moduleFor, AbstractTestCase } from 'internal-test-helpers'; - -let PartialMixin, FinalMixin, obj; -let originalEnvVal; - -moduleFor( - 'Module.required', - class extends AbstractTestCase { - beforeEach() { - originalEnvVal = ENV._ENABLE_PROPERTY_REQUIRED_SUPPORT; - ENV._ENABLE_PROPERTY_REQUIRED_SUPPORT = true; - expectDeprecation(() => { - PartialMixin = Mixin.create({ - foo: required(), - bar: 'BAR', - }); - }, 'Ember.required is deprecated as its behavior is inconsistent and unreliable.'); - - FinalMixin = Mixin.create({ - foo: 'FOO', - }); - - obj = {}; - } - - afterEach() { - PartialMixin = FinalMixin = obj = null; - ENV._ENABLE_PROPERTY_REQUIRED_SUPPORT = originalEnvVal; - } - - ['@test applying a mixin to meet requirement'](assert) { - FinalMixin.apply(obj); - PartialMixin.apply(obj); - assert.equal(get(obj, 'foo'), 'FOO', 'should now be defined'); - } - - ['@test combined mixins to meet requirement'](assert) { - Mixin.create(PartialMixin, FinalMixin).apply(obj); - assert.equal(get(obj, 'foo'), 'FOO', 'should now be defined'); - } - - ['@test merged mixin'](assert) { - Mixin.create(PartialMixin, { foo: 'FOO' }).apply(obj); - assert.equal(get(obj, 'foo'), 'FOO', 'should now be defined'); - } - - ['@test define property on source object'](assert) { - obj.foo = 'FOO'; - PartialMixin.apply(obj); - assert.equal(get(obj, 'foo'), 'FOO', 'should now be defined'); - } - - ['@test using apply'](assert) { - mixin(obj, PartialMixin, { foo: 'FOO' }); - assert.equal(get(obj, 'foo'), 'FOO', 'should now be defined'); - } - } -); diff --git a/packages/ember-metal/tests/namespace_search_test.js b/packages/ember-metal/tests/namespace_search_test.js new file mode 100644 index 00000000000..bb158f163d2 --- /dev/null +++ b/packages/ember-metal/tests/namespace_search_test.js @@ -0,0 +1,16 @@ +import { Mixin } from '..'; +import { moduleFor, AbstractTestCase } from 'internal-test-helpers'; + +moduleFor( + 'NamespaceSearch', + class extends AbstractTestCase { + ['@test classToString: null as this inside class must not throw error'](assert) { + let mixin = Mixin.create(); + assert.equal( + mixin.toString(), + '(unknown)', + 'this = null should be handled on Mixin.toString() call' + ); + } + } +); diff --git a/packages/ember-runtime/lib/system/core_object.js b/packages/ember-runtime/lib/system/core_object.js index 43a3ee90735..00cf79c7c97 100644 --- a/packages/ember-runtime/lib/system/core_object.js +++ b/packages/ember-runtime/lib/system/core_object.js @@ -22,7 +22,6 @@ import { finishChains, sendEvent, Mixin, - REQUIRED, defineProperty, ComputedProperty, InjectedProperty, @@ -986,11 +985,6 @@ let ClassMixinProps = { }, }; -if (ENV._ENABLE_PROPERTY_REQUIRED_SUPPORT) { - ClassMixinProps.ClassMixin = REQUIRED; - ClassMixinProps.PrototypeMixin = REQUIRED; -} - function injectedPropertyAssertion() { assert('Injected properties are invalid', validatePropertyInjections(this)); } diff --git a/packages/ember-testing/lib/setup_for_testing.js b/packages/ember-testing/lib/setup_for_testing.js index 597f89ae0b2..5361ecd696b 100644 --- a/packages/ember-testing/lib/setup_for_testing.js +++ b/packages/ember-testing/lib/setup_for_testing.js @@ -1,6 +1,7 @@ /* global self */ import { setTesting } from 'ember-debug'; +import { jQuery } from 'ember-views'; import { getAdapter, setAdapter } from './test/adapter'; import { incrementPendingRequests, @@ -9,9 +10,7 @@ import { } from './test/pending_requests'; import Adapter from './adapters/adapter'; import QUnitAdapter from './adapters/qunit'; -/** -@module ember -*/ + /** Sets Ember up for testing. This is useful to perform basic setup steps in order to unit test. @@ -33,11 +32,13 @@ export default function setupForTesting() { setAdapter(typeof self.QUnit === 'undefined' ? new Adapter() : new QUnitAdapter()); } - document.removeEventListener('ajaxSend', incrementPendingRequests); - document.removeEventListener('ajaxComplete', decrementPendingRequests); + if (jQuery) { + jQuery(document).off('ajaxSend', incrementPendingRequests); + jQuery(document).off('ajaxComplete', decrementPendingRequests); - clearPendingRequests(); + clearPendingRequests(); - document.addEventListener('ajaxSend', incrementPendingRequests); - document.addEventListener('ajaxComplete', decrementPendingRequests); + jQuery(document).on('ajaxSend', incrementPendingRequests); + jQuery(document).on('ajaxComplete', decrementPendingRequests); + } } diff --git a/packages/ember-testing/lib/test/pending_requests.js b/packages/ember-testing/lib/test/pending_requests.js index ef11388ac9a..e03fb9ba3c8 100644 --- a/packages/ember-testing/lib/test/pending_requests.js +++ b/packages/ember-testing/lib/test/pending_requests.js @@ -8,13 +8,11 @@ export function clearPendingRequests() { requests.length = 0; } -export function incrementPendingRequests({ detail } = { detail: { xhr: null } }) { - let xhr = detail.xhr; +export function incrementPendingRequests(_, xhr) { requests.push(xhr); } -export function decrementPendingRequests({ detail } = { detail: { xhr: null } }) { - let xhr = detail.xhr; +export function decrementPendingRequests(_, xhr) { for (let i = 0; i < requests.length; i++) { if (xhr === requests[i]) { requests.splice(i, 1); diff --git a/packages/ember-testing/tests/helpers_test.js b/packages/ember-testing/tests/helpers_test.js index 5659e9cd4df..41c31681110 100644 --- a/packages/ember-testing/tests/helpers_test.js +++ b/packages/ember-testing/tests/helpers_test.js @@ -4,7 +4,7 @@ import { Route } from 'ember-routing'; import { Controller, RSVP } from 'ember-runtime'; import { later } from 'ember-metal'; import { Component } from 'ember-glimmer'; -import { jQueryDisabled } from 'ember-views'; +import { jQueryDisabled, jQuery } from 'ember-views'; import Test from '../test'; import setupForTesting from '../setup_for_testing'; @@ -26,12 +26,6 @@ function registerHelper() { Test.registerHelper('LeakyMcLeakLeak', () => {}); } -function customEvent(name, xhr) { - let event = document.createEvent('CustomEvent'); - event.initCustomEvent(name, true, true, { xhr }); - document.dispatchEvent(event); -} - function assertHelpers(assert, application, helperContainer, expected) { if (!helperContainer) { helperContainer = window; @@ -1040,15 +1034,19 @@ if (!jQueryDisabled) { moduleFor( 'ember-testing: pendingRequests', class extends HelpersApplicationTestCase { + trigger(type, xhr) { + jQuery(document).trigger(type, xhr); + } + [`@test pendingRequests is maintained for ajaxSend and ajaxComplete events`](assert) { assert.equal(pendingRequests(), 0); let xhr = { some: 'xhr' }; - customEvent('ajaxSend', xhr); + this.trigger('ajaxSend', xhr); assert.equal(pendingRequests(), 1, 'Ember.Test.pendingRequests was incremented'); - customEvent('ajaxComplete', xhr); + this.trigger('ajaxComplete', xhr); assert.equal(pendingRequests(), 0, 'Ember.Test.pendingRequests was decremented'); } @@ -1059,7 +1057,7 @@ if (!jQueryDisabled) { let xhr = { some: 'xhr' }; - customEvent('ajaxSend', xhr); + this.trigger('ajaxSend', xhr); assert.equal(pendingRequests(), 1, 'Ember.Test.pendingRequests was incremented'); setupForTesting(); @@ -1068,10 +1066,10 @@ if (!jQueryDisabled) { let altXhr = { some: 'more xhr' }; - customEvent('ajaxSend', altXhr); + this.trigger('ajaxSend', altXhr); assert.equal(pendingRequests(), 1, 'Ember.Test.pendingRequests was incremented'); - customEvent('ajaxComplete', xhr); + this.trigger('ajaxComplete', xhr); assert.equal( pendingRequests(), 1, diff --git a/packages/ember-utils/lib/index.js b/packages/ember-utils/lib/index.js index f1c8311913f..0774243cdbd 100644 --- a/packages/ember-utils/lib/index.js +++ b/packages/ember-utils/lib/index.js @@ -28,3 +28,6 @@ export { HAS_NATIVE_SYMBOL } from './symbol-utils'; export { HAS_NATIVE_PROXY } from './proxy-utils'; export { default as WeakSet } from './weak_set'; export { isProxy, setProxy } from './is_proxy'; + +import symbol from './symbol'; +export const NAME_KEY = symbol('NAME_KEY'); diff --git a/packages/ember/lib/index.js b/packages/ember/lib/index.js index 6baa18698b0..4eba21a8fb8 100644 --- a/packages/ember/lib/index.js +++ b/packages/ember/lib/index.js @@ -1,9 +1,110 @@ import require, { has } from 'require'; -// ****ember-environment**** -import { ENV, context } from 'ember-environment'; +import { getENV, getLookup, setLookup, ENV, context } from 'ember-environment'; import { IS_NODE, module } from 'node-module'; import * as utils from 'ember-utils'; +import { Registry, Container } from 'container'; +import * as metal from 'ember-metal'; +import * as FLAGS from 'ember/features'; +import * as EmberDebug from 'ember-debug'; +import Backburner from 'backburner'; +import Logger from 'ember-console'; +import { + String as EmberString, + Object as EmberObject, + RegistryProxyMixin, + ContainerProxyMixin, + compare, + copy, + isEqual, + inject, + Array as EmberArray, + Copyable, + MutableEnumerable, + MutableArray, + TargetActionSupport, + Evented, + PromiseProxyMixin, + Observable, + typeOf, + isArray, + onLoad, + runLoadHooks, + Controller, + ControllerMixin, + Service, + _ProxyMixin, + RSVP, + Comparable, + Namespace, + Enumerable, + ArrayProxy, + ObjectProxy, + ActionHandler, + CoreObject, + NativeArray, + A, + getStrings, + setStrings, + + // computed macros + empty, + notEmpty, + none, + not, + bool, + match, + equal, + gt, + gte, + lt, + lte, + oneWay, + readOnly, + deprecatingAlias, + and, + or, + + // reduced computed macros + sum, + min, + max, + map, + sort, + setDiff, + mapBy, + filter, + filterBy, + uniq, + uniqBy, + union, + intersect, + collect, +} from 'ember-runtime'; +import { + Checkbox, + Component, + componentManager, + escapeExpression, + getTemplates, + Helper, + helper, + htmlSafe, + isHTMLSafe, + LinkComponent, + setTemplates, + template, + TextField, + TextArea, + isSerializationFirstNode, +} from 'ember-glimmer'; +import VERSION from './version'; +import * as views from 'ember-views'; +import * as routing from 'ember-routing'; +import * as application from 'ember-application'; +import * as extensionSupport from 'ember-extension-support'; + +// ****ember-environment**** const Ember = (typeof context.imports.Ember === 'object' && context.imports.Ember) || {}; @@ -12,17 +113,18 @@ Ember.toString = function() { return 'Ember'; }; -import { Registry, Container } from 'container'; - -// container exports -Ember.Container = Container; -Ember.Registry = Registry; +Object.defineProperty(Ember, 'ENV', { + get: getENV, + enumerable: false, +}); -// ****ember-metal**** -import * as metal from 'ember-metal'; -import * as FLAGS from 'ember/features'; +Object.defineProperty(Ember, 'lookup', { + get: getLookup, + set: setLookup, + enumerable: false, +}); -// ember-utils exports +// ****ember-utils**** Ember.getOwner = utils.getOwner; Ember.setOwner = utils.setOwner; Ember.generateGuid = utils.generateGuid; @@ -35,25 +137,21 @@ Ember.tryInvoke = utils.tryInvoke; Ember.wrap = utils.wrap; Ember.uuid = utils.uuid; Ember.assign = utils.assign; +Ember.NAME_KEY = utils.NAME_KEY; -// need to import this directly, to ensure the babel feature -// flag plugin works properly -import * as EmberDebug from 'ember-debug'; - -// Using _globalsComputed here so that mutating the function is only available -// in globals builds -const computed = metal._globalsComputed; -Ember.computed = computed; -computed.alias = metal.alias; -Ember.ComputedProperty = metal.ComputedProperty; -Ember.cacheFor = metal.getCachedValueFor; +// ****container**** +Ember.Container = Container; +Ember.Registry = Registry; +// ****ember-debug**** Ember.assert = EmberDebug.assert; Ember.warn = EmberDebug.warn; Ember.debug = EmberDebug.debug; Ember.deprecate = EmberDebug.deprecate; Ember.deprecateFunc = EmberDebug.deprecateFunc; Ember.runInDebug = EmberDebug.runInDebug; +Ember.Error = EmberDebug.Error; + /** @public @class Ember.Debug @@ -62,8 +160,17 @@ Ember.Debug = { registerDeprecationHandler: EmberDebug.registerDeprecationHandler, registerWarnHandler: EmberDebug.registerWarnHandler, }; -Ember.merge = metal.merge; +// ****ember-metal**** + +// Using _globalsComputed here so that mutating the function is only available +// in globals builds +const computed = metal._globalsComputed; +Ember.computed = computed; +computed.alias = metal.alias; +Ember.ComputedProperty = metal.ComputedProperty; +Ember.cacheFor = metal.getCachedValueFor; +Ember.merge = metal.merge; Ember.instrument = metal.instrument; Ember.subscribe = metal.instrumentationSubscribe; Ember.Instrumentation = { @@ -72,8 +179,6 @@ Ember.Instrumentation = { unsubscribe: metal.instrumentationUnsubscribe, reset: metal.instrumentationReset, }; - -Ember.Error = EmberDebug.Error; Ember.meta = metal.meta; Ember.get = metal.get; Ember.getWithDefault = metal.getWithDefault; @@ -143,72 +248,13 @@ Ember.MapWithDefault = metal.MapWithDefault; Ember.getProperties = metal.getProperties; Ember.setProperties = metal.setProperties; Ember.expandProperties = metal.expandProperties; -Ember.NAME_KEY = utils.NAME_KEY; Ember.addObserver = metal.addObserver; Ember.removeObserver = metal.removeObserver; -if (ENV._ENABLE_PROPERTY_REQUIRED_SUPPORT) { - Ember.required = metal.required; -} Ember.aliasMethod = metal.aliasMethod; Ember.observer = metal.observer; Ember.mixin = metal.mixin; Ember.Mixin = metal.Mixin; -Object.defineProperty(Ember, 'ENV', { - get() { - return ENV; - }, - enumerable: false, -}); - -/** - The context that Ember searches for namespace instances on. - - @private - */ -Object.defineProperty(Ember, 'lookup', { - get() { - return context.lookup; - }, - set(value) { - context.lookup = value; - }, - enumerable: false, -}); - -Ember.EXTEND_PROTOTYPES = ENV.EXTEND_PROTOTYPES; - -// BACKWARDS COMPAT ACCESSORS FOR ENV FLAGS -Object.defineProperty(Ember, 'LOG_STACKTRACE_ON_DEPRECATION', { - get() { - return ENV.LOG_STACKTRACE_ON_DEPRECATION; - }, - set(value) { - ENV.LOG_STACKTRACE_ON_DEPRECATION = !!value; - }, - enumerable: false, -}); - -Object.defineProperty(Ember, 'LOG_VERSION', { - get() { - return ENV.LOG_VERSION; - }, - set(value) { - ENV.LOG_VERSION = !!value; - }, - enumerable: false, -}); - -Object.defineProperty(Ember, 'LOG_BINDINGS', { - get() { - return ENV.LOG_BINDINGS; - }, - set(value) { - ENV.LOG_BINDINGS = !!value; - }, - enumerable: false, -}); - /** A function may be assigned to `Ember.onerror` to be called when Ember internals encounter an error. This is useful for specialized error handling @@ -244,89 +290,12 @@ Object.defineProperty(Ember, 'testing', { enumerable: false, }); -import Backburner from 'backburner'; - Ember._Backburner = Backburner; -import Logger from 'ember-console'; - +// ****ember-console**** Ember.Logger = Logger; // ****ember-runtime**** - -import { - String as EmberString, - Object as EmberObject, - RegistryProxyMixin, - ContainerProxyMixin, - compare, - copy, - isEqual, - inject, - Array as EmberArray, - Copyable, - MutableEnumerable, - MutableArray, - TargetActionSupport, - Evented, - PromiseProxyMixin, - Observable, - typeOf, - isArray, - onLoad, - runLoadHooks, - Controller, - ControllerMixin, - Service, - _ProxyMixin, - RSVP, - Comparable, - Namespace, - Enumerable, - ArrayProxy, - ObjectProxy, - ActionHandler, - CoreObject, - NativeArray, - A, - getStrings, - setStrings, - - // computed macros - empty, - notEmpty, - none, - not, - bool, - match, - equal, - gt, - gte, - lt, - lte, - oneWay, - readOnly, - deprecatingAlias, - and, - or, - - // reduced computed macros - sum, - min, - max, - map, - sort, - setDiff, - mapBy, - filter, - filterBy, - uniq, - uniqBy, - union, - intersect, - collect, -} from 'ember-runtime'; - Ember.A = A; Ember.String = EmberString; Ember.Object = EmberObject; @@ -363,7 +332,6 @@ Ember._ProxyMixin = _ProxyMixin; Ember.RSVP = RSVP; Ember.Namespace = Namespace; -// ES6TODO: this seems a less than ideal way/place to add properties to Ember.computed computed.empty = empty; computed.notEmpty = notEmpty; computed.none = none; @@ -435,24 +403,7 @@ Object.defineProperty(Ember, 'BOOTED', { set: metal.setNamespaceSearchDisabled, }); -import { - Checkbox, - Component, - componentManager, - escapeExpression, - getTemplates, - Helper, - helper, - htmlSafe, - isHTMLSafe, - LinkComponent, - setTemplates, - template, - TextField, - TextArea, - isSerializationFirstNode, -} from 'ember-glimmer'; - +// ****ember-glimmer**** Ember.Component = Component; Helper.helper = helper; Ember.Helper = Helper; @@ -460,28 +411,23 @@ Ember.Checkbox = Checkbox; Ember.TextField = TextField; Ember.TextArea = TextArea; Ember.LinkComponent = LinkComponent; - -Object.defineProperty(Ember, '_setComponentManager', { - enumerable: false, - get() { - return componentManager; +Ember._setComponentManager = componentManager; +Ember.Handlebars = { + template, + Utils: { + escapeExpression, }, -}); +}; +Ember.HTMLBars = { + template, +}; if (ENV.EXTEND_PROTOTYPES.String) { String.prototype.htmlSafe = function() { return htmlSafe(this); }; } - -let EmberHandlebars = (Ember.Handlebars = Ember.Handlebars || {}); -let EmberHTMLBars = (Ember.HTMLBars = Ember.HTMLBars || {}); -let EmberHandleBarsUtils = (EmberHandlebars.Utils = EmberHandlebars.Utils || {}); - -EmberHTMLBars.template = EmberHandlebars.template = template; -EmberHandleBarsUtils.escapeExpression = escapeExpression; EmberString.htmlSafe = htmlSafe; - EmberString.isHTMLSafe = isHTMLSafe; /** @@ -501,9 +447,6 @@ Object.defineProperty(Ember, 'TEMPLATES', { enumerable: false, }); -import VERSION from './version'; -export { VERSION }; - /** The semantic version @@ -515,12 +458,8 @@ Ember.VERSION = VERSION; metal.libraries.registerCoreLibrary('Ember', VERSION); -// require the main entry points for each of these packages -// this is so that the global exports occur properly -import * as views from 'ember-views'; - +// ****ember-views**** Ember.$ = views.jQuery; - Ember.ViewUtils = { isSimpleClick: views.isSimpleClick, getViewElement: views.getViewElement, @@ -531,13 +470,11 @@ Ember.ViewUtils = { getChildViews: views.getChildViews, isSerializationFirstNode: isSerializationFirstNode, }; - Ember.TextSupport = views.TextSupport; Ember.ComponentLookup = views.ComponentLookup; Ember.EventDispatcher = views.EventDispatcher; -import * as routing from 'ember-routing'; - +// ****ember-routing**** Ember.Location = routing.Location; Ember.AutoLocation = routing.AutoLocation; Ember.HashLocation = routing.HashLocation; @@ -550,8 +487,7 @@ Ember.RouterDSL = routing.RouterDSL; Ember.Router = routing.Router; Ember.Route = routing.Route; -import * as application from 'ember-application'; - +// ****ember-application**** Ember.Application = application.Application; Ember.ApplicationInstance = application.ApplicationInstance; Ember.Engine = application.Engine; @@ -560,8 +496,6 @@ Ember.DefaultResolver = Ember.Resolver = application.Resolver; runLoadHooks('Ember.Application', application.Application); -import * as extensionSupport from 'ember-extension-support'; - Ember.DataAdapter = extensionSupport.DataAdapter; Ember.ContainerDebugAdapter = extensionSupport.ContainerDebugAdapter; @@ -582,10 +516,6 @@ if (has('ember-testing')) { runLoadHooks('Ember'); -/** - @module ember - @private -*/ export default Ember; if (IS_NODE) { diff --git a/packages/ember/tests/global-api-test.js b/packages/ember/tests/global-api-test.js deleted file mode 100644 index 2fd3251f4c7..00000000000 --- a/packages/ember/tests/global-api-test.js +++ /dev/null @@ -1,58 +0,0 @@ -import { get } from 'ember-metal'; -import { isArray } from 'ember-runtime'; -import { moduleFor, AbstractTestCase } from 'internal-test-helpers'; - -moduleFor( - 'Global API Tests', - class extends AbstractTestCase { - ['@test confirm Ember.DefaultResolver is exported'](assert) { - let internal = undefined; - let theExport = get(window, 'Ember.DefaultResolver'); - assert.ok(`${theExport} is exported`); - - if (internal !== undefined) { - assert.equal(theExport, internal, `${theExport} is exported properly`); - } - } - - ['@test confirm Ember.generateController is exported'](assert) { - let internal = undefined; - let theExport = get(window, 'Ember.generateController'); - assert.ok(`${theExport} is exported`); - - if (internal !== undefined) { - assert.equal(theExport, internal, `${theExport} is exported properly`); - } - } - - ['@test confirm Ember.Helper is exported'](assert) { - let internal = undefined; - let theExport = get(window, 'Ember.Helper'); - assert.ok(`${theExport} is exported`); - - if (internal !== undefined) { - assert.equal(theExport, internal, `${theExport} is exported properly`); - } - } - - ['@test confirm Ember.Helper.helper is exported'](assert) { - let internal = undefined; - let theExport = get(window, 'Ember.Helper.helper'); - assert.ok(`${theExport} is exported`); - - if (internal !== undefined) { - assert.equal(theExport, internal, `${theExport} is exported properly`); - } - } - - ['@test confirm Ember.isArray is exported'](assert) { - let internal = isArray; - let theExport = get(window, 'Ember.isArray'); - assert.ok(`${theExport} is exported`); - - if (internal !== undefined) { - assert.equal(theExport, internal, `${theExport} is exported properly`); - } - } - } -); diff --git a/packages/ember/tests/reexports_test.js b/packages/ember/tests/reexports_test.js index bbc5fa3424d..1d7fd96fad0 100644 --- a/packages/ember/tests/reexports_test.js +++ b/packages/ember/tests/reexports_test.js @@ -1,5 +1,4 @@ import Ember from '../index'; -import { ENV } from 'ember-environment'; import { confirmExport } from 'internal-test-helpers'; import { moduleFor, AbstractTestCase } from 'internal-test-helpers'; @@ -26,6 +25,10 @@ moduleFor( ); let allExports = [ + // ember-environment + ['ENV', 'ember-environment', { get: 'getENV' }], + ['lookup', 'ember-environment', { get: 'getLookup', set: 'setLookup' }], + // ember-utils ['getOwner', 'ember-utils', 'getOwner'], ['setOwner', 'ember-utils', 'setOwner'], @@ -39,9 +42,7 @@ let allExports = [ ['canInvoke', 'ember-utils'], ['tryInvoke', 'ember-utils'], ['wrap', 'ember-utils'], - - // ember-environment - // ['ENV', 'ember-environment', 'ENV'], TODO: fix this, its failing because we are hitting the getter + ['NAME_KEY', 'ember-utils'], // container ['Registry', 'container', 'Registry'], @@ -54,6 +55,9 @@ let allExports = [ ['warn', 'ember-debug'], ['debug', 'ember-debug'], ['runInDebug', 'ember-debug'], + ['Debug.registerDeprecationHandler', 'ember-debug', 'registerDeprecationHandler'], + ['Debug.registerWarnHandler', 'ember-debug', 'registerWarnHandler'], + ['Error', 'ember-debug'], // ember-metal ['computed', 'ember-metal', '_globalsComputed'], @@ -62,17 +66,15 @@ let allExports = [ ['cacheFor', 'ember-metal', 'getCachedValueFor'], ['merge', 'ember-metal'], ['instrument', 'ember-metal'], + ['subscribe', 'ember-metal', 'instrumentationSubscribe'], ['Instrumentation.instrument', 'ember-metal', 'instrument'], ['Instrumentation.subscribe', 'ember-metal', 'instrumentationSubscribe'], ['Instrumentation.unsubscribe', 'ember-metal', 'instrumentationUnsubscribe'], ['Instrumentation.reset', 'ember-metal', 'instrumentationReset'], ['testing', 'ember-debug', { get: 'isTesting', set: 'setTesting' }], ['onerror', 'ember-metal', { get: 'getOnerror', set: 'setOnerror' }], - // ['create'], TODO: figure out what to do here - // ['keys'], TODO: figure out what to do here ['FEATURES', 'ember/features'], ['FEATURES.isEnabled', 'ember-debug', 'isFeatureEnabled'], - ['Error', 'ember-debug'], ['meta', 'ember-metal'], ['get', 'ember-metal'], ['set', 'ember-metal'], @@ -113,6 +115,8 @@ let allExports = [ ['beginPropertyChanges', 'ember-metal'], ['endPropertyChanges', 'ember-metal'], ['changeProperties', 'ember-metal'], + ['platform.defineProperty', null, { value: true }], + ['platform.hasPropertyAccessors', null, { value: true }], ['defineProperty', 'ember-metal'], ['watchKey', 'ember-metal'], ['unwatchKey', 'ember-metal'], @@ -139,6 +143,9 @@ let allExports = [ ['mixin', 'ember-metal'], ['Mixin', 'ember-metal'], + // ember-console + ['Logger', 'ember-console', 'default'], + // ember-views ['$', 'ember-views', 'jQuery'], ['ViewUtils.isSimpleClick', 'ember-views', 'isSimpleClick'], @@ -163,10 +170,13 @@ let allExports = [ ['TextField', 'ember-glimmer', 'TextField'], ['TEMPLATES', 'ember-glimmer', { get: 'getTemplates', set: 'setTemplates' }], ['Handlebars.template', 'ember-glimmer', 'template'], + ['HTMLBars.template', 'ember-glimmer', 'template'], ['Handlebars.Utils.escapeExpression', 'ember-glimmer', 'escapeExpression'], ['String.htmlSafe', 'ember-glimmer', 'htmlSafe'], + ['_setComponentManager', 'ember-glimmer', 'componentManager'], // ember-runtime + ['A', 'ember-runtime'], ['_RegistryProxyMixin', 'ember-runtime', 'RegistryProxyMixin'], ['_ContainerProxyMixin', 'ember-runtime', 'ContainerProxyMixin'], ['Object', 'ember-runtime'], @@ -207,6 +217,37 @@ let allExports = [ 'ember-metal', { get: 'isNamespaceSearchDisabled', set: 'setNamespaceSearchDisabled' }, ], + ['computed.empty', 'ember-runtime', 'empty'], + ['computed.notEmpty', 'ember-runtime', 'notEmpty'], + ['computed.none', 'ember-runtime', 'none'], + ['computed.not', 'ember-runtime', 'not'], + ['computed.bool', 'ember-runtime', 'bool'], + ['computed.match', 'ember-runtime', 'match'], + ['computed.equal', 'ember-runtime', 'equal'], + ['computed.gt', 'ember-runtime', 'gt'], + ['computed.gte', 'ember-runtime', 'gte'], + ['computed.lt', 'ember-runtime', 'lt'], + ['computed.lte', 'ember-runtime', 'lte'], + ['computed.oneWay', 'ember-runtime', 'oneWay'], + ['computed.reads', 'ember-runtime', 'oneWay'], + ['computed.readOnly', 'ember-runtime', 'readOnly'], + ['computed.deprecatingAlias', 'ember-runtime', 'deprecatingAlias'], + ['computed.and', 'ember-runtime', 'and'], + ['computed.or', 'ember-runtime', 'or'], + ['computed.sum', 'ember-runtime', 'sum'], + ['computed.min', 'ember-runtime', 'min'], + ['computed.max', 'ember-runtime', 'max'], + ['computed.map', 'ember-runtime', 'map'], + ['computed.sort', 'ember-runtime', 'sort'], + ['computed.setDiff', 'ember-runtime', 'setDiff'], + ['computed.mapBy', 'ember-runtime', 'mapBy'], + ['computed.filter', 'ember-runtime', 'filter'], + ['computed.filterBy', 'ember-runtime', 'filterBy'], + ['computed.uniq', 'ember-runtime', 'uniq'], + ['computed.uniqBy', 'ember-runtime', 'uniqBy'], + ['computed.union', 'ember-runtime', 'union'], + ['computed.intersect', 'ember-runtime', 'intersect'], + ['computed.collect', 'ember-runtime', 'collect'], // ember-routing ['Location', 'ember-routing'], @@ -233,7 +274,3 @@ let allExports = [ ['DataAdapter', 'ember-extension-support'], ['ContainerDebugAdapter', 'ember-extension-support'], ]; - -if (ENV._ENABLE_PROPERTY_REQUIRED_SUPPORT) { - allExports.push(['required', 'ember-metal']); -} diff --git a/packages/ember/tests/routing/decoupled_basic_test.js b/packages/ember/tests/routing/decoupled_basic_test.js index 61f88b90ccb..6f72f205a86 100644 --- a/packages/ember/tests/routing/decoupled_basic_test.js +++ b/packages/ember/tests/routing/decoupled_basic_test.js @@ -3519,6 +3519,7 @@ moduleFor( }, }) ); + console.error = () => {}; this.visit('/').then(() => { let rootElement = document.querySelector('#qunit-fixture'); diff --git a/packages/internal-test-helpers/lib/confirm-export.js b/packages/internal-test-helpers/lib/confirm-export.js index c85b7a039b3..7306be1f7af 100644 --- a/packages/internal-test-helpers/lib/confirm-export.js +++ b/packages/internal-test-helpers/lib/confirm-export.js @@ -15,20 +15,31 @@ function getDescriptor(obj, path) { } export default function confirmExport(Ember, assert, path, moduleId, exportName) { - let desc = getDescriptor(Ember, path); - assert.ok(desc, 'the property exists on the global'); + try { + let desc = getDescriptor(Ember, path); + assert.ok(desc, `the ${path} property exists on the Ember global`); - let mod = require(moduleId); - if (typeof exportName === 'string') { - assert.equal(desc.value, mod[exportName], `Ember.${path} is exported correctly`); - assert.notEqual(mod[exportName], undefined, `Ember.${path} is not \`undefined\``); - } else { - assert.equal(desc.get, mod[exportName.get], `Ember.${path} getter is exported correctly`); - assert.notEqual(desc.get, undefined, `Ember.${path} getter is not undefined`); + if (typeof exportName === 'string') { + let mod = require(moduleId); + assert.equal(desc.value, mod[exportName], `Ember.${path} is exported correctly`); + assert.notEqual(mod[exportName], undefined, `Ember.${path} is not \`undefined\``); + } else if ('value' in desc) { + assert.equal(desc.value, exportName.value, `Ember.${path} is exported correctly`); + } else { + let mod = require(moduleId); + assert.equal(desc.get, mod[exportName.get], `Ember.${path} getter is exported correctly`); + assert.notEqual(desc.get, undefined, `Ember.${path} getter is not undefined`); - if (exportName.set) { - assert.equal(desc.set, mod[exportName.set], `Ember.${path} setter is exported correctly`); - assert.notEqual(desc.set, undefined, `Ember.${path} setter is not undefined`); + if (exportName.set) { + assert.equal(desc.set, mod[exportName.set], `Ember.${path} setter is exported correctly`); + assert.notEqual(desc.set, undefined, `Ember.${path} setter is not undefined`); + } } + } catch (error) { + assert.pushResult({ + result: false, + message: `An error occured while testing ${path} is exported from ${moduleId}.`, + source: error, + }); } } diff --git a/yarn.lock b/yarn.lock index a10f50cce9d..80b6141b754 100644 --- a/yarn.lock +++ b/yarn.lock @@ -158,6 +158,10 @@ after@0.8.1: version "0.8.1" resolved "https://registry.yarnpkg.com/after/-/after-0.8.1.tgz#ab5d4fb883f596816d3515f8f791c0af486dd627" +after@0.8.2: + version "0.8.2" + resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" + agent-base@2: version "2.1.1" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-2.1.1.tgz#d6de10d5af6132d5bd692427d46fc538539094c7" @@ -205,12 +209,6 @@ amd-name-resolver@0.0.7: dependencies: ensure-posix-path "^1.0.1" -amd-name-resolver@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/amd-name-resolver/-/amd-name-resolver-1.0.0.tgz#0e593b28d6fa3326ab1798107edaea961046e8d8" - dependencies: - ensure-posix-path "^1.0.1" - amd-name-resolver@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/amd-name-resolver/-/amd-name-resolver-1.2.0.tgz#fc41b3848824b557313897d71f8d5a0184fbe679" @@ -259,6 +257,12 @@ ansi-styles@^3.0.0, ansi-styles@^3.1.0: dependencies: color-convert "^1.9.0" +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + dependencies: + color-convert "^1.9.0" + ansicolors@~0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/ansicolors/-/ansicolors-0.2.1.tgz#be089599097b74a5c9c4a84a0cdbcdb62bd87aef" @@ -353,6 +357,10 @@ arraybuffer.slice@0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz#f33b2159f0532a3f3107a272c0ccfbd1ad2979ca" +arraybuffer.slice@~0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz#3bbc4275dd584cc1b10809b89d4e8b63a69e7675" + arrify@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" @@ -1023,6 +1031,10 @@ base64id@0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/base64id/-/base64id-0.1.0.tgz#02ce0fdeee0cef4f40080e1e73e834f0b1bfce3f" +base64id@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/base64id/-/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6" + base@^0.11.1: version "0.11.2" resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" @@ -1160,6 +1172,30 @@ braces@^2.3.0: split-string "^3.0.2" to-regex "^3.0.1" +braces@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.1.tgz#7086c913b4e5a08dbe37ac0ee6a2500c4ba691bb" + dependencies: + arr-flatten "^1.1.0" + array-unique "^0.3.2" + define-property "^1.0.0" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" + kind-of "^6.0.2" + repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^3.0.1" + +broccoli-amd-funnel@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/broccoli-amd-funnel/-/broccoli-amd-funnel-1.3.0.tgz#c4426b4fce976e44295bd74f34725f53bdeb08e3" + dependencies: + broccoli-plugin "^1.3.0" + symlink-or-copy "^1.2.0" + broccoli-babel-transpiler@^6.0.0, broccoli-babel-transpiler@^6.1.2: version "6.1.2" resolved "https://registry.yarnpkg.com/broccoli-babel-transpiler/-/broccoli-babel-transpiler-6.1.2.tgz#26019c045b5ea3e44cfef62821302f9bd483cabd" @@ -1190,12 +1226,6 @@ broccoli-babel-transpiler@^6.1.4: rsvp "^3.5.0" workerpool "^2.3.0" -broccoli-brocfile-loader@^0.18.0: - version "0.18.0" - resolved "https://registry.yarnpkg.com/broccoli-brocfile-loader/-/broccoli-brocfile-loader-0.18.0.tgz#2e86021c805c34ffc8d29a2fb721cf273e819e4b" - dependencies: - findup-sync "^0.4.2" - broccoli-builder@^0.18.8: version "0.18.10" resolved "https://registry.yarnpkg.com/broccoli-builder/-/broccoli-builder-0.18.10.tgz#9767e0061ff5b5e6eb1619d1a972ef2c7fd07631" @@ -1382,12 +1412,29 @@ broccoli-merge-trees@^2.0.0: broccoli-plugin "^1.3.0" merge-trees "^1.0.1" -broccoli-middleware@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/broccoli-middleware/-/broccoli-middleware-1.0.0.tgz#92f4e1fb9a791ea986245a7077f35cc648dab097" +broccoli-middleware@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/broccoli-middleware/-/broccoli-middleware-1.2.1.tgz#a21f255f8bfe5a21c2f0fbf2417addd9d24c9436" dependencies: handlebars "^4.0.4" - mime "^1.2.11" + mime-types "^2.1.18" + +broccoli-module-normalizer@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/broccoli-module-normalizer/-/broccoli-module-normalizer-1.3.0.tgz#f9982d9cbb776b4ed754161cc6547784d3eb19de" + dependencies: + broccoli-plugin "^1.3.0" + merge-trees "^1.0.1" + rimraf "^2.6.2" + symlink-or-copy "^1.1.8" + +broccoli-module-unification-reexporter@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/broccoli-module-unification-reexporter/-/broccoli-module-unification-reexporter-1.0.0.tgz#031909c5d3f159ec11d5f9e2346f2861db8acb3e" + dependencies: + broccoli-plugin "^1.3.0" + mkdirp "^0.5.1" + walk-sync "^0.3.2" broccoli-persistent-filter@^1.1.5, broccoli-persistent-filter@^1.1.6, broccoli-persistent-filter@^1.4.0, broccoli-persistent-filter@^1.4.3: version "1.4.3" @@ -1690,7 +1737,7 @@ chai-files@^1.0.0, chai-files@^1.1.0: dependencies: assertion-error "^1.0.1" -chai@^3.3.0: +chai@^3.3.0, chai@^3.5.0: version "3.5.0" resolved "https://registry.yarnpkg.com/chai/-/chai-3.5.0.tgz#4d02637b067fe958bdbfdd3a40ec56fef7373247" dependencies: @@ -1747,6 +1794,14 @@ chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0: escape-string-regexp "^1.0.5" supports-color "^4.0.0" +chalk@^2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.2.tgz#250dc96b07491bfd601e648d66ddf5f60c7a5c65" + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + chardet@^0.4.0: version "0.4.2" resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2" @@ -1776,6 +1831,10 @@ chokidar@1.7.0: optionalDependencies: fsevents "^1.0.0" +ci-info@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.1.3.tgz#710193264bb05c77b8c90d02f5aaf22216a667b2" + cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" @@ -1828,18 +1887,9 @@ cli-cursor@^2.1.0: dependencies: restore-cursor "^2.0.0" -cli-spinners@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-1.1.0.tgz#f1847b168844d917a671eb9d147e3df497c90d06" - -cli-table2@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/cli-table2/-/cli-table2-0.2.0.tgz#2d1ef7f218a0e786e214540562d4bd177fe32d97" - dependencies: - lodash "^3.10.1" - string-width "^1.0.1" - optionalDependencies: - colors "^1.1.2" +cli-spinners@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-1.3.0.tgz#6ba8b357395f07b7981c1acc2614485ee8c02a2d" cli-table@^0.3.1: version "0.3.1" @@ -1867,6 +1917,10 @@ cliui@^4.0.0: strip-ansi "^4.0.0" wrap-ansi "^2.0.0" +clone@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + clone@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.1.tgz#d217d1e961118e3ac9a4b8bba3285553bf647cdb" @@ -1906,10 +1960,6 @@ colors@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" -colors@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" - 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" @@ -1936,6 +1986,12 @@ commander@2.8.x: dependencies: graceful-readlink ">= 1.0.0" +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" + commander@^2.12.1, commander@~2.13.0: version "2.13.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c" @@ -2016,14 +2072,14 @@ 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" -console-ui@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/console-ui/-/console-ui-2.1.0.tgz#e1d5279d27621a75123d7d594f9fa59f866ea3e3" +console-ui@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/console-ui/-/console-ui-2.2.2.tgz#b294a2934de869dd06789ab4be69555411edef29" dependencies: chalk "^2.1.0" inquirer "^2" json-stable-stringify "^1.0.1" - ora "^1.3.0" + ora "^2.0.0" through "^2.3.8" user-info "^1.0.0" @@ -2065,10 +2121,6 @@ core-js@^2.4.0, core-js@^2.5.0: version "2.5.3" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.3.tgz#8acc38345824f16d8365b7c9b4259168e8ed603e" -core-object@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/core-object/-/core-object-1.1.0.tgz#86d63918733cf9da1a5aae729e62c0a88e66ad0a" - core-object@^3.1.3: version "3.1.5" resolved "https://registry.yarnpkg.com/core-object/-/core-object-3.1.5.tgz#fa627b87502adc98045e44678e9a8ec3b9c0d2a9" @@ -2189,7 +2241,13 @@ debug@2.3.3: dependencies: ms "0.7.2" -debug@3.1.0, debug@^3.0.0, debug@^3.1.0: +debug@2.6.8: + version "2.6.8" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc" + dependencies: + ms "2.0.0" + +debug@3.1.0, debug@^3.0.0, debug@^3.1.0, debug@~3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" dependencies: @@ -2223,6 +2281,12 @@ deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" +defaults@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" + dependencies: + clone "^1.0.2" + define-property@^0.2.5: version "0.2.5" resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" @@ -2235,6 +2299,13 @@ define-property@^1.0.0: dependencies: is-descriptor "^1.0.0" +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + del@^2.0.2: version "2.2.2" resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" @@ -2267,12 +2338,6 @@ destroy@~1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" -detect-file@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-0.1.0.tgz#4935dedfd9488648e006b0129566e9386711ea63" - dependencies: - fs-exists-sync "^0.1.0" - detect-file@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" @@ -2291,6 +2356,10 @@ diff@1.0.8: 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" + diff@3.3.1: version "3.3.1" resolved "https://registry.yarnpkg.com/diff/-/diff-3.3.1.tgz#aa8567a6eed03c531fc89d3f711cd0e5259dec75" @@ -2403,10 +2472,6 @@ ember-cli-get-component-path-option@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/ember-cli-get-component-path-option/-/ember-cli-get-component-path-option-1.0.0.tgz#0d7b595559e2f9050abed804f1d8eff1b08bc771" -ember-cli-get-dependency-depth@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/ember-cli-get-dependency-depth/-/ember-cli-get-dependency-depth-1.0.0.tgz#e0afecf82a2d52f00f28ab468295281aec368d11" - ember-cli-internal-test-helpers@^0.9.1: version "0.9.1" resolved "https://registry.yarnpkg.com/ember-cli-internal-test-helpers/-/ember-cli-internal-test-helpers-0.9.1.tgz#d54a9124bb6408ceba83f049ba8479f4b96cdd19" @@ -2428,28 +2493,6 @@ ember-cli-is-package-missing@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/ember-cli-is-package-missing/-/ember-cli-is-package-missing-1.0.0.tgz#6e6184cafb92635dd93ca6c946b104292d4e3390" -ember-cli-legacy-blueprints@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/ember-cli-legacy-blueprints/-/ember-cli-legacy-blueprints-0.2.1.tgz#480f37cb83f1eda2d46bbc7d07c59ea2e8ce9b84" - dependencies: - chalk "^2.3.0" - ember-cli-get-component-path-option "^1.0.0" - ember-cli-get-dependency-depth "^1.0.0" - ember-cli-is-package-missing "^1.0.0" - ember-cli-lodash-subset "^2.0.1" - ember-cli-normalize-entity-name "^1.0.0" - ember-cli-path-utils "^1.0.0" - ember-cli-string-utils "^1.0.0" - ember-cli-test-info "^1.0.0" - ember-cli-valid-component-name "^1.0.0" - ember-cli-version-checker "^2.1.0" - ember-router-generator "^1.0.0" - exists-sync "0.0.3" - fs-extra "^4.0.0" - inflection "^1.7.1" - rsvp "^4.7.0" - silent-error "^1.0.0" - ember-cli-lodash-subset@^1.0.7: version "1.0.12" resolved "https://registry.yarnpkg.com/ember-cli-lodash-subset/-/ember-cli-lodash-subset-1.0.12.tgz#af2e77eba5dcb0d77f3308d3a6fd7d3450f6e537" @@ -2485,12 +2528,6 @@ ember-cli-string-utils@^1.0.0, ember-cli-string-utils@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/ember-cli-string-utils/-/ember-cli-string-utils-1.1.0.tgz#39b677fc2805f55173735376fcef278eaa4452a1" -ember-cli-test-info@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/ember-cli-test-info/-/ember-cli-test-info-1.0.0.tgz#ed4e960f249e97523cf891e4aed2072ce84577b4" - dependencies: - ember-cli-string-utils "^1.0.0" - ember-cli-valid-component-name@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/ember-cli-valid-component-name/-/ember-cli-valid-component-name-1.0.0.tgz#71550ce387e0233065f30b30b1510aa2dfbe87ef" @@ -2514,16 +2551,16 @@ ember-cli-yuidoc@^0.8.8: rsvp "3.0.14" yuidocjs "^0.10.0" -"ember-cli@github:ember-cli/ember-cli#76175513c5e49caf5405b7304e83ddf3e799c68e": - version "3.0.0-beta.1" - resolved "https://codeload.github.com/ember-cli/ember-cli/tar.gz/76175513c5e49caf5405b7304e83ddf3e799c68e" +"ember-cli@github:ember-cli/ember-cli#8f5a13a02d8ea5a04683565340611161c63bef89": + version "3.1.0-beta.1" + resolved "https://codeload.github.com/ember-cli/ember-cli/tar.gz/8f5a13a02d8ea5a04683565340611161c63bef89" dependencies: - amd-name-resolver "1.0.0" + amd-name-resolver "^1.2.0" babel-plugin-transform-es2015-modules-amd "^6.24.0" bower-config "^1.3.0" bower-endpoint-parser "0.2.2" + broccoli-amd-funnel "^1.3.0" broccoli-babel-transpiler "^6.0.0" - broccoli-brocfile-loader "^0.18.0" broccoli-builder "^0.18.8" broccoli-concat "^3.2.2" broccoli-config-loader "^1.0.0" @@ -2532,41 +2569,42 @@ ember-cli-yuidoc@^0.8.8: broccoli-funnel "^2.0.0" broccoli-funnel-reducer "^1.0.0" broccoli-merge-trees "^2.0.0" - broccoli-middleware "^1.0.0" + broccoli-middleware "^1.2.1" + broccoli-module-normalizer "^1.3.0" + broccoli-module-unification-reexporter "^1.0.0" broccoli-source "^1.1.0" broccoli-stew "^1.2.0" calculate-cache-key-for-tree "^1.0.0" capture-exit "^1.1.0" chalk "^2.0.1" + ci-info "^1.1.2" clean-base-url "^1.0.0" compression "^1.4.4" configstore "^3.0.0" - console-ui "^2.0.0" + console-ui "^2.2.2" core-object "^3.1.3" dag-map "^2.0.2" diff "^3.2.0" ember-cli-broccoli-sane-watcher "^2.0.4" ember-cli-is-package-missing "^1.0.0" - ember-cli-legacy-blueprints "^0.2.0" ember-cli-lodash-subset "^2.0.1" ember-cli-normalize-entity-name "^1.0.0" ember-cli-preprocess-registry "^3.1.0" ember-cli-string-utils "^1.0.0" - ember-try "^0.2.15" ensure-posix-path "^1.0.2" - execa "^0.8.0" - exists-sync "0.0.4" + execa "^0.10.0" exit "^0.1.2" express "^4.12.3" filesize "^3.1.3" find-up "^2.1.0" - fs-extra "^4.0.0" + find-yarn-workspace-root "^1.0.0" + fs-extra "^5.0.0" fs-tree-diff "^0.5.2" get-caller-file "^1.0.0" - git-repo-info "^1.4.1" - glob "7.1.1" + git-repo-info "^2.0.0" + glob "^7.1.2" heimdalljs "^0.2.3" - heimdalljs-fs-monitor "^0.1.0" + heimdalljs-fs-monitor "^0.2.0" heimdalljs-graph "^0.3.1" heimdalljs-logger "^0.1.7" http-proxy "^1.9.0" @@ -2595,14 +2633,14 @@ ember-cli-yuidoc@^0.8.8: sort-package-json "^1.4.0" symlink-or-copy "^1.1.8" temp "0.8.3" - testem "^1.18.0" + testem "^2.2.0" tiny-lr "^1.0.3" tree-sync "^1.2.1" uuid "^3.0.0" validate-npm-package-name "^3.0.0" walk-sync "^0.3.0" watch-detector "^0.1.0" - yam "0.0.22" + yam "^0.0.24" ember-publisher@0.0.7: version "0.0.7" @@ -2614,48 +2652,16 @@ ember-rfc176-data@^0.3.0: version "0.3.1" resolved "https://registry.yarnpkg.com/ember-rfc176-data/-/ember-rfc176-data-0.3.1.tgz#6a5a4b8b82ec3af34f3010965fa96b936ca94519" -ember-router-generator@^1.0.0, ember-router-generator@^1.2.3: +ember-router-generator@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/ember-router-generator/-/ember-router-generator-1.2.3.tgz#8ed2ca86ff323363120fc14278191e9e8f1315ee" dependencies: recast "^0.11.3" -ember-try-config@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/ember-try-config/-/ember-try-config-2.2.0.tgz#6be0af6c71949813e02ac793564fddbf8336b807" - dependencies: - lodash "^4.6.1" - node-fetch "^1.3.3" - rsvp "^3.2.1" - semver "^5.1.0" - -ember-try@^0.2.15: - version "0.2.23" - resolved "https://registry.yarnpkg.com/ember-try/-/ember-try-0.2.23.tgz#39b57141b4907541d0ac8b503d211e6946b08718" - dependencies: - chalk "^1.0.0" - cli-table2 "^0.2.0" - core-object "^1.1.0" - debug "^2.2.0" - ember-try-config "^2.2.0" - extend "^3.0.0" - fs-extra "^0.26.0" - promise-map-series "^0.2.1" - resolve "^1.1.6" - rimraf "^2.3.2" - rsvp "^3.0.17" - semver "^5.1.0" - encodeurl@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.1.tgz#79e3d58655346909fe6f0f45a5de68103b294d20" -encoding@^0.1.11: - version "0.1.12" - resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" - dependencies: - iconv-lite "~0.4.13" - engine.io-client@1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-1.8.0.tgz#7b730e4127414087596d9be3c88d2bc5fdb6cf5c" @@ -2673,6 +2679,22 @@ engine.io-client@1.8.0: xmlhttprequest-ssl "1.5.3" yeast "0.1.2" +engine.io-client@~3.2.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.2.1.tgz#6f54c0475de487158a1a7c77d10178708b6add36" + dependencies: + component-emitter "1.2.1" + component-inherit "0.0.3" + debug "~3.1.0" + engine.io-parser "~2.1.1" + has-cors "1.1.0" + indexof "0.0.1" + parseqs "0.0.5" + parseuri "0.0.5" + ws "~3.3.1" + xmlhttprequest-ssl "~1.5.4" + yeast "0.1.2" + engine.io-parser@1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-1.3.1.tgz#9554f1ae33107d6fbd170ca5466d2f833f6a07cf" @@ -2684,6 +2706,16 @@ engine.io-parser@1.3.1: has-binary "0.1.6" wtf-8 "1.0.0" +engine.io-parser@~2.1.0, engine.io-parser@~2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-2.1.2.tgz#4c0f4cff79aaeecbbdcfdea66a823c6085409196" + dependencies: + after "0.8.2" + arraybuffer.slice "~0.0.7" + base64-arraybuffer "0.1.5" + blob "0.0.4" + has-binary2 "~1.0.2" + engine.io@1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-1.8.0.tgz#3eeb5f264cb75dbbec1baaea26d61f5a4eace2aa" @@ -2695,6 +2727,17 @@ engine.io@1.8.0: engine.io-parser "1.3.1" ws "1.1.1" +engine.io@~3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-3.2.0.tgz#54332506f42f2edc71690d2f2a42349359f3bf7d" + dependencies: + accepts "~1.3.4" + base64id "1.0.0" + cookie "0.3.1" + debug "~3.1.0" + engine.io-parser "~2.1.0" + ws "~3.3.1" + ensure-posix-path@^1.0.0, ensure-posix-path@^1.0.1, ensure-posix-path@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/ensure-posix-path/-/ensure-posix-path-1.0.2.tgz#a65b3e42d0b71cfc585eb774f9943c8d9b91b0c2" @@ -2965,18 +3008,6 @@ execa@^0.7.0: signal-exit "^3.0.0" strip-eof "^1.0.0" -execa@^0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-0.8.0.tgz#d8d76bbc1b55217ed190fd6dd49d3c774ecfc8da" - 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" - exists-stat@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/exists-stat/-/exists-stat-1.0.0.tgz#0660e3525a2e89d9e446129440c272edfa24b529" @@ -3021,12 +3052,6 @@ expand-range@^1.8.1: dependencies: fill-range "^2.1.0" -expand-tilde@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-1.2.2.tgz#0b81eba897e5a3d31d1c3d102f8f01441e559449" - dependencies: - os-homedir "^1.0.1" - expand-tilde@^2.0.0, expand-tilde@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" @@ -3074,7 +3099,7 @@ extend-shallow@^2.0.1: dependencies: is-extendable "^0.1.0" -extend-shallow@^3.0.0: +extend-shallow@^3.0.0, extend-shallow@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" dependencies: @@ -3120,6 +3145,19 @@ extglob@^2.0.2: snapdragon "^0.8.1" to-regex "^3.0.1" +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + dependencies: + array-unique "^0.3.2" + define-property "^1.0.0" + expand-brackets "^2.1.4" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + extract-zip@^1.6.5: version "1.6.6" resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.6.6.tgz#1290ede8d20d0872b429fd3f351ca128ec5ef85c" @@ -3260,6 +3298,13 @@ find-up@^2.1.0: dependencies: locate-path "^2.0.0" +find-yarn-workspace-root@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/find-yarn-workspace-root/-/find-yarn-workspace-root-1.1.0.tgz#9817b6748cb90719f4dc37b4538bb200c697356f" + dependencies: + fs-extra "^4.0.3" + micromatch "^3.1.4" + findup-sync@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-2.0.0.tgz#9326b1488c22d1a6088650a86901b2d9a90a2cbc" @@ -3269,15 +3314,6 @@ findup-sync@2.0.0: micromatch "^3.0.4" resolve-dir "^1.0.1" -findup-sync@^0.4.2: - version "0.4.3" - resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-0.4.3.tgz#40043929e7bc60adf0b7f4827c4c6e75a0deca12" - dependencies: - detect-file "^0.1.0" - is-glob "^2.0.1" - micromatch "^2.3.7" - resolve-dir "^0.1.0" - fireworm@^0.7.0: version "0.7.1" resolved "https://registry.yarnpkg.com/fireworm/-/fireworm-0.7.1.tgz#ccf20f7941f108883fcddb99383dbe6e1861c758" @@ -3351,10 +3387,6 @@ fresh@0.5.2: version "0.5.2" resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" -fs-exists-sync@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz#982d6893af918e72d08dec9e8673ff2b5a8d6add" - fs-extra@^0.24.0: version "0.24.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.24.0.tgz#d4e4342a96675cb7846633a6099249332b539952" @@ -3364,16 +3396,6 @@ fs-extra@^0.24.0: path-is-absolute "^1.0.0" rimraf "^2.2.8" -fs-extra@^0.26.0: - version "0.26.7" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.26.7.tgz#9ae1fdd94897798edab76d0918cf42d0c3184fa9" - dependencies: - graceful-fs "^4.1.2" - jsonfile "^2.1.0" - klaw "^1.0.0" - path-is-absolute "^1.0.0" - rimraf "^2.2.8" - fs-extra@^0.30.0: version "0.30.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.30.0.tgz#f233ffcc08d4da7d432daa449776989db1df93f0" @@ -3399,7 +3421,7 @@ fs-extra@^2.0.0: graceful-fs "^4.1.2" jsonfile "^2.1.0" -fs-extra@^4.0.0: +fs-extra@^4.0.0, fs-extra@^4.0.2, fs-extra@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" dependencies: @@ -3513,6 +3535,10 @@ git-repo-info@^1.0.4, git-repo-info@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/git-repo-info/-/git-repo-info-1.4.1.tgz#2a072823254aaf62fcf0766007d7b6651bd41943" +git-repo-info@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/git-repo-info/-/git-repo-info-2.0.0.tgz#2e7a68ba3d0253e8e885c4138f922e6561de59bb" + git-repo-version@0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/git-repo-version/-/git-repo-version-0.2.0.tgz#9a1d0019a50fc9e623c43d1c0fcc437391207d0d" @@ -3577,13 +3603,6 @@ glob@^5.0.10: once "^1.3.0" path-is-absolute "^1.0.0" -global-modules@^0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-0.2.3.tgz#ea5a3bed42c6d6ce995a4f8a1269b5dae223828d" - dependencies: - global-prefix "^0.1.4" - is-windows "^0.2.0" - global-modules@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" @@ -3592,15 +3611,6 @@ global-modules@^1.0.0: is-windows "^1.0.1" resolve-dir "^1.0.0" -global-prefix@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-0.1.5.tgz#8d3bc6b8da3ca8112a160d8d496ff0462bfef78f" - dependencies: - homedir-polyfill "^1.0.0" - ini "^1.3.4" - is-windows "^0.2.0" - which "^1.2.12" - global-prefix@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" @@ -3658,6 +3668,10 @@ growl@1.10.3: version "1.10.3" resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.3.tgz#1926ba90cf3edfe2adb4927f5880bc22c66c790f" +growl@1.9.2: + version "1.9.2" + resolved "https://registry.yarnpkg.com/growl/-/growl-1.9.2.tgz#0ea7743715db8d8de2c5ede1775e1b45ac85c02f" + growly@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" @@ -3702,6 +3716,12 @@ has-ansi@^2.0.0: dependencies: ansi-regex "^2.0.0" +has-binary2@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-binary2/-/has-binary2-1.0.2.tgz#e83dba49f0b9be4d026d27365350d9f03f54be98" + dependencies: + isarray "2.0.1" + has-binary@0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/has-binary/-/has-binary-0.1.6.tgz#25326f39cfa4f616ad8787894e3af2cfbc7b6e10" @@ -3718,10 +3738,18 @@ has-cors@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/has-cors/-/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39" +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-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + has-unicode@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" @@ -3790,12 +3818,14 @@ he@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" -heimdalljs-fs-monitor@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/heimdalljs-fs-monitor/-/heimdalljs-fs-monitor-0.1.0.tgz#d404a65688c6714c485469ed3495da4853440272" +heimdalljs-fs-monitor@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/heimdalljs-fs-monitor/-/heimdalljs-fs-monitor-0.2.0.tgz#42504bc6da0e0016d0b7c8172fc71bb63185a518" dependencies: + chai "^3.5.0" heimdalljs "^0.2.0" heimdalljs-logger "^0.1.7" + mocha "^3.2.0" heimdalljs-graph@^0.3.1: version "0.3.4" @@ -3835,7 +3865,7 @@ home-or-tmp@^2.0.0: os-homedir "^1.0.0" os-tmpdir "^1.0.1" -homedir-polyfill@^1.0.0, homedir-polyfill@^1.0.1: +homedir-polyfill@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz#4c2bbc8a758998feebf5ed68580f76d46768b4bc" dependencies: @@ -3908,7 +3938,7 @@ https-proxy-agent@^2.1.0: agent-base "^4.1.0" debug "^3.1.0" -iconv-lite@0.4.19, iconv-lite@^0.4.13, iconv-lite@^0.4.17, iconv-lite@~0.4.13: +iconv-lite@0.4.19, iconv-lite@^0.4.13, iconv-lite@^0.4.17: version "0.4.19" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" @@ -3934,7 +3964,7 @@ indexof@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" -inflection@^1.12.0, inflection@^1.7.0, inflection@^1.7.1: +inflection@^1.12.0, inflection@^1.7.0: version "1.12.0" resolved "https://registry.yarnpkg.com/inflection/-/inflection-1.12.0.tgz#a200935656d6f5f6bc4dc7502e1aecb703228416" @@ -4075,7 +4105,7 @@ is-descriptor@^0.1.0: is-data-descriptor "^0.1.4" kind-of "^5.0.0" -is-descriptor@^1.0.0: +is-descriptor@^1.0.0, is-descriptor@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" dependencies: @@ -4155,6 +4185,10 @@ is-number@^3.0.0: dependencies: kind-of "^3.0.2" +is-number@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" + is-obj@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" @@ -4165,6 +4199,12 @@ is-odd@^1.0.0: dependencies: is-number "^3.0.0" +is-odd@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-odd/-/is-odd-2.0.0.tgz#7646624671fd7ea558ccd9a2795182f2958f1b24" + dependencies: + is-number "^4.0.0" + 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" @@ -4229,7 +4269,7 @@ is-running@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-running/-/is-running-2.1.0.tgz#30a73ff5cc3854e4fc25490809e9f5abf8de09e0" -is-stream@^1.0.0, is-stream@^1.0.1, is-stream@^1.1.0: +is-stream@^1.0.0, is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" @@ -4247,14 +4287,14 @@ is-utf8@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" -is-windows@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-0.2.0.tgz#de1aa6d63ea29dd248737b69f1ff8b8002d2108c" - is-windows@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.1.tgz#310db70f742d259a16a369202b51af84233310d9" +is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + isarray@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" @@ -4263,6 +4303,10 @@ 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" +isarray@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.1.tgz#a37d94ed9cda2d59865c9f76fe596ee1f338741e" + isbinaryfile@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.2.tgz#4a3e974ec0cba9004d3fc6cde7209ea69368a621" @@ -4522,6 +4566,10 @@ 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._basecreate@~2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/lodash._basecreate/-/lodash._basecreate-2.3.0.tgz#9b88a86a4dcff7b7f3c61d83a2fcfc0671ec9de0" @@ -4657,10 +4705,22 @@ lodash.bind@~2.3.0: lodash._renative "~2.3.0" lodash._slice "~2.3.0" +lodash.castarray@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.castarray/-/lodash.castarray-4.4.0.tgz#c02513515e309daddd4c24c60cfddcf5976d9115" + lodash.clonedeep@^4.4.1: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" +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.debounce@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-3.1.1.tgz#812211c378a94cc29d5aa4e3346cf0bfce3a7df5" @@ -4754,10 +4814,6 @@ lodash.merge@^4.3.0, lodash.merge@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.0.tgz#69884ba144ac33fe699737a6086deffadd0f89c5" -lodash.merge@^4.4.0: - version "4.6.1" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.1.tgz#adc25d9cb99b9391c59624f379fbba60d7111d54" - lodash.noop@~2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/lodash.noop/-/lodash.noop-2.3.0.tgz#3059d628d51bbf937cd2a0b6fc3a7f212a669c2c" @@ -4830,23 +4886,15 @@ lodash@2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/lodash/-/lodash-2.4.1.tgz#5b7723034dda4d262e5a46fb2c58d7cc22f71420" -lodash@^3.10.1: - version "3.10.1" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" - lodash@^4.0.0, lodash@^4.14.0, lodash@^4.16.1, lodash@^4.17.2, lodash@^4.17.4, lodash@^4.3.0: version "4.17.4" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" -lodash@^4.6.1: - version "4.17.5" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.5.tgz#99a92d65c0272debe8c96b6057bc8fbfa3bed511" - -log-symbols@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18" +log-symbols@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" dependencies: - chalk "^1.0.0" + chalk "^2.0.1" lolex@1.3.2: version "1.3.2" @@ -5024,7 +5072,7 @@ methods@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" -micromatch@^2.1.5, micromatch@^2.3.11, micromatch@^2.3.7: +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: @@ -5060,6 +5108,24 @@ micromatch@^3.0.4: snapdragon "^0.8.1" to-regex "^3.0.1" +micromatch@^3.1.4: + version "3.1.10" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.3.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" + extglob "^2.0.4" + fragment-cache "^0.2.1" + kind-of "^6.0.2" + nanomatch "^1.2.9" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.2" + "mime-db@>= 1.30.0 < 2": version "1.32.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.32.0.tgz#485b3848b01a3cda5f968b4882c0771e58e09414" @@ -5068,12 +5134,22 @@ mime-db@~1.30.0: version "1.30.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.30.0.tgz#74c643da2dd9d6a45399963465b26d5ca7d71f01" +mime-db@~1.33.0: + version "1.33.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db" + mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.15, mime-types@~2.1.16, mime-types@~2.1.7: version "2.1.17" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.17.tgz#09d7a393f03e995a79f8af857b70a9e0ab16557a" dependencies: mime-db "~1.30.0" +mime-types@^2.1.18: + version "2.1.18" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.18.tgz#6f323f60a83d11146f831ff11fd66e2fe5503bb8" + dependencies: + mime-db "~1.33.0" + mime-types@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-1.0.2.tgz#995ae1392ab8affcbfcb2641dd054e943c0d5dce" @@ -5146,6 +5222,23 @@ mktemp@~0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/mktemp/-/mktemp-0.4.0.tgz#6d0515611c8a8c84e484aa2000129b98e981ff0b" +mocha@^3.2.0: + version "3.5.3" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-3.5.3.tgz#1e0480fe36d2da5858d1eb6acc38418b26eaa20d" + dependencies: + browser-stdout "1.3.0" + commander "2.9.0" + debug "2.6.8" + diff "3.2.0" + escape-string-regexp "1.0.5" + glob "7.1.1" + growl "1.9.2" + he "1.1.1" + json3 "3.3.2" + lodash.create "3.1.1" + mkdirp "0.5.1" + supports-color "3.1.2" + mocha@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/mocha/-/mocha-5.0.0.tgz#cccac988b0bc5477119cba0e43de7af6d6ad8f4e" @@ -5219,6 +5312,23 @@ nanomatch@^1.2.5: snapdragon "^0.8.1" to-regex "^3.0.1" +nanomatch@^1.2.9: + version "1.2.9" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.9.tgz#879f7150cb2dab7a471259066c104eee6e0fa7c2" + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^2.0.2" + extend-shallow "^3.0.2" + fragment-cache "^0.2.1" + is-odd "^2.0.0" + is-windows "^1.0.2" + kind-of "^6.0.2" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" @@ -5231,13 +5341,6 @@ nice-try@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.4.tgz#d93962f6c52f2c1558c0fbda6d512819f1efe1c4" -node-fetch@^1.3.3: - version "1.7.3" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" - dependencies: - encoding "^0.1.11" - is-stream "^1.0.1" - node-int64@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" @@ -5430,14 +5533,16 @@ options@>=0.0.5: version "0.0.6" resolved "https://registry.yarnpkg.com/options/-/options-0.0.6.tgz#ec22d312806bb53e731773e7cdaefcf1c643128f" -ora@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/ora/-/ora-1.3.0.tgz#80078dd2b92a934af66a3ad72a5b910694ede51a" +ora@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ora/-/ora-2.0.0.tgz#8ec3a37fa7bffb54a3a0c188a1f6798e7e1827cd" dependencies: - chalk "^1.1.1" + chalk "^2.3.1" cli-cursor "^2.1.0" - cli-spinners "^1.0.0" - log-symbols "^1.0.2" + cli-spinners "^1.1.0" + log-symbols "^2.2.0" + strip-ansi "^4.0.0" + wcwidth "^1.0.1" os-homedir@^1.0.0, os-homedir@^1.0.1: version "1.0.2" @@ -5927,6 +6032,13 @@ regex-not@^1.0.0: dependencies: extend-shallow "^2.0.1" +regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + regexpp@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-1.0.1.tgz#d857c3a741dce075c2848dcb019a0a975b190d43" @@ -6053,13 +6165,6 @@ requires-port@1.x.x: version "1.0.0" resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" -resolve-dir@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-0.1.1.tgz#b219259a5602fac5c5c496ad894a6e8cc430261e" - dependencies: - expand-tilde "^1.2.2" - global-modules "^0.2.3" - resolve-dir@^1.0.0, resolve-dir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" @@ -6101,13 +6206,17 @@ restore-cursor@^2.0.0: onetime "^2.0.0" signal-exit "^3.0.2" +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + 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.1.4, rimraf@^2.2.8, rimraf@^2.3.2, rimraf@^2.3.4, rimraf@^2.4.1, rimraf@^2.4.3, rimraf@^2.4.4, rimraf@^2.5.1, rimraf@^2.5.3, rimraf@^2.5.4, rimraf@^2.6.1: +rimraf@2, rimraf@^2.1.4, rimraf@^2.2.8, rimraf@^2.3.4, rimraf@^2.4.1, rimraf@^2.4.3, rimraf@^2.4.4, rimraf@^2.5.1, rimraf@^2.5.3, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" dependencies: @@ -6165,7 +6274,7 @@ rsvp@3.0.14: version "3.0.14" resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-3.0.14.tgz#9d2968cf36d878d3bb9a9a5a4b8e1ff55a76dd31" -rsvp@^3.0.14, rsvp@^3.0.16, rsvp@^3.0.17, rsvp@^3.0.18, rsvp@^3.0.21, rsvp@^3.0.6, rsvp@^3.2.1, rsvp@^3.3.3, rsvp@^3.5.0: +rsvp@^3.0.14, rsvp@^3.0.16, rsvp@^3.0.17, rsvp@^3.0.18, rsvp@^3.0.21, rsvp@^3.0.6, rsvp@^3.3.3, rsvp@^3.5.0: version "3.6.2" resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-3.6.2.tgz#2e96491599a96cde1b515d5674a8f7a91452926a" @@ -6213,6 +6322,12 @@ safe-json-parse@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/safe-json-parse/-/safe-json-parse-1.0.1.tgz#3e76723e38dfdda13c9b1d29a1e07ffee4b30b57" +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + dependencies: + ret "~0.1.10" + samsam@1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/samsam/-/samsam-1.1.2.tgz#bec11fdc83a9fda063401210e40176c3024d1567" @@ -6446,6 +6561,10 @@ socket.io-adapter@0.5.0: debug "2.3.3" socket.io-parser "2.3.1" +socket.io-adapter@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz#2a805e8a14d6372124dd9159ad4502f8cb07f06b" + socket.io-client@1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-1.6.0.tgz#5b668f4f771304dfeed179064708386fa6717853" @@ -6462,6 +6581,25 @@ socket.io-client@1.6.0: socket.io-parser "2.3.1" to-array "0.1.4" +socket.io-client@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.1.0.tgz#0d0b21d460dc4ed36e57085136f2be0137ff20ff" + dependencies: + backo2 "1.0.2" + base64-arraybuffer "0.1.5" + component-bind "1.0.0" + component-emitter "1.2.1" + debug "~3.1.0" + engine.io-client "~3.2.0" + has-binary2 "~1.0.2" + has-cors "1.1.0" + indexof "0.0.1" + object-component "0.0.3" + parseqs "0.0.5" + parseuri "0.0.5" + socket.io-parser "~3.2.0" + to-array "0.1.4" + socket.io-parser@2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-2.3.1.tgz#dd532025103ce429697326befd64005fcfe5b4a0" @@ -6471,6 +6609,14 @@ socket.io-parser@2.3.1: isarray "0.0.1" json3 "3.3.2" +socket.io-parser@~3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.2.0.tgz#e7c6228b6aa1f814e6148aea325b51aa9499e077" + dependencies: + component-emitter "1.2.1" + debug "~3.1.0" + isarray "2.0.1" + socket.io@1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-1.6.0.tgz#3e40d932637e6bd923981b25caf7c53e83b6e2e1" @@ -6483,6 +6629,17 @@ socket.io@1.6.0: socket.io-client "1.6.0" socket.io-parser "2.3.1" +socket.io@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-2.1.0.tgz#de77161795b6303e7aefc982ea04acb0cec17395" + dependencies: + debug "~3.1.0" + engine.io "~3.2.0" + has-binary2 "~1.0.2" + socket.io-adapter "~1.1.0" + socket.io-client "2.1.0" + socket.io-parser "~3.2.0" + sort-object-keys@^1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/sort-object-keys/-/sort-object-keys-1.1.2.tgz#d3a6c48dc2ac97e6bc94367696e03f6d09d37952" @@ -6712,6 +6869,12 @@ sum-up@^1.0.1: dependencies: chalk "^1.0.0" +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@4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.4.0.tgz#883f7ddabc165142b2a61427f3352ded195d1a3e" @@ -6736,11 +6899,17 @@ supports-color@^4.0.0: dependencies: has-flag "^2.0.0" +supports-color@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.3.0.tgz#5b24ac15db80fa927cf5227a4a33fd3c4c7676c0" + dependencies: + has-flag "^3.0.0" + symlink-or-copy@^1.0.0: version "1.1.8" resolved "https://registry.yarnpkg.com/symlink-or-copy/-/symlink-or-copy-1.1.8.tgz#cabe61e0010c1c023c173b25ee5108b37f4b4aa3" -symlink-or-copy@^1.0.1, symlink-or-copy@^1.1.8: +symlink-or-copy@^1.0.1, 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" @@ -6807,7 +6976,7 @@ testdouble@^3.2.6: quibble "^0.5.1" stringify-object-es5 "^2.5.0" -testem@^1.18.0, testem@^1.18.4: +testem@^1.18.4: version "1.18.4" resolved "https://registry.yarnpkg.com/testem/-/testem-1.18.4.tgz#e45fed922bec2f54a616c43f11922598ac97eb41" dependencies: @@ -6838,6 +7007,38 @@ testem@^1.18.0, testem@^1.18.4: tap-parser "^5.1.0" xmldom "^0.1.19" +testem@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/testem/-/testem-2.2.1.tgz#7bcda44eeb34287d918b3c8b9c6863d26a616557" + dependencies: + backbone "^1.1.2" + bluebird "^3.4.6" + charm "^1.0.0" + commander "^2.6.0" + consolidate "^0.14.0" + execa "^0.10.0" + express "^4.10.7" + fireworm "^0.7.0" + glob "^7.0.4" + http-proxy "^1.13.1" + js-yaml "^3.2.5" + lodash.assignin "^4.1.0" + lodash.castarray "^4.4.0" + lodash.clonedeep "^4.4.1" + lodash.find "^4.5.1" + lodash.uniqby "^4.7.0" + mkdirp "^0.5.1" + mustache "^2.2.1" + node-notifier "^5.0.1" + npmlog "^4.0.0" + printf "^0.2.3" + rimraf "^2.4.4" + socket.io "^2.1.0" + spawn-args "^0.2.0" + styled_string "0.0.1" + tap-parser "^5.1.0" + xmldom "^0.1.19" + text-table@~0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" @@ -6927,6 +7128,15 @@ to-regex@^3.0.1: extend-shallow "^2.0.1" regex-not "^1.0.0" +to-regex@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + tough-cookie@>=0.12.0, tough-cookie@~2.3.0: version "2.3.3" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.3.tgz#0b618a5565b6dea90bf3425d04d55edc475a7561" @@ -7283,6 +7493,12 @@ watch@~0.18.0: exec-sh "^0.2.0" minimist "^1.2.0" +wcwidth@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" + dependencies: + defaults "^1.0.3" + websocket-driver@>=0.5.1: version "0.7.0" resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.0.tgz#0caf9d2d755d93aee049d4bdd0d3fe2cca2a24eb" @@ -7364,7 +7580,7 @@ ws@1.1.1: options ">=0.0.5" ultron "1.0.x" -ws@^3.0.0: +ws@^3.0.0, ws@~3.3.1: version "3.3.3" resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2" dependencies: @@ -7401,6 +7617,10 @@ xmlhttprequest-ssl@1.5.3: version "1.5.3" resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3.tgz#185a888c04eca46c3e4070d99f7b49de3528992d" +xmlhttprequest-ssl@~1.5.4: + version "1.5.5" + resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz#c2876b06168aadc40e57d97e81191ac8f4398b3e" + xtend@^4.0.0, xtend@~4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" @@ -7413,12 +7633,12 @@ yallist@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" -yam@0.0.22: - version "0.0.22" - resolved "https://registry.yarnpkg.com/yam/-/yam-0.0.22.tgz#38a76cb79a19284d9206ed49031e359a1340bd06" +yam@^0.0.24: + version "0.0.24" + resolved "https://registry.yarnpkg.com/yam/-/yam-0.0.24.tgz#11e9630444735f66a561d29221407de6d037cd95" dependencies: - fs-extra "^0.30.0" - lodash.merge "^4.4.0" + fs-extra "^4.0.2" + lodash.merge "^4.6.0" yargs-parser@^8.1.0: version "8.1.0"