diff --git a/.gitignore b/.gitignore index d76678a51..b240fb484 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,27 @@ dist + +/.node + +# See https://help.github.com/ignore-files/ for more about ignoring files. + +# compiled output +/dist/ +/tmp/ + +# dependencies **/node_modules/** **/tmp/** + +# misc +/.sass-cache +/connect.lock +/coverage/ +/libpeerconnection.log +/npm-debug.log* +/testem.log +/yarn-error.log + +# ember-try +**/.node_modules.ember-try/** +**/bower.json.ember-try +**/package.json.ember-try diff --git a/.travis.yml b/.travis.yml index da0942968..77f58b060 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,23 +1,44 @@ language: node_js node_js: - - "8" + - '8' env: - MOZ_HEADLESS=1 -cache: yarn +cache: + yarn: true addons: chrome: stable firefox: latest before_install: - - "curl -o- -L https://yarnpkg.com/install.sh | bash -s --" + - 'curl -o- -L https://yarnpkg.com/install.sh | bash -s --' - export PATH="$HOME/.yarn/bin:$PATH" install: - yarn install --non-interactive script: - - yarn tslint - - yarn test + # Usually, it's ok to finish the test scenario without reverting + # to the addon's original dependency state, skipping "cleanup". + - yarn test:ember $EMBER_TRY_SCENARIO --skip-cleanup + +jobs: + fail_fast: true + + include: + - stage: Glimmer Tests + name: Package Tests + script: yarn test + - name: Lint + script: yarn tslint + + - stage: Ember Tests + name: Node + script: yarn test:ember:node + - env: EMBER_TRY_SCENARIO=ember-default + - env: EMBER_TRY_SCENARIO=ember-release + - env: EMBER_TRY_SCENARIO=ember-beta + - env: EMBER_TRY_SCENARIO=ember-canary + - env: EMBER_TRY_SCENARIO=ember-lts-3.4 diff --git a/.watchmanconfig b/.watchmanconfig new file mode 100644 index 000000000..e7834e3e4 --- /dev/null +++ b/.watchmanconfig @@ -0,0 +1,3 @@ +{ + "ignore_dirs": ["tmp", "dist"] +} diff --git a/README.md b/README.md index 59e4e9cad..c76b66a4e 100644 --- a/README.md +++ b/README.md @@ -5,9 +5,9 @@ packages, so this meta-repo exists to help you find what you're looking for. ## Resources -* [Guides](https://glimmerjs.com/guides) -* [API Docs](https://glimmerjs.com/api/) -* [Glimmer Playground](https://glimmer-playground.netlify.com) +- [Guides](https://glimmerjs.com/guides) +- [API Docs](https://glimmerjs.com/api/) +- [Glimmer Playground](https://glimmer-playground.netlify.com) ## Packages @@ -17,13 +17,15 @@ Glimmer.js is the developer-facing API on top of the low-level [Glimmer VM](http These packages are imported and used by Glimmer developers directly. -* [`@glimmer/application`] - user-friendly wrapper around the Glimmer VM environment -* [`@glimmer/component`] - defines the Glimmer component base class and component lifecycle -* [`@glimmer/web-component`] - addon for mounting Glimmer components as Web Components -* [`@glimmer/application-test-helpers`] - helpers for testing Glimmer components +- [`@glimmer/application`] - user-friendly wrapper around the Glimmer VM environment +- [`@glimmer/component`] - defines the Glimmer component base class and component lifecycle +- [`@glimmer/tracking`] - defines the Glimmer property change tracking system +- [`@glimmer/web-component`] - addon for mounting Glimmer components as Web Components +- [`@glimmer/application-test-helpers`] - helpers for testing Glimmer components [`@glimmer/application`]: https://github.com/glimmerjs/glimmer.js/tree/master/packages/%40glimmer/application [`@glimmer/component`]: https://github.com/glimmerjs/glimmer.js/tree/master/packages/%40glimmer/component +[`@glimmer/tracking`]: https://github.com/glimmerjs/glimmer.js/tree/master/packages/%40glimmer/tracking [`@glimmer/web-component`]: https://github.com/glimmerjs/glimmer-web-component [`@glimmer/application-test-helpers`]: https://github.com/glimmerjs/glimmer.js/tree/master/packages/%40glimmer/application-test-helpers @@ -31,8 +33,8 @@ These packages are imported and used by Glimmer developers directly. These packages are used internally by Glimmer but may be useful for more advanced users. -* [`@glimmer/di`] - lightweight dependency injection library used by `@glimmer/application` -* [`@glimmer/resolver`] - resolver used by `@glimmer/application` to look up component modules +- [`@glimmer/di`] - lightweight dependency injection library used by `@glimmer/application` +- [`@glimmer/resolver`] - resolver used by `@glimmer/application` to look up component modules [`@glimmer/di`]: https://github.com/glimmerjs/glimmer-di [`@glimmer/resolver`]: https://github.com/glimmerjs/glimmer-resolver @@ -42,8 +44,8 @@ These packages are used internally by Glimmer but may be useful for more advance These packages are used for building Glimmer apps, and aren't intended to run in the user's browser. -* [`@glimmer/application-pipeline`] - Broccoli-based build pipeline for Glimmer apps -* [`@glimmer/resolution-map-builder`] - utilities for building the resolution map used by `@glimmer-resolver` +- [`@glimmer/application-pipeline`] - Broccoli-based build pipeline for Glimmer apps +- [`@glimmer/resolution-map-builder`] - utilities for building the resolution map used by `@glimmer-resolver` [`@glimmer/application-pipeline`]: https://github.com/glimmerjs/glimmer-application-pipeline [`@glimmer/resolution-map-builder`]: https://github.com/glimmerjs/resolution-map-builder diff --git a/build/broccoli/build-packages.js b/build/broccoli/build-packages.js index 3b37ca445..31200990d 100644 --- a/build/broccoli/build-packages.js +++ b/build/broccoli/build-packages.js @@ -23,7 +23,10 @@ module.exports = function buildPackages(es2017, matrix) { let es5 = transpileToES5(es2017); let targets = { es5, es2017 }; + // We ignore the `@glimmer/blueprint` tree as it is ember-only, and is picked + // up later on in the build process. let packages = project.packages + .filter(pkg => pkg.name !== '@glimmer/blueprint') .map(buildPackage); packages = flatten(packages); @@ -32,24 +35,10 @@ module.exports = function buildPackages(es2017, matrix) { return packages; function buildPackage(pkg) { - let pkgName = pkg.name; - let builds; - - // The blueprint package is structured differently from other packages, so - // we just copy it over verbatim to the build output. - if (pkgName === '@glimmer/blueprint') { - builds = [funnel(`packages/${pkgName}`, { - destDir: `${pkgName}/`, - exclude: ['**/node_modules/**'] - })]; - } else { - builds = buildMatrix(pkgName, matrix); - } - return [ - writePackageJSON(pkgName), - writeLicense(`${pkgName}/LICENSE`), - ...builds + writePackageJSON(pkg.name), + writeLicense(`${pkg.name}/LICENSE`), + ...buildMatrix(pkg.name, matrix) ]; } diff --git a/build/broccoli/optimize.js b/build/broccoli/optimize.js index 9cb939a14..40227c28a 100644 --- a/build/broccoli/optimize.js +++ b/build/broccoli/optimize.js @@ -1,8 +1,6 @@ 'use strict'; const babel = require('broccoli-babel-transpiler'); -const stripGlimmerUtils = require('babel-plugin-strip-glimmer-utils'); -const debugMacros = require('babel-plugin-debug-macros').default; /** * Optimizes out Glimmer utility functions and strips debug code with a set of @@ -12,17 +10,22 @@ module.exports = function(jsTree) { let isProduction = process.env.EMBER_ENV === 'production'; let plugins = [ - [debugMacros, { - envFlags: { - source: '@glimmer/env', - flags: { - DEBUG: !isProduction, - CI: !!process.env.CI - } - }, + [require.resolve('babel-plugin-debug-macros'), { debugTools: { + isDebug: !isProduction, source: '@glimmer/debug' }, + + flags: [ + { + source: '@glimmer/env', + flags: { + DEBUG: !isProduction, + CI: !!process.env.CI + } + } + ], + externalizeHelpers: { module: true } @@ -32,7 +35,7 @@ module.exports = function(jsTree) { if (isProduction) { plugins = [ ...plugins, - [stripGlimmerUtils, { + [require.resolve('babel-plugin-strip-glimmer-utils'), { bindings: ['expect', 'unwrap'], source: '@glimmer/util' }] diff --git a/ember-cli-build.js b/ember-cli-build.js index 952a1ad5c..171ff45f0 100644 --- a/ember-cli-build.js +++ b/ember-cli-build.js @@ -66,9 +66,22 @@ module.exports = function(_options) { ]; } + // Include any Ember Addon files, without src (Glimmer files) + let emberTree = funnel('packages/', { + exclude: [ + '**/node_modules', + '**/tmp', + '**/types', + '**/dist', + '**/src', + '**/test', + '*/*/index.ts' + ] + }); + // Third, build our module/ES combinations for each package, and their tests. let packagesTree = buildPackages(jsTree, matrix); let testsTree = buildTests(tsTree, jsTree, packagesTree); - return merge([packagesTree, testsTree]); + return merge([packagesTree, testsTree, emberTree], { overwrite: true }); } diff --git a/package.json b/package.json index fb0953b65..6b13d3d9a 100644 --- a/package.json +++ b/package.json @@ -9,8 +9,10 @@ "start": "ember serve", "test": "ember test && ember test --env production", "test:node": "bin/run-node-tests.js", - "problems": "tsc -p tsconfig.json --noEmit", - "tslint": "tslint --project tsconfig.json" + "test:ember": "yarn workspace @glimmer/component ember try:one", + "test:ember:node": "yarn workspace @glimmer/component test:node", + "tslint": "tslint --project tsconfig.json", + "problems": "tsc -p tsconfig.json --noEmit" }, "workspaces": [ "packages/@glimmer/*" @@ -18,7 +20,7 @@ "devDependencies": { "@types/qunit": "^2.0.31", "amd-name-resolver": "^1.0.0", - "babel-plugin-debug-macros": "^0.1.11", + "babel-plugin-debug-macros": "^0.2.0", "babel-plugin-strip-glimmer-utils": "^0.1.1", "babel-plugin-transform-es2015-modules-amd": "^6.24.1", "babel-plugin-transform-proto-to-assign": "^6.23.0", diff --git a/packages/@glimmer/application-test-helpers/src/app-builder.ts b/packages/@glimmer/application-test-helpers/src/app-builder.ts index d7ad53740..621cc865e 100644 --- a/packages/@glimmer/application-test-helpers/src/app-builder.ts +++ b/packages/@glimmer/application-test-helpers/src/app-builder.ts @@ -3,7 +3,6 @@ import Resolver, { ResolverConfiguration } from "@glimmer/resolver"; import { Dict, ModuleLocator, TemplateLocator } from "@glimmer/interfaces"; -import { FactoryDefinition } from "@glimmer/di"; import defaultResolverConfiguration from "./default-resolver-configuration"; import { precompile } from "./compiler"; import Application, { @@ -36,7 +35,7 @@ export interface AppBuilderOptions { document?: SimpleDocument; } -export interface ComponentFactory extends FactoryDefinition {} +export interface ComponentFactory {} export class TestApplication extends Application { rootElement: Element; @@ -106,7 +105,7 @@ export class AppBuilder { this.options.resolverConfiguration || defaultResolverConfiguration; resolverConfiguration.app = resolverConfiguration.app || { name: this.rootName, - rootName: this.rootName + rootName: this.rootName, }; let registry = new BasicModuleRegistry(this.modules); @@ -152,7 +151,7 @@ export class AppBuilder { meta[locator.module] = { v: vmHandle, h: handle, - table: template.symbolTable + table: template.symbolTable, }; }); @@ -176,8 +175,8 @@ export class AppBuilder { meta, heap: { table: heap.table, - handle: heap.handle - } + handle: heap.handle, + }, }; return new BytecodeLoader({ bytecode, data }); @@ -209,7 +208,7 @@ export class AppBuilder { loader, renderer, rootName: this.rootName, - document: this.options.document + document: this.options.document, }); let rootElement = doc.createElement("div"); diff --git a/packages/@glimmer/application/test/browser/action-test.ts b/packages/@glimmer/application/test/browser/action-test.ts index 2ef8e4c24..ad3f7140d 100644 --- a/packages/@glimmer/application/test/browser/action-test.ts +++ b/packages/@glimmer/application/test/browser/action-test.ts @@ -1,4 +1,5 @@ -import Component, { tracked } from '@glimmer/component'; +import Component from '@glimmer/component'; +import { tracked } from '@glimmer/tracking'; import { buildApp, didRender } from '@glimmer/application-test-helpers'; import { debugInfoForReference } from '@glimmer/application'; @@ -15,10 +16,10 @@ test('can curry arguments to actions', async function(assert) { class HelloWorld extends Component { @tracked - name = "world"; + name = 'world'; - constructor(injections: object) { - super(injections); + constructor(owner, args) { + super(owner, args); helloWorldComponent = this; } @@ -26,12 +27,19 @@ test('can curry arguments to actions', async function(assert) { passedMsg1 = msg1; passedMsg2 = msg2; passedEvent = event; - assert.strictEqual(this, helloWorldComponent, 'function context is preserved'); + assert.strictEqual( + this, + helloWorldComponent, + 'function context is preserved' + ); } } let app = await buildApp() - .template('HelloWorld', '

Hello World

') + .template( + 'HelloWorld', + '

Hello World

' + ) .template('Main', '
') .component('HelloWorld', HelloWorld) .boot(); @@ -47,7 +55,7 @@ test('can curry arguments to actions', async function(assert) { assert.strictEqual(passedEvent, fakeEvent); passedEvent = null; - helloWorldComponent.name = "cruel world"; + helloWorldComponent.name = 'cruel world'; app.scheduleRerender(); await didRender(app); @@ -64,31 +72,52 @@ test('actions can be passed and invoked with additional arguments', async functi assert.expect(2); let fakeEvent: any = { - type: 'click' + type: 'click', }; let parentComponent: ParentComponent; let passed: any[] = []; class ParentComponent extends Component { - name = "world"; + name = 'world'; - constructor(injections: object) { - super(injections); + constructor(owner, args) { + super(owner, args); parentComponent = this; } - userDidClick(a1: number, a2: number, a3: number, a4: number, a5: number, a6: number, evt: Event) { + userDidClick( + a1: number, + a2: number, + a3: number, + a4: number, + a5: number, + a6: number, + evt: Event + ) { passed = [a1, a2, a3, a4, a5, a6, evt]; - assert.strictEqual(this, parentComponent, 'function context is preserved'); + assert.strictEqual( + this, + parentComponent, + 'function context is preserved' + ); } } let app = await buildApp() .template('Main', '
') - .template('Parent', '
') + .template( + 'Parent', + '
' + ) .component('Parent', ParentComponent) - .template('Child', '
') - .template('Grandchild', '
') + .template( + 'Child', + '
' + ) + .template( + 'Grandchild', + '
' + ) .boot(); let root = app.rootElement as Element; @@ -100,35 +129,41 @@ test('actions can be passed and invoked with additional arguments', async functi }); test('action helper invoked without a function raises an error', async function(assert) { - class ParentComponent extends Component { - debugName = 'ParentComponent'; - } + class ParentComponent extends Component {} let app = await buildApp() .template('Main', '
') - .template('Parent', '
') + .template( + 'Parent', + '
' + ) .component('Parent', ParentComponent); try { await app.boot(); } catch (e) { - assert.equal(e.message, "You tried to create an action with the \{\{action\}\} helper, but the first argument \('doesntExist' on ParentComponent\) was undefined instead of a function."); + assert.equal( + e.message, + "You tried to create an action with the {{action}} helper, but the first argument ('doesntExist' on Parent) was undefined instead of a function." + ); } }); test('debug name from references can be extracted', function(assert) { let refOne = { parent: { - value() { return { debugName: 'parent' }; } + value() { + return { debugName: 'parent' }; + }, }, - property: 'name' + property: 'name', }; let refTwo = { _parentValue: { - debugName: 'contact' + debugName: 'contact', }, - _propertyKey: 'address' + _propertyKey: 'address', }; assert.strictEqual(debugInfoForReference(null), ''); diff --git a/packages/@glimmer/application/test/browser/render-component-test.ts b/packages/@glimmer/application/test/browser/render-component-test.ts index 108a27598..ab6f1bc4d 100644 --- a/packages/@glimmer/application/test/browser/render-component-test.ts +++ b/packages/@glimmer/application/test/browser/render-component-test.ts @@ -1,10 +1,15 @@ import { didRender } from '@glimmer/application-test-helpers'; -import { test, RenderTest, renderModule } from '@glimmer/application-test-helpers'; -import Component, { tracked } from '@glimmer/component'; +import { + test, + RenderTest, + renderModule, +} from '@glimmer/application-test-helpers'; +import Component from '@glimmer/component'; +import { tracked } from '@glimmer/tracking'; import '../helpers/async'; class RenderComponentTest extends RenderTest { - @test async "renders a component"(assert: Assert) { + @test async 'renders a component'(assert: Assert) { assert.expect(1); let containerElement = document.createElement('div'); @@ -22,7 +27,9 @@ class RenderComponentTest extends RenderTest { assert.equal(containerElement.innerHTML, '

A B Hello Glimmer!

'); } - @test async 'renders a component without affecting existing content'(assert: Assert) { + @test async 'renders a component without affecting existing content'( + assert: Assert + ) { assert.expect(2); let containerElement = document.createElement('div'); @@ -42,7 +49,10 @@ class RenderComponentTest extends RenderTest { await didRender(app); - assert.equal(containerElement.innerHTML, '

foo

bar

Hello Glimmer!

'); + assert.equal( + containerElement.innerHTML, + '

foo

bar

Hello Glimmer!

' + ); } @test async 'renders a component before a given sibling'(assert: Assert) { @@ -65,10 +75,15 @@ class RenderComponentTest extends RenderTest { await didRender(app); - assert.equal(containerElement.innerHTML, '

Hello Glimmer!

'); + assert.equal( + containerElement.innerHTML, + '

Hello Glimmer!

' + ); } - @test async 'renders multiple components in different places'(assert: Assert) { + @test async 'renders multiple components in different places'( + assert: Assert + ) { assert.expect(2); let firstContainerElement = document.createElement('div'); @@ -88,7 +103,9 @@ class RenderComponentTest extends RenderTest { assert.equal(secondContainerElement.innerHTML, '

Hello Robbie!

'); } - @test async 'renders multiple components in the same container'(assert: Assert) { + @test async 'renders multiple components in the same container'( + assert: Assert + ) { assert.expect(1); let containerElement = document.createElement('div'); @@ -103,10 +120,16 @@ class RenderComponentTest extends RenderTest { await didRender(app); - assert.equal(containerElement.innerHTML, '

Hello Glimmer!

Hello Robbie!

'); + assert.equal( + containerElement.innerHTML, + '

Hello Glimmer!

Hello Robbie!

' + ); } - @test async 'renders multiple components in the same container in particular places'(assert: Assert) { + @test + async 'renders multiple components in the same container in particular places'( + assert: Assert + ) { assert.expect(2); let containerElement = document.createElement('div'); @@ -126,7 +149,10 @@ class RenderComponentTest extends RenderTest { await didRender(app); - assert.equal(containerElement.innerHTML, '

Hello Robbie!

Hello Glimmer!

'); + assert.equal( + containerElement.innerHTML, + '

Hello Robbie!

Hello Glimmer!

' + ); } @test async 'user helpers are not volatile'(assert: Assert) { @@ -141,8 +167,8 @@ class RenderComponentTest extends RenderTest { class HelloWorld extends Component { @tracked a = 'a'; - constructor(options: any) { - super(options); + constructor(owner, args) { + super(owner, args); component = this; } } @@ -166,14 +192,20 @@ class RenderComponentTest extends RenderTest { await didRender(app); - assert.equal(containerElement.innerHTML, '

Hello Robbie!

Hello Glimmer! a

'); + assert.equal( + containerElement.innerHTML, + '

Hello Robbie!

Hello Glimmer! a

' + ); app.scheduleRerender(); await didRender(app); assert.equal(count, 1); - assert.equal(containerElement.innerHTML, '

Hello Robbie!

Hello Glimmer! a

'); + assert.equal( + containerElement.innerHTML, + '

Hello Robbie!

Hello Glimmer! a

' + ); component.a = 'b'; @@ -182,25 +214,32 @@ class RenderComponentTest extends RenderTest { assert.equal(count, 2); - assert.equal(containerElement.innerHTML, '

Hello Robbie!

Hello Glimmer! b

'); + assert.equal( + containerElement.innerHTML, + '

Hello Robbie!

Hello Glimmer! b

' + ); } @test({ debug: true }) - async 'throws an exception if an invoked component is not found'(assert: Assert) { + async 'throws an exception if an invoked component is not found'( + assert: Assert + ) { assert.expect(1); let containerElement = document.createElement('div'); try { - let app = await this.app - .template('HelloWorld', ``) - .boot(); + let app = await this.app.template('HelloWorld', ``).boot(); await app.renderComponent('HelloWorld', containerElement); await didRender(app); } catch (err) { - assert.ok(err.toString().match(/(Cannot|Could not) find (the )?component '?NonExistent'?/)); + assert.ok( + err + .toString() + .match(/(Cannot|Could not) find (the )?component '?NonExistent'?/) + ); } } } diff --git a/packages/@glimmer/blueprint/files/src/index.ts b/packages/@glimmer/blueprint/files/src/index.ts index 67df41995..eb7f52400 100644 --- a/packages/@glimmer/blueprint/files/src/index.ts +++ b/packages/@glimmer/blueprint/files/src/index.ts @@ -1,4 +1,5 @@ -import { ComponentManager, setPropertyDidChange } from '@glimmer/component'; +import { ComponentManager } from '@glimmer/component'; +import { setPropertyDidChange } from '@glimmer/tracking'; import App from './main'; const app = new App(); diff --git a/packages/@glimmer/blueprint/index.js b/packages/@glimmer/blueprint/index.js index ca080a6c0..9ff228251 100644 --- a/packages/@glimmer/blueprint/index.js +++ b/packages/@glimmer/blueprint/index.js @@ -68,7 +68,7 @@ module.exports = { let indexTSPromise = this.insertIntoFile( 'src/index.ts', "import initializeCustomElements from '@glimmer/web-component';", - { after: "import { ComponentManager, setPropertyDidChange } from '@glimmer/component';\n" } + { after: "import { setPropertyDidChange } from '@glimmer/tracking';\n" } ).then(() => { return this.insertIntoFile( 'src/index.ts', diff --git a/packages/@glimmer/component/.npmignore b/packages/@glimmer/component/.npmignore index 759c5c521..683d99ccc 100644 --- a/packages/@glimmer/component/.npmignore +++ b/packages/@glimmer/component/.npmignore @@ -1,10 +1,29 @@ -node_modules -test -tests -tmp -testem.json -tsconfig.* -.travis.yml -.gitignore -.DS_Store -*.log +# compiled output +/dist/ +/tmp/ + +# dependencies +/bower_components/ + +# misc +/.bowerrc +/.editorconfig +/.ember-cli +/.eslintignore +/.eslintrc.js +/.gitignore +/.watchmanconfig +/.travis.yml +/bower.json +/config/ember-try.js +/ember-cli-build.js +/testem.js +/tests/ +/yarn.lock +.gitkeep + +# ember-try +/.node_modules.ember-try/ +/bower.json.ember-try +/package.json.ember-try +/node-tests diff --git a/packages/@glimmer/component/addon/-private/component-manager.ts b/packages/@glimmer/component/addon/-private/component-manager.ts new file mode 100644 index 000000000..6d7984968 --- /dev/null +++ b/packages/@glimmer/component/addon/-private/component-manager.ts @@ -0,0 +1,98 @@ +import { DEBUG } from '@glimmer/env'; +import Ember from 'ember'; +import { set } from '@ember/object'; +import { getOwner, setOwner } from '@ember/application'; +import ApplicationInstance from '@ember/application/instance'; +import { capabilities } from '@ember/component'; +import { schedule } from '@ember/runloop'; + +import GlimmerComponent, { + DESTROYING, + DESTROYED, + MAGIC_PROP, +} from './component'; + +export interface ComponentManagerArgs { + named: object; + positional: any[]; +} +type CreateComponentResult = GlimmerComponent & { + ___createComponentResult: true; +}; + +export default class GlimmerComponentManager { + static create(attrs: any) { + let owner = getOwner(attrs); + return new this(owner); + } + capabilities: any; + constructor(owner: ApplicationInstance) { + setOwner(this, owner); + this.capabilities = capabilities('3.4', { + destructor: true, + asyncLifecycleCallbacks: true, + }); + } + + createComponent( + Klass: typeof GlimmerComponent, + args: ComponentManagerArgs + ): CreateComponentResult { + let instance; + + let argSnapshot = args.named; + + if (DEBUG) { + argSnapshot = Object.assign({}, argSnapshot); + Object.defineProperty(argSnapshot, MAGIC_PROP, { + enumerable: false, + value: true, + }); + argSnapshot = Object.freeze(argSnapshot); + } + + instance = new Klass(getOwner(this), argSnapshot); + + return instance as CreateComponentResult; + } + + updateComponent( + component: CreateComponentResult, + args: ComponentManagerArgs + ) { + set(component, 'args', args.named); + } + + destroyComponent(component: CreateComponentResult) { + if (component.isDestroying) { + return; + } + + let meta = Ember.meta(component); + + meta.setSourceDestroying(); + component[DESTROYING] = true; + + schedule('actions', component, component.willDestroy); + schedule('destroy', this, this.scheduledDestroyComponent, component, meta); + } + + scheduledDestroyComponent(component: GlimmerComponent, meta: Meta) { + if (component.isDestroyed) { + return; + } + + Ember.destroy(component); + + meta.setSourceDestroyed(); + component[DESTROYED] = true; + } + + didCreateComponent() {} + + didUpdateComponent() {} + + getContext(component: CreateComponentResult) { + return component; + } +} diff --git a/packages/@glimmer/component/addon/-private/component.ts b/packages/@glimmer/component/addon/-private/component.ts new file mode 100644 index 000000000..d6c73aeec --- /dev/null +++ b/packages/@glimmer/component/addon/-private/component.ts @@ -0,0 +1,208 @@ +import { DEBUG } from '@glimmer/env'; +import { setOwner, Owner } from './owner'; + +const DESTROYING = Symbol('destroying'); +const DESTROYED = Symbol('destroyed'); + +let MAGIC_PROP: symbol; + +if (DEBUG) { + MAGIC_PROP = Symbol('magic-prop'); +} + +export { DESTROYING, DESTROYED, MAGIC_PROP }; + +/** + * The `Component` class defines an encapsulated UI element that is rendered to + * the DOM. A component is made up of a template and, optionally, this component + * object. + * + * ## Defining a Component + * + * To define a component, subclass `Component` and add your own properties, + * methods and lifecycle hooks: + * + * ```ts + * import Component from '@glimmer/component'; + * + * export default class extends Component { + * } + * ``` + * + * ## Lifecycle Hooks + * + * Lifecycle hooks allow you to respond to changes to a component, such as when + * it gets created, rendered, updated or destroyed. To add a lifecycle hook to a + * component, implement the hook as a method on your component subclass. + * + * For example, to be notified when Glimmer has rendered your component so you + * can attach a legacy jQuery plugin, implement the `didInsertElement()` method: + * + * ```ts + * import Component from '@glimmer/component'; + * + * export default class extends Component { + * didInsertElement() { + * $(this.element).pickadate(); + * } + * } + * ``` + * + * ## Data for Templates + * + * `Component`s have two different kinds of data, or state, that can be + * displayed in templates: + * + * 1. Arguments + * 2. Properties + * + * Arguments are data that is passed in to a component from its parent + * component. For example, if I have a `UserGreeting` component, I can pass it + * a name and greeting to use: + * + * ```hbs + * + * ``` + * + * Inside my `UserGreeting` template, I can access the `@name` and `@greeting` + * arguments that I've been given: + * + * ```hbs + * {{@greeting}}, {{@name}}! + * ``` + * + * Arguments are also available inside my component: + * + * ```ts + * console.log(this.args.greeting); // prints "Olá" + * ``` + * + * Properties, on the other hand, are internal to the component and declared in + * the class. You can use properties to store data that you want to show in the + * template, or pass to another component as an argument. + * + * ```ts + * import Component from '@glimmer/component'; + * + * export default class extends Component { + * user = { + * name: 'Robbie' + * } + * } + * ``` + * + * In the above example, we've defined a component with a `user` property that + * contains an object with its own `name` property. + * + * We can render that property in our template: + * + * ```hbs + * Hello, {{user.name}}! + * ``` + * + * We can also take that property and pass it as an argument to the + * `UserGreeting` component we defined above: + * + * ```hbs + * + * ``` + * + * ## Arguments vs. Properties + * + * Remember, arguments are data that was given to your component by its parent + * component, and properties are data your component has defined for itself. + * + * You can tell the difference between arguments and properties in templates + * because arguments always start with an `@` sign (think "A is for arguments"): + * + * ```hbs + * {{@firstName}} + * ``` + * + * We know that `@firstName` came from the parent component, not the current + * component, because it starts with `@` and is therefore an argument. + * + * On the other hand, if we see: + * + * ```hbs + * {{name}} + * ``` + * + * We know that `name` is a property on the component. If we want to know where + * the data is coming from, we can go look at our component class to find out. + * + * Inside the component itself, arguments always show up inside the component's + * `args` property. For example, if `{{@firstName}}` is `Tom` in the template, + * inside the component `this.args.firstName` would also be `Tom`. + */ +export default class GlimmerComponent { + /** + * Constructs a new component and assigns itself the passed properties. You + * should not construct new components yourself. Instead, Glimmer will + * instantiate new components automatically as it renders. + * + * @param owner + * @param args + */ + constructor(owner: Owner, args: T) { + if ( + DEBUG && + !( + owner !== null && + typeof owner === 'object' && + args[MAGIC_PROP] === true + ) + ) { + throw new Error( + `You must pass both the owner and args to super() in your component: ${ + this.constructor.name + }. You can pass them directly, or use ...arguments to pass all arguments through.` + ); + } + + this.args = args; + setOwner(this, owner); + } + + /** + * Named arguments passed to the component from its parent component. + * They can be accessed in JavaScript via `this.args.argumentName` and in the template via `@argumentName`. + * + * Say you have the following component, which will have two `args`, `firstName` and `lastName`: + * + * ```hbs + * + * ``` + * + * If you needed to calculate `fullName` by combining both of them, you would do: + * + * ```ts + * didInsertElement() { + * console.log(`Hi, my full name is ${this.args.firstName} ${this.args.lastName}`); + * } + * ``` + * + * While in the template you could do: + * + * ```hbs + *

Welcome, {{@firstName}} {{@lastName}}!

+ * ``` + */ + args: T; + + [DESTROYING] = false; + [DESTROYED] = false; + + get isDestroying() { + return this[DESTROYING]; + } + + get isDestroyed() { + return this[DESTROYED]; + } + + /** + * Called before the component has been removed from the DOM. + */ + willDestroy() {} +} diff --git a/packages/@glimmer/component/addon/-private/owner.ts b/packages/@glimmer/component/addon/-private/owner.ts new file mode 100644 index 000000000..b7b0db435 --- /dev/null +++ b/packages/@glimmer/component/addon/-private/owner.ts @@ -0,0 +1 @@ +export { setOwner, Owner } from '@glimmer/di'; diff --git a/packages/@glimmer/component/addon/index.ts b/packages/@glimmer/component/addon/index.ts new file mode 100644 index 000000000..ca74c4f56 --- /dev/null +++ b/packages/@glimmer/component/addon/index.ts @@ -0,0 +1,16 @@ +import ApplicationInstance from '@ember/application/instance'; +import { setComponentManager } from '@ember/component'; +import { gte } from 'ember-compatibility-helpers'; + +import GlimmerComponentManager from './-private/component-manager'; +import GlimmerComponent from './-private/component'; + +if (gte('3.8.0-beta.1')) { + setComponentManager((owner: ApplicationInstance) => { + return new GlimmerComponentManager(owner); + }, GlimmerComponent); +} else { + setComponentManager('glimmer', GlimmerComponent); +} + +export default GlimmerComponent; diff --git a/packages/@glimmer/component/app/component-managers/glimmer.js b/packages/@glimmer/component/app/component-managers/glimmer.js new file mode 100644 index 000000000..f6b989692 --- /dev/null +++ b/packages/@glimmer/component/app/component-managers/glimmer.js @@ -0,0 +1 @@ +export { default } from '@glimmer/component/-private/component-manager'; diff --git a/packages/@glimmer/component/blueprints/glimmer-component-addon/files/__root__/__path__/__name__.js b/packages/@glimmer/component/blueprints/glimmer-component-addon/files/__root__/__path__/__name__.js new file mode 100644 index 000000000..83aac86a6 --- /dev/null +++ b/packages/@glimmer/component/blueprints/glimmer-component-addon/files/__root__/__path__/__name__.js @@ -0,0 +1 @@ +export { default } from '<%= modulePath %>'; diff --git a/packages/@glimmer/component/blueprints/glimmer-component-addon/files/__root__/__templatepath__/__templatename__.js b/packages/@glimmer/component/blueprints/glimmer-component-addon/files/__root__/__templatepath__/__templatename__.js new file mode 100644 index 000000000..05f00e878 --- /dev/null +++ b/packages/@glimmer/component/blueprints/glimmer-component-addon/files/__root__/__templatepath__/__templatename__.js @@ -0,0 +1 @@ +export { default } from '<%= templatePath %>'; diff --git a/packages/@glimmer/component/blueprints/glimmer-component-addon/index.js b/packages/@glimmer/component/blueprints/glimmer-component-addon/index.js new file mode 100644 index 000000000..607a01712 --- /dev/null +++ b/packages/@glimmer/component/blueprints/glimmer-component-addon/index.js @@ -0,0 +1,89 @@ +'use strict'; + +const path = require('path'); +const stringUtil = require('ember-cli-string-utils'); +const getPathOption = require('ember-cli-get-component-path-option'); +const normalizeEntityName = require('ember-cli-normalize-entity-name'); + +module.exports = { + description: 'Generates a component.', + + fileMapTokens() { + return { + // path of the folder, containing the component JS/TS re-export module + __path__({ pod, podPath, locals, dasherizedModuleName }) { + if (pod) { + return path.join(podPath, locals.path, dasherizedModuleName); + } + return 'components'; + }, + // name of the component JS/TS re-export module + __name__({ pod, dasherizedModuleName }) { + if (pod) { + return 'component'; + } + return dasherizedModuleName; + }, + // name of the component JS/TS re-export and HBS re-export + __root__({ inRepoAddon }) { + if (inRepoAddon) { + return path.join('lib', inRepoAddon, 'app'); + } + return 'app'; + }, + // path of the containing folder, within __root__ where the HBS + // re-export module is to be placed + __templatepath__({ pod, podPath, locals, dasherizedModuleName }) { + if (pod) { + return path.join(podPath, locals.path, dasherizedModuleName); + } + return 'templates/components'; + }, + // name of HBS re-export module + __templatename__({ pod, dasherizedModuleName }) { + if (pod) { + return 'template'; + } + return dasherizedModuleName; + } + }; + }, + + normalizeEntityName(entityName) { + return normalizeEntityName(entityName); + }, + + locals(options) { + const { inRepoAddon, inDummy, project, entity, pod } = options; + const addonRawName = inRepoAddon ? inRepoAddon : project.name(); + const addonName = stringUtil.dasherize(addonRawName); + const fileName = stringUtil.dasherize(entity.name); + let templatePath = ''; + let importPathName = [addonName, 'components', fileName].join('/'); + + // if we're in an addon, build import statement + if (project.isEmberCLIAddon() || (inRepoAddon && !inDummy)) { + if (pod) { + templatePath = './template'; + } else { + templatePath = [ + addonName, + 'templates/components', + stringUtil.dasherize(entity.name) + ].join('/'); + } + } + + if (pod) { + importPathName = [addonName, 'components', fileName, 'component'].join( + '/' + ); + } + + return { + modulePath: importPathName, + templatePath, + path: getPathOption(options) + }; + } +}; diff --git a/packages/@glimmer/component/blueprints/glimmer-component-test/index.js b/packages/@glimmer/component/blueprints/glimmer-component-test/index.js new file mode 100644 index 000000000..415aa71da --- /dev/null +++ b/packages/@glimmer/component/blueprints/glimmer-component-test/index.js @@ -0,0 +1,135 @@ +'use strict'; + +const path = require('path'); +const stringUtil = require('ember-cli-string-utils'); +const isPackageMissing = require('ember-cli-is-package-missing'); +const getPathOption = require('ember-cli-get-component-path-option'); + +const useTestFrameworkDetector = require('../test-framework-detector'); +const isModuleUnificationProject = require('../module-unification') + .isModuleUnificationProject; + +module.exports = useTestFrameworkDetector({ + description: 'Generates a component integration or unit test.', + + availableOptions: [ + { + name: 'test-type', + type: ['integration', 'unit'], + default: 'integration', + aliases: [ + { i: 'integration' }, + { u: 'unit' }, + { integration: 'integration' }, + { unit: 'unit' } + ] + }, + { + name: 'lang', + type: String + } + ], + + fileMapTokens() { + if (isModuleUnificationProject(this.project)) { + return { + __ext__(options) { + return options.locals.lang; + }, + __test__() { + return 'component-test'; + }, + __root__(options) { + if (options.inRepoAddon) { + return path.join('packages', options.inRepoAddon, 'src'); + } + return 'src'; + }, + __testType__(options) { + if (options.locals.testType === 'unit') { + throw "The --unit flag isn't supported within a module unification app"; + } + + return ''; + }, + __path__(options) { + if (options.pod) { + throw "Pods aren't supported within a module unification app"; + } + return path.join('ui', 'components', options.dasherizedModuleName); + } + }; + } else { + return { + __ext__(options) { + return options.locals.lang; + }, + __root__() { + return 'tests'; + }, + __testType__(options) { + return options.locals.testType || 'integration'; + }, + __path__(options) { + if (options.pod) { + return path.join( + options.podPath, + options.locals.path, + options.dasherizedModuleName + ); + } + return 'components'; + } + }; + } + }, + getDefaultLang(options) { + // if the ember-cli-typescript addon is detected, use ts as default + if ('ember-cli-typescript' in options.project.addonPackages) return 'ts'; + else return 'js'; // otherwise use js as default + }, + locals(options) { + let dasherizedModuleName = stringUtil.dasherize(options.entity.name); + let componentPathName = dasherizedModuleName; + let testType = options.testType || 'integration'; + + let friendlyTestDescription = [ + testType === 'unit' ? 'Unit' : 'Integration', + 'Component', + dasherizedModuleName + ].join(' | '); + + if (options.pod && options.path !== 'components' && options.path !== '') { + componentPathName = [options.path, dasherizedModuleName] + .filter(Boolean) + .join('/'); + } else if (isModuleUnificationProject(this.project)) { + if (options.inRepoAddon) { + componentPathName = `${options.inRepoAddon}::${dasherizedModuleName}`; + } else if (this.project.isEmberCLIAddon()) { + componentPathName = `${this.project.pkg.name}::${dasherizedModuleName}`; + } + } + const { lang = this.getDefaultLang(options) } = options; + + return { + path: getPathOption(options), + testType, + lang, + componentPathName, + friendlyTestDescription: friendlyTestDescription + }; + }, + + afterInstall(options) { + if ( + !options.dryRun && + options.testType === 'integration' && + isPackageMissing(this, 'ember-cli-htmlbars-inline-precompile') + ) { + return this.addPackagesToProject([ + { name: 'ember-cli-htmlbars-inline-precompile', target: '^0.3.1' } + ]); + } + } +}); diff --git a/packages/@glimmer/component/blueprints/glimmer-component-test/mocha-0.12-files/__root__/__testType__/__path__/__test__.__ext__ b/packages/@glimmer/component/blueprints/glimmer-component-test/mocha-0.12-files/__root__/__testType__/__path__/__test__.__ext__ new file mode 100644 index 000000000..d44e26f9a --- /dev/null +++ b/packages/@glimmer/component/blueprints/glimmer-component-test/mocha-0.12-files/__root__/__testType__/__path__/__test__.__ext__ @@ -0,0 +1,31 @@ +import { expect } from 'chai'; +import { describe, it } from 'mocha'; +import { setupComponentTest } from 'ember-mocha';<% if (testType === 'integration') { %> +import hbs from 'htmlbars-inline-precompile';<% } %> + +describe('<%= friendlyTestDescription %>', function() { + setupComponentTest('<%= componentPathName %>', { + <% if (testType === 'integration' ) { %>integration: true<% } else if(testType === 'unit') { %>// Specify the other units that are required for this test + // needs: ['component:foo', 'helper:bar'], + unit: true<% } %> + }); + + it('renders', function() { + <% if (testType === 'integration' ) { %>// Set any properties with this.set('myProperty', 'value'); + // Handle any actions with this.on('myAction', function(val) { ... }); + // Template block usage: + // this.render(hbs` + // {{#<%= dasherizedModuleName %>}} + // template content + // {{/<%= dasherizedModuleName %>}} + // `); + + this.render(hbs`{{<%= dasherizedModuleName %>}}`); + expect(this.$()).to.have.length(1);<% } else if(testType === 'unit') { %>// creates the component instance + let component = this.subject(); + // renders the component on the page + this.render(); + expect(component).to.be.ok; + expect(this.$()).to.have.length(1);<% } %> + }); +}); diff --git a/packages/@glimmer/component/blueprints/glimmer-component-test/mocha-files/__root__/__testType__/__path__/__test__.__ext__ b/packages/@glimmer/component/blueprints/glimmer-component-test/mocha-files/__root__/__testType__/__path__/__test__.__ext__ new file mode 100644 index 000000000..881086d03 --- /dev/null +++ b/packages/@glimmer/component/blueprints/glimmer-component-test/mocha-files/__root__/__testType__/__path__/__test__.__ext__ @@ -0,0 +1,31 @@ +import { expect } from 'chai'; +import { describeComponent, it } from 'ember-mocha';<% if (testType === 'integration') { %> +import hbs from 'htmlbars-inline-precompile';<% } %> + +describeComponent('<%= componentPathName %>', '<%= friendlyTestDescription %>', + { + <% if (testType === 'integration' ) { %>integration: true<% } else if(testType === 'unit') { %>// Specify the other units that are required for this test + // needs: ['component:foo', 'helper:bar'], + unit: true<% } %> + }, + function() { + it('renders', function() { + <% if (testType === 'integration' ) { %>// Set any properties with this.set('myProperty', 'value'); + // Handle any actions with this.on('myAction', function(val) { ... }); + // Template block usage: + // this.render(hbs` + // {{#<%= dasherizedModuleName %>}} + // template content + // {{/<%= dasherizedModuleName %>}} + // `); + + this.render(hbs`{{<%= dasherizedModuleName %>}}`); + expect(this.$()).to.have.length(1);<% } else if(testType === 'unit') { %>// creates the component instance + let component = this.subject(); + // renders the component on the page + this.render(); + expect(component).to.be.ok; + expect(this.$()).to.have.length(1);<% } %> + }); + } +); diff --git a/packages/@glimmer/component/blueprints/glimmer-component-test/qunit-files/__root__/__testType__/__path__/__test__.__ext__ b/packages/@glimmer/component/blueprints/glimmer-component-test/qunit-files/__root__/__testType__/__path__/__test__.__ext__ new file mode 100644 index 000000000..faf52d999 --- /dev/null +++ b/packages/@glimmer/component/blueprints/glimmer-component-test/qunit-files/__root__/__testType__/__path__/__test__.__ext__ @@ -0,0 +1,31 @@ +import { moduleForComponent, test } from 'ember-qunit';<% if (testType === 'integration') { %> +import hbs from 'htmlbars-inline-precompile';<% } %> + +moduleForComponent('<%= componentPathName %>', '<%= friendlyTestDescription %>', { + <% if (testType === 'integration' ) { %>integration: true<% } else if(testType === 'unit') { %>// Specify the other units that are required for this test + // needs: ['component:foo', 'helper:bar'], + unit: true<% } %> +}); + +test('it renders', function(assert) { + <% if (testType === 'integration' ) { %>// Set any properties with this.set('myProperty', 'value'); + // Handle any actions with this.on('myAction', function(val) { ... }); + + this.render(hbs`{{<%= componentPathName %>}}`); + + assert.equal(this.$().text().trim(), ''); + + // Template block usage: + this.render(hbs` + {{#<%= componentPathName %>}} + template block text + {{/<%= componentPathName %>}} + `); + + assert.equal(this.$().text().trim(), 'template block text');<% } else if(testType === 'unit') { %> + // Creates the component instance + /*let component =*/ this.subject(); + // Renders the component to the page + this.render(); + assert.equal(this.$().text().trim(), '');<% } %> +}); diff --git a/packages/@glimmer/component/blueprints/glimmer-component-test/qunit-rfc-232-files/__root__/__testType__/__path__/__test__.__ext__ b/packages/@glimmer/component/blueprints/glimmer-component-test/qunit-rfc-232-files/__root__/__testType__/__path__/__test__.__ext__ new file mode 100644 index 000000000..01c1302f4 --- /dev/null +++ b/packages/@glimmer/component/blueprints/glimmer-component-test/qunit-rfc-232-files/__root__/__testType__/__path__/__test__.__ext__ @@ -0,0 +1,36 @@ +<% if (testType === 'integration') { %>import { module, test } from 'qunit'; +import { setupRenderingTest } from 'ember-qunit'; +import { render } from '@ember/test-helpers'; +import hbs from 'htmlbars-inline-precompile'; + +module('<%= friendlyTestDescription %>', function(hooks) { + setupRenderingTest(hooks); + + test('it renders', async function(assert) { + // Set any properties with this.set('myProperty', 'value'); + // Handle any actions with this.set('myAction', function(val) { ... }); + + await render(hbs`{{<%= componentPathName %>}}`); + + assert.equal(('' + this.element.textContent).trim(), ''); + + // Template block usage: + await render(hbs` + {{#<%= componentPathName %>}} + template block text + {{/<%= componentPathName %>}} + `); + + assert.equal(('' + this.element.textContent).trim(), 'template block text'); + }); +});<% } else if (testType === 'unit') { %>import { module, test } from 'qunit'; +import { setupTest } from 'ember-qunit'; + +module('<%= friendlyTestDescription %>', function(hooks) { + setupTest(hooks); + + test('it exists', function(assert) { + let component = this.owner.factoryFor('component:<%= componentPathName %>').create(); + assert.ok(component); + }); +});<% } %> diff --git a/packages/@glimmer/component/blueprints/glimmer-component/files/__root__/__path__/__name__.__ext__ b/packages/@glimmer/component/blueprints/glimmer-component/files/__root__/__path__/__name__.__ext__ new file mode 100644 index 000000000..69912219e --- /dev/null +++ b/packages/@glimmer/component/blueprints/glimmer-component/files/__root__/__path__/__name__.__ext__ @@ -0,0 +1,5 @@ +import Component from '@glimmer/component'; + +export default class <%= classifiedModuleName %> extends Component { + +} diff --git a/packages/@glimmer/component/blueprints/glimmer-component/files/__root__/__templatepath__/__templatename__.hbs b/packages/@glimmer/component/blueprints/glimmer-component/files/__root__/__templatepath__/__templatename__.hbs new file mode 100644 index 000000000..889d9eead --- /dev/null +++ b/packages/@glimmer/component/blueprints/glimmer-component/files/__root__/__templatepath__/__templatename__.hbs @@ -0,0 +1 @@ +{{yield}} diff --git a/packages/@glimmer/component/blueprints/glimmer-component/index.js b/packages/@glimmer/component/blueprints/glimmer-component/index.js new file mode 100644 index 000000000..5ea70b3b2 --- /dev/null +++ b/packages/@glimmer/component/blueprints/glimmer-component/index.js @@ -0,0 +1,110 @@ +'use strict'; + +const path = require('path'); +const stringUtil = require('ember-cli-string-utils'); +const getPathOption = require('ember-cli-get-component-path-option'); +const normalizeEntityName = require('ember-cli-normalize-entity-name'); +const isModuleUnificationProject = require('../module-unification') + .isModuleUnificationProject; + +module.exports = { + description: 'Generates a @glimmer/component', + + availableOptions: [ + { + name: 'path', + type: String, + default: 'components', + aliases: [{ 'no-path': '' }] + }, + { + name: 'lang', + type: String + } + ], + + filesPath() { + let filesDirectory = 'files'; + + if (isModuleUnificationProject(this.project)) { + filesDirectory = 'module-unification-files'; + } + + return path.join(this.path, filesDirectory); + }, + + fileMapTokens() { + if (isModuleUnificationProject(this.project)) { + return { + // component extension (ts or js) + __ext__(options) { + return options.locals.lang; + }, + // component root folder (i.e., app, addon, etc...) + __root__({ inRepoAddon, inDummy }) { + if (inRepoAddon) { + return path.join('packages', inRepoAddon, 'src'); + } + if (inDummy) { + return path.join('tests', 'dummy', 'src'); + } + return 'src'; + }, + // component path within __root__ + __path__({ dasherizedModuleName }) { + return path.join('ui', 'components', dasherizedModuleName); + } + }; + } else { + return { + // component extension (ts or js) + __ext__(options) { + return options.locals.lang; + }, + // component path within app or addon folder + __path__({ pod, podPath, locals, dasherizedModuleName }) { + if (pod) { + return path.join(podPath, locals.path, dasherizedModuleName); + } else { + return 'components'; + } + }, + // path of the folder for component's template + // NOTE: in an addon, this will be the private template + // in the /addon/templates/components folder + __templatepath__({ pod, podPath, locals, dasherizedModuleName }) { + if (pod) { + return path.join(podPath, locals.path, dasherizedModuleName); + } + return 'templates/components'; + }, + // name of the template file + __templatename__({ pod, dasherizedModuleName }) { + if (pod) { + return 'template'; + } + return dasherizedModuleName; + } + }; + } + }, + + normalizeEntityName(entityName) { + return normalizeEntityName(entityName); + }, + + getDefaultLang(options) { + // if the ember-cli-typescript addon is detected, use ts as default + if ('ember-cli-typescript' in options.project.addonPackages) return 'ts'; + else return 'js'; // otherwise use js as default + }, + locals(options) { + const { lang = this.getDefaultLang(options) } = options; + const classifiedModuleName = stringUtil.classify(options.entity.name); + return { + classifiedModuleName, + lang, + path: getPathOption(options) + }; + } +}; diff --git a/packages/@glimmer/component/blueprints/glimmer-component/module-unification-files/__root__/__path__/component.__ext__ b/packages/@glimmer/component/blueprints/glimmer-component/module-unification-files/__root__/__path__/component.__ext__ new file mode 100644 index 000000000..69912219e --- /dev/null +++ b/packages/@glimmer/component/blueprints/glimmer-component/module-unification-files/__root__/__path__/component.__ext__ @@ -0,0 +1,5 @@ +import Component from '@glimmer/component'; + +export default class <%= classifiedModuleName %> extends Component { + +} diff --git a/packages/@glimmer/component/blueprints/glimmer-component/module-unification-files/__root__/__path__/template.hbs b/packages/@glimmer/component/blueprints/glimmer-component/module-unification-files/__root__/__path__/template.hbs new file mode 100644 index 000000000..889d9eead --- /dev/null +++ b/packages/@glimmer/component/blueprints/glimmer-component/module-unification-files/__root__/__path__/template.hbs @@ -0,0 +1 @@ +{{yield}} diff --git a/packages/@glimmer/component/blueprints/install-glimmer-component/index.js b/packages/@glimmer/component/blueprints/install-glimmer-component/index.js new file mode 100644 index 000000000..1ebfa140f --- /dev/null +++ b/packages/@glimmer/component/blueprints/install-glimmer-component/index.js @@ -0,0 +1,5 @@ +/* eslint-env node */ +module.exports = { + description: 'Setup the @glimmer/component library', + normalizeEntityName() {} +}; diff --git a/packages/@glimmer/component/blueprints/module-unification.js b/packages/@glimmer/component/blueprints/module-unification.js new file mode 100644 index 000000000..1f6015373 --- /dev/null +++ b/packages/@glimmer/component/blueprints/module-unification.js @@ -0,0 +1,10 @@ +/* eslint-env node */ +'use strict'; + +module.exports = { + isModuleUnificationProject(project) { + return ( + project && project.isModuleUnification && project.isModuleUnification() + ); + } +}; diff --git a/packages/@glimmer/component/blueprints/test-framework-detector.js b/packages/@glimmer/component/blueprints/test-framework-detector.js new file mode 100644 index 000000000..1c7f12cf5 --- /dev/null +++ b/packages/@glimmer/component/blueprints/test-framework-detector.js @@ -0,0 +1,50 @@ +/* eslint-env node */ +'use strict'; + +const fs = require('fs'); +const path = require('path'); +const VersionChecker = require('ember-cli-version-checker'); + +module.exports = function(blueprint) { + blueprint.supportsAddon = function() { + return false; + }; + + blueprint.filesPath = function() { + let type; + + let dependencies = this.project.dependencies(); + if ('ember-qunit' in dependencies) { + type = 'qunit-rfc-232'; + } else if ('ember-cli-qunit' in dependencies) { + let checker = new VersionChecker(this.project); + if ( + fs.existsSync(this.path + '/qunit-rfc-232-files') && + checker.for('ember-cli-qunit', 'npm').gte('4.2.0') + ) { + type = 'qunit-rfc-232'; + } else { + type = 'qunit'; + } + } else if ('ember-mocha' in dependencies) { + type = 'mocha-0.12'; + } else if ('ember-cli-mocha' in dependencies) { + let checker = new VersionChecker(this.project); + if ( + fs.existsSync(this.path + '/mocha-0.12-files') && + checker.for('ember-cli-mocha', 'npm').gte('0.12.0') + ) { + type = 'mocha-0.12'; + } else { + type = 'mocha'; + } + } else { + this.ui.writeLine("Couldn't determine test style - using QUnit"); + type = 'qunit'; + } + + return path.join(this.path, type + '-files'); + }; + + return blueprint; +}; diff --git a/packages/@glimmer/component/config/ember-try.js b/packages/@glimmer/component/config/ember-try.js new file mode 100644 index 000000000..38ee33b2a --- /dev/null +++ b/packages/@glimmer/component/config/ember-try.js @@ -0,0 +1,55 @@ +'use strict'; + +const getChannelURL = require('ember-source-channel-url'); + +module.exports = function() { + return Promise.all([ + getChannelURL('release'), + getChannelURL('beta'), + getChannelURL('canary'), + ]).then(urls => { + return { + useYarn: true, + scenarios: [ + { + name: 'ember-lts-3.4', + npm: { + devDependencies: { + 'ember-source': '~3.4.0', + }, + }, + }, + { + name: 'ember-release', + npm: { + devDependencies: { + 'ember-source': urls[0], + }, + }, + }, + { + name: 'ember-beta', + npm: { + devDependencies: { + 'ember-source': urls[1], + }, + }, + }, + { + name: 'ember-canary', + npm: { + devDependencies: { + 'ember-source': urls[2], + }, + }, + }, + { + name: 'ember-default', + npm: { + devDependencies: {}, + }, + }, + ], + }; + }); +}; diff --git a/packages/@glimmer/component/config/environment.js b/packages/@glimmer/component/config/environment.js new file mode 100644 index 000000000..0dfaed472 --- /dev/null +++ b/packages/@glimmer/component/config/environment.js @@ -0,0 +1,5 @@ +'use strict'; + +module.exports = function(/* environment, appConfig */) { + return { }; +}; diff --git a/packages/@glimmer/component/ember-addon-main.js b/packages/@glimmer/component/ember-addon-main.js new file mode 100644 index 000000000..bf3c74555 --- /dev/null +++ b/packages/@glimmer/component/ember-addon-main.js @@ -0,0 +1,39 @@ +'use strict'; + +const writeFile = require('broccoli-file-creator'); +const MergeTrees = require('broccoli-merge-trees'); + +module.exports = { + name: '@glimmer/component', + + included(includer) { + let pkg = 'pkg' in includer ? includer.pkg : includer.project.pkg; + + if ( + (pkg.dependencies && '@glimmer/application' in pkg.dependencies) || + (pkg.devDependencies && '@glimmer/application' in pkg.devDependencies) + ) { + // this is a Glimmer application, don't include nested addons or run addon code + return; + } + + this._super.included.apply(this, arguments); + }, + + treeForAddon(tree) { + let ownerOverride = writeFile( + '-private/owner.ts', + ` + export { setOwner } from '@ember/application'; + export type Owner = any; + ` + ); + + return this._super.treeForAddon.call( + this, + new MergeTrees([tree, ownerOverride], { + overwrite: true, + }) + ); + }, +}; diff --git a/packages/@glimmer/component/ember-cli-build.js b/packages/@glimmer/component/ember-cli-build.js new file mode 100644 index 000000000..fba2390a7 --- /dev/null +++ b/packages/@glimmer/component/ember-cli-build.js @@ -0,0 +1,29 @@ +'use strict'; + +const EmberAddon = require('ember-cli/lib/broccoli/ember-addon'); +const Funnel = require('broccoli-funnel'); + +module.exports = function(defaults) { + let app = new EmberAddon(defaults, { + configPath: './test/ember/dummy/config/environment', + trees: { + app: 'test/ember/dummy/app', + public: 'test/ember/dummy/public', + src: null, + styles: 'test/ember/dummy/app/styles', + templates: 'test/ember/dummy/app/templates', + tests: new Funnel('test/ember', { + exclude: [/^dummy/], + }), + }, + }); + + /* + This build file specifies the options for the dummy test app of this + addon, located in `/tests/dummy` + This build file does *not* influence how the addon or the app using it + behave. You most likely want to be modifying `./index.js` or app's build file + */ + + return app.toTree(); +}; diff --git a/packages/@glimmer/component/index.ts b/packages/@glimmer/component/index.ts index 5ee51bf13..a7a896c05 100644 --- a/packages/@glimmer/component/index.ts +++ b/packages/@glimmer/component/index.ts @@ -1,8 +1,13 @@ export { default, ComponentFactory } from './src/component'; export { default as ComponentDefinition } from './src/component-definition'; export { default as ComponentManager } from './src/component-manager'; -export { tracked, setPropertyDidChange, tagForProperty, UntrackedPropertyError } from './src/tracked'; -export { RootReference, CachedReference, UpdatableReference, ConditionalReference } from './src/references'; +export { + RootReference, + CachedReference, + UpdatableReference, + ConditionalReference, +} from './src/references'; export { default as TemplateMeta } from './src/template-meta'; -export { default as Bounds } from './src/bounds'; export { CAPABILITIES } from './src/capabilities'; + +export { tracked } from '@glimmer/tracking'; diff --git a/packages/@glimmer/component/package.json b/packages/@glimmer/component/package.json index db3cc43f0..2886ab07f 100644 --- a/packages/@glimmer/component/package.json +++ b/packages/@glimmer/component/package.json @@ -2,30 +2,102 @@ "name": "@glimmer/component", "version": "0.13.0", "description": "Glimmer component library", - "contributors": [ - "Dan Gebhardt ", - "Tom Dale " + "keywords": [ + "ember-addon" ], - "repository": "https://github.com/glimmerjs/glimmer-component", "license": "MIT", - "files": [ - "dist" - ], "main": "dist/commonjs/es5/index.js", "module": "dist/modules/es2017/index.js", "types": "dist/types/index.d.ts", + "contributors": [ + "Dan Gebhardt ", + "Robert Jackson ", + "Tom Dale " + ], + "directories": { + "doc": "doc", + "test": "tests" + }, + "repository": "https://github.com/glimmerjs/glimmer.js", + "scripts": { + "build": "ember build", + "lint:js": "eslint .", + "start": "ember serve", + "test": "ember test", + "test:all": "ember try:each", + "prepublishOnly": "ember ts:precompile", + "postpublish": "ember ts:clean", + "test:node": "mocha test/mocha --recursive" + }, "dependencies": { "@glimmer/di": "^0.1.9", "@glimmer/env": "^0.1.7", "@glimmer/reference": "^0.39.1", "@glimmer/runtime": "^0.39.1", - "@glimmer/util": "^0.39.1" + "@glimmer/util": "^0.39.1", + "@glimmer/tracking": "^0.13.0", + "broccoli-file-creator": "^2.1.1", + "broccoli-merge-trees": "^3.0.2", + "ember-cli-babel": "^7.2.0", + "ember-cli-get-component-path-option": "^1.0.0", + "ember-cli-is-package-missing": "^1.0.0", + "ember-cli-normalize-entity-name": "^1.0.0", + "ember-cli-path-utils": "^1.0.0", + "ember-cli-string-utils": "^1.1.0", + "ember-cli-typescript": "^2.0.0-rc.1", + "ember-compatibility-helpers": "^1.1.2" }, "devDependencies": { + "@ember-decorators/babel-transforms": "^5.0.0", + "@ember/optional-features": "^0.6.1", "@glimmer/application-test-helpers": "^0.13.0", "@glimmer/compiler": "^0.39.1", "@glimmer/interfaces": "^0.39.1", "@glimmer/resolver": "^0.3.0", - "@glimmer/wire-format": "^0.39.1" + "@glimmer/wire-format": "^0.39.1", + "@types/ember": "~3.0.26", + "@types/ember-qunit": "~3.4.3", + "@types/ember-test-helpers": "~1.0.4", + "@types/ember-testing-helpers": "^0.0.3", + "@types/ember__test-helpers": "~0.7.6", + "@types/mocha": "^5.2.5", + "@types/qunit": "^2.5.3", + "@types/rsvp": "^4.0.2", + "babel-eslint": "^8.2.6", + "broccoli-asset-rev": "^2.7.0", + "broccoli-funnel": "^2.0.1", + "ember-ajax": "^3.0.0", + "ember-cli": "~3.4.0-beta.1", + "ember-cli-blueprint-test-helpers": "^0.19.1", + "ember-cli-dependency-checker": "^2.0.0", + "ember-cli-htmlbars": "^2.0.3", + "ember-cli-htmlbars-inline-precompile": "^1.0.3", + "ember-cli-inject-live-reload": "^1.4.1", + "ember-cli-qunit": "^4.3.2", + "ember-cli-sri": "^2.1.0", + "ember-cli-uglify": "^2.1.0", + "ember-decorators": "^5.1.2", + "ember-disable-prototype-extensions": "^1.1.2", + "ember-export-application-global": "^2.0.0", + "ember-load-initializers": "^1.1.0", + "ember-maybe-import-regenerator": "^0.1.6", + "ember-resolver": "^5.0.0", + "ember-source": "~3.4.0", + "ember-source-channel-url": "^1.0.1", + "ember-try": "^1.0.0-beta.3", + "eslint-plugin-ember": "^5.0.0", + "eslint-plugin-node": "^6.0.1", + "loader.js": "^4.2.3", + "mocha": "^5.0.0", + "qunit-dom": "^0.7.1", + "typescript": "^2.9.2" + }, + "engines": { + "node": "6.* || 8.* || >= 10.*" + }, + "ember-addon": { + "configPath": "tests/dummy/config", + "defaultBlueprint": "install-glimmer-component", + "main": "ember-addon-main.js" } } diff --git a/packages/@glimmer/component/src/bounds.ts b/packages/@glimmer/component/src/bounds.ts deleted file mode 100644 index 8fe5c46c0..000000000 --- a/packages/@glimmer/component/src/bounds.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { Bounds as VMBounds } from '@glimmer/interfaces'; - -/** - * Contains the first and last DOM nodes in a component's rendered - * template. These nodes can be used to traverse the section of DOM - * that belongs to a particular component. - * - * Note that these nodes *can* change over the lifetime of a component - * if the beginning or ending of the template is dynamic. - */ -export default class Bounds { - constructor(private _bounds: VMBounds) { - } - - get firstNode(): Node { - return this._bounds.firstNode() as Node; - } - - get lastNode(): Node { - return this._bounds.lastNode() as Node; - } -} diff --git a/packages/@glimmer/component/src/component-manager.ts b/packages/@glimmer/component/src/component-manager.ts index d3f00c7b8..40d371fc8 100644 --- a/packages/@glimmer/component/src/component-manager.ts +++ b/packages/@glimmer/component/src/component-manager.ts @@ -1,7 +1,6 @@ -import { Owner } from "@glimmer/di"; -import { Tag } from "@glimmer/reference"; +import { Owner } from '@glimmer/di'; +import { Tag } from '@glimmer/reference'; import { - Bounds as VMBounds, ComponentManager as VMComponentManager, RuntimeResolver, ComponentCapabilities, @@ -16,25 +15,26 @@ import { Destroyable, JitRuntimeResolver, AotRuntimeResolver, - CompilableProgram -} from "@glimmer/interfaces"; + CompilableProgram, +} from '@glimmer/interfaces'; import { VersionedPathReference, PathReference, - CONSTANT_TAG -} from "@glimmer/reference"; -import { DEBUG } from "@glimmer/env"; + CONSTANT_TAG, +} from '@glimmer/reference'; +import { DEBUG } from '@glimmer/env'; -import Component from "./component"; -import Bounds from "./bounds"; -import { DefinitionState } from "./component-definition"; +import Component from './component'; +import { DefinitionState } from './component-definition'; import { RootReference, - TemplateOnlyComponentDebugReference -} from "./references"; -import ExtendedTemplateMeta from "./template-meta"; -import { SerializedTemplateWithLazyBlock } from "@glimmer/application/src/loaders/runtime-compiler/resolver"; -import { Specifier } from "@glimmer/application/src/loaders/runtime-compiler/loader"; + TemplateOnlyComponentDebugReference, +} from './references'; +import ExtendedTemplateMeta from './template-meta'; +import { SerializedTemplateWithLazyBlock } from '@glimmer/application/src/loaders/runtime-compiler/resolver'; +import { Specifier } from '@glimmer/application/src/loaders/runtime-compiler/loader'; + +import { MAGIC_PROP, DESTROYING, DESTROYED } from '../addon/-private/component'; export interface ConstructorOptions { env: EnvironmentWithOwner; @@ -51,19 +51,16 @@ export class ComponentStateBucket { owner: Owner, env: EnvironmentWithOwner ) { - let componentFactory = definition.ComponentClass; - let name = definition.name; - + let { ComponentClass, name } = definition; this.args = args; - let injections = { - debugName: name, - args: this.namedArgsSnapshot() - }; + if (ComponentClass) { + if (ComponentClass.class !== undefined) { + ComponentClass = ComponentClass.class; + } - env.setOwner(injections, owner); - if (componentFactory) { - this.component = componentFactory.create(injections); + this.component = new ComponentClass(owner, this.namedArgsSnapshot()); + this.component.debugName = name; } } @@ -72,7 +69,16 @@ export class ComponentStateBucket { } namedArgsSnapshot(): Readonly> { - return Object.freeze(this.args.named.value()); + let snapshot = this.args.named.value(); + + if (DEBUG) { + Object.defineProperty(snapshot, MAGIC_PROP, { + enumerable: false, + value: true, + }); + } + + return Object.freeze(snapshot); } } @@ -149,11 +155,11 @@ export default class ComponentManager if (handle && symbolTable) { return { handle, - symbolTable + symbolTable, }; } - throw new Error("unimplemented getAotStaticLayout"); + throw new Error('unimplemented getAotStaticLayout'); } create( @@ -196,25 +202,9 @@ export default class ComponentManager didCreateElement(bucket: ComponentStateBucket, element: HTMLElement) {} - didRenderLayout(bucket: ComponentStateBucket, bounds: VMBounds) { - if (DEBUG && bucket instanceof TemplateOnlyComponentDebugBucket) { - return; - } - if (!bucket) { - return; - } - bucket.component.bounds = new Bounds(bounds); - } + didRenderLayout() {} - didCreate(bucket: ComponentStateBucket) { - if (DEBUG && bucket instanceof TemplateOnlyComponentDebugBucket) { - return; - } - if (!bucket) { - return; - } - bucket.component.didInsertElement(); - } + didCreate() {} getTag(bucket: ComponentStateBucket): Tag { if (DEBUG && bucket instanceof TemplateOnlyComponentDebugBucket) { @@ -239,16 +229,7 @@ export default class ComponentManager didUpdateLayout() {} - didUpdate(bucket: ComponentStateBucket) { - if (DEBUG && bucket instanceof TemplateOnlyComponentDebugBucket) { - return; - } - if (!bucket) { - return; - } - - bucket.component.didUpdate(); - } + didUpdate() {} getDestructor(bucket: ComponentStateBucket): Destroyable { if (DEBUG && bucket instanceof TemplateOnlyComponentDebugBucket) { @@ -258,7 +239,13 @@ export default class ComponentManager return NOOP_DESTROYABLE; } - return bucket.component; + return { + destroy() { + bucket.component[DESTROYING] = true; + bucket.component.willDestroy(); + bucket.component[DESTROYED] = true; + }, + }; } } diff --git a/packages/@glimmer/component/src/component.ts b/packages/@glimmer/component/src/component.ts index 04bbe0c62..1f9d58c96 100644 --- a/packages/@glimmer/component/src/component.ts +++ b/packages/@glimmer/component/src/component.ts @@ -1,266 +1,9 @@ -import { assert } from "@glimmer/util"; -import { metaFor, trackedGet } from "./tracked"; -import { CURRENT_TAG } from "@glimmer/reference"; +import { metaFor, trackedGet } from '@glimmer/tracking'; +import { CURRENT_TAG } from '@glimmer/reference'; -export interface Bounds { - firstNode: Node; - lastNode: Node; -} - -/** - * The `Component` class defines an encapsulated UI element that is rendered to - * the DOM. A component is made up of a template and, optionally, this component - * object. - * - * ## Defining a Component - * - * To define a component, subclass `Component` and add your own properties, - * methods and lifecycle hooks: - * - * ```ts - * import Component from '@glimmer/component'; - * - * export default class extends Component { - * } - * ``` - * - * ## Lifecycle Hooks - * - * Lifecycle hooks allow you to respond to changes to a component, such as when - * it gets created, rendered, updated or destroyed. To add a lifecycle hook to a - * component, implement the hook as a method on your component subclass. - * - * For example, to be notified when Glimmer has rendered your component so you - * can attach a legacy jQuery plugin, implement the `didInsertElement()` method: - * - * ```ts - * import Component from '@glimmer/component'; - * - * export default class extends Component { - * didInsertElement() { - * $(this.element).pickadate(); - * } - * } - * ``` - * - * ## Data for Templates - * - * `Component`s have two different kinds of data, or state, that can be - * displayed in templates: - * - * 1. Arguments - * 2. Properties - * - * Arguments are data that is passed in to a component from its parent - * component. For example, if I have a `UserGreeting` component, I can pass it - * a name and greeting to use: - * - * ```hbs - * - * ``` - * - * Inside my `UserGreeting` template, I can access the `@name` and `@greeting` - * arguments that I've been given: - * - * ```hbs - * {{@greeting}}, {{@name}}! - * ``` - * - * Arguments are also available inside my component: - * - * ```ts - * console.log(this.args.greeting); // prints "Olá" - * ``` - * - * Properties, on the other hand, are internal to the component and declared in - * the class. You can use properties to store data that you want to show in the - * template, or pass to another component as an argument. - * - * ```ts - * import Component from '@glimmer/component'; - * - * export default class extends Component { - * user = { - * name: 'Robbie' - * } - * } - * ``` - * - * In the above example, we've defined a component with a `user` property that - * contains an object with its own `name` property. - * - * We can render that property in our template: - * - * ```hbs - * Hello, {{user.name}}! - * ``` - * - * We can also take that property and pass it as an argument to the - * `UserGreeting` component we defined above: - * - * ```hbs - * - * ``` - * - * ## Arguments vs. Properties - * - * Remember, arguments are data that was given to your component by its parent - * component, and properties are data your component has defined for itself. - * - * You can tell the difference between arguments and properties in templates - * because arguments always start with an `@` sign (think "A is for arguments"): - * - * ```hbs - * {{@firstName}} - * ``` - * - * We know that `@firstName` came from the parent component, not the current - * component, because it starts with `@` and is therefore an argument. - * - * On the other hand, if we see: - * - * ```hbs - * {{name}} - * ``` - * - * We know that `name` is a property on the component. If we want to know where - * the data is coming from, we can go look at our component class to find out. - * - * Inside the component itself, arguments always show up inside the component's - * `args` property. For example, if `{{@firstName}}` is `Tom` in the template, - * inside the component `this.args.firstName` would also be `Tom`. - */ -class Component { - /** - * Contains the first and last DOM nodes of a component's rendered template. - * These nodes can be used to traverse all of the DOM nodes that belong to a - * particular component. - * - * Note that a component's first and last nodes *can* change over time, if the - * beginning or ending of the template is dynamic. You should always access - * `bounds` directly at the time a node is needed to ensure you are acting on - * up-to-date nodes. - * - * ### Examples - * - * For components with a single root element, `this.bounds.firstNode` and - * `this.bounds.lastNode` are the same. - * - * ```hbs - * - * ``` - * - * ```ts - * export default class extends Component { - * didInsertElement() { - * let { firstNode, lastNode } = this.bounds; - * console.log(firstNode === lastNode); // true - * console.log(firstNode.className); // "user-profile" - * } - * } - * ``` - * - * For components with multiple root nodes, `this.bounds.firstNode` refers to - * the first node in the template and `this.bounds.lastNode` refers to the - * last: - * - * ```hbs - * Welcome to Glimmer.js! - * Let's build some components! - * - * ``` - * - * ```ts - * export default class extends Component { - * didInsertElement() { - * let { firstNode, lastNode } = this.bounds; - * - * // Walk all of the DOM siblings from the - * // firstNode to the lastNode and push their - * // nodeName into an array. - * let node = firstNode; - * let names = [firstNode.nodeName]; - * do { - * node = node.nextSibling; - * names.push(node.nodeName); - * } while (node !== lastNode); - * - * console.log(names); - * // ["#text", "SPAN", "IMG"] - * } - * } - * ``` - * - * The bounds can change if the template has dynamic content at the beginning - * or the end: - * - * ```hbs - * {{#if user.isAdmin}} - * Admin - * {{else}} - * Normal User - * {{/if}} - * ``` - * - * In this example, the `firstNode` will change between a `span` element and a - * `TextNode` as the `user.isAdmin` property changes. - */ - bounds: Bounds; - - /** - * The element corresponding to the main element of the component's template. - * The main element is the element in the template that has `...attributes` set on it: - * - * ```hbs - *

Modal

- *
- * {{yield}} - *
- * ``` - * - * In this example, `this.element` would be the `div` with the class `contents`. - * - * You should not try to access this property until after the component's `didInsertElement()` - * lifecycle hook is called. - */ - get element(): HTMLElement { - let { bounds } = this; - assert(bounds && bounds.firstNode === bounds.lastNode, `The 'element' property can only be accessed on components that contain a single root element in their template. Try using 'bounds' instead to access the first and last nodes.`); - return bounds.firstNode as HTMLElement; - } +import GlimmerComponent from '../addon/-private/component'; - /** - * Development-mode only name of the component, useful for debugging. - */ - debugName: string | null = null; - - /** - * Named arguments passed to the component from its parent component. - * They can be accessed in JavaScript via `this.args.argumentName` and in the template via `@argumentName`. - * - * Say you have the following component, which will have two `args`, `firstName` and `lastName`: - * - * ```hbs - * - * ``` - * - * If you needed to calculate `fullName` by combining both of them, you would do: - * - * ```ts - * didInsertElement() { - * console.log(`Hi, my full name is ${this.args.firstName} ${this.args.lastName}`); - * } - * ``` - * - * While in the template you could do: - * - * ```hbs - *

Welcome, {{@firstName}} {{@lastName}}!

- * ``` - * - */ +export default class Component extends GlimmerComponent { get args() { trackedGet(this, 'args'); return this.__args__; @@ -268,57 +11,30 @@ class Component { set args(args) { this.__args__ = args; - metaFor(this).updatableTagFor("args").inner.update(CURRENT_TAG); + metaFor(this) + .updatableTagFor('args') + .inner.update(CURRENT_TAG); } /** @private * Slot on the component to save Arguments object passed to the `args` setter. */ - private __args__: any = null; + private __args__: any; - static create(injections: any) { - return new this(injections); - } + // static create(injections: any) { + // return new this(injections); + // } /** - * Constructs a new component and assigns itself the passed properties. You - * should not construct new components yourself. Instead, Glimmer will - * instantiate new components automatically as it renders. - * - * @param options - */ - constructor(options: object) { - Object.assign(this, options); - } - - /** - * Called when the component has been inserted into the DOM. - * Override this function to do any set up that requires an element in the document body. - */ - didInsertElement() { } - - /** - * Called when the component has updated and rerendered itself. - * Called only during a rerender, not during an initial render. - */ - didUpdate() { } - - /** - * Called before the component has been removed from the DOM. + * Development-mode only name of the component, useful for debugging. */ - willDestroy() { } - - destroy() { - this.willDestroy(); - } + debugName: string | null = null; toString() { return `${this.debugName} component`; } } -export default Component; - export interface ComponentFactory { create(injections: object): Component; } diff --git a/packages/@glimmer/component/src/references.ts b/packages/@glimmer/component/src/references.ts index 6c7c50593..d4e07c457 100644 --- a/packages/@glimmer/component/src/references.ts +++ b/packages/@glimmer/component/src/references.ts @@ -1,4 +1,4 @@ -import { dict } from "@glimmer/util"; +import { dict } from '@glimmer/util'; import { PathReference, CONSTANT_TAG, @@ -8,13 +8,13 @@ import { combine, isConst, Tag, - TagWrapper -} from "@glimmer/reference"; + TagWrapper, +} from '@glimmer/reference'; import { ConditionalReference as GlimmerConditionalReference, - PrimitiveReference -} from "@glimmer/runtime"; -import { tagForProperty } from "./tracked"; + PrimitiveReference, +} from '@glimmer/runtime'; +import { tagForProperty } from '@glimmer/tracking'; /** * The base PathReference. @@ -121,11 +121,11 @@ export class NestedPropertyReference extends PropertyReference { _parentObjectTag.inner.update(tagForProperty(parentValue, _propertyKey)); - if (typeof parentValue === "string" && _propertyKey === "length") { + if (typeof parentValue === 'string' && _propertyKey === 'length') { return parentValue.length; } - if (typeof parentValue === "object" && parentValue) { + if (typeof parentValue === 'object' && parentValue) { return parentValue[_propertyKey]; } else { return undefined; diff --git a/packages/@glimmer/component/test/browser/args-test.ts b/packages/@glimmer/component/test/browser/args-test.ts index 7f79c6555..f9f5a17de 100644 --- a/packages/@glimmer/component/test/browser/args-test.ts +++ b/packages/@glimmer/component/test/browser/args-test.ts @@ -1,23 +1,30 @@ -import Component, { tracked, setPropertyDidChange } from '@glimmer/component'; -import { buildApp, TestApplication, didRender } from '@glimmer/application-test-helpers'; +import Component from '@glimmer/component'; +import { tracked, setPropertyDidChange } from '@glimmer/tracking'; +import { + buildApp, + TestApplication, + didRender, +} from '@glimmer/application-test-helpers'; const { module, test } = QUnit; module('[@glimmer/component] Component Arguments'); -test('Args smoke test', async function (assert) { +test('Args smoke test', async function(assert) { let done = assert.async(); - assert.expect(5); + assert.expect(6); let parent: ParentComponent; let app: TestApplication; + let count = 0; class ParentComponent extends Component { - @tracked firstName = "Tom"; + @tracked firstName = 'Tom'; isDank = true; daysOfSleepRequiredAfterEmberConf = 4; - didInsertElement() { + constructor(owner, args) { + super(owner, args); parent = this; } } @@ -25,30 +32,32 @@ test('Args smoke test', async function (assert) { class ChildComponent extends Component { oldArgs: any; - constructor(options: any) { - super(options); - - assert.propEqual(this.args, { - firstName: "Tom", - isDank: true, - days: 4 - }); - - assert.ok(Object.isFrozen(this.args)); - this.oldArgs = this.args; + get args() { + return super.args; } - didUpdate() { - assert.propEqual(this.args, { - firstName: "Thomas", - isDank: true, - days: 4 - }); + set args(args) { + super.args = args; assert.ok(Object.isFrozen(this.args)); assert.notStrictEqual(this.args, this.oldArgs); + this.oldArgs = this.args; - done(); + if (count++ === 0) { + assert.propEqual(this.args, { + firstName: 'Tom', + isDank: true, + days: 4, + }); + } else { + assert.propEqual(this.args, { + firstName: 'Thomas', + isDank: true, + days: 4, + }); + + done(); + } } } @@ -56,14 +65,17 @@ test('Args smoke test', async function (assert) { .component('ParentComponent', ParentComponent) .component('ChildComponent', ChildComponent) .template('Main', '
') - .template('ParentComponent', ` + .template( + 'ParentComponent', + `
-
`) + ` + ) .template('ChildComponent', '
') .boot(); @@ -71,10 +83,10 @@ test('Args smoke test', async function (assert) { app.scheduleRerender(); }); - parent.firstName = "Thomas"; + parent.firstName = 'Thomas'; }); -test('Tracked properties that depend on `args` re-render correctly', async function (assert) { +test('Tracked properties that depend on `args` re-render correctly', async function(assert) { assert.expect(2); let parent: ParentComponent; @@ -84,12 +96,17 @@ test('Tracked properties that depend on `args` re-render correctly', async funct @tracked firstName = 'Tom'; @tracked status = 'is dope'; - didInsertElement() { + constructor(owner, args) { + super(owner, args); parent = this; } } class ChildComponent extends Component { + constructor(owner, args) { + super(owner, args); + } + @tracked get name() { return `${this.args.firstName} Dale`; } @@ -99,10 +116,13 @@ test('Tracked properties that depend on `args` re-render correctly', async funct .component('ParentComponent', ParentComponent) .component('ChildComponent', ChildComponent) .template('Main', '
') - .template('ParentComponent', ` + .template( + 'ParentComponent', + `
-
`) + ` + ) .template('ChildComponent', '
{{name}} {{@status}}
') .boot(); @@ -120,17 +140,19 @@ test('Tracked properties that depend on `args` re-render correctly', async funct }); }); -test('Properties that depend on `args` are properly updated before the `didUpdate` hook', async function(assert) { +test('Properties that depend on `args` are properly updated when args are updated', async function(assert) { assert.expect(4); let parent: ParentComponent; let app: TestApplication; + let count = 0; class ParentComponent extends Component { @tracked firstName = 'Tom'; @tracked status = 'is dope'; - didInsertElement() { + constructor(owner, args) { + super(owner, args); parent = this; } } @@ -140,15 +162,24 @@ test('Properties that depend on `args` are properly updated before the `didUpdat return `${this.args.firstName} Dale`; } - constructor(injections: object) { - super(injections); - assert.equal(this.name, 'Tom Dale'); - assert.equal(this.args.status, 'is dope'); + constructor(owner, args) { + super(owner, args); } - didUpdate() { - assert.equal(this.name, 'Thom Dale'); - assert.equal(this.args.status, 'is dank'); + get args() { + return super.args; + } + + set args(args) { + super.args = args; + + if (count++ === 0) { + assert.equal(this.name, 'Tom Dale'); + assert.equal(this.args.status, 'is dope'); + } else { + assert.equal(this.name, 'Thom Dale'); + assert.equal(this.args.status, 'is dank'); + } } } @@ -156,10 +187,13 @@ test('Properties that depend on `args` are properly updated before the `didUpdat .component('ParentComponent', ParentComponent) .component('ChildComponent', ChildComponent) .template('Main', '
') - .template('ParentComponent', ` + .template( + 'ParentComponent', + `
-
`) + ` + ) .template('ChildComponent', '
') .boot(); @@ -173,32 +207,47 @@ test('Properties that depend on `args` are properly updated before the `didUpdat return didRender(app); }); -test("Setting args should not schedule a rerender", async function(assert) { +test('Setting args should not schedule a rerender', async function(assert) { let done = assert.async(); let app: TestApplication; + let count = 0; class ParentComponent extends Component { @tracked foo = false; - constructor(options: any) { - super(options); + constructor(owner, args) { + super(owner, args); setTimeout(() => { this.foo = true; }, 1); } - - didUpdate() { - assert.strictEqual(app['_scheduled'], false, 're-render has not been scheduled in update'); - done(); - } } class ChildComponent extends Component { + get args() { + return super.args; + } + + set args(args) { + super.args = args; + + if (count++ === 1) { + assert.strictEqual( + app['_scheduled'], + false, + 're-render has not been scheduled in update' + ); + done(); + } + } } app = await buildApp() .template('Main', '
') - .template('ParentComponent', '
') + .template( + 'ParentComponent', + '
' + ) .component('ParentComponent', ParentComponent) .template('ChildComponent', '
') .component('ChildComponent', ChildComponent) diff --git a/packages/@glimmer/component/test/browser/component-test.ts b/packages/@glimmer/component/test/browser/component-test.ts index d58794636..738fb4c91 100644 --- a/packages/@glimmer/component/test/browser/component-test.ts +++ b/packages/@glimmer/component/test/browser/component-test.ts @@ -10,8 +10,8 @@ test('can be instantiated with an owner', async function(assert) { let component: MyComponent; class MyComponent extends Component { - constructor(injections: any) { - super(injections); + constructor(owner, args) { + super(owner, args); component = this; } } @@ -29,8 +29,14 @@ test('can be instantiated with an owner', async function(assert) { test('can yield named args to the block', async function(assert) { let app = await buildApp() .helper('hash', (params: any, named: string) => named) - .template('Main', 'I have {{x.number}} {{x.string}}') - .template('YieldsHash', '
{{yield (hash string="bananas" number=5)}}
') + .template( + 'Main', + 'I have {{x.number}} {{x.string}}' + ) + .template( + 'YieldsHash', + '
{{yield (hash string="bananas" number=5)}}
' + ) .boot(); let root = app.rootElement as HTMLElement; diff --git a/packages/@glimmer/component/test/browser/element-test.ts b/packages/@glimmer/component/test/browser/element-test.ts deleted file mode 100644 index 9dd6236bf..000000000 --- a/packages/@glimmer/component/test/browser/element-test.ts +++ /dev/null @@ -1,71 +0,0 @@ -import Component from '@glimmer/component'; -import { buildApp } from '@glimmer/application-test-helpers'; - -const { module, test } = QUnit; - -module('[@glimmer/component] Component Elements'); - -test('fragments are supported', async function(assert) { - assert.expect(2); - - class Fragment extends Component { - showUser = true; - - didInsertElement() { - let firstNode = this.bounds.firstNode as HTMLElement; - let lastNode = this.bounds.lastNode as Text; - - assert.equal(firstNode.tagName, 'H1'); - assert.equal(lastNode.textContent, 'Hello world!'); - } - } - - await buildApp() - .template('Main', '') - .template('Fragment', '{{#if showUser}}

User

{{/if}}Hello world!') - .component('Fragment', Fragment) - .boot(); -}); - -test('elements are supported', async function(assert) { - assert.expect(5); - - class Element extends Component { - showUser = true; - - didInsertElement() { - let firstNode = this.bounds.firstNode as HTMLElement; - let lastNode = this.bounds.lastNode as HTMLElement; - - assert.equal(this.element.tagName, 'NAV'); - assert.equal(firstNode.tagName, 'NAV'); - assert.equal(lastNode.tagName, 'NAV'); - assert.strictEqual(this.element, firstNode, 'element and first node are the same'); - assert.strictEqual(firstNode, lastNode, 'first node and last node are the same'); - } - } - - await buildApp() - .template('Main', '') - .template('Element', '') - .component('Element', Element) - .boot(); -}); - -test('accessing element throws an exception if template is a fragment', async function(assert) { - assert.expect(1); - - class Fragment extends Component { - didInsertElement() { - assert.throws(() => { - return this.element; - }, /The 'element' property can only be accessed on components that contain a single root element/); - } - } - - await buildApp() - .template('Main', '') - .template('Fragment', '{{#if showUser}}

User

{{/if}}Hello world!') - .component('Fragment', Fragment) - .boot(); -}); diff --git a/packages/@glimmer/component/test/browser/lifecycle-hook-test.ts b/packages/@glimmer/component/test/browser/lifecycle-hook-test.ts index 137a6977e..7731b8423 100644 --- a/packages/@glimmer/component/test/browser/lifecycle-hook-test.ts +++ b/packages/@glimmer/component/test/browser/lifecycle-hook-test.ts @@ -6,34 +6,33 @@ const { module, test } = QUnit; module('[@glimmer/component] Lifecycle Hooks'); test('Lifecycle hook ordering', async function(assert) { - assert.expect(7); + assert.expect(1); let invocations: [string, string][] = []; - let didCallWillDestroy = false; abstract class HookLoggerComponent extends Component { - abstract name: string; - - didInsertElement() { - invocations.push([this.name, 'didInsertElement']); - assert.ok(this.bounds.firstNode instanceof Element); - } - - willDestroy() { - didCallWillDestroy = true; + constructor(owner, args) { + super(owner, args); + invocations.push([this.args.name, 'constructor']); } } - class Component1 extends HookLoggerComponent { name = 'component1'; } - class Component2 extends HookLoggerComponent { name = 'component2'; } - class Component3 extends HookLoggerComponent { name = 'component3'; } - class Component4 extends HookLoggerComponent { name = 'component4'; } - class Component5 extends HookLoggerComponent { name = 'component5'; } + class Component1 extends HookLoggerComponent {} + class Component2 extends HookLoggerComponent {} + class Component3 extends HookLoggerComponent {} + class Component4 extends HookLoggerComponent {} + class Component5 extends HookLoggerComponent {} - let app = await buildApp() - .template('Main', '
') - .template('ComponentOne', '
') - .template('ComponentTwo', '
') + await buildApp() + .template('Main', '
') + .template( + 'ComponentOne', + '
' + ) + .template( + 'ComponentTwo', + '
' + ) .template('ComponentThree', '
') .template('ComponentFour', '
') .template('ComponentFive', '
') @@ -45,56 +44,10 @@ test('Lifecycle hook ordering', async function(assert) { .boot(); assert.deepEqual(invocations, [ - ['component4', 'didInsertElement'], - ['component5', 'didInsertElement'], - ['component2', 'didInsertElement'], - ['component3', 'didInsertElement'], - ['component1', 'didInsertElement'], + ['component1', 'constructor'], + ['component2', 'constructor'], + ['component4', 'constructor'], + ['component5', 'constructor'], + ['component3', 'constructor'], ]); - - let component1 = app["_container"].lookup("component:/test-app/components/ComponentTwo"); - component1.destroy(); - - assert.ok(didCallWillDestroy); }); - -test('element is set before didInsertElement', async function(assert) { - assert.expect(1); - - class Element extends Component { - didInsertElement() { - assert.equal(this.element.tagName, 'H1'); - } - } - - await buildApp() - .component('Element', Element) - .template('Main', '') - .template('Element', trim(` -

Chad Hietala - Greatest thinker of our generation

- `)).boot(); -}); - -test('fragment bounds are set before didInsertElement', async function(assert) { - assert.expect(2); - - class Fragment extends Component { - didInsertElement() { - assert.equal(this.bounds.firstNode.nodeName, '#text', 'firstNode should be a text node'); - assert.equal(this.bounds.lastNode.textContent, 'Greatest thinker of our generation', 'last node should be a span'); - } - } - - await buildApp() - .component('Fragment', Fragment) - .template('Main', '') - .template('Fragment', trim(` - Hello world! -

Chad Hietala

- Greatest thinker of our generation - `)).boot(); -}); - -function trim(str: string) { - return str.trim(); -} diff --git a/packages/@glimmer/component/test/browser/rendering-test.ts b/packages/@glimmer/component/test/browser/rendering-test.ts index a65809368..27a121eb7 100644 --- a/packages/@glimmer/component/test/browser/rendering-test.ts +++ b/packages/@glimmer/component/test/browser/rendering-test.ts @@ -1,4 +1,5 @@ -import Component, { UntrackedPropertyError } from '@glimmer/component'; +import Component from '@glimmer/component'; +import { UntrackedPropertyError } from '@glimmer/tracking'; import { buildApp } from '@glimmer/application-test-helpers'; import { DEBUG } from '@glimmer/env'; @@ -21,22 +22,23 @@ if (DEBUG) { assert.expect(1); let done = assert.async(); + let update; class HelloWorldComponent extends Component { firstName: string; - constructor(options: any) { - super(options); - } + constructor(owner, args) { + super(owner, args); - didInsertElement() { - let error = UntrackedPropertyError.for(this, 'firstName'); + update = () => { + let error = UntrackedPropertyError.for(this, 'firstName'); - assert.throws(() => { - this.firstName = 'Chad'; - }, error); + assert.throws(() => { + this.firstName = 'Chad'; + }, error); - done(); + done(); + }; } } @@ -45,27 +47,33 @@ if (DEBUG) { .template('HelloWorld', '

Hello, {{firstName}} {{lastName}}!

') .component('HelloWorld', HelloWorldComponent) .boot(); + + update(); }); } else { test('Mutating a tracked property should not throw an exception in production mode', async function(assert) { assert.expect(1); let done = assert.async(); + let update; class HelloWorldComponent extends Component { firstName: string; - constructor(options: any) { - super(options); - } + constructor(owner, args) { + super(owner, args); - didInsertElement() { - // This won't update, but shouldn't throw an error in production mode, - // either, due to the overhead of installing setters for untracked - // properties. - this.firstName = 'Chad'; - assert.ok(true, 'firstName was mutated without throwing an exception'); - done(); + update = () => { + // This won't update, but shouldn't throw an error in production mode, + // either, due to the overhead of installing setters for untracked + // properties. + this.firstName = 'Chad'; + assert.ok( + true, + 'firstName was mutated without throwing an exception' + ); + done(); + }; } } @@ -74,5 +82,7 @@ if (DEBUG) { .template('HelloWorld', '

Hello, {{firstName}} {{lastName}}!

') .component('HelloWorld', HelloWorldComponent) .boot(); + + update(); }); } diff --git a/packages/@glimmer/component/test/ember/dummy/app/app.js b/packages/@glimmer/component/test/ember/dummy/app/app.js new file mode 100644 index 000000000..b3b2bd677 --- /dev/null +++ b/packages/@glimmer/component/test/ember/dummy/app/app.js @@ -0,0 +1,14 @@ +import Application from '@ember/application'; +import Resolver from './resolver'; +import loadInitializers from 'ember-load-initializers'; +import config from './config/environment'; + +const App = Application.extend({ + modulePrefix: config.modulePrefix, + podModulePrefix: config.podModulePrefix, + Resolver +}); + +loadInitializers(App, config.modulePrefix); + +export default App; diff --git a/packages/@glimmer/component/test/ember/dummy/app/components/conference-speakers.js b/packages/@glimmer/component/test/ember/dummy/app/components/conference-speakers.js new file mode 100644 index 000000000..3eb51305b --- /dev/null +++ b/packages/@glimmer/component/test/ember/dummy/app/components/conference-speakers.js @@ -0,0 +1,23 @@ +import Component from '@glimmer/component'; +import { action, computed } from '@ember-decorators/object'; +import { set } from '@ember/object'; + +export default class ConferenceSpeakers extends Component { + current = 0; + speakers = ['Tom', 'Yehuda', 'Ed']; + + @computed('current') + get currentlySpeaking() { + return this.speakers[this.current]; + } + + @computed('current') + get moreSpeakers() { + return (this.speakers.length - 1) > this.current; + } + + @action + next() { + set(this, 'current', this.current + 1); + } +} diff --git a/packages/@glimmer/component/test/ember/dummy/app/config/environment.d.ts b/packages/@glimmer/component/test/ember/dummy/app/config/environment.d.ts new file mode 100644 index 000000000..3252cc3de --- /dev/null +++ b/packages/@glimmer/component/test/ember/dummy/app/config/environment.d.ts @@ -0,0 +1,16 @@ +export default config; + +/** + * Type declarations for + * import config from './config/environment' + * + * For now these need to be managed by the developer + * since different ember addons can materialize new entries. + */ +declare const config: { + environment: any; + modulePrefix: string; + podModulePrefix: string; + locationType: string; + rootURL: string; +}; diff --git a/packages/@glimmer/component/test/ember/dummy/app/controllers/.gitkeep b/packages/@glimmer/component/test/ember/dummy/app/controllers/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/packages/@glimmer/component/test/ember/dummy/app/helpers/.gitkeep b/packages/@glimmer/component/test/ember/dummy/app/helpers/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/packages/@glimmer/component/test/ember/dummy/app/index.html b/packages/@glimmer/component/test/ember/dummy/app/index.html new file mode 100644 index 000000000..61400b20f --- /dev/null +++ b/packages/@glimmer/component/test/ember/dummy/app/index.html @@ -0,0 +1,25 @@ + + + + + + Dummy + + + + {{content-for "head"}} + + + + + {{content-for "head-footer"}} + + + {{content-for "body"}} + + + + + {{content-for "body-footer"}} + + diff --git a/packages/@glimmer/component/test/ember/dummy/app/models/.gitkeep b/packages/@glimmer/component/test/ember/dummy/app/models/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/packages/@glimmer/component/test/ember/dummy/app/resolver.js b/packages/@glimmer/component/test/ember/dummy/app/resolver.js new file mode 100644 index 000000000..2fb563d6c --- /dev/null +++ b/packages/@glimmer/component/test/ember/dummy/app/resolver.js @@ -0,0 +1,3 @@ +import Resolver from 'ember-resolver'; + +export default Resolver; diff --git a/packages/@glimmer/component/test/ember/dummy/app/router.js b/packages/@glimmer/component/test/ember/dummy/app/router.js new file mode 100644 index 000000000..d2bdf6bc3 --- /dev/null +++ b/packages/@glimmer/component/test/ember/dummy/app/router.js @@ -0,0 +1,13 @@ +import EmberRouter from '@ember/routing/router'; +import config from './config/environment'; + +const Router = EmberRouter.extend({ + location: config.locationType, + rootURL: config.rootURL +}); + +Router.map(function() { + this.route('conference-speakers'); +}); + +export default Router; diff --git a/packages/@glimmer/component/test/ember/dummy/app/styles/app.css b/packages/@glimmer/component/test/ember/dummy/app/styles/app.css new file mode 100644 index 000000000..e69de29bb diff --git a/packages/@glimmer/component/test/ember/dummy/app/templates/application.hbs b/packages/@glimmer/component/test/ember/dummy/app/templates/application.hbs new file mode 100644 index 000000000..5230580f8 --- /dev/null +++ b/packages/@glimmer/component/test/ember/dummy/app/templates/application.hbs @@ -0,0 +1,3 @@ +

Welcome to Ember

+ +{{outlet}} \ No newline at end of file diff --git a/packages/@glimmer/component/test/ember/dummy/app/templates/components/conference-speakers.hbs b/packages/@glimmer/component/test/ember/dummy/app/templates/components/conference-speakers.hbs new file mode 100644 index 000000000..f12bb38e9 --- /dev/null +++ b/packages/@glimmer/component/test/ember/dummy/app/templates/components/conference-speakers.hbs @@ -0,0 +1,14 @@ +
+

Speaking: {{this.currentlySpeaking}}

+
    + {{#each this.speakers key="@index" as |speaker|}} +
  • {{speaker}}
  • + {{/each}} +
+ + {{#if this.moreSpeakers}} + + {{else}} +

All finished!

+ {{/if}} +
diff --git a/packages/@glimmer/component/test/ember/dummy/app/templates/conference-speakers.hbs b/packages/@glimmer/component/test/ember/dummy/app/templates/conference-speakers.hbs new file mode 100644 index 000000000..a6c9cad5b --- /dev/null +++ b/packages/@glimmer/component/test/ember/dummy/app/templates/conference-speakers.hbs @@ -0,0 +1 @@ + diff --git a/packages/@glimmer/component/test/ember/dummy/config/environment.js b/packages/@glimmer/component/test/ember/dummy/config/environment.js new file mode 100644 index 000000000..182d3fcbf --- /dev/null +++ b/packages/@glimmer/component/test/ember/dummy/config/environment.js @@ -0,0 +1,51 @@ +'use strict'; + +module.exports = function(environment) { + let ENV = { + modulePrefix: 'dummy', + environment, + rootURL: '/', + locationType: 'auto', + EmberENV: { + FEATURES: { + // Here you can enable experimental features on an ember canary build + // e.g. 'with-controller': true + }, + EXTEND_PROTOTYPES: { + // Prevent Ember Data from overriding Date.parse. + Date: false + } + }, + + APP: { + // Here you can pass flags/options to your application instance + // when it is created + } + }; + + if (environment === 'development') { + // ENV.APP.LOG_RESOLVER = true; + // ENV.APP.LOG_ACTIVE_GENERATION = true; + // ENV.APP.LOG_TRANSITIONS = true; + // ENV.APP.LOG_TRANSITIONS_INTERNAL = true; + // ENV.APP.LOG_VIEW_LOOKUPS = true; + } + + if (environment === 'test') { + // Testem prefers this... + ENV.locationType = 'none'; + + // keep test console output quieter + ENV.APP.LOG_ACTIVE_GENERATION = false; + ENV.APP.LOG_VIEW_LOOKUPS = false; + + ENV.APP.rootElement = '#ember-testing'; + ENV.APP.autoboot = false; + } + + if (environment === 'production') { + // here you can enable a production-specific feature + } + + return ENV; +}; diff --git a/packages/@glimmer/component/test/ember/dummy/config/optional-features.json b/packages/@glimmer/component/test/ember/dummy/config/optional-features.json new file mode 100644 index 000000000..b1902623a --- /dev/null +++ b/packages/@glimmer/component/test/ember/dummy/config/optional-features.json @@ -0,0 +1,3 @@ +{ + "jquery-integration": false +} diff --git a/packages/@glimmer/component/test/ember/dummy/config/targets.js b/packages/@glimmer/component/test/ember/dummy/config/targets.js new file mode 100644 index 000000000..8ffae3636 --- /dev/null +++ b/packages/@glimmer/component/test/ember/dummy/config/targets.js @@ -0,0 +1,18 @@ +'use strict'; + +const browsers = [ + 'last 1 Chrome versions', + 'last 1 Firefox versions', + 'last 1 Safari versions' +]; + +const isCI = !!process.env.CI; +const isProduction = process.env.EMBER_ENV === 'production'; + +if (isCI || isProduction) { + browsers.push('ie 11'); +} + +module.exports = { + browsers +}; diff --git a/packages/@glimmer/component/test/ember/dummy/public/robots.txt b/packages/@glimmer/component/test/ember/dummy/public/robots.txt new file mode 100644 index 000000000..f5916452e --- /dev/null +++ b/packages/@glimmer/component/test/ember/dummy/public/robots.txt @@ -0,0 +1,3 @@ +# http://www.robotstxt.org +User-agent: * +Disallow: diff --git a/packages/@glimmer/component/test/ember/helpers/.gitkeep b/packages/@glimmer/component/test/ember/helpers/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/packages/@glimmer/component/test/ember/index.html b/packages/@glimmer/component/test/ember/index.html new file mode 100644 index 000000000..5209b8523 --- /dev/null +++ b/packages/@glimmer/component/test/ember/index.html @@ -0,0 +1,33 @@ + + + + + + Dummy Tests + + + + {{content-for "head"}} + {{content-for "test-head"}} + + + + + + {{content-for "head-footer"}} + {{content-for "test-head-footer"}} + + + {{content-for "body"}} + {{content-for "test-body"}} + + + + + + + + {{content-for "body-footer"}} + {{content-for "test-body-footer"}} + + diff --git a/packages/@glimmer/component/test/ember/integration/components/glimmer-component-guide-test.js b/packages/@glimmer/component/test/ember/integration/components/glimmer-component-guide-test.js new file mode 100644 index 000000000..7055c096d --- /dev/null +++ b/packages/@glimmer/component/test/ember/integration/components/glimmer-component-guide-test.js @@ -0,0 +1,43 @@ +import { module, test } from 'qunit'; +import { setupRenderingTest } from 'ember-qunit'; +import { render, click } from '@ember/test-helpers'; +import hbs from 'htmlbars-inline-precompile'; + +module('Integration | Component | glimmer.js guide example', function(hooks) { + setupRenderingTest(hooks); + + hooks.beforeEach(function(assert) { + assert.validateSpeakers = (speakerNames, currentSpeaker) => { + let items = this.element.querySelectorAll('li'); + assert.equal(items.length, speakerNames.length, 'correct number of entires found'); + + for (let i = 0; i < speakerNames.length; i++) { + assert.dom(items[i]).hasText(speakerNames[i]); + } + + assert.dom('p').hasText(`Speaking: ${currentSpeaker}`); + }; + }); + + + test('renders', async function(assert) { + await render(hbs``); + + assert.validateSpeakers(['Tom', 'Yehuda', 'Ed'], 'Tom'); + }); + + test('cycles through speakers', async function(assert) { + await render(hbs``); + + assert.validateSpeakers(['Tom', 'Yehuda', 'Ed'], 'Tom'); + + await click('button'); + + assert.validateSpeakers(['Tom', 'Yehuda', 'Ed'], 'Yehuda'); + + await click('button'); + + assert.validateSpeakers(['Tom', 'Yehuda', 'Ed'], 'Ed'); + assert.dom('button').doesNotExist(); + }); +}); diff --git a/packages/@glimmer/component/test/ember/integration/components/glimmer-component-test.js b/packages/@glimmer/component/test/ember/integration/components/glimmer-component-test.js new file mode 100644 index 000000000..a71d914f9 --- /dev/null +++ b/packages/@glimmer/component/test/ember/integration/components/glimmer-component-test.js @@ -0,0 +1,220 @@ +import GlimmerComponent from '@glimmer/component'; +import { module, test } from 'qunit'; +import { setupRenderingTest } from 'ember-qunit'; +import { render, clearRender, click } from '@ember/test-helpers'; +import hbs from 'htmlbars-inline-precompile'; +import { getOwner } from '@ember/application'; +import { set } from '@ember/object'; + +module('Integration | Component | @glimmer/component', function(hooks) { + let InstrumentedComponent; + + setupRenderingTest(hooks); + + hooks.beforeEach(function(assert) { + InstrumentedComponent = class extends GlimmerComponent { + constructor() { + super(...arguments); + assert.step('constructor'); + } + + willDestroy() { + assert.step('willDestroy'); + } + } + }); + + test('it can render with curlies (no args)', async function(assert) { + this.owner.register('component:under-test', InstrumentedComponent); + + await render(hbs`{{under-test}}`); + + assert.verifySteps(['constructor'], 'initial setup steps'); + + await clearRender(); + + assert.verifySteps(['willDestroy'], 'post destroy steps'); + }); + + test('it can render and update with curlies (args)', async function(assert) { + this.owner.register('component:under-test', InstrumentedComponent); + this.owner.register('template:components/under-test', hbs`

{{@text}}

`); + + this.set('text', 'hello!'); + await render(hbs`{{under-test text=this.text}}`); + + assert.dom('p').hasText('hello!'); + assert.verifySteps(['constructor'], 'initial render steps'); + + this.set('text', 'hello world!'); + + assert.dom('p').hasText('hello world!'); + assert.verifySteps([], 'no rerender steps'); + + this.set('text', 'hello!'); + + assert.dom('p').hasText('hello!'); + assert.verifySteps([], 'no rerender steps'); + + await clearRender(); + + assert.verifySteps(['willDestroy'], 'post destroy steps'); + }); + + test('it can render with angles (no args)', async function(assert) { + this.owner.register('component:under-test', InstrumentedComponent); + + await render(hbs``); + + assert.verifySteps(['constructor'], 'initial render steps'); + + await clearRender(); + + assert.verifySteps(['willDestroy'], 'post destroy steps'); + }); + + test('it can render and update with angles (args)', async function(assert) { + this.owner.register('component:under-test', InstrumentedComponent); + this.owner.register('template:components/under-test', hbs`

{{@text}}

`); + + this.set('text', 'hello!'); + await render(hbs``); + + assert.dom('p').hasText('hello!'); + assert.verifySteps(['constructor'], 'initial render steps'); + + this.set('text', 'hello world!'); + + assert.dom('p').hasText('hello world!'); + assert.verifySteps([], 'no rerender steps'); + + this.set('text', 'hello!'); + + assert.dom('p').hasText('hello!'); + assert.verifySteps([], 'no rerender steps'); + + await clearRender(); + + assert.verifySteps(['willDestroy'], 'post destroy steps'); + }); + + test('it can use args in component', async function(assert) { + this.owner.register('component:under-test', class extends GlimmerComponent { + get text() { + return this.args.text.toUpperCase(); + } + }); + this.owner.register('template:components/under-test', hbs`

{{this.text}}

`); + + this.set('text', 'hello!'); + await render(hbs``); + assert.dom('p').hasText('HELLO!'); + }); + + test('it can use args in constructor', async function(assert) { + this.owner.register('component:under-test', class extends GlimmerComponent { + constructor() { + super(...arguments); + + this.text = this.args.text.toUpperCase(); + } + }); + this.owner.register('template:components/under-test', hbs`

{{this.text}}

`); + + this.set('text', 'hello!'); + await render(hbs``); + assert.dom('p').hasText('HELLO!'); + }); + + test('it can use get/set to recompute for changes', async function(assert) { + this.owner.register('component:under-test', class extends GlimmerComponent { + constructor() { + super(...arguments); + + this.count = 0; + } + + increment() { + set(this, 'count', this.count + 1); + } + }); + this.owner.register( + 'template:components/under-test', + hbs`

Count: {{this.count}}

` + ); + + await render(hbs``); + assert.dom('p').hasText('Count: 0'); + + await click('button[data-test=increment]'); + assert.dom('p').hasText('Count: 1'); + + await click('button[data-test=increment]'); + assert.dom('p').hasText('Count: 2'); + }); + + test('does not update for non-tracked property changes', async function(assert) { + this.owner.register('component:under-test', class extends GlimmerComponent { + constructor() { + super(...arguments); + + this._count = 0; + } + + get count() { + return this._count; + } + + set count(value) { + this._count = value; + } + + increment() { + this.count++; + } + }); + this.owner.register( + 'template:components/under-test', + hbs`

Count: {{this.count}}

` + ); + + await render(hbs``); + assert.dom('p').hasText('Count: 0'); + + await click('button[data-test=increment]'); + assert.dom('p').hasText('Count: 0'); + + await click('button[data-test=increment]'); + assert.dom('p').hasText('Count: 0'); + }); + + test('it has an owner', async function(assert) { + this.owner.register('component:under-test', class extends GlimmerComponent { + get environment() { + return getOwner(this).resolveRegistration("config:environment").environment; + } + }); + this.owner.register( + 'template:components/under-test', + hbs`

Environment: {{this.environment}}

` + ); + await render(hbs``); + assert.dom('p').hasText('Environment: test'); + }); + + test('it has an owner', async function(assert) { + this.owner.register('component:under-test', class extends GlimmerComponent { + constructor() { + super(...arguments); + + this.environment = getOwner(this).resolveRegistration("config:environment").environment; + } + }); + this.owner.register( + 'template:components/under-test', + hbs`

Environment: {{this.environment}}

` + ); + await render(hbs``); + assert.dom('p').hasText('Environment: test'); + }); +}); diff --git a/packages/@glimmer/component/test/ember/test-helper.js b/packages/@glimmer/component/test/ember/test-helper.js new file mode 100644 index 000000000..e19b9e4ed --- /dev/null +++ b/packages/@glimmer/component/test/ember/test-helper.js @@ -0,0 +1,9 @@ +import Application from '../app'; +import config from '../config/environment'; +import { setApplication } from '@ember/test-helpers'; +import { start } from 'ember-qunit'; +import 'qunit-dom'; + +setApplication(Application.create(config.APP)); + +start(); diff --git a/packages/@glimmer/component/test/ember/unit/.gitkeep b/packages/@glimmer/component/test/ember/unit/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/packages/@glimmer/component/test/mocha/blueprints/glimmer-test.js b/packages/@glimmer/component/test/mocha/blueprints/glimmer-test.js new file mode 100644 index 000000000..cd331ae9a --- /dev/null +++ b/packages/@glimmer/component/test/mocha/blueprints/glimmer-test.js @@ -0,0 +1,329 @@ +'use strict'; + +const blueprintHelpers = require('ember-cli-blueprint-test-helpers/helpers'); +const setupTestHooks = blueprintHelpers.setupTestHooks; +const emberNew = blueprintHelpers.emberNew; +const { emberGenerateDestroy } = blueprintHelpers; + +const expect = require('ember-cli-blueprint-test-helpers/chai').expect; + +describe('Classic App Layout: ember generate and destroy a glimmer component', function() { + setupTestHooks(this); + + it('ember g glimmer x-foo', function() { + // pass any additional command line options in the arguments array + return emberNew().then(() => + emberGenerateDestroy(['glimmer-component', 'x-foo'], file => { + expect(file('app/components/x-foo.js')).to.eq( + `import Component from '@glimmer/component'; + +export default class XFoo extends Component { + +} +` + ); + expect(file('tests/integration/components/x-foo-test.js')).to.eq( + `import { module, test } from 'qunit'; +import { setupRenderingTest } from 'ember-qunit'; +import { render } from '@ember/test-helpers'; +import hbs from 'htmlbars-inline-precompile'; + +module('Integration | Component | x-foo', function(hooks) { + setupRenderingTest(hooks); + + test('it renders', async function(assert) { + // Set any properties with this.set('myProperty', 'value'); + // Handle any actions with this.set('myAction', function(val) { ... }); + + await render(hbs\`{{x-foo}}\`); + + assert.equal(('' + this.element.textContent).trim(), ''); + + // Template block usage: + await render(hbs\` + {{#x-foo}} + template block text + {{/x-foo}} + \`); + + assert.equal(('' + this.element.textContent).trim(), 'template block text'); + }); +}); +` + ); + expect(file('app/templates/components/x-foo.hbs')).to.eq( + `{{yield}} +` + ); + }) + ); + }); + it('ember g glimmer x-foo --lang ts', function() { + // pass any additional command line options in the arguments array + return emberNew().then(() => + emberGenerateDestroy( + ['glimmer-component', 'x-foo', '--lang', 'ts'], + file => { + expect(file('app/components/x-foo.ts')).to.eq( + `import Component from '@glimmer/component'; + +export default class XFoo extends Component { + +} +` + ); + expect(file('tests/integration/components/x-foo-test.ts')).to.eq( + `import { module, test } from 'qunit'; +import { setupRenderingTest } from 'ember-qunit'; +import { render } from '@ember/test-helpers'; +import hbs from 'htmlbars-inline-precompile'; + +module('Integration | Component | x-foo', function(hooks) { + setupRenderingTest(hooks); + + test('it renders', async function(assert) { + // Set any properties with this.set('myProperty', 'value'); + // Handle any actions with this.set('myAction', function(val) { ... }); + + await render(hbs\`{{x-foo}}\`); + + assert.equal(('' + this.element.textContent).trim(), ''); + + // Template block usage: + await render(hbs\` + {{#x-foo}} + template block text + {{/x-foo}} + \`); + + assert.equal(('' + this.element.textContent).trim(), 'template block text'); + }); +}); +` + ); + expect(file('app/templates/components/x-foo.hbs')).to.eq( + `{{yield}} +` + ); + } + ) + ); + }); + it('ember g glimmer x-foo --lang js', function() { + // pass any additional command line options in the arguments array + return emberNew().then(() => + emberGenerateDestroy( + ['glimmer-component', 'x-foo', '--lang', 'js'], + file => { + expect(file('app/components/x-foo.js')).to.eq( + `import Component from '@glimmer/component'; + +export default class XFoo extends Component { + +} +` + ); + expect(file('tests/integration/components/x-foo-test.js')).to.eq( + `import { module, test } from 'qunit'; +import { setupRenderingTest } from 'ember-qunit'; +import { render } from '@ember/test-helpers'; +import hbs from 'htmlbars-inline-precompile'; + +module('Integration | Component | x-foo', function(hooks) { + setupRenderingTest(hooks); + + test('it renders', async function(assert) { + // Set any properties with this.set('myProperty', 'value'); + // Handle any actions with this.set('myAction', function(val) { ... }); + + await render(hbs\`{{x-foo}}\`); + + assert.equal(('' + this.element.textContent).trim(), ''); + + // Template block usage: + await render(hbs\` + {{#x-foo}} + template block text + {{/x-foo}} + \`); + + assert.equal(('' + this.element.textContent).trim(), 'template block text'); + }); +}); +` + ); + expect(file('app/templates/components/x-foo.hbs')).to.eq( + `{{yield}} +` + ); + } + ) + ); + }); +}); + +describe('Classic Addon Layout: ember generate and destroy a glimmer component', function() { + setupTestHooks(this); + + it('ember g glimmer x-boz', function() { + // pass any additional command line options in the arguments array + return emberNew({ target: 'addon' }).then(() => + emberGenerateDestroy(['glimmer-component', 'x-boz'], file => { + expect(file('addon/components/x-boz.js')).to.eq( + `import Component from '@glimmer/component'; + +export default class XBoz extends Component { + +} +` + ); + expect(file('addon/templates/components/x-boz.hbs')).to.eq( + `{{yield}} +` + ); + expect(file('app/components/x-boz.js')).to.eq( + `export { default } from 'my-addon/components/x-boz'; +` + ); + expect(file('app/templates/components/x-boz.js')).to.eq( + `export { default } from 'my-addon/templates/components/x-boz'; +` + ); + }) + ); + }); + it('ember g glimmer x-baz --lang js', function() { + // pass any additional command line options in the arguments array + return emberNew({ target: 'addon' }).then(() => + emberGenerateDestroy( + ['glimmer-component', 'x-baz', '--lang', 'js'], + file => { + expect(file('addon/components/x-baz.js')).to.eq( + `import Component from '@glimmer/component'; + +export default class XBaz extends Component { + +} +` + ); + expect(file('addon/templates/components/x-baz.hbs')).to.eq( + `{{yield}} +` + ); + expect(file('app/components/x-baz.js')).to.eq( + `export { default } from 'my-addon/components/x-baz'; +` + ); + expect(file('app/templates/components/x-baz.js')).to.eq( + `export { default } from 'my-addon/templates/components/x-baz'; +` + ); + } + ) + ); + }); + it('ember g glimmer x-biz --lang ts', function() { + // pass any additional command line options in the arguments array + return emberNew({ target: 'addon' }).then(() => + emberGenerateDestroy( + ['glimmer-component', 'x-biz', '--lang', 'ts'], + file => { + expect(file('addon/components/x-biz.ts')).to.eq( + `import Component from '@glimmer/component'; + +export default class XBiz extends Component { + +} +` + ); + expect(file('addon/templates/components/x-biz.hbs')).to.eq( + `{{yield}} +` + ); + expect(file('app/components/x-biz.js')).to.eq( + `export { default } from 'my-addon/components/x-biz'; +` + ); + expect(file('app/templates/components/x-biz.js')).to.eq( + `export { default } from 'my-addon/templates/components/x-biz'; +` + ); + } + ) + ); + }); +}); + +describe('MU App Layout: ember generate and destroy a glimmer component', function() { + setupTestHooks(this); + + it('ember g glimmer x-foo', function() { + // pass any additional command line options in the arguments array + return emberNew({ isModuleUnification: true }).then(() => + emberGenerateDestroy( + ['glimmer-component', 'x-foo'], + file => { + expect(file('src/ui/components/x-foo/component.js')).to.eq( + `import Component from '@glimmer/component'; + +export default class XFoo extends Component { + +} +` + ); + expect(file('src/ui/components/x-foo/template.hbs')).to.eq( + `{{yield}} +` + ); + }, + { isModuleUnification: true } + ) + ); + }); + it('ember g glimmer x-foo --lang js', function() { + // pass any additional command line options in the arguments array + return emberNew({ isModuleUnification: true }).then(() => + emberGenerateDestroy( + ['glimmer-component', 'x-foo', '--lang', 'js'], + file => { + expect(file('src/ui/components/x-foo/component.js')).to.eq( + `import Component from '@glimmer/component'; + +export default class XFoo extends Component { + +} +` + ); + expect(file('src/ui/components/x-foo/template.hbs')).to.eq( + `{{yield}} +` + ); + }, + { isModuleUnification: true } + ) + ); + }); + it('ember g glimmer x-foo --lang ts', function() { + // pass any additional command line options in the arguments array + return emberNew({ isModuleUnification: true }).then(() => + emberGenerateDestroy( + ['glimmer-component', 'x-foo', '--lang', 'ts'], + file => { + expect(file('src/ui/components/x-foo/component.ts')).to.eq( + `import Component from '@glimmer/component'; + +export default class XFoo extends Component { + +} +` + ); + expect(file('src/ui/components/x-foo/template.hbs')).to.eq( + `{{yield}} +` + ); + }, + { isModuleUnification: true } + ) + ); + }); +}); diff --git a/packages/@glimmer/component/testem.js b/packages/@glimmer/component/testem.js new file mode 100644 index 000000000..b0604775b --- /dev/null +++ b/packages/@glimmer/component/testem.js @@ -0,0 +1,21 @@ +module.exports = { + test_page: 'tests/index.html?hidepassed', + disable_watching: true, + launch_in_ci: ['Chrome'], + launch_in_dev: ['Chrome'], + browser_args: { + Chrome: { + ci: [ + // --no-sandbox is needed when running Chrome inside a container + process.env.CI ? '--no-sandbox' : null, + '--headless', + '--disable-gpu', + '--disable-dev-shm-usage', + '--disable-software-rasterizer', + '--mute-audio', + '--remote-debugging-port=0', + '--window-size=1440,900', + ].filter(Boolean), + }, + }, +}; diff --git a/packages/@glimmer/component/testem.json b/packages/@glimmer/component/testem.json deleted file mode 100644 index c090900fd..000000000 --- a/packages/@glimmer/component/testem.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "framework": "qunit", - "test_page": "index.html", - "src_files": ["src/**/*", "test/**/*"], - "disable_watching": true, - "launch_in_ci": ["Firefox"] -} \ No newline at end of file diff --git a/packages/@glimmer/component/types/@ember/component.d.ts b/packages/@glimmer/component/types/@ember/component.d.ts new file mode 100644 index 000000000..16ab0dbb7 --- /dev/null +++ b/packages/@glimmer/component/types/@ember/component.d.ts @@ -0,0 +1,14 @@ +declare module '@ember/component' { + export function setComponentManager(managerId: string, baseClass: T): T; + export function setComponentManager( + managerFactory: (owner: any) => {}, + baseClass: T + ): T; + export function capabilities( + version: string, + opts?: { + destructor?: boolean; + asyncLifecycleCallbacks?: boolean; + } + ): any; +} diff --git a/packages/@glimmer/component/types/ember-compatibility-helpers.d.ts b/packages/@glimmer/component/types/ember-compatibility-helpers.d.ts new file mode 100644 index 000000000..022049beb --- /dev/null +++ b/packages/@glimmer/component/types/ember-compatibility-helpers.d.ts @@ -0,0 +1 @@ +export function gte(version: string): boolean; diff --git a/packages/@glimmer/component/types/ember/index.d.ts b/packages/@glimmer/component/types/ember/index.d.ts new file mode 100644 index 000000000..13fedae78 --- /dev/null +++ b/packages/@glimmer/component/types/ember/index.d.ts @@ -0,0 +1,9 @@ +declare module 'ember' { + function meta(obj: object): Meta; + function destroy(obj: object); +} + +declare class Meta { + setSourceDestroying(); + setSourceDestroyed(); +} diff --git a/packages/@glimmer/tracking/.npmignore b/packages/@glimmer/tracking/.npmignore new file mode 100644 index 000000000..759c5c521 --- /dev/null +++ b/packages/@glimmer/tracking/.npmignore @@ -0,0 +1,10 @@ +node_modules +test +tests +tmp +testem.json +tsconfig.* +.travis.yml +.gitignore +.DS_Store +*.log diff --git a/packages/@glimmer/tracking/README.md b/packages/@glimmer/tracking/README.md new file mode 100644 index 000000000..0c93e9b66 --- /dev/null +++ b/packages/@glimmer/tracking/README.md @@ -0,0 +1,54 @@ +# @glimmer/tracking + +[![npm version](https://badge.fury.io/js/%40glimmer%2Fcomponent.svg)](https://badge.fury.io/js/%40glimmer%2Fcomponent) +[![Build Status](https://secure.travis-ci.org/glimmerjs/glimmer-component.svg?branch=master)](http://travis-ci.org/glimmerjs/glimmer-component) + +## Installation + +Add this package to your project with Yarn: + +```bash +yarn add @glimmer/tracking +``` + +Or alternatively with npm: + +```bash +npm install --save-dev @glimmer/tracking +``` + +## Usage + +To use this in a Glimmer application, import the package and export an extended class: + +```ts +import Component from '@glimmer/component'; +import { tracked } from '@glimmer/tracking'; + +export default class MyComponent extends Component { + @tracked foo; +} +``` + +## Development + +For the development of this project, Yarn is preferred over npm. However, any Yarn command can be replaced by the npm equivalent. +See [Migration from npm](https://yarnpkg.com/lang/en/docs/migrating-from-npm/) in the Yarn documentation for a list of the equivalent commands. + +- Clone repository locally: `git clone https://github.com/glimmerjs/glimmer-component.git` +- Install dependencies: `yarn`, or `yarn install` +- Open project in your editor of choice and make your changes +- Run tests: `yarn run test` + +## Contributing + +Bug reports and pull requests are welcome on GitHub at https://github.com/glimmerjs/glimmer-component. + +## Acknowledgements + +Thanks to [Monegraph](http://monegraph.com) for funding the initial development +of this library. + +## License + +MIT License. diff --git a/packages/@glimmer/tracking/index.ts b/packages/@glimmer/tracking/index.ts new file mode 100644 index 000000000..627de50ba --- /dev/null +++ b/packages/@glimmer/tracking/index.ts @@ -0,0 +1,8 @@ +export { + tracked, + setPropertyDidChange, + tagForProperty, + metaFor, + trackedGet, + UntrackedPropertyError, +} from './src/tracked'; diff --git a/packages/@glimmer/tracking/package.json b/packages/@glimmer/tracking/package.json new file mode 100644 index 000000000..226007586 --- /dev/null +++ b/packages/@glimmer/tracking/package.json @@ -0,0 +1,31 @@ +{ + "name": "@glimmer/tracking", + "version": "0.13.0", + "description": "Glimmer property tracking library", + "contributors": [ + "Dan Gebhardt ", + "Tom Dale " + ], + "repository": "https://github.com/glimmerjs/glimmer.js", + "license": "MIT", + "files": [ + "dist" + ], + "main": "dist/commonjs/es5/index.js", + "module": "dist/modules/es2017/index.js", + "types": "dist/types/index.d.ts", + "dependencies": { + "@glimmer/di": "^0.1.9", + "@glimmer/env": "^0.1.7", + "@glimmer/reference": "^0.39.1", + "@glimmer/runtime": "^0.39.1", + "@glimmer/util": "^0.39.1" + }, + "devDependencies": { + "@glimmer/application-test-helpers": "^0.13.0", + "@glimmer/compiler": "^0.39.1", + "@glimmer/interfaces": "^0.39.1", + "@glimmer/resolver": "^0.3.0", + "@glimmer/wire-format": "^0.39.1" + } +} diff --git a/packages/@glimmer/component/src/tracked.ts b/packages/@glimmer/tracking/src/tracked.ts similarity index 98% rename from packages/@glimmer/component/src/tracked.ts rename to packages/@glimmer/tracking/src/tracked.ts index a782b12ef..5700fa617 100644 --- a/packages/@glimmer/component/src/tracked.ts +++ b/packages/@glimmer/tracking/src/tracked.ts @@ -41,7 +41,8 @@ class Tracker { * @example * * ```typescript - * import Component, { tracked } from '@glimmer/component'; + * import Component from '@glimmer/component'; + * import { tracked } from '@glimmer/tracking'; * * export default class MyComponent extends Component { * @tracked @@ -65,7 +66,8 @@ class Tracker { * * * ```typescript - * import Component, { tracked } from '@glimmer/component'; + * import Component from '@glimmer/component'; + * import { tracked } from '@glimmer/tracking'; * * const totalApples = 100; * @@ -183,7 +185,7 @@ function descriptorForTrackedComputedProperty( enumerable: true, configurable: false, get: getter, - set: set ? setter : undefined + set: set ? setter : undefined, }; } @@ -226,7 +228,7 @@ function installTrackedProperty(target: any, key: Key) { .inner.update(DirtyableTag.create()); this[shadowKey] = newValue; propertyDidChange(); - } + }, }); } @@ -472,14 +474,14 @@ function installDevModeErrorInterceptor( set() { throwError(this, key); - } + }, }); } } else { Object.defineProperty(obj, key, { set() { throwError(this, key); - } + }, }); } } diff --git a/packages/@glimmer/component/test/browser/tracked-property-test.ts b/packages/@glimmer/tracking/test/browser/tracked-property-test.ts similarity index 79% rename from packages/@glimmer/component/test/browser/tracked-property-test.ts rename to packages/@glimmer/tracking/test/browser/tracked-property-test.ts index ba4614318..fe2bcb23b 100644 --- a/packages/@glimmer/component/test/browser/tracked-property-test.ts +++ b/packages/@glimmer/tracking/test/browser/tracked-property-test.ts @@ -1,20 +1,28 @@ const { module, test } = QUnit; import { DEBUG } from '@glimmer/env'; -import { tracked, tagForProperty, UntrackedPropertyError } from '@glimmer/component'; -import { CONSTANT_TAG, DirtyableTag, Tag } from "@glimmer/reference"; +import { + tracked, + tagForProperty, + UntrackedPropertyError, +} from '@glimmer/tracking'; +import { CONSTANT_TAG, DirtyableTag, Tag } from '@glimmer/reference'; function unrelatedBump(tag: Tag, snapshot: number) { let t = DirtyableTag.create(); t.inner.dirty(); - QUnit.assert.strictEqual(tag.validate(snapshot), true, 'tag is still valid after an unrelated bump'); + QUnit.assert.strictEqual( + tag.validate(snapshot), + true, + 'tag is still valid after an unrelated bump' + ); } -module('[@glimmer/component] Tracked Properties'); +module('[@glimmer/tracking] Tracked Properties'); if (DEBUG) { - test('requesting a tag for an untracked property should throw an exception if mutated in development mode', (assert) => { + test('requesting a tag for an untracked property should throw an exception if mutated in development mode', assert => { assert.expect(2); class UntrackedPerson { @@ -22,8 +30,7 @@ if (DEBUG) { get lastName() { return 'Dale'; } - set lastName(value) { - } + set lastName(value) {} toString() { return 'UntrackedPerson'; @@ -43,7 +50,7 @@ if (DEBUG) { }, /The property 'lastName' on UntrackedPerson was changed after being rendered. If you want to change a property used in a template after the component has rendered, mark the property as a tracked property with the @tracked decorator./); }); } else { - test('requesting a tag for an untracked property should not throw an exception if mutated in production mode', (assert) => { + test('requesting a tag for an untracked property should not throw an exception if mutated in production mode', assert => { assert.expect(1); class UntrackedPerson { @@ -51,8 +58,7 @@ if (DEBUG) { get lastName() { return 'Dale'; } - set lastName(value) { - } + set lastName(value) {} toString() { return 'UntrackedPerson'; @@ -66,11 +72,14 @@ if (DEBUG) { obj.firstName = 'Ricardo'; obj.lastName = 'Mendes'; - assert.ok(true, 'did not throw an exception after mutating tracked properties'); + assert.ok( + true, + 'did not throw an exception after mutating tracked properties' + ); }); } -test('tracked properties can be read and written to', (assert) => { +test('tracked properties can be read and written to', assert => { class TrackedPerson { @tracked firstName = 'Tom'; } @@ -81,7 +90,7 @@ test('tracked properties can be read and written to', (assert) => { assert.strictEqual(obj.firstName, 'Edsger'); }); -test('can request a tag for a property', (assert) => { +test('can request a tag for a property', assert => { class TrackedPerson { @tracked firstName = 'Tom'; } @@ -94,14 +103,22 @@ test('can request a tag for a property', (assert) => { assert.ok(tag.validate(snapshot), 'tag should be valid to start'); obj.firstName = 'Edsger'; - assert.strictEqual(tag.validate(snapshot), false, 'tag is invalidated after property is set'); + assert.strictEqual( + tag.validate(snapshot), + false, + 'tag is invalidated after property is set' + ); snapshot = tag.value(); - assert.strictEqual(tag.validate(snapshot), true, 'tag is valid on the second check'); + assert.strictEqual( + tag.validate(snapshot), + true, + 'tag is valid on the second check' + ); unrelatedBump(tag, snapshot); }); -test('can request a tag for non-objects and get a CONSTANT_TAG', (assert) => { +test('can request a tag for non-objects and get a CONSTANT_TAG', assert => { let snapshot = CONSTANT_TAG.value(); assert.ok(tagForProperty(null, 'foo').validate(snapshot)); @@ -116,7 +133,7 @@ test('can request a tag for non-objects and get a CONSTANT_TAG', (assert) => { test('can request a tag from a frozen POJO', assert => { let obj = Object.freeze({ - firstName: 'Toran' + firstName: 'Toran', }); assert.strictEqual(obj.firstName, 'Toran'); @@ -177,9 +194,9 @@ test('can request a tag from an instance of a frozen class', assert => { unrelatedBump(tag, snapshot); }); -test('can track a computed property', (assert) => { +test('can track a computed property', assert => { let count = 0; - let firstName = "Tom"; + let firstName = 'Tom'; class TrackedPerson { @tracked get firstName() { @@ -200,22 +217,33 @@ test('can track a computed property', (assert) => { assert.ok(tag.validate(snapshot), 'tag should be valid to start'); assert.strictEqual(obj.firstName, 'Tom2'); - assert.ok(tag.validate(snapshot), 'reading from property does not invalidate the tag'); + assert.ok( + tag.validate(snapshot), + 'reading from property does not invalidate the tag' + ); obj.firstName = 'Edsger'; - assert.strictEqual(tag.validate(snapshot), false, 'tag is invalidated after property is set'); + assert.strictEqual( + tag.validate(snapshot), + false, + 'tag is invalidated after property is set' + ); snapshot = tag.value(); unrelatedBump(tag, snapshot); assert.strictEqual(obj.firstName, 'Edsger3'); - assert.strictEqual(tag.validate(snapshot), false, 'tag is invalid, since reading always recomputes the tags'); + assert.strictEqual( + tag.validate(snapshot), + false, + 'tag is invalid, since reading always recomputes the tags' + ); snapshot = tag.value(); unrelatedBump(tag, snapshot); }); -test('tracked computed properties are invalidated when their dependencies are invalidated', (assert) => { +test('tracked computed properties are invalidated when their dependencies are invalidated', assert => { class TrackedPerson { @tracked get salutation() { return `Hello, ${this.fullName}!`; @@ -236,7 +264,11 @@ test('tracked computed properties are invalidated when their dependencies are in } let obj = new TrackedPerson(); - assert.strictEqual(obj.salutation, 'Hello, Tom Dale!', `the saluation field is valid`); + assert.strictEqual( + obj.salutation, + 'Hello, Tom Dale!', + `the saluation field is valid` + ); assert.strictEqual(obj.fullName, 'Tom Dale', `the fullName field is valid`); let tag = tagForProperty(obj, 'salutation'); @@ -245,7 +277,11 @@ test('tracked computed properties are invalidated when their dependencies are in obj.firstName = 'Edsger'; obj.lastName = 'Dijkstra'; - assert.strictEqual(tag.validate(snapshot), false, 'tag is invalidated after chained dependency is set'); + assert.strictEqual( + tag.validate(snapshot), + false, + 'tag is invalidated after chained dependency is set' + ); assert.strictEqual(obj.fullName, 'Edsger Dijkstra'); assert.strictEqual(obj.salutation, 'Hello, Edsger Dijkstra!'); @@ -253,7 +289,11 @@ test('tracked computed properties are invalidated when their dependencies are in assert.strictEqual(tag.validate(snapshot), true); obj.fullName = 'Alan Kay'; - assert.strictEqual(tag.validate(snapshot), false, 'tag is invalidated after chained dependency is set'); + assert.strictEqual( + tag.validate(snapshot), + false, + 'tag is invalidated after chained dependency is set' + ); assert.strictEqual(obj.fullName, 'Alan Kay'); assert.strictEqual(obj.firstName, 'Alan'); assert.strictEqual(obj.lastName, 'Kay'); @@ -265,7 +305,7 @@ test('tracked computed properties are invalidated when their dependencies are in unrelatedBump(tag, snapshot); }); -test('nested @tracked in multiple objects', (assert) => { +test('nested @tracked in multiple objects', assert => { class TrackedPerson { @tracked get salutation() { return `Hello, ${this.fullName}!`; @@ -304,8 +344,16 @@ test('nested @tracked in multiple objects', (assert) => { } let obj = new TrackedContact(new TrackedPerson(), 'tom@example.com'); - assert.strictEqual(obj.contact, 'Tom Dale @ tom@example.com', `the contact field is valid`); - assert.strictEqual(obj.person.fullName, 'Tom Dale', `the fullName field is valid`); + assert.strictEqual( + obj.contact, + 'Tom Dale @ tom@example.com', + `the contact field is valid` + ); + assert.strictEqual( + obj.person.fullName, + 'Tom Dale', + `the fullName field is valid` + ); let person = obj.person; let tag = tagForProperty(obj, 'contact'); @@ -314,7 +362,11 @@ test('nested @tracked in multiple objects', (assert) => { person.firstName = 'Edsger'; person.lastName = 'Dijkstra'; - assert.strictEqual(tag.validate(snapshot), false, 'tag is invalidated after nested dependency is set'); + assert.strictEqual( + tag.validate(snapshot), + false, + 'tag is invalidated after nested dependency is set' + ); assert.strictEqual(person.fullName, 'Edsger Dijkstra'); assert.strictEqual(obj.contact, 'Edsger Dijkstra @ tom@example.com'); @@ -322,7 +374,11 @@ test('nested @tracked in multiple objects', (assert) => { assert.strictEqual(tag.validate(snapshot), true); person.fullName = 'Alan Kay'; - assert.strictEqual(tag.validate(snapshot), false, 'tag is invalidated after chained dependency is set'); + assert.strictEqual( + tag.validate(snapshot), + false, + 'tag is invalidated after chained dependency is set' + ); assert.strictEqual(person.fullName, 'Alan Kay'); assert.strictEqual(person.firstName, 'Alan'); assert.strictEqual(person.lastName, 'Kay'); @@ -331,8 +387,12 @@ test('nested @tracked in multiple objects', (assert) => { snapshot = tag.value(); assert.strictEqual(tag.validate(snapshot), true); - obj.email = "alan@example.com"; - assert.strictEqual(tag.validate(snapshot), false, 'tag is invalidated after chained dependency is set'); + obj.email = 'alan@example.com'; + assert.strictEqual( + tag.validate(snapshot), + false, + 'tag is invalidated after chained dependency is set' + ); assert.strictEqual(person.fullName, 'Alan Kay'); assert.strictEqual(person.firstName, 'Alan'); assert.strictEqual(person.lastName, 'Kay'); @@ -357,7 +417,11 @@ if (DEBUG) { } return new DependentKeysAreCool(); } - assert.throws(createErrorProneClass, /@tracked\('firstName', 'lastName'\)/, 'the correct error is thrown'); + assert.throws( + createErrorProneClass, + /@tracked\('firstName', 'lastName'\)/, + 'the correct error is thrown' + ); }); test('Using @tracked as a decorator factory throws an error', function(assert) { @@ -373,14 +437,18 @@ if (DEBUG) { } return new DependentKeysAreCool(); } - assert.throws(createErrorProneClass, /@tracked\(\)/, 'The correct error is thrown'); + assert.throws( + createErrorProneClass, + /@tracked\(\)/, + 'The correct error is thrown' + ); }); } module('[@glimmer/component] Tracked Property Warning in Development Mode'); if (DEBUG) { - test('interceptor works correctly for own value descriptor', (assert) => { + test('interceptor works correctly for own value descriptor', assert => { let obj = { name: 'Martin' }; tagForProperty(obj, 'name'); @@ -392,8 +460,10 @@ if (DEBUG) { }, UntrackedPropertyError.for(obj, 'name')); }); - test('interceptor works correctly for inherited value descriptor', (assert) => { - class Person { name: string; } + test('interceptor works correctly for inherited value descriptor', assert => { + class Person { + name: string; + } Person.prototype.name = 'Martin'; let obj = new Person(); @@ -407,11 +477,11 @@ if (DEBUG) { }, UntrackedPropertyError.for(obj, 'name')); }); - test('interceptor works correctly for own getter descriptor', (assert) => { + test('interceptor works correctly for own getter descriptor', assert => { let obj = { get name() { return 'Martin'; - } + }, }; tagForProperty(obj, 'name'); @@ -423,7 +493,7 @@ if (DEBUG) { }, UntrackedPropertyError.for(obj, 'name')); }); - test('interceptor works correctly for inherited getter descriptor', (assert) => { + test('interceptor works correctly for inherited getter descriptor', assert => { class Person { get name() { return 'Martin'; @@ -441,8 +511,10 @@ if (DEBUG) { }, UntrackedPropertyError.for(obj, 'name')); }); - test('interceptor works correctly for inherited non-configurable descriptor', (assert) => { - class Person { name: string; } + test('interceptor works correctly for inherited non-configurable descriptor', assert => { + class Person { + name: string; + } Person.prototype.name = 'Martin'; Object.defineProperty(Person.prototype, 'name', { configurable: false }); @@ -458,7 +530,7 @@ if (DEBUG) { }); } -test('interceptor is not installed for own non-configurable descriptor', (assert) => { +test('interceptor is not installed for own non-configurable descriptor', assert => { let obj = { name: 'Martin' }; Object.defineProperty(obj, 'name', { configurable: false }); @@ -471,7 +543,7 @@ test('interceptor is not installed for own non-configurable descriptor', (assert assert.strictEqual(obj.name, 'Tom'); }); -test('interceptor is not installed for array length [issue #34]', (assert) => { +test('interceptor is not installed for array length [issue #34]', assert => { let array = [1, 2, 3]; tagForProperty(array, 'length'); @@ -481,4 +553,4 @@ test('interceptor is not installed for array length [issue #34]', (assert) => { array.push(4); assert.strictEqual(array.length, 4); -}); \ No newline at end of file +}); diff --git a/yarn.lock b/yarn.lock index 01953e6c1..89d5be3ee 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,841 @@ # yarn lockfile v1 +"@babel/code-frame@7.0.0-beta.44": + version "7.0.0-beta.44" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-beta.44.tgz#2a02643368de80916162be70865c97774f3adbd9" + integrity sha512-cuAuTTIQ9RqcFRJ/Y8PvTh+paepNcaGxwQwjIDRWPXmzzyAeCO4KqS9ikMvq0MCbRk6GlYKwfzStrcP3/jSL8g== + dependencies: + "@babel/highlight" "7.0.0-beta.44" + +"@babel/code-frame@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8" + integrity sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA== + dependencies: + "@babel/highlight" "^7.0.0" + +"@babel/core@^7.0.0": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.2.2.tgz#07adba6dde27bb5ad8d8672f15fde3e08184a687" + integrity sha512-59vB0RWt09cAct5EIe58+NzGP4TFSD3Bz//2/ELy3ZeTeKF6VTD1AXlH8BGGbCX0PuobZBsIzO7IAI9PH67eKw== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/generator" "^7.2.2" + "@babel/helpers" "^7.2.0" + "@babel/parser" "^7.2.2" + "@babel/template" "^7.2.2" + "@babel/traverse" "^7.2.2" + "@babel/types" "^7.2.2" + convert-source-map "^1.1.0" + debug "^4.1.0" + json5 "^2.1.0" + lodash "^4.17.10" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/generator@7.0.0-beta.44": + version "7.0.0-beta.44" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.0.0-beta.44.tgz#c7e67b9b5284afcf69b309b50d7d37f3e5033d42" + integrity sha512-5xVb7hlhjGcdkKpMXgicAVgx8syK5VJz193k0i/0sLP6DzE6lRrU1K3B/rFefgdo9LPGMAOOOAWW4jycj07ShQ== + dependencies: + "@babel/types" "7.0.0-beta.44" + jsesc "^2.5.1" + lodash "^4.2.0" + source-map "^0.5.0" + trim-right "^1.0.1" + +"@babel/generator@^7.2.2": + version "7.3.2" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.3.2.tgz#fff31a7b2f2f3dad23ef8e01be45b0d5c2fc0132" + integrity sha512-f3QCuPppXxtZOEm5GWPra/uYUjmNQlu9pbAD8D/9jze4pTY83rTtB1igTBSwvkeNlC5gR24zFFkz+2WHLFQhqQ== + dependencies: + "@babel/types" "^7.3.2" + jsesc "^2.5.1" + lodash "^4.17.10" + source-map "^0.5.0" + trim-right "^1.0.1" + +"@babel/helper-annotate-as-pure@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz#323d39dd0b50e10c7c06ca7d7638e6864d8c5c32" + integrity sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q== + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz#6b69628dfe4087798e0c4ed98e3d4a6b2fbd2f5f" + integrity sha512-qNSR4jrmJ8M1VMM9tibvyRAHXQs2PmaksQF7c1CGJNipfe3D8p+wgNwgso/P2A2r2mdgBWAXljNWR0QRZAMW8w== + dependencies: + "@babel/helper-explode-assignable-expression" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-call-delegate@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.1.0.tgz#6a957f105f37755e8645343d3038a22e1449cc4a" + integrity sha512-YEtYZrw3GUK6emQHKthltKNZwszBcHK58Ygcis+gVUrF4/FmTVr5CCqQNSfmvg2y+YDEANyYoaLz/SHsnusCwQ== + dependencies: + "@babel/helper-hoist-variables" "^7.0.0" + "@babel/traverse" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-create-class-features-plugin@^7.3.0": + version "7.3.2" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.3.2.tgz#ba1685603eb1c9f2f51c9106d5180135c163fe73" + integrity sha512-tdW8+V8ceh2US4GsYdNVNoohq5uVwOf9k6krjwW4E1lINcHgttnWcNqgdoessn12dAy8QkbezlbQh2nXISNY+A== + dependencies: + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-member-expression-to-functions" "^7.0.0" + "@babel/helper-optimise-call-expression" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-replace-supers" "^7.2.3" + +"@babel/helper-define-map@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.1.0.tgz#3b74caec329b3c80c116290887c0dd9ae468c20c" + integrity sha512-yPPcW8dc3gZLN+U1mhYV91QU3n5uTbx7DUdf8NnPbjS0RMwBuHi9Xt2MUgppmNz7CJxTBWsGczTiEp1CSOTPRg== + dependencies: + "@babel/helper-function-name" "^7.1.0" + "@babel/types" "^7.0.0" + lodash "^4.17.10" + +"@babel/helper-explode-assignable-expression@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz#537fa13f6f1674df745b0c00ec8fe4e99681c8f6" + integrity sha512-NRQpfHrJ1msCHtKjbzs9YcMmJZOg6mQMmGRB+hbamEdG5PNpaSm95275VD92DvJKuyl0s2sFiDmMZ+EnnvufqA== + dependencies: + "@babel/traverse" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-function-name@7.0.0-beta.44": + version "7.0.0-beta.44" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.44.tgz#e18552aaae2231100a6e485e03854bc3532d44dd" + integrity sha512-MHRG2qZMKMFaBavX0LWpfZ2e+hLloT++N7rfM3DYOMUOGCD8cVjqZpwiL8a0bOX3IYcQev1ruciT0gdFFRTxzg== + dependencies: + "@babel/helper-get-function-arity" "7.0.0-beta.44" + "@babel/template" "7.0.0-beta.44" + "@babel/types" "7.0.0-beta.44" + +"@babel/helper-function-name@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz#a0ceb01685f73355d4360c1247f582bfafc8ff53" + integrity sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw== + dependencies: + "@babel/helper-get-function-arity" "^7.0.0" + "@babel/template" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-get-function-arity@7.0.0-beta.44": + version "7.0.0-beta.44" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.44.tgz#d03ca6dd2b9f7b0b1e6b32c56c72836140db3a15" + integrity sha512-w0YjWVwrM2HwP6/H3sEgrSQdkCaxppqFeJtAnB23pRiJB5E/O9Yp7JAAeWBl+gGEgmBFinnTyOv2RN7rcSmMiw== + dependencies: + "@babel/types" "7.0.0-beta.44" + +"@babel/helper-get-function-arity@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz#83572d4320e2a4657263734113c42868b64e49c3" + integrity sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ== + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-hoist-variables@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.0.0.tgz#46adc4c5e758645ae7a45deb92bab0918c23bb88" + integrity sha512-Ggv5sldXUeSKsuzLkddtyhyHe2YantsxWKNi7A+7LeD12ExRDWTRk29JCXpaHPAbMaIPZSil7n+lq78WY2VY7w== + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-member-expression-to-functions@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0.tgz#8cd14b0a0df7ff00f009e7d7a436945f47c7a16f" + integrity sha512-avo+lm/QmZlv27Zsi0xEor2fKcqWG56D5ae9dzklpIaY7cQMK5N8VSpaNVPPagiqmy7LrEjK1IWdGMOqPu5csg== + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-module-imports@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz#96081b7111e486da4d2cd971ad1a4fe216cc2e3d" + integrity sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A== + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-module-transforms@^7.1.0": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.2.2.tgz#ab2f8e8d231409f8370c883d20c335190284b963" + integrity sha512-YRD7I6Wsv+IHuTPkAmAS4HhY0dkPobgLftHp0cRGZSdrRvmZY8rFvae/GVu3bD00qscuvK3WPHB3YdNpBXUqrA== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-simple-access" "^7.1.0" + "@babel/helper-split-export-declaration" "^7.0.0" + "@babel/template" "^7.2.2" + "@babel/types" "^7.2.2" + lodash "^4.17.10" + +"@babel/helper-optimise-call-expression@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz#a2920c5702b073c15de51106200aa8cad20497d5" + integrity sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g== + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-plugin-utils@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz#bbb3fbee98661c569034237cc03967ba99b4f250" + integrity sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA== + +"@babel/helper-regex@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.0.0.tgz#2c1718923b57f9bbe64705ffe5640ac64d9bdb27" + integrity sha512-TR0/N0NDCcUIUEbqV6dCO+LptmmSQFQ7q70lfcEB4URsjD0E1HzicrwUH+ap6BAQ2jhCX9Q4UqZy4wilujWlkg== + dependencies: + lodash "^4.17.10" + +"@babel/helper-remap-async-to-generator@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz#361d80821b6f38da75bd3f0785ece20a88c5fe7f" + integrity sha512-3fOK0L+Fdlg8S5al8u/hWE6vhufGSn0bN09xm2LXMy//REAF8kDCrYoOBKYmA8m5Nom+sV9LyLCwrFynA8/slg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.0.0" + "@babel/helper-wrap-function" "^7.1.0" + "@babel/template" "^7.1.0" + "@babel/traverse" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-replace-supers@^7.1.0", "@babel/helper-replace-supers@^7.2.3": + version "7.2.3" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.2.3.tgz#19970020cf22677d62b3a689561dbd9644d8c5e5" + integrity sha512-GyieIznGUfPXPWu0yLS6U55Mz67AZD9cUk0BfirOWlPrXlBcan9Gz+vHGz+cPfuoweZSnPzPIm67VtQM0OWZbA== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.0.0" + "@babel/helper-optimise-call-expression" "^7.0.0" + "@babel/traverse" "^7.2.3" + "@babel/types" "^7.0.0" + +"@babel/helper-simple-access@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz#65eeb954c8c245beaa4e859da6188f39d71e585c" + integrity sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w== + dependencies: + "@babel/template" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-split-export-declaration@7.0.0-beta.44": + version "7.0.0-beta.44" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.44.tgz#c0b351735e0fbcb3822c8ad8db4e583b05ebd9dc" + integrity sha512-aQ7QowtkgKKzPGf0j6u77kBMdUFVBKNHw2p/3HX/POt5/oz8ec5cs0GwlgM8Hz7ui5EwJnzyfRmkNF1Nx1N7aA== + dependencies: + "@babel/types" "7.0.0-beta.44" + +"@babel/helper-split-export-declaration@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz#3aae285c0311c2ab095d997b8c9a94cad547d813" + integrity sha512-MXkOJqva62dfC0w85mEf/LucPPS/1+04nmmRMPEBUB++hiiThQ2zPtX/mEWQ3mtzCEjIJvPY8nuwxXtQeQwUag== + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-wrap-function@^7.1.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.2.0.tgz#c4e0012445769e2815b55296ead43a958549f6fa" + integrity sha512-o9fP1BZLLSrYlxYEYyl2aS+Flun5gtjTIG8iln+XuEzQTs0PLagAGSXUcqruJwD5fM48jzIEggCKpIfWTcR7pQ== + dependencies: + "@babel/helper-function-name" "^7.1.0" + "@babel/template" "^7.1.0" + "@babel/traverse" "^7.1.0" + "@babel/types" "^7.2.0" + +"@babel/helpers@^7.2.0": + version "7.3.1" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.3.1.tgz#949eec9ea4b45d3210feb7dc1c22db664c9e44b9" + integrity sha512-Q82R3jKsVpUV99mgX50gOPCWwco9Ec5Iln/8Vyu4osNIOQgSrd9RFrQeUvmvddFNoLwMyOUWU+5ckioEKpDoGA== + dependencies: + "@babel/template" "^7.1.2" + "@babel/traverse" "^7.1.5" + "@babel/types" "^7.3.0" + +"@babel/highlight@7.0.0-beta.44": + version "7.0.0-beta.44" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0-beta.44.tgz#18c94ce543916a80553edcdcf681890b200747d5" + integrity sha512-Il19yJvy7vMFm8AVAh6OZzaFoAd0hbkeMZiX3P5HGD+z7dyI7RzndHB0dg6Urh/VAFfHtpOIzDUSxmY6coyZWQ== + dependencies: + chalk "^2.0.0" + esutils "^2.0.2" + js-tokens "^3.0.0" + +"@babel/highlight@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4" + integrity sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw== + dependencies: + chalk "^2.0.0" + esutils "^2.0.2" + js-tokens "^4.0.0" + +"@babel/parser@^7.2.2", "@babel/parser@^7.2.3": + version "7.3.2" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.3.2.tgz#95cdeddfc3992a6ca2a1315191c1679ca32c55cd" + integrity sha512-QzNUC2RO1gadg+fs21fi0Uu0OuGNzRKEmgCxoLNzbCdoprLwjfmZwzUrpUNfJPaVRwBpDY47A17yYEGWyRelnQ== + +"@babel/plugin-proposal-async-generator-functions@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz#b289b306669dce4ad20b0252889a15768c9d417e" + integrity sha512-+Dfo/SCQqrwx48ptLVGLdE39YtWRuKc/Y9I5Fy0P1DDBB9lsAHpjcEJQt+4IifuSOSTLBKJObJqMvaO1pIE8LQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-remap-async-to-generator" "^7.1.0" + "@babel/plugin-syntax-async-generators" "^7.2.0" + +"@babel/plugin-proposal-class-properties@^7.1.0": + version "7.3.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.3.0.tgz#272636bc0fa19a0bc46e601ec78136a173ea36cd" + integrity sha512-wNHxLkEKTQ2ay0tnsam2z7fGZUi+05ziDJflEt3AZTP3oXLKHJp9HqhfroB/vdMvt3sda9fAbq7FsG8QPDrZBg== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.3.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-proposal-decorators@^7.1.2": + version "7.3.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.3.0.tgz#637ba075fa780b1f75d08186e8fb4357d03a72a7" + integrity sha512-3W/oCUmsO43FmZIqermmq6TKaRSYhmh/vybPfVFwQWdSb8xwki38uAIvknCRzuyHRuYfCYmJzL9or1v0AffPjg== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.3.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-decorators" "^7.2.0" + +"@babel/plugin-proposal-json-strings@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz#568ecc446c6148ae6b267f02551130891e29f317" + integrity sha512-MAFV1CA/YVmYwZG0fBQyXhmj0BHCB5egZHCKWIFVv/XCxAeVGIHfos3SwDck4LvCllENIAg7xMKOG5kH0dzyUg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-json-strings" "^7.2.0" + +"@babel/plugin-proposal-object-rest-spread@^7.3.1": + version "7.3.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.3.2.tgz#6d1859882d4d778578e41f82cc5d7bf3d5daf6c1" + integrity sha512-DjeMS+J2+lpANkYLLO+m6GjoTMygYglKmRe6cDTbFv3L9i6mmiE8fe6B8MtCSLZpVXscD5kn7s6SgtHrDoBWoA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-object-rest-spread" "^7.2.0" + +"@babel/plugin-proposal-optional-catch-binding@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz#135d81edb68a081e55e56ec48541ece8065c38f5" + integrity sha512-mgYj3jCcxug6KUcX4OBoOJz3CMrwRfQELPQ5560F70YQUBZB7uac9fqaWamKR1iWUzGiK2t0ygzjTScZnVz75g== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.2.0" + +"@babel/plugin-proposal-unicode-property-regex@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.2.0.tgz#abe7281fe46c95ddc143a65e5358647792039520" + integrity sha512-LvRVYb7kikuOtIoUeWTkOxQEV1kYvL5B6U3iWEGCzPNRus1MzJweFqORTj+0jkxozkTSYNJozPOddxmqdqsRpw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-regex" "^7.0.0" + regexpu-core "^4.2.0" + +"@babel/plugin-syntax-async-generators@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz#69e1f0db34c6f5a0cf7e2b3323bf159a76c8cb7f" + integrity sha512-1ZrIRBv2t0GSlcwVoQ6VgSLpLgiN/FVQUzt9znxo7v2Ov4jJrs8RY8tv0wvDmFN3qIdMKWrmMMW6yZ0G19MfGg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-decorators@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.2.0.tgz#c50b1b957dcc69e4b1127b65e1c33eef61570c1b" + integrity sha512-38QdqVoXdHUQfTpZo3rQwqQdWtCn5tMv4uV6r2RMfTqNBuv4ZBhz79SfaQWKTVmxHjeFv/DnXVC/+agHCklYWA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-json-strings@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.2.0.tgz#72bd13f6ffe1d25938129d2a186b11fd62951470" + integrity sha512-5UGYnMSLRE1dqqZwug+1LISpA403HzlSfsg6P9VXU6TBjcSHeNlw4DxDx7LgpF+iKZoOG/+uzqoRHTdcUpiZNg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-object-rest-spread@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz#3b7a3e733510c57e820b9142a6579ac8b0dfad2e" + integrity sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz#a94013d6eda8908dfe6a477e7f9eda85656ecf5c" + integrity sha512-bDe4xKNhb0LI7IvZHiA13kff0KEfaGX/Hv4lMA9+7TEc63hMNvfKo6ZFpXhKuEp+II/q35Gc4NoMeDZyaUbj9w== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-typescript@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.2.0.tgz#55d240536bd314dcbbec70fd949c5cabaed1de29" + integrity sha512-WhKr6yu6yGpGcNMVgIBuI9MkredpVc7Y3YR4UzEZmDztHoL6wV56YBHLhWnjO1EvId1B32HrD3DRFc+zSoKI1g== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-arrow-functions@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz#9aeafbe4d6ffc6563bf8f8372091628f00779550" + integrity sha512-ER77Cax1+8/8jCB9fo4Ud161OZzWN5qawi4GusDuRLcDbDG+bIGYY20zb2dfAFdTRGzrfq2xZPvF0R64EHnimg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-async-to-generator@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.2.0.tgz#68b8a438663e88519e65b776f8938f3445b1a2ff" + integrity sha512-CEHzg4g5UraReozI9D4fblBYABs7IM6UerAVG7EJVrTLC5keh00aEuLUT+O40+mJCEzaXkYfTCUKIyeDfMOFFQ== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-remap-async-to-generator" "^7.1.0" + +"@babel/plugin-transform-block-scoped-functions@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz#5d3cc11e8d5ddd752aa64c9148d0db6cb79fd190" + integrity sha512-ntQPR6q1/NKuphly49+QiQiTN0O63uOwjdD6dhIjSWBI5xlrbUFh720TIpzBhpnrLfv2tNH/BXvLIab1+BAI0w== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-block-scoping@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.2.0.tgz#f17c49d91eedbcdf5dd50597d16f5f2f770132d4" + integrity sha512-vDTgf19ZEV6mx35yiPJe4fS02mPQUUcBNwWQSZFXSzTSbsJFQvHt7DqyS3LK8oOWALFOsJ+8bbqBgkirZteD5Q== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + lodash "^4.17.10" + +"@babel/plugin-transform-classes@^7.2.0": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.2.2.tgz#6c90542f210ee975aa2aa8c8b5af7fa73a126953" + integrity sha512-gEZvgTy1VtcDOaQty1l10T3jQmJKlNVxLDCs+3rCVPr6nMkODLELxViq5X9l+rfxbie3XrfrMCYYY6eX3aOcOQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.0.0" + "@babel/helper-define-map" "^7.1.0" + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-optimise-call-expression" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-replace-supers" "^7.1.0" + "@babel/helper-split-export-declaration" "^7.0.0" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz#83a7df6a658865b1c8f641d510c6f3af220216da" + integrity sha512-kP/drqTxY6Xt3NNpKiMomfgkNn4o7+vKxK2DDKcBG9sHj51vHqMBGy8wbDS/J4lMxnqs153/T3+DmCEAkC5cpA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-destructuring@^7.2.0": + version "7.3.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.3.2.tgz#f2f5520be055ba1c38c41c0e094d8a461dd78f2d" + integrity sha512-Lrj/u53Ufqxl/sGxyjsJ2XNtNuEjDyjpqdhMNh5aZ+XFOdThL46KBj27Uem4ggoezSYBxKWAil6Hu8HtwqesYw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-dotall-regex@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.2.0.tgz#f0aabb93d120a8ac61e925ea0ba440812dbe0e49" + integrity sha512-sKxnyHfizweTgKZf7XsXu/CNupKhzijptfTM+bozonIuyVrLWVUvYjE2bhuSBML8VQeMxq4Mm63Q9qvcvUcciQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-regex" "^7.0.0" + regexpu-core "^4.1.3" + +"@babel/plugin-transform-duplicate-keys@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.2.0.tgz#d952c4930f312a4dbfff18f0b2914e60c35530b3" + integrity sha512-q+yuxW4DsTjNceUiTzK0L+AfQ0zD9rWaTLiUqHA8p0gxx7lu1EylenfzjeIWNkPy6e/0VG/Wjw9uf9LueQwLOw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-exponentiation-operator@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz#a63868289e5b4007f7054d46491af51435766008" + integrity sha512-umh4hR6N7mu4Elq9GG8TOu9M0bakvlsREEC+ialrQN6ABS4oDQ69qJv1VtR3uxlKMCQMCvzk7vr17RHKcjx68A== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.1.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-for-of@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.2.0.tgz#ab7468befa80f764bb03d3cb5eef8cc998e1cad9" + integrity sha512-Kz7Mt0SsV2tQk6jG5bBv5phVbkd0gd27SgYD4hH1aLMJRchM0dzHaXvrWhVZ+WxAlDoAKZ7Uy3jVTW2mKXQ1WQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-function-name@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.2.0.tgz#f7930362829ff99a3174c39f0afcc024ef59731a" + integrity sha512-kWgksow9lHdvBC2Z4mxTsvc7YdY7w/V6B2vy9cTIPtLEE9NhwoWivaxdNM/S37elu5bqlLP/qOY906LukO9lkQ== + dependencies: + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-literals@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz#690353e81f9267dad4fd8cfd77eafa86aba53ea1" + integrity sha512-2ThDhm4lI4oV7fVQ6pNNK+sx+c/GM5/SaML0w/r4ZB7sAneD/piDJtwdKlNckXeyGK7wlwg2E2w33C/Hh+VFCg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-modules-amd@^7.0.0", "@babel/plugin-transform-modules-amd@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.2.0.tgz#82a9bce45b95441f617a24011dc89d12da7f4ee6" + integrity sha512-mK2A8ucqz1qhrdqjS9VMIDfIvvT2thrEsIQzbaTdc5QFzhDjQv2CkJJ5f6BXIkgbmaoax3zBr2RyvV/8zeoUZw== + dependencies: + "@babel/helper-module-transforms" "^7.1.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-modules-commonjs@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.2.0.tgz#c4f1933f5991d5145e9cfad1dfd848ea1727f404" + integrity sha512-V6y0uaUQrQPXUrmj+hgnks8va2L0zcZymeU7TtWEgdRLNkceafKXEduv7QzgQAE4lT+suwooG9dC7LFhdRAbVQ== + dependencies: + "@babel/helper-module-transforms" "^7.1.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-simple-access" "^7.1.0" + +"@babel/plugin-transform-modules-systemjs@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.2.0.tgz#912bfe9e5ff982924c81d0937c92d24994bb9068" + integrity sha512-aYJwpAhoK9a+1+O625WIjvMY11wkB/ok0WClVwmeo3mCjcNRjt+/8gHWrB5i+00mUju0gWsBkQnPpdvQ7PImmQ== + dependencies: + "@babel/helper-hoist-variables" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-modules-umd@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.2.0.tgz#7678ce75169f0877b8eb2235538c074268dd01ae" + integrity sha512-BV3bw6MyUH1iIsGhXlOK6sXhmSarZjtJ/vMiD9dNmpY8QXFFQTj+6v92pcfy1iqa8DeAfJFwoxcrS/TUZda6sw== + dependencies: + "@babel/helper-module-transforms" "^7.1.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.3.0": + version "7.3.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.3.0.tgz#140b52985b2d6ef0cb092ef3b29502b990f9cd50" + integrity sha512-NxIoNVhk9ZxS+9lSoAQ/LM0V2UEvARLttEHUrRDGKFaAxOYQcrkN/nLRE+BbbicCAvZPl7wMP0X60HsHE5DtQw== + dependencies: + regexp-tree "^0.1.0" + +"@babel/plugin-transform-new-target@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.0.0.tgz#ae8fbd89517fa7892d20e6564e641e8770c3aa4a" + integrity sha512-yin069FYjah+LbqfGeTfzIBODex/e++Yfa0rH0fpfam9uTbuEeEOx5GLGr210ggOV77mVRNoeqSYqeuaqSzVSw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-object-super@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.2.0.tgz#b35d4c10f56bab5d650047dad0f1d8e8814b6598" + integrity sha512-VMyhPYZISFZAqAPVkiYb7dUe2AsVi2/wCT5+wZdsNO31FojQJa9ns40hzZ6U9f50Jlq4w6qwzdBB2uwqZ00ebg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-replace-supers" "^7.1.0" + +"@babel/plugin-transform-parameters@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.2.0.tgz#0d5ad15dc805e2ea866df4dd6682bfe76d1408c2" + integrity sha512-kB9+hhUidIgUoBQ0MsxMewhzr8i60nMa2KgeJKQWYrqQpqcBYtnpR+JgkadZVZoaEZ/eKu9mclFaVwhRpLNSzA== + dependencies: + "@babel/helper-call-delegate" "^7.1.0" + "@babel/helper-get-function-arity" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-regenerator@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.0.0.tgz#5b41686b4ed40bef874d7ed6a84bdd849c13e0c1" + integrity sha512-sj2qzsEx8KDVv1QuJc/dEfilkg3RRPvPYx/VnKLtItVQRWt1Wqf5eVCOLZm29CiGFfYYsA3VPjfizTCV0S0Dlw== + dependencies: + regenerator-transform "^0.13.3" + +"@babel/plugin-transform-runtime@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.2.0.tgz#566bc43f7d0aedc880eaddbd29168d0f248966ea" + integrity sha512-jIgkljDdq4RYDnJyQsiWbdvGeei/0MOTtSHKO/rfbd/mXBxNpdlulMx49L0HQ4pug1fXannxoqCI+fYSle9eSw== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + resolve "^1.8.1" + semver "^5.5.1" + +"@babel/plugin-transform-shorthand-properties@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz#6333aee2f8d6ee7e28615457298934a3b46198f0" + integrity sha512-QP4eUM83ha9zmYtpbnyjTLAGKQritA5XW/iG9cjtuOI8s1RuL/3V6a3DeSHfKutJQ+ayUfeZJPcnCYEQzaPQqg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-spread@^7.2.0": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.2.tgz#3103a9abe22f742b6d406ecd3cd49b774919b406" + integrity sha512-KWfky/58vubwtS0hLqEnrWJjsMGaOeSBn90Ezn5Jeg9Z8KKHmELbP1yGylMlm5N6TPKeY9A2+UaSYLdxahg01w== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-sticky-regex@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz#a1e454b5995560a9c1e0d537dfc15061fd2687e1" + integrity sha512-KKYCoGaRAf+ckH8gEL3JHUaFVyNHKe3ASNsZ+AlktgHevvxGigoIttrEJb8iKN03Q7Eazlv1s6cx2B2cQ3Jabw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-regex" "^7.0.0" + +"@babel/plugin-transform-template-literals@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.2.0.tgz#d87ed01b8eaac7a92473f608c97c089de2ba1e5b" + integrity sha512-FkPix00J9A/XWXv4VoKJBMeSkyY9x/TqIh76wzcdfl57RJJcf8CehQ08uwfhCDNtRQYtHQKBTwKZDEyjE13Lwg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-typeof-symbol@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.2.0.tgz#117d2bcec2fbf64b4b59d1f9819894682d29f2b2" + integrity sha512-2LNhETWYxiYysBtrBTqL8+La0jIoQQnIScUJc74OYvUGRmkskNY4EzLCnjHBzdmb38wqtTaixpo1NctEcvMDZw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-typescript@^7.1.0": + version "7.3.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.3.2.tgz#59a7227163e55738842f043d9e5bd7c040447d96" + integrity sha512-Pvco0x0ZSCnexJnshMfaibQ5hnK8aUHSvjCQhC1JR8eeg+iBwt0AtCO7gWxJ358zZevuf9wPSO5rv+WJcbHPXQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-typescript" "^7.2.0" + +"@babel/plugin-transform-unicode-regex@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.2.0.tgz#4eb8db16f972f8abb5062c161b8b115546ade08b" + integrity sha512-m48Y0lMhrbXEJnVUaYly29jRXbQ3ksxPrS1Tg8t+MHqzXhtBYAvI51euOBaoAlZLPHsieY9XPVMf80a5x0cPcA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-regex" "^7.0.0" + regexpu-core "^4.1.3" + +"@babel/polyfill@^7.0.0": + version "7.2.5" + resolved "https://registry.yarnpkg.com/@babel/polyfill/-/polyfill-7.2.5.tgz#6c54b964f71ad27edddc567d065e57e87ed7fa7d" + integrity sha512-8Y/t3MWThtMLYr0YNC/Q76tqN1w30+b0uQMeFUYauG2UGTR19zyUtFrAzT23zNtBxPp+LbE5E/nwV/q/r3y6ug== + dependencies: + core-js "^2.5.7" + regenerator-runtime "^0.12.0" + +"@babel/preset-env@^7.0.0": + version "7.3.1" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.3.1.tgz#389e8ca6b17ae67aaf9a2111665030be923515db" + integrity sha512-FHKrD6Dxf30e8xgHQO0zJZpUPfVZg+Xwgz5/RdSWCbza9QLNk4Qbp40ctRoqDxml3O8RMzB1DU55SXeDG6PqHQ== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-proposal-async-generator-functions" "^7.2.0" + "@babel/plugin-proposal-json-strings" "^7.2.0" + "@babel/plugin-proposal-object-rest-spread" "^7.3.1" + "@babel/plugin-proposal-optional-catch-binding" "^7.2.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.2.0" + "@babel/plugin-syntax-async-generators" "^7.2.0" + "@babel/plugin-syntax-json-strings" "^7.2.0" + "@babel/plugin-syntax-object-rest-spread" "^7.2.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.2.0" + "@babel/plugin-transform-arrow-functions" "^7.2.0" + "@babel/plugin-transform-async-to-generator" "^7.2.0" + "@babel/plugin-transform-block-scoped-functions" "^7.2.0" + "@babel/plugin-transform-block-scoping" "^7.2.0" + "@babel/plugin-transform-classes" "^7.2.0" + "@babel/plugin-transform-computed-properties" "^7.2.0" + "@babel/plugin-transform-destructuring" "^7.2.0" + "@babel/plugin-transform-dotall-regex" "^7.2.0" + "@babel/plugin-transform-duplicate-keys" "^7.2.0" + "@babel/plugin-transform-exponentiation-operator" "^7.2.0" + "@babel/plugin-transform-for-of" "^7.2.0" + "@babel/plugin-transform-function-name" "^7.2.0" + "@babel/plugin-transform-literals" "^7.2.0" + "@babel/plugin-transform-modules-amd" "^7.2.0" + "@babel/plugin-transform-modules-commonjs" "^7.2.0" + "@babel/plugin-transform-modules-systemjs" "^7.2.0" + "@babel/plugin-transform-modules-umd" "^7.2.0" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.3.0" + "@babel/plugin-transform-new-target" "^7.0.0" + "@babel/plugin-transform-object-super" "^7.2.0" + "@babel/plugin-transform-parameters" "^7.2.0" + "@babel/plugin-transform-regenerator" "^7.0.0" + "@babel/plugin-transform-shorthand-properties" "^7.2.0" + "@babel/plugin-transform-spread" "^7.2.0" + "@babel/plugin-transform-sticky-regex" "^7.2.0" + "@babel/plugin-transform-template-literals" "^7.2.0" + "@babel/plugin-transform-typeof-symbol" "^7.2.0" + "@babel/plugin-transform-unicode-regex" "^7.2.0" + browserslist "^4.3.4" + invariant "^2.2.2" + js-levenshtein "^1.1.3" + semver "^5.3.0" + +"@babel/runtime@^7.2.0": + version "7.3.1" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.3.1.tgz#574b03e8e8a9898eaf4a872a92ea20b7846f6f2a" + integrity sha512-7jGW8ppV0ant637pIqAcFfQDDH1orEPGJb8aXfUozuCU3QqX7rX4DA8iwrbPrR1hcH0FTTHz47yQnk+bl5xHQA== + dependencies: + regenerator-runtime "^0.12.0" + +"@babel/template@7.0.0-beta.44": + version "7.0.0-beta.44" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.0.0-beta.44.tgz#f8832f4fdcee5d59bf515e595fc5106c529b394f" + integrity sha512-w750Sloq0UNifLx1rUqwfbnC6uSUk0mfwwgGRfdLiaUzfAOiH0tHJE6ILQIUi3KYkjiCDTskoIsnfqZvWLBDng== + dependencies: + "@babel/code-frame" "7.0.0-beta.44" + "@babel/types" "7.0.0-beta.44" + babylon "7.0.0-beta.44" + lodash "^4.2.0" + +"@babel/template@^7.1.0", "@babel/template@^7.1.2", "@babel/template@^7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.2.2.tgz#005b3fdf0ed96e88041330379e0da9a708eb2907" + integrity sha512-zRL0IMM02AUDwghf5LMSSDEz7sBCO2YnNmpg3uWTZj/v1rcG2BmQUvaGU8GhU8BvfMh1k2KIAYZ7Ji9KXPUg7g== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/parser" "^7.2.2" + "@babel/types" "^7.2.2" + +"@babel/traverse@7.0.0-beta.44": + version "7.0.0-beta.44" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.0.0-beta.44.tgz#a970a2c45477ad18017e2e465a0606feee0d2966" + integrity sha512-UHuDz8ukQkJCDASKHf+oDt3FVUzFd+QYfuBIsiNu/4+/ix6pP/C+uQZJ6K1oEfbCMv/IKWbgDEh7fcsnIE5AtA== + dependencies: + "@babel/code-frame" "7.0.0-beta.44" + "@babel/generator" "7.0.0-beta.44" + "@babel/helper-function-name" "7.0.0-beta.44" + "@babel/helper-split-export-declaration" "7.0.0-beta.44" + "@babel/types" "7.0.0-beta.44" + babylon "7.0.0-beta.44" + debug "^3.1.0" + globals "^11.1.0" + invariant "^2.2.0" + lodash "^4.2.0" + +"@babel/traverse@^7.1.0", "@babel/traverse@^7.1.5", "@babel/traverse@^7.2.2", "@babel/traverse@^7.2.3": + version "7.2.3" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.2.3.tgz#7ff50cefa9c7c0bd2d81231fdac122f3957748d8" + integrity sha512-Z31oUD/fJvEWVR0lNZtfgvVt512ForCTNKYcJBGbPb1QZfve4WGH8Wsy7+Mev33/45fhP/hwQtvgusNdcCMgSw== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/generator" "^7.2.2" + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-split-export-declaration" "^7.0.0" + "@babel/parser" "^7.2.3" + "@babel/types" "^7.2.2" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.10" + +"@babel/types@7.0.0-beta.44": + version "7.0.0-beta.44" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.0.0-beta.44.tgz#6b1b164591f77dec0a0342aca995f2d046b3a757" + integrity sha512-5eTV4WRmqbaFM3v9gHAIljEQJU4Ssc6fxL61JN+Oe2ga/BwyjzjamwkCVVAQjHGuAX8i0BWo42dshL8eO5KfLQ== + dependencies: + esutils "^2.0.2" + lodash "^4.2.0" + to-fast-properties "^2.0.0" + +"@babel/types@^7.0.0", "@babel/types@^7.2.0", "@babel/types@^7.2.2", "@babel/types@^7.3.0", "@babel/types@^7.3.2": + version "7.3.2" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.3.2.tgz#424f5be4be633fff33fb83ab8d67e4a8290f5a2f" + integrity sha512-3Y6H8xlUlpbGR+XvawiH0UXehqydTmNmEpozWcXymqwcrwYAl5KMvKtQ+TF6f6E08V6Jur7v/ykdDSF+WDEIXQ== + dependencies: + esutils "^2.0.2" + lodash "^4.17.10" + to-fast-properties "^2.0.0" + +"@ember-decorators/babel-transforms@^5.0.0": + version "5.1.2" + resolved "https://registry.yarnpkg.com/@ember-decorators/babel-transforms/-/babel-transforms-5.1.2.tgz#f0c6ea55431b6f1c187d63d8aab9e39a33c4c585" + integrity sha512-8tLTA4+VHtvZTr8AYWJpbuPt0JXLezdybviUUnY8oObsaxCzFP7pwgzWg1FzGnrUEPYWzHcoNpxHfowXJt5tag== + dependencies: + "@babel/plugin-proposal-class-properties" "^7.1.0" + "@babel/plugin-proposal-decorators" "^7.1.2" + ember-cli-babel-plugin-helpers "^1.0.0" + ember-cli-version-checker "^3.0.0" + +"@ember-decorators/component@^5.1.2": + version "5.1.2" + resolved "https://registry.yarnpkg.com/@ember-decorators/component/-/component-5.1.2.tgz#67ef09b083f7e94f0669e726b66a25cfdb44de4d" + integrity sha512-p72OP3D+pJ/XNXx8zqzkeHY5CGdQRDrxXrXJTezphTV7iBIrs9yMNfnXGIbN8QnItPV65OF8VbhjmzH7AN+LPg== + dependencies: + "@ember-decorators/utils" "^5.1.2" + ember-cli-babel "^7.1.3" + +"@ember-decorators/controller@^5.1.2": + version "5.1.2" + resolved "https://registry.yarnpkg.com/@ember-decorators/controller/-/controller-5.1.2.tgz#afb45a3ec4e9e4abc9bd4ab17ba53693bf21b5a2" + integrity sha512-9QcMHqXWICrmH7ifXuwNxOG4lzOh5mdcr5ZlBYP6kDou2KJGtzV/jA0GlAd83gCkHZ984b1ZY129rwYVnU54xA== + dependencies: + "@ember-decorators/utils" "^5.1.2" + ember-cli-babel "^7.1.3" + +"@ember-decorators/data@^5.1.2": + version "5.1.2" + resolved "https://registry.yarnpkg.com/@ember-decorators/data/-/data-5.1.2.tgz#ae77cdf245284be63619190bebf81bee39af5b88" + integrity sha512-BqyhqdSf6JyaJuAhxBN6WYnBbXuFi1zR97dhNyRaM3gRgCu2HUePWPP5mTE6TsDVbcu2Vb536rjoV3ebhsPJqg== + dependencies: + "@ember-decorators/utils" "^5.1.2" + ember-cli-babel "^7.1.3" + +"@ember-decorators/object@^5.1.2": + version "5.1.2" + resolved "https://registry.yarnpkg.com/@ember-decorators/object/-/object-5.1.2.tgz#575ad09bf891b283b0ccdad1ff58154f41a855a5" + integrity sha512-7JnMvBnRz3EpEv2p7fr63GvzyJSfqdXDfUKb/1RdRySF+IvcM8vvMOWyNOpgBvg5wBfmXlcnf2n6OQ9ZQey3wg== + dependencies: + "@ember-decorators/utils" "^5.1.2" + ember-cli-babel "^7.1.3" + +"@ember-decorators/service@^5.1.2": + version "5.1.2" + resolved "https://registry.yarnpkg.com/@ember-decorators/service/-/service-5.1.2.tgz#b547b2fbb4a5a2fd30cdc83fcd1345c52458099b" + integrity sha512-8b+oIdn672d/no8e1R7+bAPq+FnVNTjQetmXeJVGqtqA+hTA2FtOfJcch8AZDGfyBxL2V5S50n+K8R1WuEHxFg== + dependencies: + "@ember-decorators/utils" "^5.1.2" + ember-cli-babel "^7.1.3" + +"@ember-decorators/utils@^5.1.2": + version "5.1.2" + resolved "https://registry.yarnpkg.com/@ember-decorators/utils/-/utils-5.1.2.tgz#23ff1561ae6ecde14799d5df2a985fa134ca5269" + integrity sha512-EwaL93W0TDN9HjNCwVpYRtMShljP7y1vM4CUkF9lSMGcEqChl1HZemuJ2D2Lx+mIpPQhz8yskkPwCuvs9l3qGQ== + dependencies: + babel-plugin-debug-macros "^0.2.0" + ember-cli-babel "^7.1.3" + ember-cli-version-checker "^3.0.0" + ember-compatibility-helpers "^1.1.2" + semver "^5.6.0" + +"@ember/optional-features@^0.6.1": + version "0.6.4" + resolved "https://registry.yarnpkg.com/@ember/optional-features/-/optional-features-0.6.4.tgz#8199f853c1781234fcb1f05090cddd0b822bff69" + integrity sha512-nKmKxMk+Q/BGE8cmfq8KTHnYHVgrU3GHhy/eZ/OTj/fUvzXZhxaEVFOfAXssiOzV3FOQDJjznpbua2TEtHaQRw== + dependencies: + chalk "^2.3.0" + co "^4.6.0" + ember-cli-version-checker "^2.1.0" + glob "^7.1.2" + inquirer "^3.3.0" + mkdirp "^0.5.1" + silent-error "^1.1.0" + util.promisify "^1.0.0" + +"@ember/test-helpers@^0.7.26": + version "0.7.27" + resolved "https://registry.yarnpkg.com/@ember/test-helpers/-/test-helpers-0.7.27.tgz#c622cabd0cbb95b34efc1e1b6274ab5a14edc138" + integrity sha512-AQESk0FTFxRY6GyZ8PharR4SC7Fju0rXqNkfNYIntAjzefZ8xEqEM4iXDj5h7gAvfx/8dA69AQ9+p7ubc+KvJg== + dependencies: + broccoli-funnel "^2.0.1" + ember-assign-polyfill "~2.4.0" + ember-cli-babel "^6.12.0" + ember-cli-htmlbars-inline-precompile "^1.0.0" + "@glimmer/bundle-compiler@^0.39.1": version "0.39.1" resolved "https://registry.yarnpkg.com/@glimmer/bundle-compiler/-/bundle-compiler-0.39.1.tgz#c9fc49d073c867227bf49a6d6c11374bbec69013" @@ -215,6 +1050,181 @@ resolved "https://registry.yarnpkg.com/@simple-dom/void-map/-/void-map-1.4.0.tgz#f15f07568fe1076740407266aa5e6eac249bc78c" integrity sha512-VDhLEyVCbuhOBBgHol9ShzIv9O8UCzdXeH4FoXu2DOcu/nnvTjLTck+BgXsCLv5ynDiUdoqsREEVFnoyPpFKVw== +"@sindresorhus/is@^0.7.0": + version "0.7.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.7.0.tgz#9a06f4f137ee84d7df0460c1fdb1135ffa6c50fd" + integrity sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow== + +"@types/ember-qunit@~3.4.3": + version "3.4.5" + resolved "https://registry.yarnpkg.com/@types/ember-qunit/-/ember-qunit-3.4.5.tgz#791e4919a88b8d2ac982e4d73564a2c4c08fec6a" + integrity sha512-Nk9hubQdaBUbRgw68dkcLsAt9n9WIHFX3vj5e75Cht5MVizz7j6hW6O5zGtM1QPp62+2/TgUqGIEYMv4nlw1uQ== + dependencies: + "@types/ember" "*" + "@types/ember-test-helpers" "*" + +"@types/ember-test-helpers@*", "@types/ember-test-helpers@~1.0.4": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@types/ember-test-helpers/-/ember-test-helpers-1.0.4.tgz#db08190659339cd6018ff8f842c6df6f24d7679a" + integrity sha512-9UnLaDSRiNHZtj3Bn46kRkQKbbnb50ClpzQQ0p/raZYzHjDjUZfLpI4KOuVRfibgEj4LI+lsUKx5LQeLD09wcw== + dependencies: + "@types/ember" "*" + "@types/htmlbars-inline-precompile" "*" + "@types/jquery" "*" + "@types/rsvp" "*" + +"@types/ember-testing-helpers@^0.0.3": + version "0.0.3" + resolved "https://registry.yarnpkg.com/@types/ember-testing-helpers/-/ember-testing-helpers-0.0.3.tgz#1a6cfc484b63d19ddd822c87e4dd710597db17d9" + integrity sha512-QG3QBBR7PFzz3zhLTbsZWBgk3cNQIZYVG6rbXKMM36+YP3dcSkkWQ6CRTyQImUIfgAkYPMaWqGlGEtkuanq3Bg== + dependencies: + "@types/jquery" "*" + "@types/rsvp" "*" + +"@types/ember@*", "@types/ember@~3.0.26": + version "3.0.26" + resolved "https://registry.yarnpkg.com/@types/ember/-/ember-3.0.26.tgz#54381f59c63e8860de9ea0c40defb519f117b0b3" + integrity sha512-GsvXPrRHBYSq55ZHaXX7NpMvmJBe95Uy8wHAF+2KDIcEy2HbHps6QcnrRBgg/8MEEI71lFs28ZKrTY/YhwyQOw== + dependencies: + "@types/ember__application" "*" + "@types/ember__array" "*" + "@types/ember__component" "*" + "@types/ember__controller" "*" + "@types/ember__debug" "*" + "@types/ember__engine" "*" + "@types/ember__error" "*" + "@types/ember__object" "*" + "@types/ember__polyfills" "*" + "@types/ember__routing" "*" + "@types/ember__runloop" "*" + "@types/ember__service" "*" + "@types/ember__string" "*" + "@types/ember__test" "*" + "@types/ember__utils" "*" + "@types/handlebars" "*" + "@types/htmlbars-inline-precompile" "*" + "@types/jquery" "*" + "@types/rsvp" "*" + +"@types/ember__application@*": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@types/ember__application/-/ember__application-3.0.5.tgz#e171c5f44f58fb5600952bfde25c1dfe3785a08e" + integrity sha512-lRZZInE7g5//UQyJ2ro/wql6AcjYeFTo69SYrL2qdgHSwGemSv/A/6u5Q73OMuKZL22nNyCLoCy/Q7TrEhM/mQ== + +"@types/ember__array@*": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/ember__array/-/ember__array-3.0.3.tgz#87887852b16b7572441b9723994098f939f2a386" + integrity sha512-9RVCedNGxkXrCwOVvDaD5/RB4FbOzZLA5+BV5kcRkxjNcAQMx29BwM6/nipAKGppi1wmoPPkVpsHcJcbiuUgbQ== + +"@types/ember__component@*": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@types/ember__component/-/ember__component-3.0.4.tgz#e671213269bbf974445fb9fdd600d52ef0ae1e2a" + integrity sha512-SgUAtEqbTdexNFJsvC0EJ0wfQ3+a66xGEFojwjoeilVUaBDAhcfGzlai6Y101xfyax9kYdBX3XJ2YmtRh32rPw== + dependencies: + "@types/jquery" "*" + +"@types/ember__controller@*": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/ember__controller/-/ember__controller-3.0.3.tgz#622440d41ce0ae46f2610ed22670be9088cc9c2b" + integrity sha512-jJ/4SmRfAQuLS+dxB7GdS9BU1dpqA8QzKq84d1+aZkpcDiu0pD7/Xwu5FN4pbU1kBfX2w6jdQQRlnorOpuYltQ== + +"@types/ember__debug@*": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/ember__debug/-/ember__debug-3.0.3.tgz#b8c3481e2305b636dca4524331efd4112071902b" + integrity sha512-6cOPb5S9IX4tU4b8YwkxbnlF+mql/ejTgpMtuyNmFyp4irBV9fdKn6y1K6hvml7yDSJnhdw37/6Gs+nGi95eKQ== + +"@types/ember__engine@*": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/ember__engine/-/ember__engine-3.0.3.tgz#440e656f825f73240419367ee7637ca94b4a1780" + integrity sha512-mXaUam9NbU7mOxRDBNcnW3GYpo+NVYQPSRor6ghdABOl+Lik8frX0oqgSnknauoCVW34Q75oH3xAd1cjNWEsPA== + +"@types/ember__error@*": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/ember__error/-/ember__error-3.0.2.tgz#a30c0e51215feaaa7a32e341c5a04bd601a01d1b" + integrity sha512-U1IsKAfoqgNTAQ7rojbAmF8ynQaovfHP9Kff1lCB1A1FLq+vtQ81CzaiEHgWWAlPfbqrFtBIYD0rwehEQ1ofRg== + +"@types/ember__object@*": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@types/ember__object/-/ember__object-3.0.6.tgz#980822abe397ae16cce5dba51688aa0e0e12b39a" + integrity sha512-Kx2aKbbjF66k3+owaXQ5HDzn9+yIkg37neuN88sKcZdmHZA1g7xJq6fZliJMp3fX3pA5nbRYVM6Jt0OeBWjGFw== + dependencies: + "@types/ember__object" "*" + "@types/rsvp" "*" + +"@types/ember__polyfills@*": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/ember__polyfills/-/ember__polyfills-3.0.3.tgz#3435974347f52b962283a1ab8d699fef6b7334d0" + integrity sha512-i1p3rn4qb09U3xkj6ziiOlcnH15zCdhsusW8y/jg39P/bcmOOBvL7M7D0hXcPoS3ynohPMuhLiO25nfl1bM7UA== + +"@types/ember__routing@*": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@types/ember__routing/-/ember__routing-3.0.6.tgz#30a695b065486dec69a579598436eb98cb512fb5" + integrity sha512-G6RSZB2/UWu/Op6I18NXMsJVzFbHeVN61Dqf5ni/9JafSrdHExaezpOKeGQy4N5GjPnVQAiMs1NBN9oTd1lwig== + +"@types/ember__runloop@*": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/ember__runloop/-/ember__runloop-3.0.3.tgz#c23c9d4327ca811482422505a1f5bf1c48458f53" + integrity sha512-JQ9SK0pmdXcIpy++FpIC3tJeHtEn9sxO2QRNDR3Xe8KVnq7+ld4lmNF6DMIx9UvoyV2lJstrv/sjDqhMvIadwA== + +"@types/ember__service@*": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/ember__service/-/ember__service-3.0.2.tgz#8265c94a599c865f633361b0e3b1efbeef393d7d" + integrity sha512-HxruUU/U3wIFk6YTX1Yl57WjosuPpawr3JJHUZktPHjFwe9uHEIoO8yc7QUeQTB9OIk3NVt05391TtOJrKON7g== + +"@types/ember__string@*": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/ember__string/-/ember__string-3.0.3.tgz#cf7199dd4b58fc7445e8695ea709634da786b2e8" + integrity sha512-rD7zB9a14sg37IgfEOX3CVEii15XQzi9/2mBPiq17vd2yac7wjy1gaEHfb076CJmvJHV2gsyrbolejXoj5PjRA== + dependencies: + "@types/handlebars" "*" + +"@types/ember__test-helpers@~0.7.6": + version "0.7.7" + resolved "https://registry.yarnpkg.com/@types/ember__test-helpers/-/ember__test-helpers-0.7.7.tgz#b11832e5e622c1e61f96d8477845a84b5ec348c3" + integrity sha512-Agvz+92jejB/Fy4jf0qhii6bOeXrPXZUWkGGlbNT5VXppRbQaQirjML/NSoGm93dU/o2JD/E9Ax8ZOFSthGkDw== + dependencies: + "@types/ember" "*" + "@types/ember__application" "*" + "@types/ember__error" "*" + "@types/htmlbars-inline-precompile" "*" + +"@types/ember__test@*": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/ember__test/-/ember__test-3.0.3.tgz#dda4721609e9e80d62af784757b8b3b76b49a07d" + integrity sha512-pedzxJh7BZBIL4tgnWv74f3EuRqbm7sRroWFhcIRhNliFUTN0GZ9p7poAp7gnwOxpYLcXOvUjkdaeaWP6rxYMA== + +"@types/ember__utils@*": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@types/ember__utils/-/ember__utils-3.0.1.tgz#f08aa24920515400fec869cbf29df69c4773f6d0" + integrity sha512-seA9IX2DCrkHxgVmtoKUVEBj6to8vqlPG7AzwB2oodLlQZiRwmrnn+fjOn+wKA5btIVIiRdxn/f41qFZXcPy6w== + +"@types/handlebars@*": + version "4.0.40" + resolved "https://registry.yarnpkg.com/@types/handlebars/-/handlebars-4.0.40.tgz#b714e13d296a75bff3f199316d1311933ca79ffd" + integrity sha512-sGWNtsjNrLOdKha2RV1UeF8+UbQnPSG7qbe5wwbni0mw4h2gHXyPFUMOC+xwGirIiiydM/HSqjDO4rk6NFB18w== + +"@types/htmlbars-inline-precompile@*": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@types/htmlbars-inline-precompile/-/htmlbars-inline-precompile-1.0.0.tgz#4c283da1a7e303b269de3c6aa953acc8d8736949" + integrity sha512-J7+MkDbUl/Sb57OuniuvVr4HLlHV2ub2y31HmD9QiepLEMj0zGIv4hbyOfGHTKWCcU0r7lxcDdHdLyUjpuL21w== + +"@types/jquery@*": + version "3.3.29" + resolved "https://registry.yarnpkg.com/@types/jquery/-/jquery-3.3.29.tgz#680a2219ce3c9250483722fccf5570d1e2d08abd" + integrity sha512-FhJvBninYD36v3k6c+bVk1DSZwh7B5Dpb/Pyk3HKVsiohn0nhbefZZ+3JXbWQhFyt0MxSl2jRDdGQPHeOHFXrQ== + dependencies: + "@types/sizzle" "*" + +"@types/minimatch@^3.0.3": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" + integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== + +"@types/mocha@^5.2.5": + version "5.2.5" + resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-5.2.5.tgz#8a4accfc403c124a0bafe8a9fc61a05ec1032073" + integrity sha512-lAVp+Kj54ui/vLUFxsJTMtWvZraZxum3w3Nwkble2dNuV5VnPA+Mi2oGX9XYJAaIvZi3tn3cbjS/qcJXRb6Bww== + "@types/node@^8.0.46": version "8.10.11" resolved "https://registry.yarnpkg.com/@types/node/-/node-8.10.11.tgz#971ea8cb91adbe0b74e3fbd867dec192d5893a5f" @@ -225,6 +1235,21 @@ resolved "https://registry.yarnpkg.com/@types/qunit/-/qunit-2.5.0.tgz#fab886ca4160ba8bf299b146a8f54ee3057c8e32" integrity sha512-thhSizaUp9hPZjV3HaMtzRFwGANxLnqsjgdotXFtfVCCUfY4jgbzFRVKYrqsOExkk3OImgMWKk3opx2vethVbw== +"@types/qunit@^2.5.3": + version "2.5.4" + resolved "https://registry.yarnpkg.com/@types/qunit/-/qunit-2.5.4.tgz#0518940acc6013259a8619a1ec34ce0e4ff8d1c4" + integrity sha512-VHi2lEd4/zp8OOouf43JXGJJ5ZxHvdLL1dU0Yakp6Iy73SjpuXl7yjwAwmh1qhTv8krDgHteSwaySr++uXX9YQ== + +"@types/rsvp@*", "@types/rsvp@^4.0.2": + version "4.0.2" + resolved "https://registry.yarnpkg.com/@types/rsvp/-/rsvp-4.0.2.tgz#bf9f72eaa6771292638a85bb8ce1db97e754b371" + integrity sha512-48ZwxFD1hdBj8QMOSNGA2kYuo3+SKh8OEYh5cMi7cPRZXBF9jwVPV4yqA7EcJTNlAJL0v99pEUYetl0TsufMQA== + +"@types/sizzle@*": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@types/sizzle/-/sizzle-2.3.2.tgz#a811b8c18e2babab7d542b3365887ae2e4d9de47" + integrity sha512-7EJYyKTL7tFR8+gDbB6Wwz/arpGa0Mywk1TJbNzKzHtzbwVmY4HR9WqS5VV7dsBUKQmPNr192jHr/VpBluj/hg== + abbrev@1: version "1.1.1" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" @@ -316,7 +1341,7 @@ align-text@^0.1.1, align-text@^0.1.3: longest "^1.0.1" repeat-string "^1.5.2" -amd-name-resolver@1.0.0, amd-name-resolver@^1.0.0, "amd-name-resolver@https://github.com/ember-cli/amd-name-resolver.git": +amd-name-resolver@1.0.0, amd-name-resolver@1.2.0, amd-name-resolver@^1.0.0, amd-name-resolver@^1.2.0, amd-name-resolver@^1.2.1, "amd-name-resolver@https://github.com/ember-cli/amd-name-resolver.git": version "1.3.1" resolved "https://github.com/ember-cli/amd-name-resolver.git#9d519b14987bcfa3f9c6012f3808ac24fac1e9c0" dependencies: @@ -360,6 +1385,13 @@ ansi-styles@^3.0.0, ansi-styles@^3.2.1: dependencies: color-convert "^1.9.0" +ansi-to-html@^0.6.6: + version "0.6.10" + resolved "https://registry.yarnpkg.com/ansi-to-html/-/ansi-to-html-0.6.10.tgz#412114353bac2589a034db7ec5b371b8ba771131" + integrity sha512-znsY3gvsk4CiApWu1yVYF8Nx5Vy0FEe8B0YwyxdbCdErJu5lfKlRHB2twtUjR+dxR4WewTk2OP8XqTmWYnImOg== + dependencies: + entities "^1.1.1" + ansicolors@~0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/ansicolors/-/ansicolors-0.2.1.tgz#be089599097b74a5c9c4a84a0cdbcdb62bd87aef" @@ -524,6 +1556,11 @@ assert-plus@1.0.0, assert-plus@^1.0.0: resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= +assertion-error@^1.0.1, assertion-error@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" + integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== + assign-symbols@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" @@ -557,7 +1594,7 @@ async-limiter@~1.0.0: resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" integrity sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg== -async-promise-queue@^1.0.3: +async-promise-queue@^1.0.3, async-promise-queue@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/async-promise-queue/-/async-promise-queue-1.0.4.tgz#308baafbc74aff66a0bb6e7f4a18d4fe8434440c" integrity sha512-GQ5X3DT+TefYuFPHdvIPXFTlKnh39U7dwtl+aUBGeKjMea9nBpv3c91DXgeyBQmY07vQ97f3Sr9XHqkamEameQ== @@ -643,6 +1680,18 @@ babel-core@^6.14.0, babel-core@^6.26.0: slash "^1.0.0" source-map "^0.5.7" +babel-eslint@^8.2.6: + version "8.2.6" + resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-8.2.6.tgz#6270d0c73205628067c0f7ae1693a9e797acefd9" + integrity sha512-aCdHjhzcILdP8c9lej7hvXKvQieyRt20SF102SIGyY4cUIiw6UaAtK4j2o3dXX74jEmy0TJ0CEhv4fTIM3SzcA== + dependencies: + "@babel/code-frame" "7.0.0-beta.44" + "@babel/traverse" "7.0.0-beta.44" + "@babel/types" "7.0.0-beta.44" + babylon "7.0.0-beta.44" + eslint-scope "3.7.1" + eslint-visitor-keys "^1.0.0" + babel-generator@^6.26.0: version "6.26.1" resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90" @@ -784,13 +1833,43 @@ babel-plugin-check-es2015-constants@^6.22.0: dependencies: babel-runtime "^6.22.0" -babel-plugin-debug-macros@^0.1.11: +babel-plugin-debug-macros@^0.1.10: version "0.1.11" resolved "https://registry.yarnpkg.com/babel-plugin-debug-macros/-/babel-plugin-debug-macros-0.1.11.tgz#6c562bf561fccd406ce14ab04f42c218cf956605" integrity sha512-hZw5qNNGAR02Y+yBUrtsnJHh8OXavkayPRqKGAXnIm4t5rWVpj3ArwsC7TWdpZsBguQvHAeyTxZ7s23yY60HHg== dependencies: semver "^5.3.0" +babel-plugin-debug-macros@^0.2.0, babel-plugin-debug-macros@^0.2.0-beta.6: + version "0.2.0" + resolved "https://registry.yarnpkg.com/babel-plugin-debug-macros/-/babel-plugin-debug-macros-0.2.0.tgz#0120ac20ce06ccc57bf493b667cf24b85c28da7a" + integrity sha512-Wpmw4TbhR3Eq2t3W51eBAQSdKlr+uAyF0GI4GtPfMCD12Y4cIdpKC9l0RjNTH/P9isFypSqqewMPm7//fnZlNA== + dependencies: + semver "^5.3.0" + +babel-plugin-ember-modules-api-polyfill@^2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/babel-plugin-ember-modules-api-polyfill/-/babel-plugin-ember-modules-api-polyfill-2.6.0.tgz#9524a65ef0c31ee82536a19c243fbaec1b977cbb" + integrity sha512-BSbLv3+ju1mcUUoPe7vPJgnGawrNxp6LfFBRHlNOKeMlQlml9Wo2MRRUrbpNDlmVc761xSKj8+cde7R0Lwpq7g== + dependencies: + ember-rfc176-data "^0.3.6" + +babel-plugin-htmlbars-inline-precompile@^0.2.5: + version "0.2.6" + resolved "https://registry.yarnpkg.com/babel-plugin-htmlbars-inline-precompile/-/babel-plugin-htmlbars-inline-precompile-0.2.6.tgz#c00b8a3f4b32ca04bf0f0d5169fcef3b5a66d69d" + integrity sha512-H4H75TKGUFij8ukwEYWEERAgrUf16R8NSK1uDPe3QwxT8mnE1K8+/s6DVjUqbM5Pv6lSIcE4XufXdlSX+DTB6g== + +babel-plugin-module-resolver@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/babel-plugin-module-resolver/-/babel-plugin-module-resolver-3.1.3.tgz#5a1c148bf528d20907ed508b70ae3c4762e78c8d" + integrity sha512-QRfA8b2H7l9uSElLwS0rHoPhjPhgpncKUvrn42tJpdCoJ3IS6J+m4mp5FtnRoXHry3ZYJ2SMLLG/REikQA6tjg== + dependencies: + find-babel-config "^1.1.0" + glob "^7.1.2" + pkg-up "^2.0.0" + reselect "^3.0.1" + resolve "^1.4.0" + babel-plugin-strip-glimmer-utils@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/babel-plugin-strip-glimmer-utils/-/babel-plugin-strip-glimmer-utils-0.1.1.tgz#df74a4a349d0b8522f434c457cb6cef20483c9ea" @@ -1042,6 +2121,15 @@ babel-plugin-transform-strict-mode@^6.24.1: babel-runtime "^6.22.0" babel-types "^6.24.1" +babel-polyfill@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.26.0.tgz#379937abc67d7895970adc621f284cd966cf2153" + integrity sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM= + dependencies: + babel-runtime "^6.26.0" + core-js "^2.5.0" + regenerator-runtime "^0.10.5" + babel-preset-env@^1.6.0: version "1.6.1" resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.6.1.tgz#a18b564cc9b9afdf4aae57ae3c1b0d99188e6f48" @@ -1078,6 +2166,42 @@ babel-preset-env@^1.6.0: invariant "^2.2.2" semver "^5.3.0" +babel-preset-env@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.7.0.tgz#dea79fa4ebeb883cd35dab07e260c1c9c04df77a" + integrity sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg== + dependencies: + babel-plugin-check-es2015-constants "^6.22.0" + babel-plugin-syntax-trailing-function-commas "^6.22.0" + babel-plugin-transform-async-to-generator "^6.22.0" + babel-plugin-transform-es2015-arrow-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoping "^6.23.0" + babel-plugin-transform-es2015-classes "^6.23.0" + babel-plugin-transform-es2015-computed-properties "^6.22.0" + babel-plugin-transform-es2015-destructuring "^6.23.0" + babel-plugin-transform-es2015-duplicate-keys "^6.22.0" + babel-plugin-transform-es2015-for-of "^6.23.0" + babel-plugin-transform-es2015-function-name "^6.22.0" + babel-plugin-transform-es2015-literals "^6.22.0" + babel-plugin-transform-es2015-modules-amd "^6.22.0" + babel-plugin-transform-es2015-modules-commonjs "^6.23.0" + babel-plugin-transform-es2015-modules-systemjs "^6.23.0" + babel-plugin-transform-es2015-modules-umd "^6.23.0" + babel-plugin-transform-es2015-object-super "^6.22.0" + babel-plugin-transform-es2015-parameters "^6.23.0" + babel-plugin-transform-es2015-shorthand-properties "^6.22.0" + babel-plugin-transform-es2015-spread "^6.22.0" + babel-plugin-transform-es2015-sticky-regex "^6.22.0" + babel-plugin-transform-es2015-template-literals "^6.22.0" + babel-plugin-transform-es2015-typeof-symbol "^6.23.0" + babel-plugin-transform-es2015-unicode-regex "^6.22.0" + babel-plugin-transform-exponentiation-operator "^6.22.0" + babel-plugin-transform-regenerator "^6.22.0" + browserslist "^3.2.6" + invariant "^2.2.2" + semver "^5.3.0" + babel-register@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071" @@ -1135,6 +2259,11 @@ babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0: lodash "^4.17.4" to-fast-properties "^1.0.3" +babylon@7.0.0-beta.44: + version "7.0.0-beta.44" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.44.tgz#89159e15e6e30c5096e22d738d8c0af8a0e8ca1d" + integrity sha512-5Hlm13BJVAioCHpImtFqNOF2H3ieTOHd0fmFGMxOJ9jgeFqeAwsv3u5P5cR7CSeFrkgHsT19DgFJkHV0/Mcd8g== + babylon@^6.18.0: version "6.18.0" resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" @@ -1162,6 +2291,11 @@ base64-arraybuffer@0.1.5: resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8" integrity sha1-c5JncZI7Whl0etZmqlzUv5xunOg= +base64-js@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-0.0.2.tgz#024f0f72afa25b75f9c0ee73cd4f55ec1bed9784" + integrity sha1-Ak8Pcq+iW3X5wO5zzU9V7Bvtl4Q= + base64id@0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/base64id/-/base64id-0.1.0.tgz#02ce0fdeee0cef4f40080e1e73e834f0b1bfce3f" @@ -1255,6 +2389,22 @@ body-parser@1.18.2: raw-body "2.3.2" type-is "~1.6.15" +body-parser@1.18.3: + version "1.18.3" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.3.tgz#5b292198ffdd553b3a0f20ded0592b956955c8b4" + integrity sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ= + dependencies: + bytes "3.0.0" + content-type "~1.0.4" + debug "2.6.9" + depd "~1.1.2" + http-errors "~1.6.3" + iconv-lite "0.4.23" + on-finished "~2.3.0" + qs "6.5.2" + raw-body "2.3.3" + type-is "~1.6.16" + body@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/body/-/body-5.1.0.tgz#e4ba0ce410a46936323367609ecb4e6553125069" @@ -1279,6 +2429,14 @@ boom@5.x.x: dependencies: hoek "4.x.x" +bops@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/bops/-/bops-0.0.3.tgz#c5cbf6fea8be7401ca5ea6d1679e6c4e8b407c79" + integrity sha1-xcv2/qi+dAHKXqbRZ55sTotAfHk= + dependencies: + base64-js "0.0.2" + to-utf8 "0.0.1" + bower-config@^1.3.0: version "1.4.1" resolved "https://registry.yarnpkg.com/bower-config/-/bower-config-1.4.1.tgz#85fd9df367c2b8dbbd0caa4c5f2bad40cd84c2cc" @@ -1328,6 +2486,33 @@ braces@^2.3.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" + integrity sha512-QLjCWblDW//a/5/ivDikVPRHiA+d/1K45meHZA6lAlpHC1c216rcZQYpdlo9PiOJiI4T3tKqDaaM1CDeFDCoVQ== + dependencies: + broccoli-plugin "^1.3.0" + symlink-or-copy "^1.2.0" + +broccoli-asset-rev@^2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/broccoli-asset-rev/-/broccoli-asset-rev-2.7.0.tgz#c73da1d97c4180366fa442a87624ca1b7fb99161" + integrity sha512-GZ7gU3Qo6HMAUqDeh1q+4UVCQPJPjCyGcpIY5s9Qp58a244FT4nZSiy8qYkVC4LLIWTZt59G7jFFsUcj/13IPQ== + dependencies: + broccoli-asset-rewrite "^1.1.0" + broccoli-filter "^1.2.2" + broccoli-persistent-filter "^1.4.3" + json-stable-stringify "^1.0.0" + minimatch "^3.0.4" + rsvp "^3.0.6" + +broccoli-asset-rewrite@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/broccoli-asset-rewrite/-/broccoli-asset-rewrite-1.1.0.tgz#77a5da56157aa318c59113245e8bafb4617f8830" + integrity sha1-d6XaVhV6oxjFkRMkXouvtGF/iDA= + dependencies: + broccoli-filter "^1.2.3" + broccoli-babel-transpiler@^6.0.0, broccoli-babel-transpiler@^6.1.2: version "6.1.4" resolved "https://registry.yarnpkg.com/broccoli-babel-transpiler/-/broccoli-babel-transpiler-6.1.4.tgz#8be8074c42abf2e17ff79b2d2a21df5c51143c82" @@ -1344,6 +2529,39 @@ broccoli-babel-transpiler@^6.0.0, broccoli-babel-transpiler@^6.1.2: rsvp "^3.5.0" workerpool "^2.3.0" +broccoli-babel-transpiler@^6.5.0: + version "6.5.1" + resolved "https://registry.yarnpkg.com/broccoli-babel-transpiler/-/broccoli-babel-transpiler-6.5.1.tgz#a4afc8d3b59b441518eb9a07bd44149476e30738" + integrity sha512-w6GcnkxvHcNCte5FcLGEG1hUdQvlfvSN/6PtGWU/otg69Ugk8rUk51h41R0Ugoc+TNxyeFG1opRt2RlA87XzNw== + dependencies: + babel-core "^6.26.0" + broccoli-funnel "^2.0.1" + broccoli-merge-trees "^2.0.0" + broccoli-persistent-filter "^1.4.3" + clone "^2.0.0" + hash-for-dep "^1.2.3" + heimdalljs-logger "^0.1.7" + json-stable-stringify "^1.0.0" + rsvp "^4.8.2" + workerpool "^2.3.0" + +broccoli-babel-transpiler@^7.1.0: + version "7.1.2" + resolved "https://registry.yarnpkg.com/broccoli-babel-transpiler/-/broccoli-babel-transpiler-7.1.2.tgz#fb5d6f8b9a805627ac3f2914ac9d86e82ca2413b" + integrity sha512-rljx86xgZJ2BjWt+xCSVfvyt3ONpCdMMXzMpeeVpAGdBHj3bqQICdPHZDAbzn1vKY/LIPsJZftvdxql1jiLGzw== + dependencies: + "@babel/core" "^7.0.0" + "@babel/polyfill" "^7.0.0" + broccoli-funnel "^2.0.1" + broccoli-merge-trees "^3.0.0" + broccoli-persistent-filter "^1.4.3" + clone "^2.1.2" + hash-for-dep "^1.2.3" + heimdalljs-logger "^0.1.9" + json-stable-stringify "^1.0.1" + rsvp "^4.8.3" + workerpool "^2.3.1" + 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" @@ -1351,6 +2569,19 @@ broccoli-brocfile-loader@^0.18.0: dependencies: findup-sync "^0.4.2" +broccoli-builder@^0.18.14: + version "0.18.14" + resolved "https://registry.yarnpkg.com/broccoli-builder/-/broccoli-builder-0.18.14.tgz#4b79e2f844de11a4e1b816c3f49c6df4776c312d" + integrity sha1-S3ni+ETeEaThuBbD9Jxt9HdsMS0= + dependencies: + broccoli-node-info "^1.1.0" + heimdalljs "^0.2.0" + promise-map-series "^0.2.1" + quick-temp "^0.1.2" + rimraf "^2.2.8" + rsvp "^3.0.17" + silent-error "^1.0.1" + broccoli-builder@^0.18.8: version "0.18.11" resolved "https://registry.yarnpkg.com/broccoli-builder/-/broccoli-builder-0.18.11.tgz#a42393c7b10bb0380df255a616307945f5e26efb" @@ -1363,6 +2594,18 @@ broccoli-builder@^0.18.8: rsvp "^3.0.17" silent-error "^1.0.1" +broccoli-caching-writer@^2.2.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/broccoli-caching-writer/-/broccoli-caching-writer-2.3.1.tgz#b93cf58f9264f003075868db05774f4e7f25bd07" + integrity sha1-uTz1j5Jk8AMHWGjbBXdPTn8lvQc= + dependencies: + broccoli-kitchen-sink-helpers "^0.2.5" + broccoli-plugin "1.1.0" + debug "^2.1.1" + rimraf "^2.2.8" + rsvp "^3.0.17" + walk-sync "^0.2.5" + broccoli-caching-writer@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/broccoli-caching-writer/-/broccoli-caching-writer-3.0.3.tgz#0bd2c96a9738d6a6ab590f07ba35c5157d7db476" @@ -1403,7 +2646,25 @@ broccoli-concat@^3.2.2: lodash.uniq "^4.2.0" walk-sync "^0.3.1" -broccoli-config-loader@^1.0.0: +broccoli-concat@^3.5.1: + version "3.7.3" + resolved "https://registry.yarnpkg.com/broccoli-concat/-/broccoli-concat-3.7.3.tgz#0dca01311567ffb13180e6b4eb111824628e4885" + integrity sha512-2Ma9h81EJ0PRb9n4sW0i8KZlcnpTQfKxcj87zvi5DFe1fd8CTDEdseHDotK2beuA2l+LbgVPfd8EHaBJKm/Y8g== + dependencies: + broccoli-debug "^0.6.5" + broccoli-kitchen-sink-helpers "^0.3.1" + broccoli-plugin "^1.3.0" + ensure-posix-path "^1.0.2" + fast-sourcemap-concat "^1.4.0" + find-index "^1.1.0" + fs-extra "^4.0.3" + fs-tree-diff "^0.5.7" + lodash.merge "^4.3.1" + lodash.omit "^4.1.0" + lodash.uniq "^4.2.0" + walk-sync "^0.3.2" + +broccoli-config-loader@^1.0.0, broccoli-config-loader@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/broccoli-config-loader/-/broccoli-config-loader-1.0.1.tgz#d10aaf8ebc0cb45c1da5baa82720e1d88d28c80a" integrity sha512-MDKYQ50rxhn+g17DYdfzfEM9DjTuSGu42Db37A8TQHQe8geYEcUZ4SQqZRgzdAI3aRQNlA1yBHJfOeGmOjhLIg== @@ -1432,6 +2693,18 @@ broccoli-debug@^0.6.1, broccoli-debug@^0.6.3: symlink-or-copy "^1.1.8" tree-sync "^1.2.2" +broccoli-debug@^0.6.4, broccoli-debug@^0.6.5: + version "0.6.5" + resolved "https://registry.yarnpkg.com/broccoli-debug/-/broccoli-debug-0.6.5.tgz#164a5cdafd8936e525e702bf8f91f39d758e2e78" + integrity sha512-RIVjHvNar9EMCLDW/FggxFRXqpjhncM/3qq87bn/y+/zR9tqEkHvTqbyOc4QnB97NO2m6342w4wGkemkaeOuWg== + dependencies: + broccoli-plugin "^1.2.1" + fs-tree-diff "^0.5.2" + heimdalljs "^0.2.1" + heimdalljs-logger "^0.1.7" + symlink-or-copy "^1.1.8" + tree-sync "^1.2.2" + broccoli-file-creator@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/broccoli-file-creator/-/broccoli-file-creator-1.2.0.tgz#27f1b25b1b00e7bb7bf3d5d7abed5f4d5388df4d" @@ -1440,6 +2713,29 @@ broccoli-file-creator@^1.1.1: broccoli-plugin "^1.1.0" mkdirp "^0.5.1" +broccoli-file-creator@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/broccoli-file-creator/-/broccoli-file-creator-2.1.1.tgz#7351dd2496c762cfce7736ce9b49e3fce0c7b7db" + integrity sha512-YpjOExWr92C5vhnK0kmD81kM7U09kdIRZk9w4ZDCDHuHXW+VE/x6AGEOQQW3loBQQ6Jk+k+TSm8dESy4uZsnjw== + dependencies: + broccoli-plugin "^1.1.0" + mkdirp "^0.5.1" + +broccoli-filter@^1.2.2, broccoli-filter@^1.2.3: + version "1.3.0" + resolved "https://registry.yarnpkg.com/broccoli-filter/-/broccoli-filter-1.3.0.tgz#71e3a8e32a17f309e12261919c5b1006d6766de6" + integrity sha512-VXJXw7eBfG82CFxaBDjYmyN7V72D4In2zwLVQJd/h3mBfF3CMdRTsv2L20lmRTtCv1sAHcB+LgMso90e/KYiLw== + dependencies: + broccoli-kitchen-sink-helpers "^0.3.1" + broccoli-plugin "^1.0.0" + copy-dereference "^1.0.0" + debug "^2.2.0" + mkdirp "^0.5.1" + promise-map-series "^0.2.1" + rsvp "^3.0.18" + symlink-or-copy "^1.0.1" + walk-sync "^0.3.1" + broccoli-funnel-reducer@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/broccoli-funnel-reducer/-/broccoli-funnel-reducer-1.0.0.tgz#11365b2a785aec9b17972a36df87eef24c5cc0ea" @@ -1484,6 +2780,14 @@ broccoli-funnel@^2.0.0, broccoli-funnel@^2.0.1: symlink-or-copy "^1.0.0" walk-sync "^0.3.1" +broccoli-kitchen-sink-helpers@^0.2.5: + version "0.2.9" + resolved "https://registry.yarnpkg.com/broccoli-kitchen-sink-helpers/-/broccoli-kitchen-sink-helpers-0.2.9.tgz#a5e0986ed8d76fb5984b68c3f0450d3a96e36ecc" + integrity sha1-peCYbtjXb7WYS2jD8EUNOpbjbsw= + dependencies: + glob "^5.0.10" + mkdirp "^0.5.1" + broccoli-kitchen-sink-helpers@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/broccoli-kitchen-sink-helpers/-/broccoli-kitchen-sink-helpers-0.3.1.tgz#77c7c18194b9664163ec4fcee2793444926e0c06" @@ -1514,7 +2818,7 @@ broccoli-merge-trees@^2.0.0: broccoli-plugin "^1.3.0" merge-trees "^1.0.1" -broccoli-merge-trees@^3.0.0: +broccoli-merge-trees@^3.0.0, broccoli-merge-trees@^3.0.1, broccoli-merge-trees@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/broccoli-merge-trees/-/broccoli-merge-trees-3.0.2.tgz#f33b451994225522b5c9bcf27d59decfd8ba537d" integrity sha512-ZyPAwrOdlCddduFbsMyyFzJUrvW6b04pMvDiAQZrCwghlvgowJDY+EfoXn+eR1RRA5nmGHJ+B68T63VnpRiT1A== @@ -1530,15 +2834,61 @@ broccoli-middleware@^1.0.0: handlebars "^4.0.4" mime-types "^2.1.18" -broccoli-node-info@1.1.0: +broccoli-middleware@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/broccoli-middleware/-/broccoli-middleware-2.0.1.tgz#093314f13e52fad7fa8c4254a4e4a4560c857a65" + integrity sha512-V/K5uozcEH/XJ09ZAL8aJt/W2UwJU8I8fA2FAg3u9gzs5dQrehHDtgSoKS2QjPjurRC1GSiYLcsMp36sezaQQg== + dependencies: + handlebars "^4.0.4" + 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" + integrity sha512-0idZCOtdVG6xXoQ36Psc1ApMCr3lW5DB+WEAOEwHcUoESIBHzwcRPQTxheGIjZ5o0hxpsRYAUH5x0ErtNezbrQ== + 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" + integrity sha512-HTi9ua520M20aBZomaiBopsSt3yjL7J/paR3XPjieygK7+ShATBiZdn0B+ZPiniBi4I8JuMn1q0fNFUevtP//A== + dependencies: + broccoli-plugin "^1.3.0" + mkdirp "^0.5.1" + walk-sync "^0.3.2" + +broccoli-node-info@1.1.0, broccoli-node-info@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/broccoli-node-info/-/broccoli-node-info-1.1.0.tgz#3aa2e31e07e5bdb516dd25214f7c45ba1c459412" integrity sha1-OqLjHgflvbUW3SUhT3xFuhxFlBI= -broccoli-persistent-filter@^1.1.6, broccoli-persistent-filter@^1.2.13, broccoli-persistent-filter@^1.4.0: - version "1.4.3" - resolved "https://registry.yarnpkg.com/broccoli-persistent-filter/-/broccoli-persistent-filter-1.4.3.tgz#3511bc52fc53740cda51621f58a28152d9911bc1" - integrity sha512-JwNLDvvXJlhUmr+CHcbVhCyp33NbCIAITjQZmJY9e8QzANXh3jpFWlhSFvkWghwKA8rTAKcXkW12agtiZjxr4g== +broccoli-persistent-filter@^1.1.6, broccoli-persistent-filter@^1.2.13, broccoli-persistent-filter@^1.4.0: + version "1.4.3" + resolved "https://registry.yarnpkg.com/broccoli-persistent-filter/-/broccoli-persistent-filter-1.4.3.tgz#3511bc52fc53740cda51621f58a28152d9911bc1" + integrity sha512-JwNLDvvXJlhUmr+CHcbVhCyp33NbCIAITjQZmJY9e8QzANXh3jpFWlhSFvkWghwKA8rTAKcXkW12agtiZjxr4g== + dependencies: + async-disk-cache "^1.2.1" + async-promise-queue "^1.0.3" + broccoli-plugin "^1.0.0" + fs-tree-diff "^0.5.2" + hash-for-dep "^1.0.2" + heimdalljs "^0.2.1" + heimdalljs-logger "^0.1.7" + mkdirp "^0.5.1" + promise-map-series "^0.2.1" + rimraf "^2.6.1" + rsvp "^3.0.18" + symlink-or-copy "^1.0.1" + walk-sync "^0.3.1" + +broccoli-persistent-filter@^1.4.3: + version "1.4.6" + resolved "https://registry.yarnpkg.com/broccoli-persistent-filter/-/broccoli-persistent-filter-1.4.6.tgz#80762d19000880a77da33c34373299c0f6a3e615" + integrity sha512-0RejLwoC95kv4kta8KAa+FmECJCK78Qgm8SRDEK7YyU0N9Cx6KpY3UCDy9WELl3mCXLN8TokNxc7/hp3lL4lfw== dependencies: async-disk-cache "^1.2.1" async-promise-queue "^1.0.3" @@ -1554,6 +2904,35 @@ broccoli-persistent-filter@^1.1.6, broccoli-persistent-filter@^1.2.13, broccoli- symlink-or-copy "^1.0.1" walk-sync "^0.3.1" +broccoli-persistent-filter@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/broccoli-persistent-filter/-/broccoli-persistent-filter-2.1.1.tgz#7bb2b1015baedf5cf58b5b2608495f3d78f81b12" + integrity sha512-2VCbLJqMg/AWJ6WTmv83X13a6DD3BS7Gngc932jrg1snVqsB8LJDyJh+Hd9v1tQ/vMA+4vbWgwk4tDmI/tAZWg== + dependencies: + async-disk-cache "^1.2.1" + async-promise-queue "^1.0.3" + broccoli-plugin "^1.0.0" + fs-tree-diff "^0.5.2" + hash-for-dep "^1.0.2" + heimdalljs "^0.2.1" + heimdalljs-logger "^0.1.7" + mkdirp "^0.5.1" + promise-map-series "^0.2.1" + rimraf "^2.6.1" + rsvp "^4.7.0" + symlink-or-copy "^1.0.1" + walk-sync "^0.3.1" + +broccoli-plugin@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/broccoli-plugin/-/broccoli-plugin-1.1.0.tgz#73e2cfa05f8ea1e3fc1420c40c3d9e7dc724bf02" + integrity sha1-c+LPoF+OoeP8FCDEDD2efcckvwI= + dependencies: + promise-map-series "^0.2.1" + quick-temp "^0.1.3" + rimraf "^2.3.4" + symlink-or-copy "^1.0.1" + broccoli-plugin@^1.0.0, broccoli-plugin@^1.1.0, broccoli-plugin@^1.2.0, broccoli-plugin@^1.2.1, broccoli-plugin@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/broccoli-plugin/-/broccoli-plugin-1.3.0.tgz#bee704a8e42da08cb58e513aaa436efb7f0ef1ee" @@ -1564,6 +2943,16 @@ broccoli-plugin@^1.0.0, broccoli-plugin@^1.1.0, broccoli-plugin@^1.2.0, broccoli rimraf "^2.3.4" symlink-or-copy "^1.1.8" +broccoli-plugin@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/broccoli-plugin/-/broccoli-plugin-1.3.1.tgz#a26315732fb99ed2d9fb58f12a1e14e986b4fabd" + integrity sha512-DW8XASZkmorp+q7J4EeDEZz+LoyKLAd2XZULXyD9l4m9/hAKV3vjHmB1kiUshcWAYMgTP1m2i4NnqCE/23h6AQ== + dependencies: + promise-map-series "^0.2.1" + quick-temp "^0.1.3" + rimraf "^2.3.4" + symlink-or-copy "^1.1.8" + broccoli-rollup@^1.2.0, broccoli-rollup@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/broccoli-rollup/-/broccoli-rollup-1.3.0.tgz#43a0a7798555bab54217009eb470a4ff5a056df0" @@ -1598,6 +2987,17 @@ broccoli-source@^1.1.0: resolved "https://registry.yarnpkg.com/broccoli-source/-/broccoli-source-1.1.0.tgz#54f0e82c8b73f46580cbbc4f578f0b32fca8f809" integrity sha1-VPDoLItz9GWAy7xPV48LMvyo+Ak= +broccoli-sri-hash@^2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/broccoli-sri-hash/-/broccoli-sri-hash-2.1.2.tgz#bc69905ed7a381ad325cc0d02ded071328ebf3f3" + integrity sha1-vGmQXtejga0yXMDQLe0HEyjr8/M= + dependencies: + broccoli-caching-writer "^2.2.0" + mkdirp "^0.5.1" + rsvp "^3.1.0" + sri-toolbox "^0.2.0" + symlink-or-copy "^1.0.1" + broccoli-stew@^1.2.0, broccoli-stew@^1.3.3, broccoli-stew@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/broccoli-stew/-/broccoli-stew-1.5.0.tgz#d7af8c18511dce510e49d308a62e5977f461883c" @@ -1618,6 +3018,26 @@ broccoli-stew@^1.2.0, broccoli-stew@^1.3.3, broccoli-stew@^1.5.0: symlink-or-copy "^1.1.8" walk-sync "^0.3.0" +broccoli-stew@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/broccoli-stew/-/broccoli-stew-2.0.1.tgz#d0a507b79bf5fea9ff84032ae837dc48670ab1dc" + integrity sha512-EUzgkbYF4m8YVD2bkEa7OfYJ11V3dQ+yPuxdz/nFh8eMEn6dhOujtuSBnOWsvGDgsS9oqNZgx/MHJxI6Rr3AqQ== + dependencies: + broccoli-debug "^0.6.5" + broccoli-funnel "^2.0.0" + broccoli-merge-trees "^3.0.1" + broccoli-persistent-filter "^2.1.1" + broccoli-plugin "^1.3.1" + chalk "^2.4.1" + debug "^3.1.0" + ensure-posix-path "^1.0.1" + fs-extra "^6.0.1" + minimatch "^3.0.4" + resolve "^1.8.1" + rsvp "^4.8.4" + symlink-or-copy "^1.2.0" + walk-sync "^0.3.3" + broccoli-test-helper@^1.1.0, broccoli-test-helper@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/broccoli-test-helper/-/broccoli-test-helper-1.2.0.tgz#d01005d8611fd73ebe1b29552bf052ff59badfb4" @@ -1644,6 +3064,23 @@ broccoli-typescript-compiler@^4.1.0: typescript "~3.2.1" walk-sync "^0.3.2" +broccoli-uglify-sourcemap@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/broccoli-uglify-sourcemap/-/broccoli-uglify-sourcemap-2.2.0.tgz#2ff49389bdf342a550c3596750ba2dde95a8f7d4" + integrity sha1-L/STib3zQqVQw1lnULot3pWo99Q= + dependencies: + async-promise-queue "^1.0.4" + broccoli-plugin "^1.2.1" + debug "^3.1.0" + lodash.defaultsdeep "^4.6.0" + matcher-collection "^1.0.5" + mkdirp "^0.5.0" + source-map-url "^0.4.0" + symlink-or-copy "^1.0.1" + terser "^3.7.5" + walk-sync "^0.3.2" + workerpool "^2.3.0" + broccoli@^1.1.0: version "1.1.4" resolved "https://registry.yarnpkg.com/broccoli/-/broccoli-1.1.4.tgz#b023b028b866f447ed14341007961efd03f7251c" @@ -1665,6 +3102,11 @@ broccoli@^1.1.0: tmp "0.0.31" underscore.string "^3.2.2" +browser-stdout@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" + integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== + browserslist@^2.1.2: version "2.11.3" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-2.11.3.tgz#fe36167aed1bbcde4827ebfe71347a2cc70b99b2" @@ -1673,6 +3115,23 @@ browserslist@^2.1.2: caniuse-lite "^1.0.30000792" electron-to-chromium "^1.3.30" +browserslist@^3.2.6: + version "3.2.8" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-3.2.8.tgz#b0005361d6471f0f5952797a76fc985f1f978fc6" + integrity sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ== + dependencies: + caniuse-lite "^1.0.30000844" + electron-to-chromium "^1.3.47" + +browserslist@^4.3.4: + version "4.4.1" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.4.1.tgz#42e828954b6b29a7a53e352277be429478a69062" + integrity sha512-pEBxEXg7JwaakBXjATYw/D1YZh4QUSCX/Mnd/wnqSRPPSi1U39iDhDoKGoBUcraKdxDlrYqJxSI5nNvD+dWP2A== + dependencies: + caniuse-lite "^1.0.30000929" + electron-to-chromium "^1.3.103" + node-releases "^1.1.3" + bser@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/bser/-/bser-2.0.0.tgz#9ac78d3ed5d915804fd87acb158bc797147a1719" @@ -1685,6 +3144,11 @@ buffer-alloc-unsafe@^0.1.0: resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-0.1.1.tgz#ffe1f67551dd055737de253337bfe853dfab1a6a" integrity sha1-/+H2dVHdBVc33iUzN7/oU9+rGmo= +buffer-alloc-unsafe@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" + integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== + buffer-alloc@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.1.0.tgz#05514d33bf1656d3540c684f65b1202e90eca303" @@ -1693,6 +3157,14 @@ buffer-alloc@^1.1.0: buffer-alloc-unsafe "^0.1.0" buffer-fill "^0.1.0" +buffer-alloc@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" + integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== + dependencies: + buffer-alloc-unsafe "^1.1.0" + buffer-fill "^1.0.0" + buffer-crc32@^0.2.1: version "0.2.13" resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" @@ -1703,6 +3175,11 @@ buffer-fill@^0.1.0: resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-0.1.1.tgz#76d825c4d6e50e06b7a31eb520c04d08cc235071" integrity sha512-YgBMBzdRLEfgxJIGu2wrvI2E03tMCFU1p7d1KhB4BOoMN0VxmTFjSyN5JtKt9z8Z9JajMHruI6SE25W96wNv7Q== +buffer-fill@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" + integrity sha1-+PeLdniYiO858gXNY39o5wISKyw= + buffer-from@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.0.0.tgz#4cb8832d23612589b0406e9e2956c17f06fdf531" @@ -1767,7 +3244,20 @@ cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" -calculate-cache-key-for-tree@^1.0.0: +cacheable-request@^2.1.1: + version "2.1.4" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-2.1.4.tgz#0d808801b6342ad33c91df9d0b44dc09b91e5c3d" + integrity sha1-DYCIAbY0KtM8kd+dC0TcCbkeXD0= + dependencies: + clone-response "1.0.2" + get-stream "3.0.0" + http-cache-semantics "3.8.1" + keyv "3.0.0" + lowercase-keys "1.0.0" + normalize-url "2.0.1" + responselike "1.0.2" + +calculate-cache-key-for-tree@^1.0.0, calculate-cache-key-for-tree@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/calculate-cache-key-for-tree/-/calculate-cache-key-for-tree-1.1.0.tgz#0c3e42c9c134f3c9de5358c0f16793627ea976d6" integrity sha1-DD5CycE088neU1jA8WeTYn6pdtY= @@ -1814,6 +3304,11 @@ camelcase@^3.0.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" integrity sha1-MvxLn82vhF/N9+c7uXysImHwqwo= +camelcase@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.0.0.tgz#03295527d58bd3cd4aa75363f35b2e8d97be2f42" + integrity sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA== + can-symlink@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/can-symlink/-/can-symlink-1.0.0.tgz#97b607d8a84bb6c6e228b902d864ecb594b9d219" @@ -1826,13 +3321,23 @@ caniuse-lite@^1.0.30000792: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000833.tgz#98e84fcdb4399c6fa0b0fd41490d3217ac7802b4" integrity sha512-tKNuKu4WLImh4NxoTgntxFpDrRiA0Q6Q1NycNhuMST0Kx+Pt8YnRDW6V8xsyH6AtO2CpAoibatEk5eaEhP3O1g== -capture-exit@^1.1.0: +caniuse-lite@^1.0.30000844, caniuse-lite@^1.0.30000929: + version "1.0.30000935" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000935.tgz#d1b59df00b46f4921bb84a8a34c1d172b346df59" + integrity sha512-1Y2uJ5y56qDt3jsDTdBHL1OqiImzjoQcBG6Yl3Qizq8mcc2SgCFpi+ZwLLqkztYnk9l87IYqRlNBnPSOTbFkXQ== + +capture-exit@^1.1.0, capture-exit@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-1.2.0.tgz#1c5fcc489fd0ab00d4f1ac7ae1072e3173fbab6f" integrity sha1-HF/MSJ/QqwDU8ax64QcuMXP7q28= dependencies: rsvp "^3.3.3" +capture-stack-trace@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz#a6c0bbe1f38f3aa0b92238ecb6ff42c344d4135d" + integrity sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw== + cardinal@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/cardinal/-/cardinal-1.0.0.tgz#50e21c1b0aa37729f9377def196b5a9cec932ee9" @@ -1854,7 +3359,49 @@ center-align@^0.1.1: align-text "^0.1.3" lazy-cache "^1.0.3" -chalk@^1.0.0, chalk@^1.1.3: +chai-as-promised@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/chai-as-promised/-/chai-as-promised-6.0.0.tgz#1a02a433a6f24dafac63b9c96fa1684db1aa8da6" + integrity sha1-GgKkM6byTa+sY7nJb6FoTbGqjaY= + dependencies: + check-error "^1.0.2" + +chai-as-promised@^7.0.0: + version "7.1.1" + resolved "https://registry.yarnpkg.com/chai-as-promised/-/chai-as-promised-7.1.1.tgz#08645d825deb8696ee61725dbf590c012eb00ca0" + integrity sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA== + dependencies: + check-error "^1.0.2" + +chai-files@^1.0.0, chai-files@^1.1.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/chai-files/-/chai-files-1.4.0.tgz#0e25610fadc551b1eae79c2f4ee79faf2f842296" + integrity sha1-DiVhD63FUbHq55wvTuefry+EIpY= + dependencies: + assertion-error "^1.0.1" + +chai@^3.3.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/chai/-/chai-3.5.0.tgz#4d02637b067fe958bdbfdd3a40ec56fef7373247" + integrity sha1-TQJjewZ/6Vi9v906QOxW/vc3Mkc= + dependencies: + assertion-error "^1.0.1" + deep-eql "^0.1.3" + type-detect "^1.0.0" + +chai@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/chai/-/chai-4.2.0.tgz#760aa72cf20e3795e84b12877ce0e83737aa29e5" + integrity sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw== + dependencies: + assertion-error "^1.1.0" + check-error "^1.0.2" + deep-eql "^3.0.1" + get-func-name "^2.0.0" + pathval "^1.1.0" + type-detect "^4.0.5" + +chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= @@ -1874,6 +3421,15 @@ chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.3.1: escape-string-regexp "^1.0.5" supports-color "^5.3.0" +chalk@^2.4.1: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + 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" @@ -1886,6 +3442,11 @@ charm@^1.0.0: dependencies: inherits "^2.0.1" +check-error@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" + integrity sha1-V00xLt2Iu13YkS6Sht1sCu1KrII= + child_process@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/child_process/-/child_process-1.0.2.tgz#b1f7e7fc73d25e7fd1d455adc94e143830182b5a" @@ -1912,6 +3473,11 @@ chownr@^1.0.1: resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181" integrity sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE= +ci-info@^1.1.3: + version "1.6.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497" + integrity sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A== + circular-json@^0.3.1: version "0.3.3" resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66" @@ -1983,6 +3549,16 @@ cli-table2@^0.2.0: optionalDependencies: colors "^1.1.2" +cli-table3@^0.5.0, cli-table3@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.5.1.tgz#0252372d94dfc40dbd8df06005f48f31f656f202" + integrity sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw== + dependencies: + object-assign "^4.1.0" + string-width "^2.1.1" + optionalDependencies: + colors "^1.1.2" + cli-table@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/cli-table/-/cli-table-0.3.1.tgz#f53b05266a8b1a0b934b3d0821e6e2dc5914ae23" @@ -2013,6 +3589,22 @@ cliui@^3.2.0: strip-ansi "^3.0.1" wrap-ansi "^2.0.0" +cliui@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" + integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ== + dependencies: + string-width "^2.1.1" + strip-ansi "^4.0.0" + wrap-ansi "^2.0.0" + +clone-response@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" + integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws= + dependencies: + mimic-response "^1.0.0" + clone@^1.0.2: version "1.0.4" resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" @@ -2023,6 +3615,11 @@ clone@^2.0.0: resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.1.tgz#d217d1e961118e3ac9a4b8bba3285553bf647cdb" integrity sha1-0hfR6WERjjrJpLi7oyhVU79kfNs= +clone@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" + integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= + co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" @@ -2075,6 +3672,11 @@ commander@2.12.2: resolved "https://registry.yarnpkg.com/commander/-/commander-2.12.2.tgz#0f5946c427ed9ec0d91a46bb9def53e54650e555" integrity sha512-BFnaq5ZOGcDN7FlrtBT4xxkgIToalIIxwjxLWVJ8bGTpe1LroqMiqQXdA7ygc7CRvaYS+9zfPGFnJqFSayx+AA== +commander@2.15.1, commander@^2.5.0, commander@^2.6.0: + version "2.15.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f" + integrity sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag== + commander@2.8.x: version "2.8.1" resolved "https://registry.yarnpkg.com/commander/-/commander-2.8.1.tgz#06be367febfda0c330aa1e2a072d3dc9762425d4" @@ -2087,10 +3689,15 @@ commander@^2.12.1: resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg== -commander@^2.5.0, commander@^2.6.0: - version "2.15.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f" - integrity sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag== +commander@~2.17.1: + version "2.17.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" + integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg== + +common-tags@^1.4.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937" + integrity sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw== component-bind@1.0.0: version "1.0.0" @@ -2129,6 +3736,13 @@ compressible@~2.0.13: dependencies: mime-db ">= 1.33.0 < 2" +compressible@~2.0.14: + version "2.0.15" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.15.tgz#857a9ab0a7e5a07d8d837ed43fe2defff64fe212" + integrity sha512-4aE67DL33dSW9gw4CI2H/yTxqHLNcxp0yS6jB+4h+wr3e43+1z7vm0HU9qXOH8j+qjKuL8+UtkOxYQSMq60Ylw== + dependencies: + mime-db ">= 1.36.0 < 2" + compression@^1.4.4: version "1.7.2" resolved "http://registry.npmjs.org/compression/-/compression-1.7.2.tgz#aaffbcd6aaf854b44ebb280353d5ad1651f59a69" @@ -2142,6 +3756,19 @@ compression@^1.4.4: safe-buffer "5.1.1" vary "~1.1.2" +compression@^1.7.3: + version "1.7.3" + resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.3.tgz#27e0e176aaf260f7f2c2813c3e440adb9f1993db" + integrity sha512-HSjyBG5N1Nnz7tF2+O7A9XUhyjru71/fwgNb7oIsEVHR0WShfs2tIS/EySLgiTe98aOK18YDlMXpzjCXY/n9mg== + dependencies: + accepts "~1.3.5" + bytes "3.0.0" + compressible "~2.0.14" + debug "2.6.9" + on-headers "~1.0.1" + safe-buffer "5.1.2" + vary "~1.1.2" + concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" @@ -2169,6 +3796,18 @@ configstore@^3.0.0: write-file-atomic "^2.0.0" xdg-basedir "^3.0.0" +configstore@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/configstore/-/configstore-4.0.0.tgz#5933311e95d3687efb592c528b922d9262d227e7" + integrity sha512-CmquAXFBocrzaSM8mtGPMM/HiWmyIpr4CcJl/rgY2uCObZ/S7cKU0silxslqJejl+t/T9HS8E0PUNQD81JGUEQ== + dependencies: + dot-prop "^4.1.0" + graceful-fs "^4.1.2" + make-dir "^1.0.0" + unique-string "^1.0.0" + write-file-atomic "^2.0.0" + xdg-basedir "^3.0.0" + connect@^3.3.3: version "3.6.6" resolved "https://registry.yarnpkg.com/connect/-/connect-3.6.6.tgz#09eff6c55af7236e137135a72574858b6786f524" @@ -2196,6 +3835,18 @@ console-ui@^2.0.0: through "^2.3.8" user-info "^1.0.0" +console-ui@^2.2.2: + version "2.2.3" + resolved "https://registry.yarnpkg.com/console-ui/-/console-ui-2.2.3.tgz#134b92e632f2c0088f78e52b20f1ca22a95b9a91" + integrity sha512-aZm49rntsv264Fw/DM56Z2ehLg1DDxrqof2jFcZOgC03S0nRGSYFIVPx5TbGssrgBhgCvGBY+9mmk0+t/nWXEA== + dependencies: + chalk "^2.1.0" + inquirer "^2" + json-stable-stringify "^1.0.1" + ora "^2.0.0" + through "^2.3.8" + user-info "^1.0.0" + consolidate@^0.14.0: version "0.14.5" resolved "https://registry.yarnpkg.com/consolidate/-/consolidate-0.14.5.tgz#5a25047bc76f73072667c8cb52c989888f494c63" @@ -2203,6 +3854,13 @@ consolidate@^0.14.0: dependencies: bluebird "^3.1.1" +consolidate@^0.15.1: + version "0.15.1" + resolved "https://registry.yarnpkg.com/consolidate/-/consolidate-0.15.1.tgz#21ab043235c71a07d45d9aad98593b0dba56bab7" + integrity sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw== + dependencies: + bluebird "^3.1.1" + content-disposition@0.5.2: version "0.5.2" resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" @@ -2218,6 +3876,13 @@ continuable-cache@^0.3.1: resolved "https://registry.yarnpkg.com/continuable-cache/-/continuable-cache-0.3.1.tgz#bd727a7faed77e71ff3985ac93351a912733ad0f" integrity sha1-vXJ6f67XfnH/OYWskzUakSczrQ8= +convert-source-map@^1.1.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" + integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A== + dependencies: + safe-buffer "~5.1.1" + convert-source-map@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.1.tgz#b8278097b9bc229365de5c62cf5fcaed8b5599e5" @@ -2260,12 +3925,17 @@ core-js@^2.4.0, core-js@^2.5.0: resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.5.tgz#b14dde936c640c0579a6b50cabcc132dd6127e3b" integrity sha1-sU3ek2xkDAV5prUMq8wTLdYSfjs= +core-js@^2.5.7: + version "2.6.4" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.4.tgz#b8897c062c4d769dd30a0ac5c73976c47f92ea0d" + integrity sha512-05qQ5hXShcqGkPZpXEFLIpxayZscVD2kuMBZewxiIPPEagukO4mqgPA9CWhUvFBJfy3ODdK2p9xyHh7FTU9/7A== + core-object@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/core-object/-/core-object-1.1.0.tgz#86d63918733cf9da1a5aae729e62c0a88e66ad0a" integrity sha1-htY5GHM8+doaWq5ynmLAqI5mrQo= -core-object@^3.1.3: +core-object@^3.1.3, core-object@^3.1.5: version "3.1.5" resolved "https://registry.yarnpkg.com/core-object/-/core-object-3.1.5.tgz#fa627b87502adc98045e44678e9a8ec3b9c0d2a9" integrity sha512-sA2/4+/PZ/KV6CKgjrVrrUVBKCkdDO02CUlQ0YKTQoYUwPYNOtOAcWlbYhd5v/1JqYaA6oZ4sDlOU4ppVw6Wbg== @@ -2290,6 +3960,13 @@ crc@^3.4.4: resolved "https://registry.yarnpkg.com/crc/-/crc-3.5.0.tgz#98b8ba7d489665ba3979f59b21381374101a1964" integrity sha1-mLi6fUiWZbo5efWbITgTdBAaGWQ= +create-error-class@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6" + integrity sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y= + dependencies: + capture-stack-trace "^1.0.0" + cross-spawn@^5.0.1, cross-spawn@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" @@ -2381,7 +4058,14 @@ debug@3.1.0, debug@^3.1.0, debug@~3.1.0: dependencies: ms "2.0.0" -decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2: +debug@^4.0.0, debug@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" + integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== + dependencies: + ms "^2.1.1" + +decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2, decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= @@ -2391,11 +4075,37 @@ decode-uri-component@^0.2.0: resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= +decompress-response@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" + integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M= + dependencies: + mimic-response "^1.0.0" + +deep-eql@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-0.1.3.tgz#ef558acab8de25206cd713906d74e56930eb69f2" + integrity sha1-71WKyrjeJSBs1xOQbXTlaTDrafI= + dependencies: + type-detect "0.1.1" + +deep-eql@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df" + integrity sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw== + dependencies: + type-detect "^4.0.0" + deep-extend@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.5.1.tgz#b894a9dd90d3023fbf1c55a394fb858eb2066f1f" integrity sha512-N8vBdOa+DF7zkRrDCsaOXoCs/E2fJfx9B9MrKnnSiHNh4ws7eSys6YQE4KvT1cecKmOASYQBhbKjeuDD9lT81w== +deep-extend@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" @@ -2505,7 +4215,7 @@ detect-libc@^1.0.2: resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= -diff@^3.2.0: +diff@3.5.0, diff@^3.2.0, diff@^3.5.0: version "3.5.0" resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== @@ -2524,6 +4234,16 @@ dot-prop@^4.1.0: dependencies: is-obj "^1.0.0" +duplex@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/duplex/-/duplex-1.0.0.tgz#6abc5c16ec17e4c578578727126700590d3a2dda" + integrity sha1-arxcFuwX5MV4V4cnEmcAWQ06Ldo= + +duplexer3@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" + integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= + duplexify@^3.4.2, duplexify@^3.5.3: version "3.5.4" resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.5.4.tgz#4bb46c1796eabebeec4ca9a2e66b808cb7a3d8b4" @@ -2551,11 +4271,32 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= +electron-to-chromium@^1.3.103, electron-to-chromium@^1.3.47: + version "1.3.113" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.113.tgz#b1ccf619df7295aea17bc6951dc689632629e4a9" + integrity sha512-De+lPAxEcpxvqPTyZAXELNpRZXABRxf+uL/rSykstQhzj/B0l1150G/ExIIxKc16lI89Hgz81J0BHAcbTqK49g== + electron-to-chromium@^1.3.30: version "1.3.45" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.45.tgz#458ac1b1c5c760ce8811a16d2bfbd97ec30bafb8" integrity sha1-RYrBscXHYM6IEaFtK/vZfsMLr7g= +ember-ajax@^3.0.0: + version "3.1.3" + resolved "https://registry.yarnpkg.com/ember-ajax/-/ember-ajax-3.1.3.tgz#f51b8e3e36765575a2698c8660e377d4d6371642" + integrity sha512-C+BmWxXECGWuv7T17OHSQySpVuoCalmxI/NLUr+3eSlBeCD0xwI3mRRL1CbmAWXdyNwzK3je+lFCSuMaJu2miA== + dependencies: + ember-cli-babel "^6.16.0" + najax "^1.0.3" + +ember-assign-polyfill@~2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/ember-assign-polyfill/-/ember-assign-polyfill-2.4.0.tgz#acb00466f7d674b3e6b030acfe255b3b1f6472e1" + integrity sha512-0SnGQb9CenRqbZdIa1KFsEjT+1ijGWfAbCSaDbg5uVa5l6HPdppuTzOXK6sfEQMsd2nbrp27QWFy7W5VX6l4Ag== + dependencies: + ember-cli-babel "^6.6.0" + ember-cli-version-checker "^2.0.0" + ember-build-utilities@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/ember-build-utilities/-/ember-build-utilities-0.4.0.tgz#dbdf1bb089c7212bca8414112f8663a4fa2e077c" @@ -2571,6 +4312,68 @@ ember-build-utilities@^0.4.0: rimraf "^2.6.1" semver "^5.3.0" +ember-cli-babel-plugin-helpers@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/ember-cli-babel-plugin-helpers/-/ember-cli-babel-plugin-helpers-1.0.2.tgz#d4bec0f32febc530e621ea8d66d3365727cb5e6c" + integrity sha512-tTWmHiIvadgtu0i+Zlb5Jnue69qO6dtACcddkRhhV+m9NfAr+2XNoTKRSeGL8QyRDhfWeo4rsK9dqPrU4PQ+8g== + +ember-cli-babel@^6.0.0-beta.4, ember-cli-babel@^6.0.0-beta.7, ember-cli-babel@^6.11.0, ember-cli-babel@^6.12.0, ember-cli-babel@^6.16.0, ember-cli-babel@^6.6.0, ember-cli-babel@^6.8.1, ember-cli-babel@^6.8.2: + version "6.18.0" + resolved "https://registry.yarnpkg.com/ember-cli-babel/-/ember-cli-babel-6.18.0.tgz#3f6435fd275172edeff2b634ee7b29ce74318957" + integrity sha512-7ceC8joNYxY2wES16iIBlbPSxwKDBhYwC8drU3ZEvuPDMwVv1KzxCNu1fvxyFEBWhwaRNTUxSCsEVoTd9nosGA== + dependencies: + amd-name-resolver "1.2.0" + babel-plugin-debug-macros "^0.2.0-beta.6" + babel-plugin-ember-modules-api-polyfill "^2.6.0" + babel-plugin-transform-es2015-modules-amd "^6.24.0" + babel-polyfill "^6.26.0" + babel-preset-env "^1.7.0" + broccoli-babel-transpiler "^6.5.0" + broccoli-debug "^0.6.4" + broccoli-funnel "^2.0.0" + broccoli-source "^1.1.0" + clone "^2.0.0" + ember-cli-version-checker "^2.1.2" + semver "^5.5.0" + +ember-cli-babel@^7.1.3, ember-cli-babel@^7.2.0: + version "7.4.1" + resolved "https://registry.yarnpkg.com/ember-cli-babel/-/ember-cli-babel-7.4.1.tgz#9892f5883f5a6b1f0f86fb1331fc491338f372ad" + integrity sha512-h6qZKHyULm5SYhvjNOeXvLl3kHaBdh37g5QqTTiC/vMiWP/xnyNp2bMoq52qq+SLm/bE8+5UcVTKjrNl0+IqXA== + dependencies: + "@babel/core" "^7.0.0" + "@babel/plugin-transform-modules-amd" "^7.0.0" + "@babel/plugin-transform-runtime" "^7.2.0" + "@babel/polyfill" "^7.0.0" + "@babel/preset-env" "^7.0.0" + "@babel/runtime" "^7.2.0" + amd-name-resolver "^1.2.1" + babel-plugin-debug-macros "^0.2.0-beta.6" + babel-plugin-ember-modules-api-polyfill "^2.6.0" + babel-plugin-module-resolver "^3.1.1" + broccoli-babel-transpiler "^7.1.0" + broccoli-debug "^0.6.4" + broccoli-funnel "^2.0.1" + broccoli-source "^1.1.0" + clone "^2.1.2" + ember-cli-version-checker "^2.1.2" + ensure-posix-path "^1.0.2" + semver "^5.5.0" + +ember-cli-blueprint-test-helpers@^0.19.1: + version "0.19.2" + resolved "https://registry.yarnpkg.com/ember-cli-blueprint-test-helpers/-/ember-cli-blueprint-test-helpers-0.19.2.tgz#9e563cd81ab39931253ced0982c5d02475895401" + integrity sha512-otCKdGcNFK0+MkQo+LLjYbRD9EerApH6Z/odvvlL1hxrN+owHMV5E+jI2rbtdvNEH0/6w5ZqjH4kS232fvtCxQ== + dependencies: + chai "^4.1.0" + chai-as-promised "^7.0.0" + chai-files "^1.0.0" + debug "^4.1.0" + ember-cli-internal-test-helpers "^0.9.1" + fs-extra "^7.0.0" + testdouble "^3.2.6" + tmp-sync "^1.0.0" + ember-cli-broccoli-sane-watcher@^2.0.4: version "2.1.1" resolved "https://registry.yarnpkg.com/ember-cli-broccoli-sane-watcher/-/ember-cli-broccoli-sane-watcher-2.1.1.tgz#1687adada9022de26053fba833dc7dd10f03dd08" @@ -2582,6 +4385,28 @@ ember-cli-broccoli-sane-watcher@^2.0.4: rsvp "^3.0.18" sane "^2.4.1" +ember-cli-broccoli-sane-watcher@^2.1.1: + version "2.2.2" + resolved "https://registry.yarnpkg.com/ember-cli-broccoli-sane-watcher/-/ember-cli-broccoli-sane-watcher-2.2.2.tgz#9bb1b04ddeb2c086aecd8693cbaeca1d88dc160c" + integrity sha512-9OLy8x3pdNKC/6xR00IjTL8XyiQU3rb2HLyQSAqHuaZpZcSTKkbAse2ERTsELSINoo/zi/W7qPP5vd5SsHsraw== + dependencies: + broccoli-slow-trees "^3.0.1" + heimdalljs "^0.2.1" + heimdalljs-logger "^0.1.7" + rsvp "^3.0.18" + sane "^2.4.1" + +ember-cli-dependency-checker@^2.0.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ember-cli-dependency-checker/-/ember-cli-dependency-checker-2.2.1.tgz#1eb728258dc7d528951c391d39b365e1beedecca" + integrity sha512-DmxayycdIPx6wZLpfwXq+MOtKtxhFbCw05kdGaQEyKKNSMeSdywsUjZyxneEpGb8Ztrm+kBwFW3eseydnYLWyw== + dependencies: + chalk "^2.3.0" + find-yarn-workspace-root "^1.1.0" + is-git-url "^1.0.0" + resolve "^1.5.0" + semver "^5.3.0" + 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" @@ -2592,6 +4417,53 @@ ember-cli-get-dependency-depth@^1.0.0: resolved "https://registry.yarnpkg.com/ember-cli-get-dependency-depth/-/ember-cli-get-dependency-depth-1.0.0.tgz#e0afecf82a2d52f00f28ab468295281aec368d11" integrity sha1-4K/s+CotUvAPKKtGgpUoGuw2jRE= +ember-cli-htmlbars-inline-precompile@^1.0.0, ember-cli-htmlbars-inline-precompile@^1.0.3: + version "1.0.5" + resolved "https://registry.yarnpkg.com/ember-cli-htmlbars-inline-precompile/-/ember-cli-htmlbars-inline-precompile-1.0.5.tgz#312e050c9e3dd301c55fb399fd706296cd0b1d6a" + integrity sha512-/CNEqPxroIcbY6qejrt704ZaghHLCntZKYLizFfJ2esirXoJx6fuYKBY1YyJ8GOgjfbHHKjBZuK4vFFJpkGqkQ== + dependencies: + babel-plugin-htmlbars-inline-precompile "^0.2.5" + ember-cli-version-checker "^2.1.2" + hash-for-dep "^1.2.3" + heimdalljs-logger "^0.1.9" + silent-error "^1.1.0" + +ember-cli-htmlbars@^2.0.3: + version "2.0.5" + resolved "https://registry.yarnpkg.com/ember-cli-htmlbars/-/ember-cli-htmlbars-2.0.5.tgz#b5a105429a6bce4f7c9c97b667e3b8926e31397f" + integrity sha512-3f3PAxdnQ/fhQa8XP/3z4RLRgLHxV8j4Ln75aHbRdemOCjBa048KxL9l+acRLhCulbGQCMnLiIUIC89PAzLrcA== + dependencies: + broccoli-persistent-filter "^1.4.3" + hash-for-dep "^1.2.3" + json-stable-stringify "^1.0.0" + strip-bom "^3.0.0" + +ember-cli-inject-live-reload@^1.4.1: + version "1.10.2" + resolved "https://registry.yarnpkg.com/ember-cli-inject-live-reload/-/ember-cli-inject-live-reload-1.10.2.tgz#43c59f7f1d1e717772da32e5e81d948fb9fe7c94" + integrity sha512-yFvZE4WFyWjzMJ6MTYIyjCXpcJNFMTaZP61JXITMkXhSkhuDkzMD/XfwR5+fr004TYcwrbNWpg1oGX5DbOgcaQ== + dependencies: + clean-base-url "^1.0.0" + ember-cli-version-checker "^2.1.2" + +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" + integrity sha1-1UqRJLtkCM66g/BJuoR59Lls3Rk= + dependencies: + chai "^3.3.0" + chai-as-promised "^6.0.0" + chai-files "^1.1.0" + chalk "^1.1.1" + debug "^2.2.0" + exists-sync "0.0.3" + fs-extra "^0.30.0" + lodash "^4.0.0" + rsvp "^3.0.17" + symlink-or-copy "^1.0.1" + through "^2.3.8" + walk-sync "^0.3.1" + 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" @@ -2656,6 +4528,27 @@ ember-cli-preprocess-registry@^3.1.0: process-relative-require "^1.0.0" silent-error "^1.0.0" +ember-cli-preprocess-registry@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/ember-cli-preprocess-registry/-/ember-cli-preprocess-registry-3.1.2.tgz#083efb21fd922c021ceba9e08f4d9278249fc4db" + integrity sha512-YJfcDHMBEjtD505CIhM8dtu5FO2Ku+0OTs/0kdLlj9mhXlbzC+k0JAS5c/0AQ+Nh2f+qZZJ8G19ySdzWwTLSCQ== + dependencies: + broccoli-clean-css "^1.1.0" + broccoli-funnel "^1.0.0" + broccoli-merge-trees "^1.0.0" + debug "^2.2.0" + ember-cli-lodash-subset "^1.0.7" + process-relative-require "^1.0.0" + silent-error "^1.0.0" + +ember-cli-qunit@^4.3.2: + version "4.4.0" + resolved "https://registry.yarnpkg.com/ember-cli-qunit/-/ember-cli-qunit-4.4.0.tgz#0edd7d651001d0d7ea200b9236a4733a5b7420f1" + integrity sha512-+gkx380AV4WXYjQeIuQi675STL9K12fHFtxs8B9u3EFbw45vJKrnYR4Vph3FujxhE/1pr/Je8kZEPAuezZAVLw== + dependencies: + ember-cli-babel "^6.11.0" + ember-qunit "^3.5.0" + ember-cli-sauce@^1.3.0: version "1.10.1" resolved "https://registry.yarnpkg.com/ember-cli-sauce/-/ember-cli-sauce-1.10.1.tgz#5bb2e145d2a8e0461edfffa1e79fc3a370ac250d" @@ -2665,6 +4558,13 @@ ember-cli-sauce@^1.3.0: rsvp "^3.1.0" saucie "^2.1.1" +ember-cli-sri@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ember-cli-sri/-/ember-cli-sri-2.1.1.tgz#971620934a4b9183cf7923cc03e178b83aa907fd" + integrity sha1-lxYgk0pLkYPPeSPMA+F4uDqpB/0= + dependencies: + broccoli-sri-hash "^2.1.0" + 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" @@ -2677,6 +4577,39 @@ ember-cli-test-info@^1.0.0: dependencies: ember-cli-string-utils "^1.0.0" +ember-cli-test-loader@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/ember-cli-test-loader/-/ember-cli-test-loader-2.2.0.tgz#3fb8d5d1357e4460d3f0a092f5375e71b6f7c243" + integrity sha512-mlSXX9SciIRwGkFTX6XGyJYp4ry6oCFZRxh5jJ7VH8UXLTNx2ZACtDTwaWtNhYrWXgKyiDUvmD8enD56aePWRA== + dependencies: + ember-cli-babel "^6.8.1" + +ember-cli-typescript@^2.0.0-rc.1: + version "2.0.0-rc.2" + resolved "https://registry.yarnpkg.com/ember-cli-typescript/-/ember-cli-typescript-2.0.0-rc.2.tgz#d8253097279ed292c20e739ee72f8fb994dbb6b7" + integrity sha512-u4mhdt/R0ip5s1H93aXtGJ/tnZ/3LsIOhKmaPylvlAVW/HtgPk+j/9sFHT4YmFUKMWPP2gXExtDkYNbz81XWzw== + dependencies: + "@babel/plugin-proposal-class-properties" "^7.1.0" + "@babel/plugin-transform-typescript" "^7.1.0" + ansi-to-html "^0.6.6" + debug "^4.0.0" + ember-cli-babel-plugin-helpers "^1.0.0" + execa "^1.0.0" + fs-extra "^7.0.0" + resolve "^1.5.0" + rsvp "^4.8.1" + semver "^5.5.1" + stagehand "^1.0.0" + walk-sync "^1.0.0" + +ember-cli-uglify@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/ember-cli-uglify/-/ember-cli-uglify-2.1.0.tgz#4a0641fe4768d7ab7d4807aca9924cc77c544184" + integrity sha512-lDzdAUfhGx5AMBsgyR54ibENVp/LRQuHNWNaP2SDjkAXDyuYFgW0iXIAfGbxF6+nYaesJ9Tr9AKOfTPlwxZDSg== + dependencies: + broccoli-uglify-sourcemap "^2.1.1" + lodash.defaultsdeep "^4.6.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" @@ -2684,6 +4617,14 @@ ember-cli-valid-component-name@^1.0.0: dependencies: silent-error "^1.0.0" +ember-cli-version-checker@^2.0.0, ember-cli-version-checker@^2.1.1, ember-cli-version-checker@^2.1.2: + version "2.2.0" + resolved "https://registry.yarnpkg.com/ember-cli-version-checker/-/ember-cli-version-checker-2.2.0.tgz#47771b731fe0962705e27c8199a9e3825709f3b3" + integrity sha512-G+KtYIVlSOWGcNaTFHk76xR4GdzDLzAS4uxZUKdASuFX0KJE43C6DaqL+y3VTpUFLI2FIkAS6HZ4I1YBi+S3hg== + dependencies: + resolve "^1.3.3" + semver "^5.3.0" + ember-cli-version-checker@^2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/ember-cli-version-checker/-/ember-cli-version-checker-2.1.2.tgz#305ce102390c66e4e0f1432dea9dc5c7c19fed98" @@ -2692,6 +4633,14 @@ ember-cli-version-checker@^2.1.0: resolve "^1.3.3" semver "^5.3.0" +ember-cli-version-checker@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/ember-cli-version-checker/-/ember-cli-version-checker-3.0.1.tgz#2d084d2b261374582c68edb658a7df3a10112749" + integrity sha512-hX2tGrFVt8PyaiWclZr8XFNUPSnA+Ax4bMifDIVVtYY8RQZG8LZf9AGyTj4XImkBBWBtgKyOeQ0ovg3kgos4JA== + dependencies: + resolve "^1.9.0" + semver "^5.6.0" + ember-cli@^2.14.2: version "2.18.2" resolved "https://registry.yarnpkg.com/ember-cli/-/ember-cli-2.18.2.tgz#bb15313a15139a85248a86d203643f918ba40f57" @@ -2782,13 +4731,215 @@ ember-cli@^2.14.2: walk-sync "^0.3.0" yam "0.0.22" -ember-router-generator@^1.0.0: +ember-cli@~3.4.0-beta.1: + version "3.4.4" + resolved "https://registry.yarnpkg.com/ember-cli/-/ember-cli-3.4.4.tgz#8d25b223b2ef3b863310099192da92ab1feeef6b" + integrity sha512-opbdqt9AbNRPr/amemwqi9ENbx/HcqcprxJAW/y8nZAV1gAku+xPY4WNBF6KuClVEKkddbNi4jITLU59rlJcDA== + dependencies: + amd-name-resolver "^1.2.0" + babel-plugin-transform-es2015-modules-amd "^6.24.1" + bower-config "^1.3.0" + bower-endpoint-parser "0.2.2" + broccoli-amd-funnel "^1.3.0" + broccoli-babel-transpiler "^6.5.0" + broccoli-builder "^0.18.14" + broccoli-concat "^3.5.1" + broccoli-config-loader "^1.0.1" + broccoli-config-replace "^1.1.2" + broccoli-debug "^0.6.4" + broccoli-funnel "^2.0.1" + broccoli-funnel-reducer "^1.0.0" + broccoli-merge-trees "^3.0.0" + broccoli-middleware "^2.0.1" + broccoli-module-normalizer "^1.3.0" + broccoli-module-unification-reexporter "^1.0.0" + broccoli-source "^1.1.0" + broccoli-stew "^2.0.0" + calculate-cache-key-for-tree "^1.1.0" + capture-exit "^1.2.0" + chalk "^2.4.1" + ci-info "^1.1.3" + clean-base-url "^1.0.0" + compression "^1.7.3" + configstore "^4.0.0" + console-ui "^2.2.2" + core-object "^3.1.5" + dag-map "^2.0.2" + diff "^3.5.0" + ember-cli-broccoli-sane-watcher "^2.1.1" + 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-preprocess-registry "^3.1.2" + ember-cli-string-utils "^1.1.0" + ensure-posix-path "^1.0.2" + execa "^0.10.0" + exit "^0.1.2" + express "^4.16.3" + filesize "^3.6.1" + find-up "^3.0.0" + find-yarn-workspace-root "^1.1.0" + fixturify-project "^1.5.3" + fs-extra "^7.0.0" + fs-tree-diff "^0.5.7" + get-caller-file "^1.0.0" + git-repo-info "^2.0.0" + glob "^7.1.2" + heimdalljs "^0.2.5" + heimdalljs-fs-monitor "^0.2.2" + heimdalljs-graph "^0.3.4" + heimdalljs-logger "^0.1.9" + http-proxy "^1.17.0" + inflection "^1.12.0" + is-git-url "^1.0.0" + isbinaryfile "^3.0.3" + js-yaml "^3.12.0" + json-stable-stringify "^1.0.1" + leek "0.0.24" + lodash.template "^4.4.0" + markdown-it "^8.4.2" + markdown-it-terminal "0.1.0" + minimatch "^3.0.4" + morgan "^1.9.0" + node-modules-path "^1.0.1" + nopt "^3.0.6" + npm-package-arg "^6.1.0" + portfinder "^1.0.15" + promise-map-series "^0.2.3" + quick-temp "^0.1.8" + resolve "^1.8.1" + rsvp "^4.8.3" + sane "^3.0.0" + semver "^5.5.0" + silent-error "^1.1.0" + sort-package-json "^1.15.0" + symlink-or-copy "^1.2.0" + temp "0.8.3" + testem "^2.9.2" + tiny-lr "^1.1.1" + tree-sync "^1.2.2" + uuid "^3.3.2" + validate-npm-package-name "^3.0.0" + walk-sync "^0.3.2" + watch-detector "^0.1.0" + yam "^0.0.24" + +ember-compatibility-helpers@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/ember-compatibility-helpers/-/ember-compatibility-helpers-1.1.2.tgz#ae0ee4a7a2858b5ffdf79b428c23aee85c47d93d" + integrity sha512-yN163MzERpotO8M0b+q+kXs4i3Nx6aIriiZHWv+yXQzr2TAtYlVwg9V7/3+jcurOa3oDEYDpN7y9UZ6q3mnoTg== + dependencies: + babel-plugin-debug-macros "^0.2.0" + ember-cli-version-checker "^2.1.1" + semver "^5.4.1" + +ember-decorators@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/ember-decorators/-/ember-decorators-5.1.2.tgz#e4fc1b029a03e3f09fb6ae24ac4e6cf4177e4378" + integrity sha512-Vc99rlNWFY6VJEn1mtxVytLxb+vu31IKzPw4qqbG+ypynbKNEH7a5U44hxp0BH5S5Fl4U03tnyEIDc7K/rZ6kQ== + dependencies: + "@ember-decorators/component" "^5.1.2" + "@ember-decorators/controller" "^5.1.2" + "@ember-decorators/data" "^5.1.2" + "@ember-decorators/object" "^5.1.2" + "@ember-decorators/service" "^5.1.2" + ember-cli-babel "^7.1.3" + semver "^5.5.0" + +ember-disable-prototype-extensions@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/ember-disable-prototype-extensions/-/ember-disable-prototype-extensions-1.1.3.tgz#1969135217654b5e278f9fe2d9d4e49b5720329e" + integrity sha1-GWkTUhdlS14nj5/i2dTkm1cgMp4= + +ember-export-application-global@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ember-export-application-global/-/ember-export-application-global-2.0.0.tgz#8d6d7619ac8a1a3f8c43003549eb21ebed685bd2" + integrity sha1-jW12GayKGj+MQwA1Sesh6+1oW9I= + dependencies: + ember-cli-babel "^6.0.0-beta.7" + +ember-load-initializers@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/ember-load-initializers/-/ember-load-initializers-1.1.0.tgz#4edacc0f3a14d9f53d241ac3e5561804c8377978" + integrity sha512-WiciFi8IXOqjyJ65M4iBNIthqcy4uXXQq5n3WxeMMhvJVk5JNSd9hynNECNz3nqfEYuZQ9c04UWkmFIQXRfl4Q== + dependencies: + ember-cli-babel "^6.6.0" + +ember-maybe-import-regenerator@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/ember-maybe-import-regenerator/-/ember-maybe-import-regenerator-0.1.6.tgz#35d41828afa6d6a59bc0da3ce47f34c573d776ca" + integrity sha1-NdQYKK+m1qWbwNo85H80xXPXdso= + dependencies: + broccoli-funnel "^1.0.1" + broccoli-merge-trees "^1.0.0" + ember-cli-babel "^6.0.0-beta.4" + regenerator-runtime "^0.9.5" + +ember-qunit@^3.5.0: + version "3.5.3" + resolved "https://registry.yarnpkg.com/ember-qunit/-/ember-qunit-3.5.3.tgz#bfd0bff8298c78c77e870cca43fe0826e78a0d09" + integrity sha512-FmXsI1bGsZ5th25x4KEle2fLCVURTptsQODfBt+Pg8tk9rX7y79cqny91PrhtkhE+giZ8p029tnq94SdpJ4ojg== + dependencies: + "@ember/test-helpers" "^0.7.26" + broccoli-funnel "^2.0.1" + broccoli-merge-trees "^2.0.0" + common-tags "^1.4.0" + ember-cli-babel "^6.8.2" + ember-cli-test-loader "^2.2.0" + qunit "~2.6.0" + +ember-resolver@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ember-resolver/-/ember-resolver-5.0.1.tgz#21740b92e1e4a65f94018de22aa1c73434dc3b2f" + integrity sha512-Svhs/eseIVQ6Yik+4mFpixT639FREZW2UkIYo7197bRuSL63tofKDMfE+gOXUSSudQlQSaFHFeKDr9oD+0C2GQ== + dependencies: + "@glimmer/resolver" "^0.4.1" + babel-plugin-debug-macros "^0.1.10" + broccoli-funnel "^2.0.1" + broccoli-merge-trees "^3.0.0" + ember-cli-babel "^6.8.1" + ember-cli-version-checker "^2.0.0" + resolve "^1.3.3" + +ember-rfc176-data@^0.3.5, ember-rfc176-data@^0.3.6: + version "0.3.6" + resolved "https://registry.yarnpkg.com/ember-rfc176-data/-/ember-rfc176-data-0.3.6.tgz#7138db8dfccec39c9a832adfbd4c49d670028907" + integrity sha512-kPY94VCukPUPj+/6sZ9KvphD42KnpX2IS31p5z07OFVIviDogR0cQuld5c7Irzfgq7a0YACj0HlToROFn7dLYQ== + +ember-router-generator@^1.0.0, 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" integrity sha1-jtLKhv8yM2MSD8FCeBkeno8TFe4= dependencies: recast "^0.11.3" +ember-source-channel-url@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/ember-source-channel-url/-/ember-source-channel-url-1.1.0.tgz#73de5cc6ebc25b2120e932ec1d8f82677bfaf6ef" + integrity sha512-y1RVXmyqrdX6zq9ZejpPt7ohKNGuLMBEKaOUyxFWcYAM5gvLuo6xFerwNmXEBbu4e3//GaoasjodXi6Cl+ddUQ== + dependencies: + got "^8.0.1" + +ember-source@~3.4.0: + version "3.4.8" + resolved "https://registry.yarnpkg.com/ember-source/-/ember-source-3.4.8.tgz#68677bf9bd222aff865100b241004649c3d3dda7" + integrity sha512-uiRqAzzFKvZ0P5zf5eOv2BrhBUNFJOnsUrri6dN8Ci7pxBkj/fyKVxwIu/+juQh4E/QRgrfze/+Cueq0FNf6rQ== + dependencies: + broccoli-funnel "^2.0.1" + broccoli-merge-trees "^2.0.0" + chalk "^2.3.0" + ember-cli-get-component-path-option "^1.0.0" + ember-cli-is-package-missing "^1.0.0" + ember-cli-normalize-entity-name "^1.0.0" + ember-cli-path-utils "^1.0.0" + ember-cli-string-utils "^1.1.0" + ember-cli-valid-component-name "^1.0.0" + ember-cli-version-checker "^2.1.0" + ember-router-generator "^1.2.3" + inflection "^1.12.0" + jquery "^3.3.1" + resolve "^1.6.0" + 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" @@ -2799,6 +4950,18 @@ ember-try-config@^2.2.0: rsvp "^3.2.1" semver "^5.1.0" +ember-try-config@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ember-try-config/-/ember-try-config-3.0.0.tgz#012d8c90cae9eb624e2b62040bf7e76a1aa58edc" + integrity sha512-pNwHS29O1ACczkrxBKRtDY0TzTb7uPnA5eHEe+4NF6qpLK5FVnL3EtgZ8+yVYtnm1If5mZ07rIubw45vaSek7w== + dependencies: + ember-source-channel-url "^1.0.1" + lodash "^4.6.1" + package-json "^4.0.1" + remote-git-tags "^2.0.0" + rsvp "^4.8.1" + semver "^5.5.0" + ember-try@^0.2.15: version "0.2.23" resolved "https://registry.yarnpkg.com/ember-try/-/ember-try-0.2.23.tgz#39b57141b4907541d0ac8b503d211e6946b08718" @@ -2817,6 +4980,30 @@ ember-try@^0.2.15: rsvp "^3.0.17" semver "^5.1.0" +ember-try@^1.0.0-beta.3: + version "1.1.0" + resolved "https://registry.yarnpkg.com/ember-try/-/ember-try-1.1.0.tgz#194d5843a79b5a9fc0e4c07445ebc18c08a91e78" + integrity sha512-NL1rKPz2LuyVEqwoNV+SQD4c2w1/A0rrdeT6jqTYqlt/P7y3+SWcsxyReBnImebaIu7Drtz6p9yiAsrJq5Chyg== + dependencies: + chalk "^2.3.0" + cli-table3 "^0.5.1" + core-object "^3.1.5" + debug "^3.1.0" + ember-try-config "^3.0.0" + execa "^1.0.0" + extend "^3.0.0" + fs-extra "^5.0.0" + promise-map-series "^0.2.1" + resolve "^1.1.6" + rimraf "^2.3.2" + rsvp "^4.7.0" + walk-sync "^0.3.3" + +emit-function@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/emit-function/-/emit-function-0.0.2.tgz#e3a50b3d61be1bf8ca88b924bf713157a5bec124" + integrity sha1-46ULPWG+G/jKiLkkv3ExV6W+wSQ= + encodeurl@~1.0.1, encodeurl@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" @@ -2923,6 +5110,16 @@ ensure-posix-path@^1.0.0, ensure-posix-path@^1.0.1, ensure-posix-path@^1.0.2: resolved "https://registry.yarnpkg.com/ensure-posix-path/-/ensure-posix-path-1.0.2.tgz#a65b3e42d0b71cfc585eb774f9943c8d9b91b0c2" integrity sha1-pls+QtC3HPxYXrd0+ZQ8jZuRsMI= +ensure-posix-path@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ensure-posix-path/-/ensure-posix-path-1.1.1.tgz#3c62bdb19fa4681544289edb2b382adc029179ce" + integrity sha512-VWU0/zXzVbeJNXvME/5EmLuEj2TauvoaTz6aFYK1Z92JCBlDlZ3Gu0tuGR42kpW1754ywTs+QB0g5TP0oj9Zaw== + +entities@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" + integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== + entities@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0" @@ -2959,6 +5156,18 @@ es-abstract@^1.4.3: is-callable "^1.1.3" is-regex "^1.0.4" +es-abstract@^1.5.1: + version "1.13.0" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9" + integrity sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg== + dependencies: + es-to-primitive "^1.2.0" + function-bind "^1.1.1" + has "^1.0.3" + is-callable "^1.1.4" + is-regex "^1.0.4" + object-keys "^1.0.12" + es-to-primitive@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d" @@ -2968,6 +5177,15 @@ es-to-primitive@^1.1.1: is-date-object "^1.0.1" is-symbol "^1.0.1" +es-to-primitive@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377" + integrity sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + es5-ext@^0.10.35, es5-ext@^0.10.9, es5-ext@~0.10.14: version "0.10.42" resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.42.tgz#8c07dd33af04d5dcd1310b5cef13bea63a89ba8d" @@ -3034,11 +5252,29 @@ escape-html@~1.0.3: resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= -escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: +escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= +eslint-plugin-ember@^5.0.0: + version "5.4.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-ember/-/eslint-plugin-ember-5.4.0.tgz#2980a4389119b37d0450fff8e82d59c9aab126d0" + integrity sha512-tYMuxUrTad4f7Dq9gY9GUs9lXwKY+fZklzCJ0JoYbzK2PwSfdrPInr2Y4tHornc9dzPvNbRxsn5b26PrWp2iZg== + dependencies: + ember-rfc176-data "^0.3.5" + snake-case "^2.1.0" + +eslint-plugin-node@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-6.0.1.tgz#bf19642298064379315d7a4b2a75937376fa05e4" + integrity sha512-Q/Cc2sW1OAISDS+Ji6lZS2KV4b7ueA/WydVWd1BECTQwVvfQy5JAi3glhINoKzoMnfnuRgNP+ZWKrGAbp3QDxw== + dependencies: + ignore "^3.3.6" + minimatch "^3.0.4" + resolve "^1.3.3" + semver "^5.4.1" + eslint-plugin-prettier@^2.2.0: version "2.7.0" resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-2.7.0.tgz#b4312dcf2c1d965379d7f9d5b5f8aaadc6a45904" @@ -3047,7 +5283,7 @@ eslint-plugin-prettier@^2.2.0: fast-diff "^1.1.1" jest-docblock "^21.0.0" -eslint-scope@^3.7.1: +eslint-scope@3.7.1, eslint-scope@^3.7.1: version "3.7.1" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8" integrity sha1-PWPD7f2gLgbgGkUq2IyqzHzctug= @@ -3238,6 +5474,19 @@ execa@^0.8.0: signal-exit "^3.0.0" strip-eof "^1.0.0" +execa@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" + integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== + dependencies: + cross-spawn "^6.0.0" + get-stream "^4.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" @@ -3340,6 +5589,42 @@ express@^4.10.7, express@^4.12.3: utils-merge "1.0.1" vary "~1.1.2" +express@^4.16.3: + version "4.16.4" + resolved "https://registry.yarnpkg.com/express/-/express-4.16.4.tgz#fddef61926109e24c515ea97fd2f1bdbf62df12e" + integrity sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg== + dependencies: + accepts "~1.3.5" + array-flatten "1.1.1" + body-parser "1.18.3" + content-disposition "0.5.2" + content-type "~1.0.4" + cookie "0.3.1" + cookie-signature "1.0.6" + debug "2.6.9" + depd "~1.1.2" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "1.1.1" + fresh "0.5.2" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "~2.3.0" + parseurl "~1.3.2" + path-to-regexp "0.1.7" + proxy-addr "~2.0.4" + qs "6.5.2" + range-parser "~1.2.0" + safe-buffer "5.1.2" + send "0.16.2" + serve-static "1.13.2" + setprototypeof "1.1.0" + statuses "~1.4.0" + type-is "~1.6.16" + utils-merge "1.0.1" + vary "~1.1.2" + extend-shallow@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" @@ -3450,6 +5735,20 @@ fast-sourcemap-concat@^1.0.1: source-map-url "^0.3.0" sourcemap-validator "^1.0.5" +fast-sourcemap-concat@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/fast-sourcemap-concat/-/fast-sourcemap-concat-1.4.0.tgz#122c330d4a2afaff16ad143bc9674b87cd76c8ad" + integrity sha512-x90Wlx/2C83lfyg7h4oguTZN4MyaVfaiUSJQNpU+YEA0Odf9u659Opo44b0LfoVg9G/bOE++GdID/dkyja+XcA== + dependencies: + chalk "^2.0.0" + fs-extra "^5.0.0" + heimdalljs-logger "^0.1.9" + memory-streams "^0.1.3" + mkdirp "^0.5.0" + source-map "^0.4.2" + source-map-url "^0.3.0" + sourcemap-validator "^1.1.0" + faye-websocket@~0.10.0: version "0.10.0" resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" @@ -3484,7 +5783,7 @@ filename-regex@^2.0.0: resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" integrity sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY= -filesize@^3.1.3: +filesize@^3.1.3, filesize@^3.6.1: version "3.6.1" resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.6.1.tgz#090bb3ee01b6f801a8a8be99d31710b3422bb317" integrity sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg== @@ -3536,6 +5835,14 @@ finalhandler@1.1.1: statuses "~1.4.0" unpipe "~1.0.0" +find-babel-config@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/find-babel-config/-/find-babel-config-1.1.0.tgz#acc01043a6749fec34429be6b64f542ebb5d6355" + integrity sha1-rMAQQ6Z0n+w0Qpvmtk9ULrtdY1U= + dependencies: + json5 "^0.5.1" + path-exists "^3.0.0" + find-index@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/find-index/-/find-index-1.1.0.tgz#53007c79cd30040d6816d79458e8837d5c5705ef" @@ -3556,6 +5863,21 @@ find-up@^2.1.0: dependencies: locate-path "^2.0.0" +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + +find-yarn-workspace-root@^1.1.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/find-yarn-workspace-root/-/find-yarn-workspace-root-1.2.1.tgz#40eb8e6e7c2502ddfaa2577c176f221422f860db" + integrity sha512-dVtfb0WuQG+8Ag2uWkbG79hOUzEsRrhBzgfn86g2sJPkzmcpGdghbNTfUKGTxymFrY/tLIodDzLoW9nOJ4FY8Q== + 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" @@ -3597,7 +5919,15 @@ fireworm@^0.7.0: lodash.flatten "^3.0.2" minimatch "^3.0.2" -fixturify@^0.3.2, fixturify@^0.3.3: +fixturify-project@^1.5.3: + version "1.5.3" + resolved "https://registry.yarnpkg.com/fixturify-project/-/fixturify-project-1.5.3.tgz#2ba4ffec59c1d79ae6638f818c0847eb974d179b" + integrity sha512-vgH+Uo+pC6jHg7mt+FDz+j08bKFugnP6guBWeumYllQDbvxT7NQ/sf6zO4nC0XKRRsSNWsOHkO0AppaHvwF69A== + dependencies: + fixturify "^0.3.4" + tmp "^0.0.33" + +fixturify@^0.3.2, fixturify@^0.3.3, fixturify@^0.3.4: version "0.3.4" resolved "https://registry.yarnpkg.com/fixturify/-/fixturify-0.3.4.tgz#c676de404a7f8ee8e64d0b76118e62ec95ab7b25" integrity sha512-Gx+KSB25b6gMc4bf7UFRTA85uE0iZR+RYur0JHh6dg4AGBh0EksOv4FCHyM7XpGmiJO7Bc7oV7vxENQBT+2WEQ== @@ -3678,7 +6008,7 @@ fresh@0.5.2: resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= -from2@^2.1.0: +from2@^2.1.0, from2@^2.1.1: version "2.3.0" resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= @@ -3753,7 +6083,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" integrity sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg== @@ -3762,6 +6092,33 @@ fs-extra@^4.0.0: jsonfile "^4.0.0" universalify "^0.1.0" +fs-extra@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-5.0.0.tgz#414d0110cdd06705734d055652c5411260c31abd" + integrity sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-extra@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-6.0.1.tgz#8abc128f7946e310135ddc93b98bddb410e7a34b" + integrity sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-extra@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" + integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + fs-minipass@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d" @@ -3769,6 +6126,17 @@ fs-minipass@^1.2.5: dependencies: minipass "^2.2.1" +fs-sync@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/fs-sync/-/fs-sync-1.0.6.tgz#13f1d33a82edf441805fcc7cf6fabe246936166d" + integrity sha512-OgbfyvmGVryknZfDXVVhua6OW8946R+AF3O2xxrCW/XFxCYZ4CO2Jrl7kYhrpjZLYvB9gxvWpLikEc9YL9HzCA== + dependencies: + glob "^7.1.0" + iconv-lite "^0.4.13" + lodash "^4.16.1" + mkdirp "^0.5.1" + rimraf "^2.1.4" + fs-tree-diff@^0.5.2, fs-tree-diff@^0.5.3, fs-tree-diff@^0.5.4, fs-tree-diff@^0.5.6, fs-tree-diff@^0.5.7: version "0.5.7" resolved "https://registry.yarnpkg.com/fs-tree-diff/-/fs-tree-diff-0.5.7.tgz#315e2b098d5fe7f622880ac965b1b051868ac871" @@ -3813,6 +6181,14 @@ fsevents@^1.0.0, fsevents@^1.1.1: nan "^2.9.2" node-pre-gyp "^0.9.0" +fsevents@^1.2.3: + version "1.2.7" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.7.tgz#4851b664a3783e52003b3c66eb0eee1074933aa4" + integrity sha512-Pxm6sI2MeBD7RdD12RYsqaP0nMiwx8eZBXCa6z2L+mRHm2DYrOYwihmhjpkdjUHwQhslWQjRpEgNq4XvBmaAuw== + dependencies: + nan "^2.9.2" + node-pre-gyp "^0.10.0" + function-bind@^1.0.2, function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" @@ -3842,16 +6218,28 @@ get-caller-file@^1.0.0, get-caller-file@^1.0.1: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5" integrity sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U= +get-func-name@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" + integrity sha1-6td0q+5y4gQJQzoGY2YCPdaIekE= + get-stdin@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4= -get-stream@^3.0.0: +get-stream@3.0.0, get-stream@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= +get-stream@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" + integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== + dependencies: + pump "^3.0.0" + get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" @@ -3864,11 +6252,61 @@ getpass@^0.1.1: dependencies: assert-plus "^1.0.0" +git-fetch-pack@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/git-fetch-pack/-/git-fetch-pack-0.1.1.tgz#7703a32cf0db80f060d2766a34ac00d02cebcdf5" + integrity sha1-dwOjLPDbgPBg0nZqNKwA0CzrzfU= + dependencies: + bops "0.0.3" + emit-function "0.0.2" + git-packed-ref-parse "0.0.0" + through "~2.2.7" + +git-packed-ref-parse@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/git-packed-ref-parse/-/git-packed-ref-parse-0.0.0.tgz#b85046931f3e4a65679b5de54af3a5d3df372646" + integrity sha1-uFBGkx8+SmVnm13lSvOl0983JkY= + dependencies: + line-stream "0.0.0" + through "~2.2.7" + +git-read-pkt-line@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/git-read-pkt-line/-/git-read-pkt-line-0.0.8.tgz#494037854ed57bd90cd55676540d86ab0cb36caa" + integrity sha1-SUA3hU7Ve9kM1VZ2VA2GqwyzbKo= + dependencies: + bops "0.0.3" + through "~2.2.7" + 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" integrity sha1-KgcoIyVKr2L88HZgB9e2ZRvUGUM= +git-repo-info@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/git-repo-info/-/git-repo-info-2.1.0.tgz#13d1f753c75bc2994432e65a71e35377ff563813" + integrity sha512-+kigfDB7j3W80f74BoOUX+lKOmf4pR3/i2Ww6baKTCPe2hD4FRdjhV3s4P5Dy0Tak1uY1891QhKoYNtnyX2VvA== + +git-transport-protocol@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/git-transport-protocol/-/git-transport-protocol-0.1.0.tgz#99f4dd6389b9161eded74a9e617d6ba5ed0a6c2c" + integrity sha1-mfTdY4m5Fh7e10qeYX1rpe0KbCw= + dependencies: + duplex "~1.0.0" + emit-function "0.0.2" + git-read-pkt-line "0.0.8" + git-write-pkt-line "0.1.0" + through "~2.2.7" + +git-write-pkt-line@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/git-write-pkt-line/-/git-write-pkt-line-0.1.0.tgz#a84c1856c09011908389b2f06f911d91f6394694" + integrity sha1-qEwYVsCQEZCDibLwb5EdkfY5RpQ= + dependencies: + bops "0.0.3" + through "~2.2.7" + glimmer-analyzer@^0.3.3: version "0.3.3" resolved "https://registry.yarnpkg.com/glimmer-analyzer/-/glimmer-analyzer-0.3.3.tgz#a03e202998cb93e179f04742cb9a82a4036d3f47" @@ -3903,7 +6341,19 @@ glob@7.1.1: fs.realpath "^1.0.0" inflight "^1.0.4" inherits "2" - minimatch "^3.0.2" + minimatch "^3.0.2" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@7.1.2, glob@^7.0.0, glob@^7.0.3, glob@^7.0.4, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" + integrity sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" once "^1.3.0" path-is-absolute "^1.0.0" @@ -3918,10 +6368,10 @@ glob@^5.0.10: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.0, glob@^7.0.3, glob@^7.0.4, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2: - version "7.1.2" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" - integrity sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ== +glob@^7.1.0, glob@^7.1.3: + version "7.1.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" + integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" @@ -3973,6 +6423,11 @@ globals@^11.0.1: resolved "https://registry.yarnpkg.com/globals/-/globals-11.5.0.tgz#6bc840de6771173b191f13d3a9c94d441ee92642" integrity sha512-hYyf+kI8dm3nORsiiXUQigOU62hDLfJ9G01uyGMxhc6BKsircrUhC4uJPQPUSuq2GrTmiiEt7ewxlMdBewfmKQ== +globals@^11.1.0: + version "11.10.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.10.0.tgz#1e09776dffda5e01816b3bb4077c8b59c24eaa50" + integrity sha512-0GZF1RiPKU97IHUO5TORo9w1PwrH/NBPl+fS7oMLdaTRiYmYbwK4NWoZWrAdd0/abG9R2BU+OiwyQpTpE6pdfQ== + globals@^9.18.0: version "9.18.0" resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" @@ -3990,6 +6445,46 @@ globby@^5.0.0: pify "^2.0.0" pinkie-promise "^2.0.0" +got@^6.7.1: + version "6.7.1" + resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0" + integrity sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA= + dependencies: + create-error-class "^3.0.0" + duplexer3 "^0.1.4" + get-stream "^3.0.0" + is-redirect "^1.0.0" + is-retry-allowed "^1.0.0" + is-stream "^1.0.0" + lowercase-keys "^1.0.0" + safe-buffer "^5.0.1" + timed-out "^4.0.0" + unzip-response "^2.0.1" + url-parse-lax "^1.0.0" + +got@^8.0.1: + version "8.3.2" + resolved "https://registry.yarnpkg.com/got/-/got-8.3.2.tgz#1d23f64390e97f776cac52e5b936e5f514d2e937" + integrity sha512-qjUJ5U/hawxosMryILofZCkm3C84PLJS/0grRIpjAwu+Lkxxj5cxeCU25BG0/3mDSpXKTyZr8oh8wIgLaH0QCw== + dependencies: + "@sindresorhus/is" "^0.7.0" + cacheable-request "^2.1.1" + decompress-response "^3.3.0" + duplexer3 "^0.1.4" + get-stream "^3.0.0" + into-stream "^3.1.0" + is-retry-allowed "^1.1.0" + isurl "^1.0.0-alpha5" + lowercase-keys "^1.0.0" + mimic-response "^1.0.0" + p-cancelable "^0.4.0" + p-timeout "^2.0.1" + pify "^3.0.0" + safe-buffer "^5.1.1" + timed-out "^4.0.1" + url-parse-lax "^3.0.0" + url-to-options "^1.0.1" + graceful-fs@^4.1.0, graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.6, graceful-fs@^4.1.9: version "4.1.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" @@ -4000,6 +6495,11 @@ graceful-fs@^4.1.0, graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.3, resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" integrity sha1-TK+tdrxi8C+gObL5Tpo906ORpyU= +growl@1.10.5: + version "1.10.5" + resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" + integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== + growly@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" @@ -4067,6 +6567,23 @@ has-flag@^3.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= +has-symbol-support-x@^1.4.1: + version "1.4.2" + resolved "https://registry.yarnpkg.com/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz#1409f98bc00247da45da67cee0a36f282ff26455" + integrity sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw== + +has-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" + integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q= + +has-to-string-tag-x@^1.2.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz#a045ab383d7b4b2012a00148ab0aa5f290044d4d" + integrity sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw== + dependencies: + has-symbol-support-x "^1.4.1" + has-unicode@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" @@ -4110,6 +6627,13 @@ has@^1.0.1: dependencies: function-bind "^1.0.2" +has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + hash-for-dep@^1.0.2: version "1.2.3" resolved "https://registry.yarnpkg.com/hash-for-dep/-/hash-for-dep-1.2.3.tgz#5ec69fca32c23523972d52acb5bb65ffc3664cab" @@ -4120,6 +6644,16 @@ hash-for-dep@^1.0.2: heimdalljs-logger "^0.1.7" resolve "^1.4.0" +hash-for-dep@^1.2.3: + version "1.3.1" + resolved "https://registry.yarnpkg.com/hash-for-dep/-/hash-for-dep-1.3.1.tgz#b33d33aea8a428de5045d3e7ee0ad86298960c53" + integrity sha512-+EtZxGPLzo4MxEOT3VALnWcfGx/LGuYJE2HqKAPJfDXju0KHZgSNluUyExtKvXeMlF41Vwyv4qbboUI3RqRoBA== + dependencies: + broccoli-kitchen-sink-helpers "^0.3.1" + heimdalljs "^0.2.3" + heimdalljs-logger "^0.1.7" + resolve "^1.4.0" + hawk@~6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/hawk/-/hawk-6.0.2.tgz#af4d914eb065f9b5ce4d9d11c1cb2126eecc3038" @@ -4130,6 +6664,11 @@ hawk@~6.0.2: hoek "4.x.x" sntp "2.x.x" +he@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" + integrity sha1-k0EP0hsAlzUVH4howvJx80J+I/0= + heimdalljs-fs-monitor@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/heimdalljs-fs-monitor/-/heimdalljs-fs-monitor-0.1.1.tgz#acaf5ebf7137bc2fc98e811e31ae4b121c3a75a3" @@ -4138,11 +6677,24 @@ heimdalljs-fs-monitor@^0.1.0: heimdalljs "^0.2.0" heimdalljs-logger "^0.1.7" +heimdalljs-fs-monitor@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/heimdalljs-fs-monitor/-/heimdalljs-fs-monitor-0.2.2.tgz#a76d98f52dbf3aa1b7c20cebb0132e2f5eeb9204" + integrity sha512-R/VhkWs8tm4x+ekLIp+oieR8b3xYK0oFDumEraGnwNMixpiKwO3+Ms5MJzDP5W5Ui1+H/57nGW5L3lHbxi20GA== + dependencies: + heimdalljs "^0.2.3" + heimdalljs-logger "^0.1.7" + heimdalljs-graph@^0.3.1: version "0.3.4" resolved "https://registry.yarnpkg.com/heimdalljs-graph/-/heimdalljs-graph-0.3.4.tgz#0bd75797beeaa20b0ed59017aed3b2d95312acee" integrity sha512-2DXgPIxdatgtBOjlh5qeVeHIGMTC2V9ujEvUhVJBVOVwqnU41g1OuGaRugLi6rvk0E+u1koYkfPeptybV8ZJ4g== +heimdalljs-graph@^0.3.4: + version "0.3.5" + resolved "https://registry.yarnpkg.com/heimdalljs-graph/-/heimdalljs-graph-0.3.5.tgz#420fbbc8fc3aec5963ddbbf1a5fb47921c4a5927" + integrity sha512-szOy9WZUc7eUInEBQEsoa1G2d+oYHrn6ndZPf76eh8A9ID1zWUCEEsxP3F+CvQx9+EDrg1srdyLUmfVAr8EB4g== + heimdalljs-logger@^0.1.7: version "0.1.9" resolved "https://registry.yarnpkg.com/heimdalljs-logger/-/heimdalljs-logger-0.1.9.tgz#d76ada4e45b7bb6f786fc9c010a68eb2e2faf176" @@ -4205,7 +6757,7 @@ hosted-git-info@^2.1.4, hosted-git-info@^2.6.0: resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.6.0.tgz#23235b29ab230c576aab0d4f13fc046b0b038222" integrity sha512-lIbgIIQA3lz5XaB6vxakj6sDHADJiZadYEJB+FgA+C4nubM1NwcuvUr9EJPmnH1skZqpqUzWborWo8EIUi0Sdw== -http-cache-semantics@^3.8.0: +http-cache-semantics@3.8.1, http-cache-semantics@^3.8.0: version "3.8.1" resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2" integrity sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w== @@ -4220,7 +6772,7 @@ http-errors@1.6.2: setprototypeof "1.0.3" statuses ">= 1.3.1 < 2" -http-errors@~1.6.2: +http-errors@1.6.3, http-errors@~1.6.2, http-errors@~1.6.3: version "1.6.3" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= @@ -4243,7 +6795,7 @@ http-proxy-agent@^2.0.0: agent-base "4" debug "3.1.0" -http-proxy@^1.13.1, http-proxy@^1.9.0: +http-proxy@^1.13.1, http-proxy@^1.17.0, http-proxy@^1.9.0: version "1.17.0" resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.17.0.tgz#7ad38494658f84605e2f6db4436df410f4e5be9a" integrity sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g== @@ -4281,6 +6833,20 @@ iconv-lite@0.4.19: resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" integrity sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ== +iconv-lite@0.4.23: + version "0.4.23" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" + integrity sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +iconv-lite@^0.4.13: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + iconv-lite@^0.4.17, iconv-lite@^0.4.4, iconv-lite@~0.4.13: version "0.4.21" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.21.tgz#c47f8733d02171189ebc4a400f3218d348094798" @@ -4305,6 +6871,11 @@ ignore@^3.3.3: resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.8.tgz#3f8e9c35d38708a3a7e0e9abb6c73e7ee7707b2b" integrity sha512-pUh+xUQQhQzevjRHHFqqcTy0/dP/kS9I8HSrUydhihjuD09W6ldVWFtIrwhXdUJHis3i2rZNqEHpZH/cbinFbg== +ignore@^3.3.6: + version "3.3.10" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" + integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== + imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" @@ -4322,7 +6893,7 @@ indexof@0.0.1: resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10= -inflection@^1.7.0, inflection@^1.7.1: +inflection@^1.12.0, inflection@^1.7.0, inflection@^1.7.1: version "1.12.0" resolved "https://registry.yarnpkg.com/inflection/-/inflection-1.12.0.tgz#a200935656d6f5f6bc4dc7502e1aecb703228416" integrity sha1-ogCTVlbW9fa8TcdQLhrstwMihBY= @@ -4376,7 +6947,7 @@ inquirer@^2: strip-ansi "^3.0.0" through "^2.3.6" -inquirer@^3.0.6: +inquirer@^3.0.6, inquirer@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9" integrity sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ== @@ -4396,7 +6967,15 @@ inquirer@^3.0.6: strip-ansi "^4.0.0" through "^2.3.6" -invariant@^2.2.2: +into-stream@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/into-stream/-/into-stream-3.1.0.tgz#96fb0a936c12babd6ff1752a17d05616abd094c6" + integrity sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY= + dependencies: + from2 "^2.1.1" + p-is-promise "^1.1.0" + +invariant@^2.2.0, invariant@^2.2.2: version "2.2.4" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== @@ -4408,6 +6987,11 @@ invert-kv@^1.0.0: resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= +invert-kv@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" + integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== + ip@^1.1.4: version "1.1.5" resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" @@ -4418,6 +7002,11 @@ ipaddr.js@1.6.0: resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.6.0.tgz#e3fa357b773da619f26e95f049d055c72796f86b" integrity sha1-4/o1e3c9phnybpXwSdBVxyeW+Gs= +ipaddr.js@1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.8.0.tgz#eaa33d6ddd7ace8f7f6fe0c9ca0440e706738b1e" + integrity sha1-6qM9bd16zo9/b+DJygRA5wZzix4= + is-accessor-descriptor@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" @@ -4461,6 +7050,11 @@ is-callable@^1.1.1, is-callable@^1.1.3: resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2" integrity sha1-hut1OSgF3cM69xySoO7fdO52BLI= +is-callable@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" + integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA== + is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" @@ -4599,6 +7193,11 @@ is-obj@^1.0.0: resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= +is-object@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.1.tgz#8952688c5ec2ffd6b03ecc85e769e02903083470" + integrity sha1-iVJojF7C/9awPsyF52ngKQMINHA= + is-odd@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-odd/-/is-odd-2.0.0.tgz#7646624671fd7ea558ccd9a2795182f2958f1b24" @@ -4625,6 +7224,11 @@ is-path-inside@^1.0.0: dependencies: path-is-inside "^1.0.1" +is-plain-obj@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= + is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" @@ -4647,6 +7251,11 @@ is-promise@^2.1.0: resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= +is-redirect@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" + integrity sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ= + is-regex@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" @@ -4654,12 +7263,22 @@ is-regex@^1.0.4: dependencies: has "^1.0.1" +is-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" + integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= + is-resolvable@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== -is-stream@^1.0.1, is-stream@^1.1.0: +is-retry-allowed@^1.0.0, is-retry-allowed@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" + integrity sha1-EaBgVotnM5REAz0BJaYaINVk+zQ= + +is-stream@^1.0.0, is-stream@^1.0.1, is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= @@ -4669,6 +7288,13 @@ is-symbol@^1.0.1: resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572" integrity sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI= +is-symbol@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38" + integrity sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw== + dependencies: + has-symbols "^1.0.0" + is-type@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/is-type/-/is-type-0.0.1.tgz#f651d85c365d44955d14a51d8d7061f3f6b4779c" @@ -4716,6 +7342,13 @@ isbinaryfile@^3.0.0: resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.2.tgz#4a3e974ec0cba9004d3fc6cde7209ea69368a621" integrity sha1-Sj6XTsDLqQBNP8bN5yCeppNopiE= +isbinaryfile@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.3.tgz#5d6def3edebf6e8ca8cae9c30183a804b5f8be80" + integrity sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw== + dependencies: + buffer-alloc "^1.2.0" + isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" @@ -4747,11 +7380,34 @@ istextorbinary@2.1.0: editions "^1.1.1" textextensions "1 || 2" +isurl@^1.0.0-alpha5: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isurl/-/isurl-1.0.0.tgz#b27f4f49f3cdaa3ea44a0a5b7f3462e6edc39d67" + integrity sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w== + dependencies: + has-to-string-tag-x "^1.2.0" + is-object "^1.0.1" + jest-docblock@^21.0.0: version "21.2.0" resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-21.2.0.tgz#51529c3b30d5fd159da60c27ceedc195faf8d414" integrity sha512-5IZ7sY9dBAYSV+YjQ0Ovb540Ku7AO9Z5o2Cg789xj167iQuZ2cG+z0f3Uct6WeYLbU6aQiM2pCs7sZ+4dotydw== +jquery-deferred@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/jquery-deferred/-/jquery-deferred-0.3.1.tgz#596eca1caaff54f61b110962b23cafea74c35355" + integrity sha1-WW7KHKr/VPYbEQlisjyv6nTDU1U= + +jquery@^3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.3.1.tgz#958ce29e81c9790f31be7792df5d4d95fc57fbca" + integrity sha512-Ubldcmxp5np52/ENotGxlLe6aGMvmF4R8S6tZjsP6Knsaxd/xp3Zrh50cG93lR6nPXyUFwzN3ZSOQI0wRJNdGg== + +js-levenshtein@^1.1.3: + version "1.1.6" + resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.6.tgz#c6cee58eb3550372df8deb85fad5ce66ce01d59d" + integrity sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g== + js-reporters@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/js-reporters/-/js-reporters-1.2.1.tgz#f88c608e324a3373a95bcc45ad305e5c979c459b" @@ -4762,15 +7418,12 @@ js-tokens@^3.0.0, js-tokens@^3.0.2: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= -js-yaml@^3.2.5, js-yaml@^3.2.7, js-yaml@^3.6.1, js-yaml@^3.9.1: - version "3.11.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.11.0.tgz#597c1a8bd57152f26d622ce4117851a51f5ebaef" - integrity sha512-saJstZWv7oNeOyBh3+Dx1qWzhW0+e6/8eDzo7p5rDFqxntSztloLtuKu+Ejhtq82jsilwOIZYsCz+lIjthg1Hw== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" +js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-yaml@^3.7.0: +js-yaml@^3.12.0, js-yaml@^3.7.0: version "3.12.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.1.tgz#295c8632a18a23e054cf5c9d3cecafe678167600" integrity sha512-um46hB9wNOKlwkHgiuyEVAybXBjwFUV0Z/RaHJblRd9DXltue9FTYvzCr9ErQrK9Adz5MU4gHWVaNUfdmrC8qA== @@ -4778,6 +7431,14 @@ js-yaml@^3.7.0: argparse "^1.0.7" esprima "^4.0.0" +js-yaml@^3.2.5, js-yaml@^3.2.7, js-yaml@^3.6.1, js-yaml@^3.9.1: + version "3.11.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.11.0.tgz#597c1a8bd57152f26d622ce4117851a51f5ebaef" + integrity sha512-saJstZWv7oNeOyBh3+Dx1qWzhW0+e6/8eDzo7p5rDFqxntSztloLtuKu+Ejhtq82jsilwOIZYsCz+lIjthg1Hw== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" @@ -4788,6 +7449,11 @@ jsesc@^1.3.0: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" integrity sha1-RsP+yMGJKxKwgz25vHYiF226s0s= +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + jsesc@~0.3.x: version "0.3.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.3.0.tgz#1bf5ee63b4539fe2e26d0c1e99c240b97a457972" @@ -4798,6 +7464,11 @@ jsesc@~0.5.0: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= +json-buffer@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" + integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= + json-parse-better-errors@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" @@ -4840,6 +7511,13 @@ json5@^0.5.1: resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= +json5@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.0.tgz#e7a0c62c48285c628d20a10b85c89bb807c32850" + integrity sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ== + dependencies: + minimist "^1.2.0" + jsonfile@^2.1.0: version "2.4.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" @@ -4869,6 +7547,13 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.0" +keyv@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.0.0.tgz#44923ba39e68b12a7cec7df6c3268c031f2ef373" + integrity sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA== + dependencies: + json-buffer "3.0.0" + kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" @@ -4919,6 +7604,13 @@ lcid@^1.0.0: dependencies: invert-kv "^1.0.0" +lcid@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" + integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== + dependencies: + invert-kv "^2.0.0" + leek@0.0.24: version "0.0.24" resolved "https://registry.yarnpkg.com/leek/-/leek-0.0.24.tgz#e400e57f0e60d8ef2bd4d068dc428a54345dbcda" @@ -4951,6 +7643,13 @@ levn@^0.3.0, levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" +line-stream@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/line-stream/-/line-stream-0.0.0.tgz#888b7cc7951c6a05ce4d696dd1e6b8262371bb45" + integrity sha1-iIt8x5UcagXOTWlt0ea4JiNxu0U= + dependencies: + through "~2.2.0" + lines-and-columns@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" @@ -4979,7 +7678,7 @@ load-json-file@^1.0.0: pinkie-promise "^2.0.0" strip-bom "^2.0.0" -loader.js@^4.0.10: +loader.js@^4.0.10, loader.js@^4.2.3: version "4.7.0" resolved "https://registry.yarnpkg.com/loader.js/-/loader.js-4.7.0.tgz#a1a52902001c83631efde9688b8ab3799325ef1f" integrity sha512-9M2KvGT6duzGMgkOcTkWb+PR/Q2Oe54df/tLgHGVmFpAmtqJ553xJh6N63iFYI2yjo2PeJXbS5skHi/QpJq4vA== @@ -4992,6 +7691,14 @@ locate-path@^2.0.0: p-locate "^2.0.0" path-exists "^3.0.0" +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + lodash._baseassign@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz#8c38a099500f215ad09e59f1722fd0c52bfe0a4e" @@ -5286,7 +7993,7 @@ lodash.keys@~2.3.0: lodash._shimkeys "~2.3.0" lodash.isobject "~2.3.0" -lodash.merge@^4.3.0, lodash.merge@^4.4.0, lodash.merge@^4.6.0: +lodash.merge@^4.3.0, lodash.merge@^4.3.1, lodash.merge@^4.4.0, lodash.merge@^4.6.0: version "4.6.1" resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.1.tgz#adc25d9cb99b9391c59624f379fbba60d7111d54" integrity sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ== @@ -5313,7 +8020,7 @@ lodash.support@~2.3.0: dependencies: lodash._renative "~2.3.0" -lodash.template@^4.2.5: +lodash.template@^4.2.5, lodash.template@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.4.0.tgz#e73a0385c8355591746e020b99679c690e68fba0" integrity sha1-5zoDhcg1VZF0bgILmWecaQ5o+6A= @@ -5376,6 +8083,11 @@ lodash@^3.10.1: resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" integrity sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y= +lodash@^4.0.0, lodash@^4.16.1, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.2, lodash@^4.2.0: + version "4.17.11" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" + integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== + lodash@^4.14.0, lodash@^4.16.6, lodash@^4.17.4, lodash@^4.3.0, lodash@^4.6.1, lodash@^4.8.0: version "4.17.10" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" @@ -5408,6 +8120,21 @@ loud-rejection@^1.0.0: currently-unhandled "^0.4.1" signal-exit "^3.0.0" +lower-case@^1.1.1: + version "1.1.4" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" + integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw= + +lowercase-keys@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306" + integrity sha1-TjNms55/VFfjXxMkvfb4jQv8cwY= + +lowercase-keys@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" + integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== + lru-cache@^4.0.1, lru-cache@^4.1.1: version "4.1.2" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.2.tgz#45234b2e6e2f2b33da125624c4664929a0224c3f" @@ -5447,6 +8174,13 @@ makeerror@1.0.x: dependencies: tmpl "1.0.x" +map-age-cleaner@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" + integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== + dependencies: + p-defer "^1.0.0" + map-cache@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" @@ -5486,6 +8220,17 @@ markdown-it@^8.3.0, markdown-it@^8.3.1: mdurl "^1.0.1" uc.micro "^1.0.5" +markdown-it@^8.4.2: + version "8.4.2" + resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-8.4.2.tgz#386f98998dc15a37722aa7722084f4020bdd9b54" + integrity sha512-GcRz3AWTqSUphY3vsUqQSFMbgR38a4Lh3GWlHRh/7MRwz8mcu9n2IO7HOh+bXHrR9kOPDl5RNCaEsrneb+xhHQ== + dependencies: + argparse "^1.0.7" + entities "~1.1.1" + linkify-it "^2.0.0" + mdurl "^1.0.1" + uc.micro "^1.0.5" + matcher-collection@^1.0.0, matcher-collection@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/matcher-collection/-/matcher-collection-1.0.5.tgz#2ee095438372cb8884f058234138c05c644ec339" @@ -5493,6 +8238,13 @@ matcher-collection@^1.0.0, matcher-collection@^1.0.4: dependencies: minimatch "^3.0.2" +matcher-collection@^1.0.5, matcher-collection@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/matcher-collection/-/matcher-collection-1.1.2.tgz#1076f506f10ca85897b53d14ef54f90a5c426838" + integrity sha512-YQ/teqaOIIfUHedRam08PB3NK7Mjct6BvzRnJmpGDm8uFXpNr1sbY4yuflI5JcEs6COpYA0FpRQhSDBf1tT95g== + dependencies: + minimatch "^3.0.2" + md5-hex@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/md5-hex/-/md5-hex-1.3.0.tgz#d2c4afe983c4370662179b8cad145219135046c4" @@ -5522,7 +8274,16 @@ media-typer@0.3.0: resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= -memory-streams@^0.1.0: +mem@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/mem/-/mem-4.1.0.tgz#aeb9be2d21f47e78af29e4ac5978e8afa2ca5b8a" + integrity sha512-I5u6Q1x7wxO0kdOpYBB28xueHADYps5uty/zg936CiG8NTe5sJL8EjrCuLneuDW3PlMdZBGDIn8BirEVdovZvg== + dependencies: + map-age-cleaner "^0.1.1" + mimic-fn "^1.0.0" + p-is-promise "^2.0.0" + +memory-streams@^0.1.0, memory-streams@^0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/memory-streams/-/memory-streams-0.1.3.tgz#d9b0017b4b87f1d92f55f2745c9caacb1dc93ceb" integrity sha512-qVQ/CjkMyMInPaaRMrwWNDvf6boRZXaT/DbQeMYcCWuXPEBf1v8qChOc9OlEVQp2uOvRXa1Qu30fLmKhY6NipA== @@ -5623,6 +8384,11 @@ micromatch@^3.0.4, micromatch@^3.1.4: resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db" integrity sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ== +"mime-db@>= 1.36.0 < 2": + version "1.38.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.38.0.tgz#1a2aab16da9eb167b49c6e4df2d9c68d63d8e2ad" + integrity sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg== + mime-types@^2.1.12, mime-types@^2.1.18, mime-types@~2.1.11, mime-types@~2.1.17, mime-types@~2.1.18: version "2.1.18" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.18.tgz#6f323f60a83d11146f831ff11fd66e2fe5503bb8" @@ -5645,7 +8411,12 @@ mimic-fn@^1.0.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== -"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.4: +mimic-response@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" + integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== + +"minimatch@2 || 3", minimatch@3.0.4, minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== @@ -5667,6 +8438,14 @@ minimist@~0.0.1: resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= +minipass@^2.2.0: + version "2.3.5" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz#cacebe492022497f656b0f0f51e2682a9ed2d848" + integrity sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA== + dependencies: + safe-buffer "^5.1.2" + yallist "^3.0.0" + minipass@^2.2.1, minipass@^2.2.4: version "2.2.4" resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.2.4.tgz#03c824d84551ec38a8d1bb5bc350a5a30a354a40" @@ -5722,7 +8501,7 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -mkdirp@0.5.x, mkdirp@^0.5.0, mkdirp@^0.5.1: +mkdirp@0.5.1, mkdirp@0.5.x, mkdirp@^0.5.0, mkdirp@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= @@ -5734,6 +8513,23 @@ mktemp@^0.4.0, mktemp@~0.4.0: resolved "https://registry.yarnpkg.com/mktemp/-/mktemp-0.4.0.tgz#6d0515611c8a8c84e484aa2000129b98e981ff0b" integrity sha1-bQUVYRyKjITkhKogABKbmOmB/ws= +mocha@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-5.2.0.tgz#6d8ae508f59167f940f2b5b3c4a612ae50c90ae6" + integrity sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ== + dependencies: + browser-stdout "1.3.1" + commander "2.15.1" + debug "3.1.0" + diff "3.5.0" + escape-string-regexp "1.0.5" + glob "7.1.2" + growl "1.10.5" + he "1.1.1" + minimatch "3.0.4" + mkdirp "0.5.1" + supports-color "5.4.0" + morgan@^1.8.1: version "1.9.0" resolved "https://registry.yarnpkg.com/morgan/-/morgan-1.9.0.tgz#d01fa6c65859b76fcf31b3cb53a3821a311d8051" @@ -5745,6 +8541,17 @@ morgan@^1.8.1: on-finished "~2.3.0" on-headers "~1.0.1" +morgan@^1.9.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/morgan/-/morgan-1.9.1.tgz#0a8d16734a1d9afbc824b99df87e738e58e2da59" + integrity sha512-HQStPIV4y3afTiCYVxirakhlCfGkI161c76kKFca7Fk1JusM//Qeo1ej2XaMniiNeaZklMVrh3vTtIzpzwbpmA== + dependencies: + basic-auth "~2.0.0" + debug "2.6.9" + depd "~1.1.2" + on-finished "~2.3.0" + on-headers "~1.0.1" + mout@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/mout/-/mout-1.1.0.tgz#0b29d41e6a80fa9e2d4a5be9d602e1d9d02177f6" @@ -5777,7 +8584,7 @@ ms@2.0.0: resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= -ms@^2.0.0: +ms@^2.0.0, ms@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== @@ -5787,6 +8594,11 @@ mustache@^2.2.1: resolved "https://registry.yarnpkg.com/mustache/-/mustache-2.3.0.tgz#4028f7778b17708a489930a6e52ac3bca0da41d0" integrity sha1-QCj3d4sXcIpImTCm5SrDvKDaQdA= +mustache@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/mustache/-/mustache-3.0.1.tgz#873855f23aa8a95b150fb96d9836edbc5a1d248a" + integrity sha512-jFI/4UVRsRYdUbuDTKT7KzfOp7FiD5WzYmmwNwXyUVypC0xjoTL78Fqc0jHUPIvvGD+6DQSPHIt1NE7D1ArsqA== + mute-stream@0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.6.tgz#48962b19e169fd1dfc240b3f1e7317627bbc47db" @@ -5797,6 +8609,15 @@ mute-stream@0.0.7: resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= +najax@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/najax/-/najax-1.0.4.tgz#63fd8dbf15d18f24dc895b3a16fec66c136b8084" + integrity sha512-wsSacA+RkgY1wxRxXCT3tdqzmamEv9PLeoV/ub9SlLf2RngbPMSqc3A7H35XJDfURC0twMmZsnPdsYPkuuFSVg== + dependencies: + jquery-deferred "^0.3.0" + lodash.defaultsdeep "^4.6.0" + qs "^6.2.0" + nan@^2.9.2: version "2.10.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.10.0.tgz#96d0cd610ebd58d4b4de9cc0c6828cda99c7548f" @@ -5834,6 +8655,15 @@ needle@^2.2.0: iconv-lite "^0.4.4" sax "^1.2.4" +needle@^2.2.1: + version "2.2.4" + resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.4.tgz#51931bff82533b1928b7d1d69e01f1b00ffd2a4e" + integrity sha512-HyoqEb4wr/rsoaIDfTH2aVL9nWtQqba2/HvMv+++m8u0dz808MaagKILxtfeSN7QU7nvbQ79zk3vYOJp9zsNEA== + dependencies: + debug "^2.1.2" + iconv-lite "^0.4.4" + sax "^1.2.4" + negotiator@0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" @@ -5849,6 +8679,13 @@ nice-try@^1.0.4: resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.4.tgz#d93962f6c52f2c1558c0fbda6d512819f1efe1c4" integrity sha512-2NpiFHqC87y/zFke0fC0spBXL3bBsoh/p5H1EFhshxjCR5+0g2d6BiXbUFz9v1sAcxsk2htp2eQnNIci2dIYcA== +no-case@^2.2.0: + version "2.3.2" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac" + integrity sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ== + dependencies: + lower-case "^1.1.1" + node-fetch-npm@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/node-fetch-npm/-/node-fetch-npm-2.0.2.tgz#7258c9046182dca345b4208eda918daf33697ff7" @@ -5886,6 +8723,22 @@ node-notifier@^5.0.1: shellwords "^0.1.1" which "^1.3.0" +node-pre-gyp@^0.10.0: + version "0.10.3" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.3.tgz#3070040716afdc778747b61b6887bf78880b80fc" + integrity sha512-d1xFs+C/IPS8Id0qPTZ4bUT8wWryfR/OzzAFxweG+uLN85oPzyo2Iw6bVlLQ/JOdgNonXLCoRyqDzDWq4iw72A== + dependencies: + detect-libc "^1.0.2" + mkdirp "^0.5.1" + needle "^2.2.1" + nopt "^4.0.1" + npm-packlist "^1.1.6" + npmlog "^4.0.2" + rc "^1.2.7" + rimraf "^2.6.1" + semver "^5.3.0" + tar "^4" + node-pre-gyp@^0.9.0: version "0.9.1" resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.9.1.tgz#f11c07516dd92f87199dbc7e1838eab7cd56c9e0" @@ -5902,6 +8755,13 @@ node-pre-gyp@^0.9.0: semver "^5.3.0" tar "^4" +node-releases@^1.1.3: + version "1.1.7" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.7.tgz#b09a10394d0ed8f7778f72bb861dde68b146303b" + integrity sha512-bKdrwaqJUPHqlCzDD7so/R+Nk0jGv9a11ZhLrD9f6i947qGLrGAhU3OxRENa19QQmwzGy/g6zCDEuLGDO8HPvA== + dependencies: + semver "^5.3.0" + nopt@^3.0.6: version "3.0.6" resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" @@ -5939,12 +8799,21 @@ normalize-path@^2.0.0, normalize-path@^2.0.1, normalize-path@^2.1.1: dependencies: remove-trailing-separator "^1.0.1" +normalize-url@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-2.0.1.tgz#835a9da1551fa26f70e92329069a23aa6574d7e6" + integrity sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw== + dependencies: + prepend-http "^2.0.0" + query-string "^5.0.1" + sort-keys "^2.0.0" + npm-bundled@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.3.tgz#7e71703d973af3370a9591bafe3a63aca0be2308" integrity sha512-ByQ3oJ/5ETLyglU2+8dBObvhfWXX8dtPZDMePCahptliFX2iIuhyEszyFk401PZUNQH20vvdW5MLjJxkwU80Ow== -npm-package-arg@^6.0.0: +npm-package-arg@^6.0.0, npm-package-arg@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-6.1.0.tgz#15ae1e2758a5027efb4c250554b85a737db7fcc1" integrity sha512-zYbhP2k9DbJhA0Z3HKUePUgdB1x7MfIfKssC+WLPFMKTBZKpZh5m13PgexJjCq6KW7j17r0jHWcCpxEqnnncSA== @@ -6018,6 +8887,11 @@ object-hash@^1.3.1: resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-1.3.1.tgz#fde452098a951cb145f039bb7d455449ddc126df" integrity sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA== +object-keys@^1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.12.tgz#09c53855377575310cca62f55bb334abff7b3ed2" + integrity sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag== + object-keys@^1.0.8: version "1.0.11" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d" @@ -6030,6 +8904,14 @@ object-visit@^1.0.0: dependencies: isobject "^3.0.0" +object.getownpropertydescriptors@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16" + integrity sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY= + dependencies: + define-properties "^1.1.2" + es-abstract "^1.5.1" + object.omit@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" @@ -6125,6 +9007,15 @@ os-locale@^1.4.0: dependencies: lcid "^1.0.0" +os-locale@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" + integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q== + dependencies: + execa "^1.0.0" + lcid "^2.0.0" + mem "^4.0.0" + os-shim@^0.1.2: version "0.1.3" resolved "https://registry.yarnpkg.com/os-shim/-/os-shim-0.1.3.tgz#6b62c3791cf7909ea35ed46e17658bb417cb3917" @@ -6135,7 +9026,7 @@ os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.1, os-tmpdir@~1.0.2: resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= -osenv@^0.1.3, osenv@^0.1.4, osenv@^0.1.5: +osenv@^0.1.0, osenv@^0.1.3, osenv@^0.1.4, osenv@^0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== @@ -6143,11 +9034,31 @@ osenv@^0.1.3, osenv@^0.1.4, osenv@^0.1.5: os-homedir "^1.0.0" os-tmpdir "^1.0.0" +p-cancelable@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.4.1.tgz#35f363d67d52081c8d9585e37bcceb7e0bbcb2a0" + integrity sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ== + +p-defer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" + integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= + p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= +p-is-promise@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-1.1.0.tgz#9c9456989e9f6588017b0434d56097675c3da05e" + integrity sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4= + +p-is-promise@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.0.0.tgz#7554e3d572109a87e1f3f53f6a7d85d1b194f4c5" + integrity sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg== + p-limit@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.2.0.tgz#0e92b6bedcb59f022c13d0f1949dc82d15909f1c" @@ -6155,6 +9066,13 @@ p-limit@^1.1.0: dependencies: p-try "^1.0.0" +p-limit@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.1.0.tgz#1d5a0d20fb12707c758a655f6bbc4386b5930d68" + integrity sha512-NhURkNcrVB+8hNfLuysU8enY5xn2KXphsHBaC2YmRNTZRc7RWusw6apSpdEj3jo4CMb6W9nrF6tTnsJsJeyu6g== + dependencies: + p-try "^2.0.0" + p-locate@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" @@ -6162,16 +9080,45 @@ p-locate@^2.0.0: dependencies: p-limit "^1.1.0" +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + p-map@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b" integrity sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA== +p-timeout@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-2.0.1.tgz#d8dd1979595d2dc0139e1fe46b8b646cb3cdf038" + integrity sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA== + dependencies: + p-finally "^1.0.0" + p-try@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= +p-try@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.0.0.tgz#85080bb87c64688fa47996fe8f7dfbe8211760b1" + integrity sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ== + +package-json@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/package-json/-/package-json-4.0.1.tgz#8869a0401253661c4c4ca3da6c2121ed555f5eed" + integrity sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0= + dependencies: + got "^6.7.1" + registry-auth-token "^3.0.1" + registry-url "^3.0.3" + semver "^5.1.0" + parallel-transform@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.1.0.tgz#d410f065b05da23081fcd10f28854c29bda33b06" @@ -6297,6 +9244,11 @@ path-type@^1.0.0: pify "^2.0.0" pinkie-promise "^2.0.0" +pathval@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.0.tgz#b942e6d4bde653005ef6b71361def8727d0645e0" + integrity sha1-uULm1L3mUwBe9rcTYd74cn0GReA= + performance-now@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" @@ -6324,11 +9276,27 @@ pinkie@^2.0.0: resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= +pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-2.0.0.tgz#c819ac728059a461cab1c3889a2be3c49a004d7f" + integrity sha1-yBmscoBZpGHKscOImivjxJoATX8= + dependencies: + find-up "^2.1.0" + pluralize@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777" integrity sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow== +portfinder@^1.0.15: + version "1.0.20" + resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.20.tgz#bea68632e54b2e13ab7b0c4775e9b41bf270e44a" + integrity sha512-Yxe4mTyDzTd59PZJY4ojZR8F+E5e97iq2ZOHPz3HDgSvYC5siNad2tLooQ5y5QHyQhc3xVqvyk/eNA3wuoa7Sw== + dependencies: + async "^1.5.2" + debug "^2.2.0" + mkdirp "0.5.x" + portfinder@^1.0.7: version "1.0.13" resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.13.tgz#bb32ecd87c27104ae6ee44b5a3ccbf0ebb1aede9" @@ -6348,6 +9316,16 @@ prelude-ls@~1.1.2: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= +prepend-http@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" + integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= + +prepend-http@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" + integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= + preserve@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" @@ -6363,6 +9341,11 @@ printf@^0.2.3: resolved "https://registry.yarnpkg.com/printf/-/printf-0.2.5.tgz#c438ca2ca33e3927671db4ab69c0e52f936a4f0f" integrity sha1-xDjKLKM+OSdnHbSracDlL5NqTw8= +printf@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/printf/-/printf-0.5.1.tgz#e0466788260859ed153006dc6867f09ddf240cf3" + integrity sha512-UaE/jO0hNsrvPGQEb4LyNzcrJv9Z00tsreBduOSxMtrebvoUhxiEJ4YCHX8YHf6akwfKsC2Gyv5zv47UXhMiLg== + private@^0.1.6, private@^0.1.8, private@~0.1.5: version "0.1.8" resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" @@ -6395,7 +9378,7 @@ promise-inflight@^1.0.1: resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= -promise-map-series@^0.2.1: +promise-map-series@^0.2.1, promise-map-series@^0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/promise-map-series/-/promise-map-series-0.2.3.tgz#c2d377afc93253f6bd03dbb77755eb88ab20a847" integrity sha1-wtN3r8kyU/a9A9u3d1XriKsgqEc= @@ -6418,6 +9401,14 @@ proxy-addr@~2.0.3: forwarded "~0.1.2" ipaddr.js "1.6.0" +proxy-addr@~2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.4.tgz#ecfc733bf22ff8c6f407fa275327b9ab67e48b93" + integrity sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA== + dependencies: + forwarded "~0.1.2" + ipaddr.js "1.8.0" + pseudomap@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" @@ -6439,6 +9430,14 @@ pump@^2.0.0, pump@^2.0.1: end-of-stream "^1.1.0" once "^1.3.1" +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + pumpify@^1.3.3: version "1.4.0" resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.4.0.tgz#80b7c5df7e24153d03f0e7ac8a05a5d068bd07fb" @@ -6463,6 +9462,33 @@ qs@6.5.1, qs@^6.4.0, qs@~6.5.1: resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8" integrity sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A== +qs@6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" + integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== + +qs@^6.2.0: + version "6.6.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.6.0.tgz#a99c0f69a8d26bf7ef012f871cdabb0aee4424c2" + integrity sha512-KIJqT9jQJDQx5h5uAVPimw6yVg2SekOKu959OCtktD3FjzbpvaPr8i4zzg07DOMz+igA4W/aNM7OV8H37pFYfA== + +query-string@^5.0.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-5.1.1.tgz#a78c012b71c17e05f2e3fa2319dd330682efb3cb" + integrity sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw== + dependencies: + decode-uri-component "^0.2.0" + object-assign "^4.1.0" + strict-uri-encode "^1.0.0" + +quibble@^0.5.5: + version "0.5.5" + resolved "https://registry.yarnpkg.com/quibble/-/quibble-0.5.5.tgz#669fb731520a923e0a98f8076b7eb55e409f73f9" + integrity sha512-cIePu3BtGlaTW1bjFgBcLT6QMxD8PtnZDCmPJUzO+RepIz8GuXsmZIEPGFjlPxzG9zfIj4nNLPxBDlUbvr9ESg== + dependencies: + lodash "^4.17.2" + resolve "^1.7.1" + quick-temp@^0.1.2, quick-temp@^0.1.3, quick-temp@^0.1.5, quick-temp@^0.1.8: version "0.1.8" resolved "https://registry.yarnpkg.com/quick-temp/-/quick-temp-0.1.8.tgz#bab02a242ab8fb0dd758a3c9776b32f9a5d94408" @@ -6472,6 +9498,14 @@ quick-temp@^0.1.2, quick-temp@^0.1.3, quick-temp@^0.1.5, quick-temp@^0.1.8: rimraf "^2.5.4" underscore.string "~3.3.4" +qunit-dom@^0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/qunit-dom/-/qunit-dom-0.7.1.tgz#2e6ad4a6453c034f88ef415250b37e82572460b9" + integrity sha512-8mwF7taWSqDrVRYHgp98nJmoTeE2z37K7RmHjV18pX0YoGxaJSYg+y1bRE0h3tsjSMs85W9gL/WR62yfoQN3VA== + dependencies: + broccoli-funnel "^2.0.0" + broccoli-merge-trees "^2.0.0" + qunit@^2.4.1: version "2.6.0" resolved "https://registry.yarnpkg.com/qunit/-/qunit-2.6.0.tgz#347b34686e2aa67a9f81f81d39f0771603ed628c" @@ -6485,6 +9519,19 @@ qunit@^2.4.1: resolve "1.5.0" walk-sync "0.3.2" +qunit@~2.6.0: + version "2.6.2" + resolved "https://registry.yarnpkg.com/qunit/-/qunit-2.6.2.tgz#551210c5cf857258a4fe39a7fe15d9e14dfef22c" + integrity sha512-PHbKulmd4rrDhFto7iHicIstDTX7oMRvAcI7loHstvU8J7AOGwzcchONmy+EG4KU8HDk0K90o7vO0GhlYyKlOg== + dependencies: + commander "2.12.2" + exists-stat "1.0.0" + findup-sync "2.0.0" + js-reporters "1.2.1" + resolve "1.5.0" + sane "^2.5.2" + walk-sync "0.3.2" + randomatic@^1.1.3: version "1.1.7" resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.7.tgz#c7abe9cc8b87c0baa876b19fde83fd464797e38c" @@ -6508,6 +9555,16 @@ raw-body@2.3.2: iconv-lite "0.4.19" unpipe "1.0.0" +raw-body@2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.3.tgz#1b324ece6b5706e153855bc1148c65bb7f6ea0c3" + integrity sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw== + dependencies: + bytes "3.0.0" + http-errors "1.6.3" + iconv-lite "0.4.23" + unpipe "1.0.0" + raw-body@~1.1.0: version "1.1.7" resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-1.1.7.tgz#1d027c2bfa116acc6623bca8f00016572a87d425" @@ -6516,6 +9573,16 @@ raw-body@~1.1.0: bytes "1" string_decoder "0.10" +rc@^1.0.1, rc@^1.1.6, rc@^1.2.7: + version "1.2.8" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" + integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== + dependencies: + deep-extend "^0.6.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + rc@^1.1.7: version "1.2.7" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.7.tgz#8a10ca30d588d00464360372b890d06dacd02297" @@ -6601,16 +9668,43 @@ redeyed@~1.0.0: dependencies: esprima "~3.0.0" +regenerate-unicode-properties@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-7.0.0.tgz#107405afcc4a190ec5ed450ecaa00ed0cafa7a4c" + integrity sha512-s5NGghCE4itSlUS+0WUj88G6cfMVMmH8boTPNvABf8od+2dhT9WDlWu8n01raQAJZMOK8Ch6jSexaRO7swd6aw== + dependencies: + regenerate "^1.4.0" + regenerate@^1.2.1: version "1.3.3" resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.3.tgz#0c336d3980553d755c39b586ae3b20aa49c82b7f" integrity sha512-jVpo1GadrDAK59t/0jRx5VxYWQEDkkEKi6+HjE3joFVLfDOh9Xrdh0dF1eSq+BI/SwvTQ44gSscJ8N5zYL61sg== +regenerate@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" + integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== + +regenerator-runtime@^0.10.5: + version "0.10.5" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658" + integrity sha1-M2w+/BIgrc7dosn6tntaeVWjNlg= + regenerator-runtime@^0.11.0: version "0.11.1" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== +regenerator-runtime@^0.12.0: + version "0.12.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz#fa1a71544764c036f8c49b13a08b2594c9f8a0de" + integrity sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg== + +regenerator-runtime@^0.9.5: + version "0.9.6" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.9.6.tgz#d33eb95d0d2001a4be39659707c51b0cb71ce029" + integrity sha1-0z65XQ0gAaS+OWWXB8UbDLcc4Ck= + regenerator-transform@^0.10.0: version "0.10.1" resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd" @@ -6620,6 +9714,13 @@ regenerator-transform@^0.10.0: babel-types "^6.19.0" private "^0.1.6" +regenerator-transform@^0.13.3: + version "0.13.3" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.13.3.tgz#264bd9ff38a8ce24b06e0636496b2c856b57bcbb" + integrity sha512-5ipTrZFSq5vU2YoGoww4uaRVAK4wyYC4TSICibbfEPOruUu8FFP7ErV0BjmbIOEpn3O/k9na9UEdYR/3m7N6uA== + dependencies: + private "^0.1.6" + regex-cache@^0.4.2: version "0.4.4" resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" @@ -6635,6 +9736,15 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" +regexp-tree@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/regexp-tree/-/regexp-tree-0.1.1.tgz#27b455f9b138ca2e84c090e9aff1ffe2a04d97fa" + integrity sha512-HwRjOquc9QOwKTgbxvZTcddS5mlNlwePMQ3NFL8broajMLD5CXDAqas8Y5yxJH5QtZp5iRor3YCILd5pz71Cgw== + dependencies: + cli-table3 "^0.5.0" + colors "^1.1.2" + yargs "^12.0.5" + regexpp@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-1.1.0.tgz#0e3516dd0b7904f413d2d4193dce4618c3a689ab" @@ -6649,11 +9759,43 @@ regexpu-core@^2.0.0: regjsgen "^0.2.0" regjsparser "^0.1.4" +regexpu-core@^4.1.3, regexpu-core@^4.2.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.4.0.tgz#8d43e0d1266883969720345e70c275ee0aec0d32" + integrity sha512-eDDWElbwwI3K0Lo6CqbQbA6FwgtCz4kYTarrri1okfkRLZAqstU+B3voZBCjg8Fl6iq0gXrJG6MvRgLthfvgOA== + dependencies: + regenerate "^1.4.0" + regenerate-unicode-properties "^7.0.0" + regjsgen "^0.5.0" + regjsparser "^0.6.0" + unicode-match-property-ecmascript "^1.0.4" + unicode-match-property-value-ecmascript "^1.0.2" + +registry-auth-token@^3.0.1: + version "3.3.2" + resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.3.2.tgz#851fd49038eecb586911115af845260eec983f20" + integrity sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ== + dependencies: + rc "^1.1.6" + safe-buffer "^5.0.1" + +registry-url@^3.0.3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942" + integrity sha1-PU74cPc93h138M+aOBQyRE4XSUI= + dependencies: + rc "^1.0.1" + regjsgen@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" integrity sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc= +regjsgen@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.0.tgz#a7634dc08f89209c2049adda3525711fb97265dd" + integrity sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA== + regjsparser@^0.1.4: version "0.1.5" resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" @@ -6661,6 +9803,21 @@ regjsparser@^0.1.4: dependencies: jsesc "~0.5.0" +regjsparser@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.0.tgz#f1e6ae8b7da2bae96c99399b868cd6c933a2ba9c" + integrity sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ== + dependencies: + jsesc "~0.5.0" + +remote-git-tags@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/remote-git-tags/-/remote-git-tags-2.0.0.tgz#1152f39cf8b5268ae0e4307636ef741ec341664c" + integrity sha1-EVLznPi1Jorg5DB2Nu90HsNBZkw= + dependencies: + git-fetch-pack "^0.1.1" + git-transport-protocol "^0.1.0" + remove-trailing-separator@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" @@ -6734,6 +9891,11 @@ requires-port@^1.0.0: resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= +reselect@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/reselect/-/reselect-3.0.1.tgz#efdaa98ea7451324d092b2b2163a6a1d7a9a2147" + integrity sha1-79qpjqdFEyTQkrKyFjpqHXqaIUc= + resolve-dir@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-0.1.1.tgz#b219259a5602fac5c5c496ad894a6e8cc430261e" @@ -6780,13 +9942,20 @@ resolve@^1.1.6, resolve@^1.3.0, resolve@^1.3.3, resolve@^1.4.0: dependencies: path-parse "^1.0.5" -resolve@^1.3.2: +resolve@^1.3.2, resolve@^1.5.0, resolve@^1.6.0, resolve@^1.7.1, resolve@^1.8.1, resolve@^1.9.0: version "1.10.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.10.0.tgz#3bdaaeaf45cc07f375656dfd2e54ed0810b101ba" integrity sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg== dependencies: path-parse "^1.0.6" +responselike@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" + integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec= + dependencies: + lowercase-keys "^1.0.0" + restore-cursor@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541" @@ -6820,6 +9989,13 @@ right-align@^0.1.1: dependencies: align-text "^0.1.1" +rimraf@^2.1.4: + version "2.6.3" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" + integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== + dependencies: + glob "^7.1.3" + rimraf@^2.2.8, rimraf@^2.3.2, rimraf@^2.3.4, rimraf@^2.4.3, rimraf@^2.4.4, 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" @@ -6890,7 +10066,7 @@ rollup@^0.51.5: resolved "https://registry.yarnpkg.com/rollup/-/rollup-0.51.8.tgz#58bd0b642885f4770b5f93cc64f14e4233c2236d" integrity sha512-e7FwWxqb4vhdonmwRH06nqC9wR6h1kZojK2D+lN1xjiB8FDtAKgy7o+r8fCXVzQZ1ZCdcVlls3mTq5g6u38Jew== -rsvp@^3.0.14, rsvp@^3.0.16, rsvp@^3.0.17, rsvp@^3.0.18, rsvp@^3.0.21, rsvp@^3.1.0, 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.1.0, rsvp@^3.2.1, rsvp@^3.3.3, rsvp@^3.5.0: version "3.6.2" resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-3.6.2.tgz#2e96491599a96cde1b515d5674a8f7a91452926a" integrity sha512-OfWGQTb9vnwRjwtA2QwpG2ICclHC3pgXZO5xt8H2EfgDquO0qVdSb5T88L4qJVAEugbS56pAuV4XZM58UX8ulw== @@ -6900,6 +10076,11 @@ rsvp@^4.7.0: resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.2.tgz#9d5647108735784eb13418cdddb56f75b919d722" integrity sha512-8CU1Wjxvzt6bt8zln+hCjyieneU9s0LRW+lPRsjyVCY8Vm1kTbK7btBIrCGg6yY9U4undLDm/b1hKEEi1tLypg== +rsvp@^4.8.1, rsvp@^4.8.2, rsvp@^4.8.3, rsvp@^4.8.4: + version "4.8.4" + resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.4.tgz#b50e6b34583f3dd89329a2f23a8a2be072845911" + integrity sha512-6FomvYPfs+Jy9TfXmBpBuMWNH94SgCsZmJKcanySzgNNP6LjWxBvyLTa9KaMfDDM5oxRfrKDB0r/qeRsLwnBfA== + rsvp@~3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-3.2.1.tgz#07cb4a5df25add9e826ebc67dcc9fd89db27d84a" @@ -6941,7 +10122,7 @@ safe-buffer@5.1.1: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" integrity sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg== -safe-buffer@^5.0.1, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: +safe-buffer@5.1.2, safe-buffer@^5.0.1, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== @@ -6958,7 +10139,7 @@ safe-regex@^1.1.0: dependencies: ret "~0.1.10" -safer-buffer@^2.1.0: +"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== @@ -6991,6 +10172,39 @@ sane@^2.2.0, sane@^2.4.1: optionalDependencies: fsevents "^1.1.1" +sane@^2.5.2: + version "2.5.2" + resolved "https://registry.yarnpkg.com/sane/-/sane-2.5.2.tgz#b4dc1861c21b427e929507a3e751e2a2cb8ab3fa" + integrity sha1-tNwYYcIbQn6SlQej51HiosuKs/o= + dependencies: + anymatch "^2.0.0" + capture-exit "^1.2.0" + exec-sh "^0.2.0" + fb-watchman "^2.0.0" + micromatch "^3.1.4" + minimist "^1.1.1" + walker "~1.0.5" + watch "~0.18.0" + optionalDependencies: + fsevents "^1.2.3" + +sane@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/sane/-/sane-3.1.0.tgz#995193b7dc1445ef1fe41ddfca2faf9f111854c6" + integrity sha512-G5GClRRxT1cELXfdAq7UKtUsv8q/ZC5k8lQGmjEm4HcAl3HzBy68iglyNCmw4+0tiXPCBZntslHlRhbnsSws+Q== + dependencies: + anymatch "^2.0.0" + capture-exit "^1.2.0" + exec-sh "^0.2.0" + execa "^1.0.0" + fb-watchman "^2.0.0" + micromatch "^3.1.4" + minimist "^1.1.1" + walker "~1.0.5" + watch "~0.18.0" + optionalDependencies: + fsevents "^1.2.3" + sauce-connect-launcher@^1.1.0: version "1.2.4" resolved "https://registry.yarnpkg.com/sauce-connect-launcher/-/sauce-connect-launcher-1.2.4.tgz#8d38f85242a9fbede1b2303b559f7e20c5609a1c" @@ -7024,6 +10238,11 @@ sax@^1.2.4: resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" integrity sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA== +semver@^5.5.1, semver@^5.6.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" + integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== + send@0.16.2: version "0.16.2" resolved "https://registry.yarnpkg.com/send/-/send-0.16.2.tgz#6ecca1e0f8c156d141597559848df64730a6bbc1" @@ -7122,6 +10341,13 @@ silent-error@^1.0.0, silent-error@^1.0.1: dependencies: debug "^2.2.0" +silent-error@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/silent-error/-/silent-error-1.1.1.tgz#f72af5b0d73682a2ba1778b7e32cd8aa7c2d8662" + integrity sha512-n4iEKyNcg4v6/jpb3c0/iyH2G1nzUNl7Gpqtn/mHIJK9S/q/7MCfoO4rwVOoO59qPFIc0hVHvMbiOJ0NdtxKKw== + dependencies: + debug "^2.2.0" + simple-html-tokenizer@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/simple-html-tokenizer/-/simple-html-tokenizer-0.5.1.tgz#125d486de28ffd5365624c11a71944a2cc2826dc" @@ -7154,6 +10380,13 @@ smart-buffer@^1.0.13: resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-1.1.15.tgz#7f114b5b65fab3e2a35aa775bb12f0d1c649bf16" integrity sha1-fxFLW2X6s+KjWqd1uxLw0cZJvxY= +snake-case@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/snake-case/-/snake-case-2.1.0.tgz#41bdb1b73f30ec66a04d4e2cad1b76387d4d6d9f" + integrity sha1-Qb2xtz8w7GagTU4srRt2OH1NbZ8= + dependencies: + no-case "^2.2.0" + snapdragon-node@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" @@ -7301,11 +10534,26 @@ socks@^1.1.10: ip "^1.1.4" smart-buffer "^1.0.13" -sort-object-keys@^1.1.1: +sort-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" + integrity sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg= + dependencies: + is-plain-obj "^1.0.0" + +sort-object-keys@^1.1.1, sort-object-keys@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/sort-object-keys/-/sort-object-keys-1.1.2.tgz#d3a6c48dc2ac97e6bc94367696e03f6d09d37952" integrity sha1-06bEjcKsl+a8lDZ2luA/bQnTeVI= +sort-package-json@^1.15.0: + version "1.19.0" + resolved "https://registry.yarnpkg.com/sort-package-json/-/sort-package-json-1.19.0.tgz#3e6819147d75680832890523e753b8992166a442" + integrity sha512-SRzbsvOG+g8jTuFYZCvljh+LOsNeCS04bH+MF6qf0Ukva0Eh3Y6Jf7a4GSNEeDHLHM6CWqhZuJo7OLdzycTH1A== + dependencies: + detect-indent "^5.0.0" + sort-object-keys "^1.1.2" + sort-package-json@^1.4.0: version "1.13.0" resolved "https://registry.yarnpkg.com/sort-package-json/-/sort-package-json-1.13.0.tgz#c029eeb99c72918b468b9c2a807b7de48cc0cfcf" @@ -7332,6 +10580,14 @@ source-map-support@^0.4.0, source-map-support@^0.4.15: dependencies: source-map "^0.5.6" +source-map-support@~0.5.9: + version "0.5.10" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.10.tgz#2214080bc9d51832511ee2bab96e3c2f9353120c" + integrity sha512-YfQ3tQFTK/yzlGJuX8pTwa4tifQj4QS2Mj7UegOu8jAz59MqIiMGPXxQhVQiIMNzayuUSF/jEuVnfFF5JqybmQ== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + source-map-url@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.3.0.tgz#7ecaf13b57bcd09da8a40c5d269db33799d4aaf9" @@ -7349,11 +10605,16 @@ source-map@0.4.x, source-map@^0.4.2, source-map@^0.4.4: dependencies: amdefine ">=0.0.4" -source-map@^0.5.6, source-map@^0.5.7, source-map@~0.5.0, source-map@~0.5.1: +source-map@^0.5.0, source-map@^0.5.6, source-map@^0.5.7, source-map@~0.5.0, source-map@~0.5.1: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= +source-map@^0.6.0, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + source-map@~0.1.x: version "0.1.43" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346" @@ -7361,7 +10622,7 @@ source-map@~0.1.x: dependencies: amdefine ">=0.0.4" -sourcemap-validator@^1.0.5: +sourcemap-validator@^1.0.5, sourcemap-validator@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/sourcemap-validator/-/sourcemap-validator-1.1.0.tgz#00454547d1682186e1498a7208e022e8dfa8738f" integrity sha512-Hmdu39KL+EoAAZ69OTk7RXXJdPRRizJvOZOWhCW9jLGfEQflCNPTlSoCXFPdKWFwwf0uzLcGR/fc7EP/PT8vRQ== @@ -7427,6 +10688,11 @@ sprintf-js@~1.0.2: resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= +sri-toolbox@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/sri-toolbox/-/sri-toolbox-0.2.0.tgz#a7fea5c3fde55e675cf1c8c06f3ebb5c2935835e" + integrity sha1-p/6lw/3lXmdc8cjAbz67XCk1g14= + sshpk@^1.7.0: version "1.14.1" resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.14.1.tgz#130f5975eddad963f1d56f92b9ac6c51fa9f83eb" @@ -7449,6 +10715,13 @@ ssri@^5.0.0, ssri@^5.2.4: dependencies: safe-buffer "^5.1.1" +stagehand@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/stagehand/-/stagehand-1.0.0.tgz#79515e2ad3a02c63f8720c7df9b6077ae14276d9" + integrity sha512-zrXl0QixAtSHFyN1iv04xOBgplbT4HgC8T7g+q8ESZbDNi5uZbMtxLukFVXPJ5Nl7zCYvYcrT3Mj24WYCH93hw== + dependencies: + debug "^4.1.0" + static-extend@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" @@ -7485,6 +10758,11 @@ stream-shift@^1.0.0: resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" integrity sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI= +strict-uri-encode@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" + integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= + string-template@~0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/string-template/-/string-template-0.2.1.tgz#42932e598a352d01fc22ec3367d9d84eec6c9add" @@ -7528,6 +10806,14 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" +stringify-object-es5@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/stringify-object-es5/-/stringify-object-es5-2.5.0.tgz#057c3c9a90a127339bb9d1704a290bb7bd0a1ec5" + integrity sha1-BXw8mpChJzObudFwSikLt70KHsU= + dependencies: + is-plain-obj "^1.0.0" + is-regexp "^1.0.0" + stringstream@~0.0.5: version "0.0.5" resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" @@ -7554,6 +10840,11 @@ strip-bom@^2.0.0: dependencies: is-utf8 "^0.2.0" +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= + strip-eof@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" @@ -7583,19 +10874,19 @@ sum-up@^1.0.1: dependencies: chalk "^1.0.0" -supports-color@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" - integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= - -supports-color@^5.3.0: +supports-color@5.4.0, supports-color@^5.3.0: version "5.4.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.4.0.tgz#1c6b337402c2137605efe19f10fec390f6faab54" integrity sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w== dependencies: has-flag "^3.0.0" -symlink-or-copy@^1.0.0, symlink-or-copy@^1.0.1, symlink-or-copy@^1.1.8: +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= + +symlink-or-copy@^1.0.0, 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" integrity sha512-W31+GLiBmU/ZR02Ii0mVZICuNEN9daZ63xZMPDsYgPgNjMtg+atqLEGI7PPI936jYSQZxoLb/63xos8Adrx4Eg== @@ -7622,6 +10913,15 @@ tap-parser@^5.1.0: optionalDependencies: readable-stream "^2" +tap-parser@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/tap-parser/-/tap-parser-7.0.0.tgz#54db35302fda2c2ccc21954ad3be22b2cba42721" + integrity sha512-05G8/LrzqOOFvZhhAk32wsGiPZ1lfUrl+iV7+OkKgfofZxiceZWMHkKmow71YsyVQ8IvGBP2EjcIjE5gL4l5lA== + dependencies: + events-to-array "^1.0.1" + js-yaml "^3.2.7" + minipass "^2.2.0" + tar-stream@^1.5.0: version "1.6.0" resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.6.0.tgz#a50efaa7b17760b82c27b3cae4a301a8254a5715" @@ -7656,6 +10956,25 @@ temp@0.8.3: os-tmpdir "^1.0.0" rimraf "~2.2.6" +terser@^3.7.5: + version "3.16.1" + resolved "https://registry.yarnpkg.com/terser/-/terser-3.16.1.tgz#5b0dd4fa1ffd0b0b43c2493b2c364fd179160493" + integrity sha512-JDJjgleBROeek2iBcSNzOHLKsB/MdDf+E/BOAJ0Tk9r7p9/fVobfv7LMJ/g/k3v9SXdmjZnIlFd5nfn/Rt0Xow== + dependencies: + commander "~2.17.1" + source-map "~0.6.1" + source-map-support "~0.5.9" + +testdouble@^3.2.6: + version "3.10.0" + resolved "https://registry.yarnpkg.com/testdouble/-/testdouble-3.10.0.tgz#5bb0149da39d3d5afc085dbea9bc5e45d0c1470f" + integrity sha512-rg8OUI+1TVoDPytrGvkN8FPuhtLorkxBdc1MAcDTEeo8C8IZYRUIMus9QNo5W1HbHAlJu8JXHDsYi2IJPTOI0A== + dependencies: + lodash "^4.17.11" + quibble "^0.5.5" + stringify-object-es5 "^2.5.0" + theredoc "^1.0.0" + testem@^1.16.0: version "1.18.4" resolved "https://registry.yarnpkg.com/testem/-/testem-1.18.4.tgz#e45fed922bec2f54a616c43f11922598ac97eb41" @@ -7721,6 +11040,40 @@ testem@^2.0.0: tap-parser "^5.1.0" xmldom "^0.1.19" +testem@^2.9.2: + version "2.14.0" + resolved "https://registry.yarnpkg.com/testem/-/testem-2.14.0.tgz#418a9a15843f68381659c6a486abb4ea48d06c29" + integrity sha512-tldpNPCzXfibmxOoTMGOfr8ztUiHf9292zSXCu7SitBx9dCK83k7vEoa77qJBS9t3RGCQCRF+GNMUuiFw//Mbw== + dependencies: + backbone "^1.1.2" + bluebird "^3.4.6" + charm "^1.0.0" + commander "^2.6.0" + consolidate "^0.15.1" + execa "^1.0.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 "^3.0.0" + node-notifier "^5.0.1" + npmlog "^4.0.0" + printf "^0.5.1" + rimraf "^2.4.4" + socket.io "^2.1.0" + spawn-args "^0.2.0" + styled_string "0.0.1" + tap-parser "^7.0.0" + tmp "0.0.33" + 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" @@ -7731,6 +11084,11 @@ text-table@~0.2.0: resolved "https://registry.yarnpkg.com/textextensions/-/textextensions-2.2.0.tgz#38ac676151285b658654581987a0ce1a4490d286" integrity sha512-j5EMxnryTvKxwH2Cq+Pb43tsf6sdEgw6Pdwxk83mPaq0ToeFJt6WE4J3s5BqY7vmjlLgkgXvhtXUxo80FyBhCA== +theredoc@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/theredoc/-/theredoc-1.0.0.tgz#bcace376af6feb1873efbdd0f91ed026570ff062" + integrity sha512-KU3SA3TjRRM932jpNfD3u4Ec3bSvedyo5ITPI7zgWYnKep7BwQQaxlhI9qbO+lKJoRnoAbEVfMcAHRuKVYikDA== + through2@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be" @@ -7744,7 +11102,17 @@ through@^2.3.6, through@^2.3.8: resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= -tiny-lr@^1.0.3: +through@~2.2.0, through@~2.2.7: + version "2.2.7" + resolved "https://registry.yarnpkg.com/through/-/through-2.2.7.tgz#6e8e21200191d4eb6a99f6f010df46aa1c6eb2bd" + integrity sha1-bo4hIAGR1OtqmfbwEN9Gqhxusr0= + +timed-out@^4.0.0, timed-out@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" + integrity sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8= + +tiny-lr@^1.0.3, tiny-lr@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/tiny-lr/-/tiny-lr-1.1.1.tgz#9fa547412f238fedb068ee295af8b682c98b2aab" integrity sha512-44yhA3tsaRoMOjQQ+5v5mVdqef+kH6Qze9jTpqtVufgYjYt08zyZAwNwwVBj3i1rJMnR52IxOW0LK0vBzgAkuA== @@ -7756,6 +11124,14 @@ tiny-lr@^1.0.3: object-assign "^4.1.0" qs "^6.4.0" +tmp-sync@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/tmp-sync/-/tmp-sync-1.1.2.tgz#ba04d94a8ed9c0f35a54739970792f997a6cc1c8" + integrity sha1-ugTZSo7ZwPNaVHOZcHkvmXpswcg= + dependencies: + fs-sync "^1.0.4" + osenv "^0.1.0" + tmp@0.0.28: version "0.0.28" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.28.tgz#172735b7f614ea7af39664fa84cf0de4e515d120" @@ -7770,6 +11146,13 @@ tmp@0.0.31: dependencies: os-tmpdir "~1.0.1" +tmp@0.0.33, tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + tmp@^0.0.29: version "0.0.29" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.29.tgz#f25125ff0dd9da3ccb0c2dd371ee1288bb9128c0" @@ -7777,13 +11160,6 @@ tmp@^0.0.29: dependencies: os-tmpdir "~1.0.1" -tmp@^0.0.33: - version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" - integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== - dependencies: - os-tmpdir "~1.0.2" - tmpl@1.0.x: version "1.0.4" resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" @@ -7804,6 +11180,11 @@ to-fast-properties@^1.0.3: resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" integrity sha1-uDVx+k2MJbguIxsG46MFXeTKGkc= +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= + to-object-path@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" @@ -7829,6 +11210,11 @@ to-regex@^3.0.1, to-regex@^3.0.2: regex-not "^1.0.2" safe-regex "^1.1.0" +to-utf8@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/to-utf8/-/to-utf8-0.0.1.tgz#d17aea72ff2fba39b9e43601be7b3ff72e089852" + integrity sha1-0Xrqcv8vujm55DYBvns/9y4ImFI= + tough-cookie@~2.3.3: version "2.3.4" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.4.tgz#ec60cee38ac675063ffc97a5c18970578ee83655" @@ -7924,6 +11310,21 @@ type-check@~0.3.2: dependencies: prelude-ls "~1.1.2" +type-detect@0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-0.1.1.tgz#0ba5ec2a885640e470ea4e8505971900dac58822" + integrity sha1-C6XsKohWQORw6k6FBZcZANrFiCI= + +type-detect@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-1.0.0.tgz#762217cc06db258ec48908a1298e8b95121e8ea2" + integrity sha1-diIXzAbbJY7EiQihKY6LlRIejqI= + +type-detect@^4.0.0, type-detect@^4.0.5: + version "4.0.8" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + type-is@~1.6.15, type-is@~1.6.16: version "1.6.16" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.16.tgz#f89ce341541c672b25ee7ae3c73dee3b2be50194" @@ -7937,6 +11338,11 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= +typescript@^2.9.2: + version "2.9.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.9.2.tgz#1cbf61d05d6b96269244eb6a3bce4bd914e0f00c" + integrity sha512-Gr4p6nFNaoufRIY4NMdpQRNmgxVIGMs4Fcu/ujdYk3nAZqk7supzBE9idmvfZIlH/Cuj//dvi+019qEue9lV0w== + typescript@~3.2.1: version "3.2.4" resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.2.4.tgz#c585cb952912263d915b462726ce244ba510ef3d" @@ -7990,6 +11396,29 @@ underscore@>=1.8.3: resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.9.0.tgz#31dbb314cfcc88f169cd3692d9149d81a00a73e4" integrity sha512-4IV1DSSxC1QK48j9ONFK1MoIAKKkbE8i7u55w2R6IqBqbT7A/iG7aZBCR2Bi8piF0Uz+i/MG1aeqLwl/5vqF+A== +unicode-canonical-property-names-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" + integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== + +unicode-match-property-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" + integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== + dependencies: + unicode-canonical-property-names-ecmascript "^1.0.4" + unicode-property-aliases-ecmascript "^1.0.4" + +unicode-match-property-value-ecmascript@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.0.2.tgz#9f1dc76926d6ccf452310564fd834ace059663d4" + integrity sha512-Rx7yODZC1L/T8XKo/2kNzVAQaRE88AaMvI1EF/Xnj3GW2wzN6fop9DDWuFAKUVFH7vozkz26DzP0qyWLKLIVPQ== + +unicode-property-aliases-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.4.tgz#5a533f31b4317ea76f17d807fa0d116546111dd0" + integrity sha512-2WSLa6OdYd2ng8oqiGIWnJqyFArvhn+5vgx5GTxMbUYjCYKUcuKS62YLFF0R/BDGlB1yzXjQOLtPAfHsgirEpg== + union-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" @@ -8046,11 +11475,35 @@ untildify@^2.1.0: dependencies: os-homedir "^1.0.0" +unzip-response@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97" + integrity sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c= + urix@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= +url-parse-lax@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" + integrity sha1-evjzA2Rem9eaJy56FKxovAYJ2nM= + dependencies: + prepend-http "^1.0.1" + +url-parse-lax@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" + integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww= + dependencies: + prepend-http "^2.0.0" + +url-to-options@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/url-to-options/-/url-to-options-1.0.1.tgz#1505a03a289a48cbd7a434efbaeec5055f5633a9" + integrity sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k= + use@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/use/-/use-3.1.0.tgz#14716bf03fdfefd03040aef58d8b4b85f3a7c544" @@ -8084,6 +11537,14 @@ util-deprecate@^1.0.2, util-deprecate@~1.0.1: resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= +util.promisify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" + integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== + dependencies: + define-properties "^1.1.2" + object.getownpropertydescriptors "^2.0.3" + utils-merge@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" @@ -8094,6 +11555,11 @@ uuid@^3.0.0, uuid@^3.1.0: resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.2.1.tgz#12c528bb9d58d0b9265d9a2f6f0fe8be17ff1f14" integrity sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA== +uuid@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" + integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== + validate-npm-package-license@^3.0.1: version "3.0.3" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz#81643bcbef1bdfecd4623793dc4648948ba98338" @@ -8136,7 +11602,7 @@ walk-sync@0.3.2, walk-sync@^0.3.0, walk-sync@^0.3.1, walk-sync@^0.3.2: ensure-posix-path "^1.0.0" matcher-collection "^1.0.0" -walk-sync@^0.2.7: +walk-sync@^0.2.5, walk-sync@^0.2.7: version "0.2.7" resolved "https://registry.yarnpkg.com/walk-sync/-/walk-sync-0.2.7.tgz#b49be4ee6867657aeb736978b56a29d10fa39969" integrity sha1-tJvk7mhnZXrrc2l4tWop0Q+jmWk= @@ -8144,6 +11610,23 @@ walk-sync@^0.2.7: ensure-posix-path "^1.0.0" matcher-collection "^1.0.0" +walk-sync@^0.3.3: + version "0.3.4" + resolved "https://registry.yarnpkg.com/walk-sync/-/walk-sync-0.3.4.tgz#cf78486cc567d3a96b5b2237c6108017a5ffb9a4" + integrity sha512-ttGcuHA/OBnN2pcM6johpYlEms7XpO5/fyKIr48541xXedan4roO8cS1Q2S/zbbjGH/BarYDAMeS2Mi9HE5Tig== + dependencies: + ensure-posix-path "^1.0.0" + matcher-collection "^1.0.0" + +walk-sync@^1.0.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/walk-sync/-/walk-sync-1.1.3.tgz#3b7b6468f068b5eba2278c931c57db3d39092969" + integrity sha512-23ivbET0Q/389y3EHpiIgxx881AS2mwdXA7iBqUDNSymoTPYb2jWlF3gkuuAP1iLgdNXmiHw/kZ/wZwrELU6Ag== + dependencies: + "@types/minimatch" "^3.0.3" + ensure-posix-path "^1.1.0" + matcher-collection "^1.1.1" + walkdir@^0.0.11: version "0.0.11" resolved "https://registry.yarnpkg.com/walkdir/-/walkdir-0.0.11.tgz#a16d025eb931bd03b52f308caed0f40fcebe9532" @@ -8156,6 +11639,17 @@ walker@~1.0.5: dependencies: makeerror "1.0.x" +watch-detector@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/watch-detector/-/watch-detector-0.1.0.tgz#e37b410d149e2a8bf263a4f8b71e2f667633dbf8" + integrity sha512-vfzMMfpjQc88xjETwl2HuE6PjEuxCBeyC4bQmqrHrofdfYWi/4mEJklYbNgSzpqM9PxubsiPIrE5SZ1FDyiQ2w== + dependencies: + heimdalljs-logger "^0.1.9" + quick-temp "^0.1.8" + rsvp "^4.7.0" + semver "^5.4.1" + silent-error "^1.1.0" + watch@~0.10.0: version "0.10.0" resolved "https://registry.yarnpkg.com/watch/-/watch-0.10.0.tgz#77798b2da0f9910d595f1ace5b0c2258521f21dc" @@ -8208,6 +11702,11 @@ which-module@^1.0.0: resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" integrity sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8= +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= + which@^1.2.12, which@^1.2.14, which@^1.2.9, which@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a" @@ -8249,6 +11748,13 @@ workerpool@^2.3.0: dependencies: object-assign "4.1.1" +workerpool@^2.3.1: + version "2.3.3" + resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-2.3.3.tgz#49a70089bd55e890d68cc836a19419451d7c81d7" + integrity sha512-L1ovlYHp6UObYqElXXpbd214GgbEKDED0d3sj7pRdFXjNkb2+un/AUcCkceHizO0IVI6SOGGncrcjozruCkRgA== + dependencies: + object-assign "4.1.1" + wrap-ansi@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" @@ -8330,7 +11836,7 @@ y18n@^3.2.1: resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" integrity sha1-bRX7qITAhnnA136I53WegR4H+kE= -y18n@^4.0.0: +"y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== @@ -8353,6 +11859,22 @@ yam@0.0.22: fs-extra "^0.30.0" lodash.merge "^4.4.0" +yam@^0.0.24: + version "0.0.24" + resolved "https://registry.yarnpkg.com/yam/-/yam-0.0.24.tgz#11e9630444735f66a561d29221407de6d037cd95" + integrity sha512-llPF60oFLV8EQimNPR6+KorSaj59L32C4c1db4cr72GaWVWapnhTS2VZeK2K2xLyEOveWtRcNa+dLJBW7EfhYQ== + dependencies: + fs-extra "^4.0.2" + lodash.merge "^4.6.0" + +yargs-parser@^11.1.1: + version "11.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" + integrity sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + yargs-parser@^4.2.0: version "4.2.1" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-4.2.1.tgz#29cceac0dc4f03c6c87b4a9f217dd18c9f74871c" @@ -8360,6 +11882,24 @@ yargs-parser@^4.2.0: dependencies: camelcase "^3.0.0" +yargs@^12.0.5: + version "12.0.5" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" + integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw== + dependencies: + cliui "^4.0.0" + decamelize "^1.2.0" + find-up "^3.0.0" + get-caller-file "^1.0.1" + os-locale "^3.0.0" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^2.0.0" + which-module "^2.0.0" + y18n "^3.2.1 || ^4.0.0" + yargs-parser "^11.1.1" + yargs@^6.6.0: version "6.6.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208"