```
-## Native Class
-
```js
-// app/modifiers/scroll-top.js
-import Modifier from 'ember-oo-modifiers';
+// app/components/scroll-container.js
-export default class ScrollTopModifier extends Modifier {
- didReceiveArguments([scrollPosition]) {
- this.element.scrollTop = scrollPosition;
- }
-}
-```
+import Component from '@glimmer/component';
+import { tracked } from '@glimmer/tracking';
+import { action } from '@ember/object';
-Then, use it in your template:
+export default class ScrollContainerComponent extends Component {
+ @tracked scrollPosition = 0;
-```hbs
-
+ @action scrollToTop() {
+ this.scrollPosition = 0;
+ }
+}
```
-### `modifier` function
+```handlebars
+{{!-- app/templates/application.hbs --}}
-The native class example can be implemented using `modifier` function, which calls passed function argument on `didReceiveArguments` with these arguments
+
```
## Example with Cleanup
-If the functionality you add in the modifier needs to be torn down when the element is removed, you can return a function for the teardown method.
+If the functionality you add in the modifier needs to be torn down when the modifier is removed, you can use the `willRemove` hook.
-For example, if you wanted to have your elements dance randomly on the page using `setInterval`, but you wanted to make sure that was canceled when the element was removed, you could do:
-
-### Ember Object
+For example, if you want to have your elements dance randomly on the page using `setInterval`, but you wanted to make sure that was canceled when the modifier was removed, you could do this:
```js
// app/modifiers/move-randomly.js
-import { Modifier } from 'ember-oo-modifiers';
+
+import { action } from '@ember/object';
+import Modifier from 'ember-class-based-modifier';
const { random, round } = Math;
-const INTERVAL_DELAY = 1000;
+const DEFAULT_DELAY = 1000;
+
+export default class MoveRandomlyModifier extends Modifier {
+ setIntervalId = null;
+
+ get delay() {
+ // get the named argument "delay" passed to the modifier
+ //
+ // {{move-randomly delay=@someNumber}}
+ // ~~~~~~~~~~~
+ //
+ return this.args.named.delay || DEFAULT_DELAY;
+ }
-const MoveRandomlyModifier = Modifier.extend({
- updateTransform() {
+ @action moveElement() {
let top = round(random() * 500);
let left = round(random() * 500);
this.element.style.transform = `translate(${left}px, ${top}px)`;
- },
+ }
- didInsertElement() {
- this.timer = setInterval(() => this.updateTransform(), INTERVAL_DELAY);
- },
+ didReceiveArguments() {
+ if (this.setIntervalId !== null) {
+ clearInterval(this.setIntervalId);
+ }
- willDestroyElement() {
- clearInterval(this.timer);
- this.timer = null;
+ this.setIntervalId = setInterval(this.moveElement, this.delay);
}
-});
-export default MoveRandomlyModifier;
+ willRemove() {
+ clearInterval(this.setIntervalId);
+ this.setIntervalId = null;
+ }
+}
```
+Usage:
+
```hbs
-
- Try to catch me!
+
+ Catch me if you can!
```
-### Native Class
+## Example with Service Injection
+
+You can also use services into your modifier, just like any other class in Ember.
+
+For example, suppose you wanted to track click events with `ember-metrics`:
```js
-// app/modifiers/move-randomly.js
-import Modifier from 'ember-oo-modifiers';
+// app/modifiers/track-click.js
-const { random, round } = Math;
-const INTERVAL_DELAY = 1000;
+import { action } from '@ember/object';
+import { inject as service } from '@ember/service';
+import Modifier from 'ember-class-based-modifier';
-export default class MoveRandomlyModifier extends Modifier {
- updateTransform() {
- let top = round(random() * 500);
- let left = round(random() * 500);
- this.element.style.transform = `translate(${left}px, ${top}px)`;
+export default class TrackClickModifier extends Modifier {
+ @service metrics;
+
+ get eventName() {
+ // get the first positional argument passed to the modifier
+ //
+ // {{track-click "like-button-click" page="some page" title="some title"}}
+ // ~~~~~~~~~~~~~~~~~~~
+ //
+ return this.args.positional[0];
}
- didInsertElement() {
- this.timer = setInterval(() => this.updateTransform(), INTERVAL_DELAY);
+ get options() {
+ // get the named arguments passed to the modifier
+ //
+ // {{track-click "like-button-click" page="some page" title="some title"}}
+ // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ //
+ return this.args.named;
}
- willDestroyElement() {
- clearInterval(this.timer);
- this.timer = null;
+ @action onClick() {
+ this.metrics.trackEvent(this.eventName, this.options);
+ }
+
+ didInstall() {
+ this.element.addEventListener('click', this.onClick, true);
+ }
+
+ willRemove() {
+ this.element.removeEventListener('click', this.onClick, true);
}
}
```
+Usage:
+
```hbs
-
- Try to catch me!
-
+
+ Click Me!
+
```
-## Example with Service Injection
+## Classic API
-You may also want to inject a service into your modifier.
+If you would like to use `Ember.Object` based APIs, such as `this.get`, `this.set`, `this.setProperties`, etc, you can import the "classic" base class instead, located at the import path `ember-class-based-modifier/classic`.
-You can do that by supplying an injection object before the the modifier function. For example, suppose you wanted to track click events with `ember-metrics`:
+The examples above can be rewritten using the classic API:
-### Ember Object
+```js
+// app/modifiers/scroll-position.js
+
+import { computed } from '@ember/object';
+import Modifier from 'ember-class-based-modifier/classic';
+
+export default Modifier.extend({
+ scrollPosition: computed('args.positional.[]', function() {
+ // get the first positional argument passed to the modifier
+ //
+ // {{scoll-position @someNumber}}
+ // ~~~~~~~~~~~
+ //
+ return this.args.positional[0];
+ }),
+
+ didReceiveArguments() {
+ this.element.scrollTop = this.get('scrollPosition');
+ }
+});
+```
```js
-// app/modifiers/track-click.js
-import { inject as service } from '@ember/service';
-import { Modifier } from 'ember-oo-modifiers';
+// app/modifiers/move-randomly.js
-const TrackClickModifier = Modifier.extend({
- metrics: service(),
+import { action, computed } from '@ember/object';
+import Modifier from 'ember-class-based-modifier/classic';
- didInsertElement([eventName], options) {
- this.trackingCallback = () => this.metrics.trackEvent(eventName, options);
- this.element.addEventListener('click', this.trackingCallback, true);
+const { random, round } = Math;
+const DEFAULT_DELAY = 1000;
+
+export default Modifier.extend({
+ init() {
+ this._super(...arguments);
+ this.set('setIntervalId', null);
},
- willDestroyElement() {
- this.element.removeEventListener('click', this.trackingCallback, true);
- this.trackingCallback = null;
- }
-});
+ delay: computed('args.named.delay', function() {
+ // get the named argument "delay" passed to the modifier
+ //
+ // {{move-randomly delay=@someNumber}}
+ // ~~~~~~~~~~~
+ //
+ return this.args.named.delay || DEFAULT_DELAY;
+ }),
-export default TrackClickModifier;
-```
+ moveElement: action(function() {
+ let top = round(random() * 500);
+ let left = round(random() * 500);
+ this.element.style.transform = `translate(${left}px, ${top}px)`;
+ }),
-Then, you could use this in your template:
+ didReceiveArguments() {
+ let setIntervalId = this.get('setIntervalId');
-```hbs
-
- Click Me!
-
-```
+ if (setIntervalId !== null) {
+ clearInterval(setIntervalId);
+ }
+
+ setIntervalId = setInterval(this.moveElement, this.get('delay'));
-### Native Class
+ this.set('setIntervalId', setIntervalId);
+ },
+
+ willRemove() {
+ clearInterval(this.setIntervalId);
+ this.setIntervalId = null;
+ }
+});
+```
```js
// app/modifiers/track-click.js
-import { inject as service } from '@ember-decorators/service';
-import Modifier from 'ember-oo-modifiers';
-export default class TrackClickModifier extends Modifier {
- @service metrics
+import { action, computed } from '@ember/object';
+import { inject as service } from '@ember/service';
+import Modifier from 'ember-class-based-modifier/classic';
- didInsertElement([eventName], options) {
- this.trackingCallback = () => this.metrics.trackEvent(eventName, options);
- this.element.addEventListener('click', this.trackingCallback, true);
- }
+export default Modifier.extend({
+ metrics: service(),
- willDestroyElement() {
- this.element.removeEventListener('click', this.trackingCallback, true);
- this.trackingCallback = null;
+ eventName: computed('args.positional.[]', function() {
+ // get the first positional argument passed to the modifier
+ //
+ // {{track-click "like-button-click" page="some page" title="some title"}}
+ // ~~~~~~~~~~~~~~~~~~~
+ //
+ return this.args.positional[0];
+ }),
+
+ options: computed('args.named', function() {
+ // get the named arguments passed to the modifier
+ //
+ // {{track-click "like-button-click" page="some page" title="some title"}}
+ // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ //
+ return this.args.named;
+ }),
+
+ onClick: action(function() {
+ this.metrics.trackEvent(this.get('eventName'), this.get('options'));
+ }),
+
+ didInstall() {
+ this.element.addEventListener('click', this.onClick, true);
}
-}
-```
-
-Then, you could use this in your template:
-```hbs
-
- Click Me!
-
+ willRemove() {
+ this.element.removeEventListener('click', this.onClick, true);
+ }
+});
```
-*NOTE*: Because we are not observing the properties in the service in any way, if we are _reading_ a property on a service, the modifier will not recompute if that value changes. If that's the behavior you need, you probably want to pass that value into the modifier as an argument, rather than injecting it.
+Whenever possible, it is recommended that you use the default "modern" API instead of the classic API.
## API
element
-the DOM element the modifier is attached to.
-didInsertElement(positional: Array, named: Object)
-Called when the modifier is installed on the DOM element.
-didReceiveArguments(positional: Array, named: Object)
+The DOM element the modifier is attached to.
+args
: { positional: Array, named: Object }
+The arguments passed to the modifier. args.positional
is an array of positional arguments, and args.named
is an object containing the named arguments.
+isDestroying
+true
if the modifier is in the process of being destroyed, or has already been destroyed.
+isDestroyed
+true
if the modifier has already been destroyed.
+constructor(owner, args)
(or init()
in classic API)
+Constructor for the modifier. You must call super(...arguments)
(or this._super(...arguments)
in classic API) before performing other initialization. The element
is not yet available at this point (i.e. its value is null
during construction).
+didReceiveArguments()
Called when the modifier is installed and anytime the arguments are updated.
-didUpdateArguments(positional: Array, named: Object)
-Called anytime the arguments are updated but not on the initial install.
-willDestroyElement(positional: Array, named: Object)
-Called when the modifier is about to be destroyed; use for teardown code.
+didUpdateArguments()
+Called anytime the arguments are updated but not on the initial install. Called before didReceiveArguments
.
+didInstall()
+Called when the modifier is installed on the DOM element. Called after didReceiveArguments
.
+willRemove()
+Called when the DOM element is about to be destroyed; use for removing event listeners on the element and other similar clean-up tasks.
+willDestroy()
+Called when the modifier itself is about to be destroyed; use for teardown code. Called after willRemove
. The element
is no longer available at this point (i.e. its value is null
during teardown).
-#### Ember Object Import
-
-```js
-import { Modifier } from 'ember-oo-modifiers';
-
-const MyModifier = Modifier.extend({
-});
-
-export default MyModifier;
-```
-
-#### Native Class Import
-
-```js
-import Modifier from 'ember-oo-modifiers';
-
-export default class MyModifier extends Modifier {
-}
-```
+## API differences from [ember-oo-modifiers](https://github.com/sukima/ember-class-based-modifier/tree/maintenance/ember-oo-modifiers)
+
+* Renamed package to `ember-class-based-modifier`.
+* No `Modifier.modifier()` function.
+* Classic API is located at `ember-class-based-modifier/classic`.
+* Arguments, both positional and named, are available on `this.args`.
+* Named arguments do not become properties on the modifier instance.
+* Arguments are not passed to life-cycle hooks.
+* Renamed `didInsertElement` to `didInstall` and `willDestroyElement` to `willRemove`. This is to emphasize that when the modifier is installed or removed, the underlying element may not be freshly inserted or about to go away. Therefore, it is important to perform clean-up work in the `willRemove` to reverse any modifications you made to the element.
+* Changed life-cycle hook order: `didReceiveArguments` fires before `didInstall`, and `didUpdateArguments` fires before `didReceiveArguments`, mirroring the classic component life-cycle hooks ordering.
+* Added `willDestroy`, `isDestroying` and `isDestroyed` with the same semantics as Ember objects and Glimmer components.
Contributing
------------------------------------------------------------------------------
diff --git a/addon/-private/create-manager.js b/addon/-private/create-manager.js
deleted file mode 100644
index 06a855e..0000000
--- a/addon/-private/create-manager.js
+++ /dev/null
@@ -1,11 +0,0 @@
-import ModifierManager from './modifier-manager';
-
-const MANAGERS = new WeakMap();
-
-export default function createManager(owner) {
- let manager = MANAGERS.get(owner);
- if (manager === undefined) {
- manager = new ModifierManager(owner);
- }
- return manager;
-}
diff --git a/addon/-private/modifier-classic.js b/addon/-private/modifier-classic.js
index fa0513d..0a35c3d 100644
--- a/addon/-private/modifier-classic.js
+++ b/addon/-private/modifier-classic.js
@@ -1,23 +1,21 @@
import EmberObject from '@ember/object';
-import createManager from './create-manager';
-import { deprecate } from '@ember/application/deprecations';
import { setModifierManager } from '@ember/modifier';
+import Manager from './modifier-manager';
-const Modifier = EmberObject.extend({
- element: null,
- didInsertElement() {},
- didRecieveArguments() {},
- didUpdateArguments() {},
- willDestroyElement() {}
-});
+const ClassBasedModifier = EmberObject.extend({
+ args: null,
-Modifier.reopenClass({
- modifier(Klass) {
- deprecate("Modifier.modifier is deprecated. Export the class directly. See https://github.com/sukima/ember-oo-modifiers/pull/8", false, { id: 'modifier-call', until: "1.0.0" });
- return Klass;
- }
+ init() {
+ this._super(...arguments);
+ this.element = null;
+ },
+
+ didReceiveArguments() {},
+ didUpdateArguments() {},
+ didInstall() {},
+ willRemove() {}
});
-setModifierManager(createManager, Modifier);
+setModifierManager(() => Manager, ClassBasedModifier);
-export default Modifier;
+export default ClassBasedModifier;
diff --git a/addon/-private/modifier-manager.js b/addon/-private/modifier-manager.js
index 900043c..f8240a0 100644
--- a/addon/-private/modifier-manager.js
+++ b/addon/-private/modifier-manager.js
@@ -1,44 +1,37 @@
import { capabilities } from '@ember/modifier';
+import { set } from '@ember/object';
+import { destroy, isNative } from './modifier-native'
-function triggerLifecycleHook(instance, hookName, args) {
- // Checking for undefined as a style choice came from
- // https://emberjs.github.io/rfcs/0373-Element-Modifier-Managers.html
- if (instance[hookName] !== undefined) {
- return instance[hookName](args.positional, args.named);
- }
-}
-
-export default class ModifierManager {
+class ClassBasedModifierManager {
capabilities = capabilities('3.13');
- constructor(owner) {
- this.owner = owner;
- }
-
- createModifier(Klass, args) {
- let isEmberObject = Klass.class.create !== undefined;
-
- if (isEmberObject) {
- return Klass.create(args.named);
- } else {
- let Constructor = Klass.class;
- return new Constructor(args.named, this.owner);
- }
+ createModifier(factory, args) {
+ return factory.create({ args });
}
- installModifier(instance, element, args) {
+ installModifier(instance, element) {
instance.element = element;
- triggerLifecycleHook(instance, 'didInsertElement', args);
- triggerLifecycleHook(instance, 'didReceiveArguments', args);
+ instance.didReceiveArguments();
+ instance.didInstall();
}
updateModifier(instance, args) {
- triggerLifecycleHook(instance, 'didReceiveArguments', args);
- triggerLifecycleHook(instance, 'didUpdateArguments', args);
+ // TODO: this should be an args proxy
+ set(instance, 'args', args);
+ instance.didUpdateArguments();
+ instance.didReceiveArguments();
}
- destroyModifier(instance, args) {
- triggerLifecycleHook(instance, 'willDestroyElement', args);
+ destroyModifier(instance) {
+ instance.willRemove();
instance.element = null;
+
+ if (isNative(instance)) {
+ destroy(instance);
+ } else {
+ instance.destroy();
+ }
}
}
+
+export default new ClassBasedModifierManager();
diff --git a/addon/-private/modifier-native.js b/addon/-private/modifier-native.js
index 0a40f59..8c63680 100644
--- a/addon/-private/modifier-native.js
+++ b/addon/-private/modifier-native.js
@@ -1,40 +1,72 @@
-import createManager from './create-manager';
-import { setOwner } from '@ember/application';
-import { setProperties } from '@ember/object';
-import { deprecate } from '@ember/application/deprecations';
+import Ember from 'ember';
+import { getOwner, setOwner } from '@ember/application';
import { setModifierManager } from '@ember/modifier';
-import { assert } from '@ember/debug';
+import { schedule } from '@ember/runloop';
+import Manager from './modifier-manager';
-class Modifier {
- constructor(attrs = {}, _owner) {
- setOwner(this, _owner);
- setProperties(this, attrs);
+const IS_NATIVE = Symbol('native');
+const DESTROYING = Symbol('destroying');
+const DESTROYED = Symbol('destroyed');
+
+export default class ClassBasedModifier {
+ static create(options) {
+ let owner = getOwner(options);
+ let { args } = options;
+ return new this(owner, args);
+ }
+
+ [IS_NATIVE] = true;
+ [DESTROYING] = false;
+ [DESTROYED] = false;
+
+ constructor(owner, args) {
+ setOwner(this, owner);
+ this.element = null;
+ this.args = args;
}
- didInsertElement() {}
- didRecieveArguments() {}
+ didReceiveArguments() {}
didUpdateArguments() {}
- willDestroyElement() {}
+ didInstall() {}
+ willRemove() {}
+ willDestroy() {}
- static modifier(Klass) {
- deprecate("Modifier.modifier is deprecated. Export the class directly. See https://github.com/sukima/ember-oo-modifiers/pull/8", false, { id: 'modifier-call', until: "1.0.0" });
- return Klass;
+ get isDestroying() {
+ return this[DESTROYING];
+ }
+
+ get isDestroyed() {
+ return this[DESTROYED];
}
}
-setModifierManager(createManager, Modifier);
+setModifierManager(() => Manager, ClassBasedModifier);
-export function modifier(modifierFn) {
- assert(
- 'You must pass a function as the first argument to the `modifier` function',
- modifierFn !== undefined && typeof modifierFn === 'function'
- );
+export function isNative(modifier) {
+ return modifier[IS_NATIVE] === true;
+}
- return class extends Modifier {
- didReceiveArguments(positional, named) {
- modifierFn(this.element, positional, named);
- }
+export function destroy(modifier) {
+ if (modifier[DESTROYING]) {
+ return;
}
+
+ let meta = Ember.meta(modifier);
+
+ meta.setSourceDestroying();
+ modifier[DESTROYING] = true;
+
+ schedule('actions', modifier, modifier.willDestroy);
+ schedule('destroy', undefined, scheduleDestroy, modifier, meta);
}
-export default Modifier;
+function scheduleDestroy(modifier, meta) {
+ if (modifier[DESTROYED]) {
+ return;
+ }
+
+ Ember.destroy(modifier);
+
+ meta.setSourceDestroyed()
+ modifier[DESTROYED] = true;
+}
diff --git a/addon/classic.js b/addon/classic.js
new file mode 100644
index 0000000..4d66610
--- /dev/null
+++ b/addon/classic.js
@@ -0,0 +1 @@
+export { default } from './-private/modifier-classic';
diff --git a/addon/index.js b/addon/index.js
index 09846ec..92d1377 100644
--- a/addon/index.js
+++ b/addon/index.js
@@ -1,5 +1 @@
-import ModifierNative, { modifier } from './-private/modifier-native';
-import ModifierClassic from './-private/modifier-classic';
-
-export default ModifierNative;
-export { modifier, ModifierClassic as Modifier };
+export { default } from './-private/modifier-native';
diff --git a/index.js b/index.js
index 937758d..2e1d1d8 100644
--- a/index.js
+++ b/index.js
@@ -1,11 +1,5 @@
'use strict';
-const chalk = require('chalk');
module.exports = {
- name: require('./package').name,
-
- included: function() {
- this.ui.writeLine(chalk.yellow('DEPRECATION: ember-oo-modifiers has been renamed to ember-class-based-modifier. Updates will continue there.'));
- return this._super.included.call(this, ...arguments);
- }
+ name: require('./package').name
};
diff --git a/package.json b/package.json
index 9be744a..0879949 100644
--- a/package.json
+++ b/package.json
@@ -1,11 +1,11 @@
{
- "name": "ember-oo-modifiers",
- "version": "0.5.2",
- "description": "The default blueprint for ember-cli addons.",
+ "name": "ember-class-based-modifier",
+ "version": "0.9.0",
+ "description": "A class-based API for authoring element modifiers in Ember.",
"keywords": [
"ember-addon"
],
- "repository": "https://github.com/sukima/ember-oo-modifiers",
+ "repository": "https://github.com/sukima/ember-class-based-modifier",
"license": "MIT",
"author": "",
"directories": {
@@ -63,7 +63,7 @@
"release-it": "^10.2.0"
},
"engines": {
- "node": "6.* || 8.* || >= 10.*"
+ "node": "8.* || >= 10.*"
},
"ember-addon": {
"configPath": "tests/dummy/config"
diff --git a/tests/dummy/app/modifiers/click.js b/tests/dummy/app/modifiers/click.js
index e07b825..6924288 100644
--- a/tests/dummy/app/modifiers/click.js
+++ b/tests/dummy/app/modifiers/click.js
@@ -1,16 +1,15 @@
-import Modifier from 'ember-oo-modifiers';
+import Modifier from 'ember-class-based-modifier';
-const ClickModifier = Modifier.extend({
- didInsertElement() {
- this._super(...arguments);
- this.callback = () => alert('You clicked me!');
+export default class ClickModifier extends Modifier {
+ callback() {
+ alert('You clicked me!');
+ }
+
+ didInstall() {
this.element.addEventListener('click', this.callback);
- },
+ }
- willDestroyElement() {
- this._super(...arguments);
+ willRemove() {
this.element.removeEventListener('click', this.callback);
}
-});
-
-export default Modifier.modifier(ClickModifier);
+}
diff --git a/tests/integration/modifier-managers/classic-test.js b/tests/integration/modifier-managers/classic-test.js
new file mode 100644
index 0000000..1ec92d2
--- /dev/null
+++ b/tests/integration/modifier-managers/classic-test.js
@@ -0,0 +1,72 @@
+import { module, test } from 'qunit';
+import { setupRenderingTest } from 'ember-qunit';
+import { render } from '@ember/test-helpers';
+import Service, { inject as service } from '@ember/service';
+import hbs from 'htmlbars-inline-precompile';
+import Modifier from 'ember-class-based-modifier/classic';
+import { testHooks } from './shared';
+
+module('Integration | Modifier Manager | class-based modifier (classic class)', function(hooks) {
+ setupRenderingTest(hooks);
+
+ testHooks(callback => Modifier.extend({
+ init() {
+ this._super(...arguments);
+ callback('constructor', this);
+ },
+
+ didReceiveArguments() {
+ callback('didReceiveArguments', this);
+ },
+
+ didUpdateArguments() {
+ callback('didUpdateArguments', this);
+ },
+
+ didInstall() {
+ callback('didInstall', this);
+ },
+
+ willRemove() {
+ callback('willRemove', this);
+ },
+
+ willDestroy() {
+ callback('willDestroy', this);
+ }
+ }));
+
+ module('service injection', function() {
+ test('can participate in ember dependency injection', async function(assert) {
+ this.owner.register(
+ 'service:foo',
+ Service.extend({ isFooService: true })
+ );
+
+ this.owner.register(
+ 'service:bar',
+ Service.extend({ isBarService: true })
+ );
+
+ this.owner.register(
+ 'modifier:songbird',
+ Modifier.extend({
+ foo: service(),
+ baz: service('bar'),
+
+ init() {
+ this._super(...arguments);
+
+ assert.step('constructor called');
+ assert.strictEqual(this.foo.isFooService, true, 'this.foo.isFooService');
+ assert.strictEqual(this.baz.isBarService, true, 'this.baz.isBarService');
+ }
+ })
+ );
+
+ await render(hbs`
Hello `);
+
+ assert.verifySteps(['constructor called']);
+ });
+ });
+});
diff --git a/tests/integration/modifier-managers/native-test.js b/tests/integration/modifier-managers/native-test.js
new file mode 100644
index 0000000..9c90861
--- /dev/null
+++ b/tests/integration/modifier-managers/native-test.js
@@ -0,0 +1,75 @@
+import { module, test } from 'qunit';
+import { setupRenderingTest } from 'ember-qunit';
+import { render } from '@ember/test-helpers';
+import Service, { inject as service } from '@ember/service';
+import hbs from 'htmlbars-inline-precompile';
+import Modifier from 'ember-class-based-modifier';
+import { testHooks } from './shared';
+
+module('Integration | Modifier Manager | class-based modifier (native class)', function(hooks) {
+ setupRenderingTest(hooks);
+
+ testHooks(callback => class NativeModifier extends Modifier {
+ constructor() {
+ super(...arguments);
+ callback('constructor', this);
+ }
+
+ didReceiveArguments() {
+ callback('didReceiveArguments', this);
+ }
+
+ didUpdateArguments() {
+ callback('didUpdateArguments', this);
+ }
+
+ didInstall() {
+ callback('didInstall', this);
+ }
+
+ willRemove() {
+ callback('willRemove', this);
+ }
+
+ willDestroy() {
+ callback('willDestroy', this);
+ }
+ });
+
+ module('service injection', function() {
+ test('can participate in ember dependency injection', async function(assert) {
+ let called = false;
+
+ this.owner.register(
+ 'service:foo',
+ Service.extend({ isFooService: true })
+ );
+
+ this.owner.register(
+ 'service:bar',
+ Service.extend({ isBarService: true })
+ );
+
+ this.owner.register(
+ 'modifier:songbird',
+ class NativeModifier extends Modifier {
+ @service foo;
+ @service('bar') baz;
+
+ constructor() {
+ super(...arguments);
+
+ called = true;
+
+ assert.strictEqual(this.foo.isFooService, true, 'this.foo.isFooService');
+ assert.strictEqual(this.baz.isBarService, true, 'this.baz.isBarService');
+ }
+ }
+ );
+
+ await render(hbs`
Hello `);
+
+ assert.strictEqual(called, true, 'constructor called');
+ });
+ });
+});
diff --git a/tests/integration/modifier-managers/oo-modifiers-classic-test.js b/tests/integration/modifier-managers/oo-modifiers-classic-test.js
deleted file mode 100644
index 1343541..0000000
--- a/tests/integration/modifier-managers/oo-modifiers-classic-test.js
+++ /dev/null
@@ -1,525 +0,0 @@
-import { module, test } from 'qunit';
-import { setupRenderingTest } from 'ember-qunit';
-import { render, settled } from '@ember/test-helpers';
-import Service, { inject as service } from '@ember/service';
-import hbs from 'htmlbars-inline-precompile';
-import { Modifier } from 'ember-oo-modifiers';
-import { registerDeprecationHandler } from '@ember/debug';
-
-let isRegistered = false;
-let deprecations;
-
-module('Integration | Modifier Manager | oo modifier (classic)', function(hooks) {
- setupRenderingTest(hooks);
-
- hooks.beforeEach(function() {
- deprecations = [];
- if (!isRegistered) {
- registerDeprecationHandler((message, options, next) => {
- deprecations.push(message);
- next(message, options);
- });
- isRegistered = true;
- }
-
- this.registerModifier = (name, modifier) => {
- this.owner.register(`modifier:${name}`, modifier);
- };
- this.registerModifierClass = (name, ModifierClass) => {
- this.registerModifier(name, ModifierClass);
- };
- });
-
- module('didInsertElement with calling deprecated Modifier.modifier', function() {
- test('it has DOM element on this.element', async function(assert) {
- this.registerModifierClass(
- 'songbird',
- Modifier.modifier(
- Modifier.extend({
- didInsertElement() { assert.equal(this.element.tagName, 'H1'); }
- })
- )
- );
- await render(hbs`
Hello `);
- });
-
- test('positional arguments are passed', async function(assert) {
- this.registerModifierClass(
- 'songbird',
- Modifier.modifier(
- Modifier.extend({
- didInsertElement([a, b]) {
- assert.equal(a, '1');
- assert.equal(b, '2');
- }
- })
- )
- );
- await render(hbs`
Hey `);
- });
-
- test('named arguments are passed', async function(assert) {
- this.registerModifierClass(
- 'songbird',
- Modifier.modifier(
- Modifier.extend({
- didInsertElement(_, { a, b }) {
- assert.equal(a, '1');
- assert.equal(b, '2');
- }
- })
- )
- );
- await render(hbs`
Hey `);
- });
- });
-
- module('didInsertElement without calling Modifier.modifier', function() {
- test('it has DOM element on this.element', async function(assert) {
- this.registerModifierClass(
- 'songbird',
- Modifier.extend({
- didInsertElement() { assert.equal(this.element.tagName, 'H1'); }
- })
- );
- await render(hbs`
Hello `);
- });
-
- test('positional arguments are passed', async function(assert) {
- this.registerModifierClass(
- 'songbird',
- Modifier.extend({
- didInsertElement([a, b]) {
- assert.equal(a, '1');
- assert.equal(b, '2');
- }
- })
- );
- await render(hbs`
Hey `);
- });
-
- test('named arguments are passed', async function(assert) {
- this.registerModifierClass(
- 'songbird',
- Modifier.extend({
- didInsertElement(_, { a, b }) {
- assert.equal(a, '1');
- assert.equal(b, '2');
- }
- })
- );
- await render(hbs`
Hey `);
- });
- });
-
- module('didRecieveArguments with calling deprecated Modifier.modifier', function() {
- test('it has DOM element on this.element', async function(assert) {
- this.registerModifierClass(
- 'songbird',
- Modifier.modifier(
- Modifier.extend({
- didReceiveArguments() { assert.equal(this.element.tagName, 'H1'); }
- })
- )
- );
- await render(hbs`
Hello `);
- });
-
- test('positional arguments are passed', async function(assert) {
- this.registerModifierClass(
- 'songbird',
- Modifier.modifier(
- Modifier.extend({
- didReceiveArguments([a, b]) {
- assert.equal(a, '1');
- assert.equal(b, '2');
- }
- })
- )
- );
- await render(hbs`
Hey `);
- });
-
- test('named arguments are passed', async function(assert) {
- this.registerModifierClass(
- 'songbird',
- Modifier.modifier(
- Modifier.extend({
- didReceiveArguments(_, { a, b }) {
- assert.equal(a, '1');
- assert.equal(b, '2');
- }
- })
- )
- );
- await render(hbs`
Hey `);
- });
- });
-
- module('didRecieveArguments without calling Modifier.modifier', function() {
- test('it has DOM element on this.element', async function(assert) {
- this.registerModifierClass(
- 'songbird',
- Modifier.extend({
- didReceiveArguments() { assert.equal(this.element.tagName, 'H1'); }
- })
- );
- await render(hbs`
Hello `);
- });
-
- test('positional arguments are passed', async function(assert) {
- this.registerModifierClass(
- 'songbird',
- Modifier.extend({
- didReceiveArguments([a, b]) {
- assert.equal(a, '1');
- assert.equal(b, '2');
- }
- })
- );
- await render(hbs`
Hey `);
- });
-
- test('named arguments are passed', async function(assert) {
- this.registerModifierClass(
- 'songbird',
- Modifier.extend({
- didReceiveArguments(_, { a, b }) {
- assert.equal(a, '1');
- assert.equal(b, '2');
- }
- })
- );
- await render(hbs`
Hey `);
- });
- });
-
- module('didUpdateArguments with calling deprecated Modifier.modifier', function() {
- test('it has DOM element on this.element', async function(assert) {
- this.value = 0;
- this.registerModifierClass(
- 'songbird',
- Modifier.modifier(
- Modifier.extend({
- didUpdateArguments() { assert.equal(this.element.tagName, 'H1'); }
- })
- )
- );
- await render(hbs`
Hello `);
- this.set('value', 1);
- });
-
- test('positional arguments are passed', async function(assert) {
- this.value = 0;
- this.registerModifierClass(
- 'songbird',
- Modifier.modifier(
- Modifier.extend({
- didUpdateArguments([, a, b]) {
- assert.equal(a, '1');
- assert.equal(b, '2');
- }
- })
- )
- );
- await render(hbs`
Hey `);
- this.set('value', 1);
- });
-
- test('named arguments are passed', async function(assert) {
- this.value = 0;
- this.registerModifierClass(
- 'songbird',
- Modifier.modifier(
- Modifier.extend({
- didUpdateArguments(_, { a, b }) {
- assert.equal(a, '1');
- assert.equal(b, '2');
- }
- })
- )
- );
- await render(hbs`
Hey `);
- this.set('value', 1);
- });
- });
-
- module('didUpdateArguments without calling Modifier.modifier', function() {
- test('it has DOM element on this.element', async function(assert) {
- this.value = 0;
- this.registerModifierClass(
- 'songbird',
- Modifier.extend({
- didUpdateArguments() { assert.equal(this.element.tagName, 'H1'); }
- })
- );
- await render(hbs`
Hello `);
- this.set('value', 1);
- });
-
- test('positional arguments are passed', async function(assert) {
- this.value = 0;
- this.registerModifierClass(
- 'songbird',
- Modifier.extend({
- didUpdateArguments([, a, b]) {
- assert.equal(a, '1');
- assert.equal(b, '2');
- }
- })
- );
- await render(hbs`
Hey `);
- this.set('value', 1);
- });
-
- test('named arguments are passed', async function(assert) {
- this.value = 0;
- this.registerModifierClass(
- 'songbird',
- Modifier.extend({
- didUpdateArguments(_, { a, b }) {
- assert.equal(a, '1');
- assert.equal(b, '2');
- }
- })
- );
- await render(hbs`
Hey `);
- this.set('value', 1);
- });
- });
-
- module('willDestroyElement with calling deprecated Modifier.modifier', function() {
- test('it has DOM element on this.element', async function(assert) {
- this.shouldRender = true;
- this.registerModifierClass(
- 'songbird',
- Modifier.modifier(
- Modifier.extend({
- willDestroyElement() { assert.equal(this.element.tagName, 'H1'); }
- })
- )
- );
- await render(hbs`
- {{#if this.shouldRender}}
-
Hello
- {{/if}}
- `);
- this.set('shouldRender', false);
- });
-
- test('positional arguments are passed', async function(assert) {
- this.shouldRender = true;
- this.registerModifierClass(
- 'songbird',
- Modifier.modifier(
- Modifier.extend({
- willDestroyElement([a, b]) {
- assert.equal(a, '1');
- assert.equal(b, '2');
- }
- })
- )
- );
- await render(hbs`
- {{#if this.shouldRender}}
-
Hey
- {{/if}}
- `);
- this.set('shouldRender', false);
- });
-
- test('named arguments are passed', async function(assert) {
- this.shouldRender = true;
- this.registerModifierClass(
- 'songbird',
- Modifier.modifier(
- Modifier.extend({
- willDestroyElement(_, { a, b }) {
- assert.equal(a, '1');
- assert.equal(b, '2');
- }
- })
- )
- );
- await render(hbs`
- {{#if this.shouldRender}}
-
Hey
- {{/if}}
- `);
- this.set('shouldRender', false);
- });
- });
-
- module('willDestroyElement without calling Modifier.modifier', function() {
- test('it has DOM element on this.element', async function(assert) {
- this.shouldRender = true;
- this.registerModifierClass(
- 'songbird',
- Modifier.extend({
- willDestroyElement() { assert.equal(this.element.tagName, 'H1'); }
- })
- );
- await render(hbs`
- {{#if this.shouldRender}}
-
Hello
- {{/if}}
- `);
- this.set('shouldRender', false);
- });
-
- test('positional arguments are passed', async function(assert) {
- this.shouldRender = true;
- this.registerModifierClass(
- 'songbird',
- Modifier.extend({
- willDestroyElement([a, b]) {
- assert.equal(a, '1');
- assert.equal(b, '2');
- }
- })
- );
- await render(hbs`
- {{#if this.shouldRender}}
-
Hey
- {{/if}}
- `);
- this.set('shouldRender', false);
- });
-
- test('named arguments are passed', async function(assert) {
- this.shouldRender = true;
- this.registerModifierClass(
- 'songbird',
- Modifier.extend({
- willDestroyElement(_, { a, b }) {
- assert.equal(a, '1');
- assert.equal(b, '2');
- }
- })
- );
- await render(hbs`
- {{#if this.shouldRender}}
-
Hey
- {{/if}}
- `);
- this.set('shouldRender', false);
- });
- });
-
- module('Lifecycle and dependency with calling deprecated Modifier.modifier', function() {
- test('has correct lifecycle hooks ordering', async function(assert) {
- let callstack = [];
- this.value = 0;
- this.shouldRender = true;
- this.registerModifierClass(
- 'songbird',
- Modifier.modifier(
- Modifier.extend({
- didInsertElement() { callstack.push('didInsertElement'); },
- didReceiveArguments() { callstack.push('didReceiveArguments'); },
- didUpdateArguments() { callstack.push('didUpdateArguments'); },
- willDestroyElement() { callstack.push('willDestroyElement'); }
- })
- )
- );
- await render(hbs`
- {{#if this.shouldRender}}
-
Hey
- {{/if}}
- `);
- this.set('value', 1);
- await settled();
- this.set('shouldRender', false);
- await settled();
- assert.deepEqual(callstack, [
- 'didInsertElement',
- 'didReceiveArguments',
- 'didReceiveArguments',
- 'didUpdateArguments',
- 'willDestroyElement'
- ]);
- });
-
- test('can participate in ember dependency injection', async function(assert) {
- this.owner.register(
- 'service:test-service',
- Service.extend({ value: 'test-service-value' })
- );
- this.registerModifierClass(
- 'songbird',
- Modifier.modifier(
- Modifier.extend({
- testService: service(),
- didInsertElement() {
- assert.equal(this.testService.value, 'test-service-value');
- }
- })
- )
- );
- await render(hbs`
Hello `);
- });
- });
-
- module('Lifecycle and dependency without calling Modifier.modifier', function() {
- test('has correct lifecycle hooks ordering', async function(assert) {
- let callstack = [];
- this.value = 0;
- this.shouldRender = true;
- this.registerModifierClass(
- 'songbird',
- Modifier.extend({
- didInsertElement() { callstack.push('didInsertElement'); },
- didReceiveArguments() { callstack.push('didReceiveArguments'); },
- didUpdateArguments() { callstack.push('didUpdateArguments'); },
- willDestroyElement() { callstack.push('willDestroyElement'); }
- })
- );
- await render(hbs`
- {{#if this.shouldRender}}
-
Hey
- {{/if}}
- `);
- this.set('value', 1);
- await settled();
- this.set('shouldRender', false);
- await settled();
- assert.deepEqual(callstack, [
- 'didInsertElement',
- 'didReceiveArguments',
- 'didReceiveArguments',
- 'didUpdateArguments',
- 'willDestroyElement'
- ]);
- });
-
- test('can participate in ember dependency injection', async function(assert) {
- this.owner.register(
- 'service:test-service',
- Service.extend({ value: 'test-service-value' })
- );
- this.registerModifierClass(
- 'songbird',
- Modifier.extend({
- testService: service(),
- didInsertElement() {
- assert.equal(this.testService.value, 'test-service-value');
- }
- })
- );
- await render(hbs`
Hello `);
- });
- });
-
- module('Modifier.modifier deprecations', function() {
- test('rendering with Modifier.modifier causes deprecation warning', async function(assert) {
- this.registerModifierClass(
- 'songbird',
- Modifier.modifier(
- Modifier.extend({})
- )
- );
- await render(hbs`
Hello `);
- assert.ok( deprecations.includes("Modifier.modifier is deprecated. Export the class directly. See https://github.com/sukima/ember-oo-modifiers/pull/8") );
- });
- });
-});
diff --git a/tests/integration/modifier-managers/oo-modifiers-native-test.js b/tests/integration/modifier-managers/oo-modifiers-native-test.js
deleted file mode 100644
index e4fd9e2..0000000
--- a/tests/integration/modifier-managers/oo-modifiers-native-test.js
+++ /dev/null
@@ -1,554 +0,0 @@
-import { module, test } from 'qunit';
-import { setupRenderingTest } from 'ember-qunit';
-import { render, settled } from '@ember/test-helpers';
-import Service from '@ember/service';
-import { inject as service } from '@ember/service';
-import hbs from 'htmlbars-inline-precompile';
-import Modifier, { modifier } from 'ember-oo-modifiers';
-import { registerDeprecationHandler } from '@ember/debug';
-
-let isRegistered = false;
-let deprecations;
-
-module('Integration | Modifier Manager | oo modifier (native)', function(hooks) {
- setupRenderingTest(hooks);
-
- hooks.beforeEach(function() {
- deprecations = [];
- if (!isRegistered) {
- registerDeprecationHandler((message, options, next) => {
- deprecations.push(message);
- next(message, options);
- });
- isRegistered = true;
- }
-
- this.registerModifier = (name, modifier) => {
- this.owner.register(`modifier:${name}`, modifier);
- };
- this.registerModifierClass = (name, ModifierClass) => {
- this.registerModifier(name, ModifierClass);
- };
- });
-
- module('didInsertElement with calling deprecated Modifier.modfier', function() {
- test('it has DOM element on this.element', async function(assert) {
- class SongbirdModifier extends Modifier {
- didInsertElement() { assert.equal(this.element.tagName, 'H1'); }
- }
- this.registerModifierClass(
- 'songbird',
- Modifier.modifier(SongbirdModifier)
- );
- await render(hbs`
Hello `);
- });
-
- test('positional arguments are passed', async function(assert) {
- class SongbirdModifier extends Modifier {
- didInsertElement([a, b]) {
- assert.equal(a, '1');
- assert.equal(b, '2');
- }
- }
- this.registerModifierClass(
- 'songbird',
- Modifier.modifier(SongbirdModifier)
- );
- await render(hbs`
Hey `);
- });
-
- test('named arguments are passed', async function(assert) {
- class SongbirdModifier extends Modifier {
- didInsertElement(_, { a, b }) {
- assert.equal(a, '1');
- assert.equal(b, '2');
- }
- }
- this.registerModifierClass(
- 'songbird',
- Modifier.modifier(SongbirdModifier)
- );
- await render(hbs`
Hey `);
- });
- });
-
- module('didInsertElement without calling Modifier.modifier', function() {
- test('it has DOM element on this.element', async function(assert) {
- this.registerModifierClass(
- 'songbird',
- class SongbirdModifier extends Modifier {
- didInsertElement() { assert.equal(this.element.tagName, 'H1'); }
- }
- );
- await render(hbs`
Hello `);
- });
-
- test('positional arguments are passed', async function(assert) {
- this.registerModifierClass(
- 'songbird',
- class SongbirdModifier extends Modifier {
- didInsertElement([a, b]) {
- assert.equal(a, '1');
- assert.equal(b, '2');
- }
- }
- );
- await render(hbs`
Hey `);
- });
-
- test('named arguments are passed', async function(assert) {
- this.registerModifierClass(
- 'songbird',
- class SongbirdModifier extends Modifier {
- didInsertElement(_, { a, b }) {
- assert.equal(a, '1');
- assert.equal(b, '2');
- }
- }
- );
- await render(hbs`
Hey `);
- });
- });
-
- module('didRecieveArguments with calling deprecated Modifier.modifier', function() {
- test('it has DOM element on this.element', async function(assert) {
- class SongbirdModifier extends Modifier {
- didReceiveArguments() { assert.equal(this.element.tagName, 'H1'); }
- }
- this.registerModifierClass(
- 'songbird',
- Modifier.modifier(SongbirdModifier)
- );
- await render(hbs`
Hello `);
- });
-
- test('positional arguments are passed', async function(assert) {
- class SongbirdModifier extends Modifier {
- didReceiveArguments([a, b]) {
- assert.equal(a, '1');
- assert.equal(b, '2');
- }
- }
- this.registerModifierClass(
- 'songbird',
- Modifier.modifier(SongbirdModifier)
- );
- await render(hbs`
Hey `);
- });
-
- test('named arguments are passed', async function(assert) {
- class SongbirdModifier extends Modifier {
- didReceiveArguments(_, { a, b }) {
- assert.equal(a, '1');
- assert.equal(b, '2');
- }
- }
- this.registerModifierClass(
- 'songbird',
- Modifier.modifier(SongbirdModifier)
- );
- await render(hbs`
Hey `);
- });
- });
-
- module('didRecieveArguments without calling Modifier.modifier', function() {
- test('it has DOM element on this.element', async function(assert) {
- this.registerModifierClass(
- 'songbird',
- class SongbirdModifier extends Modifier {
- didReceiveArguments() { assert.equal(this.element.tagName, 'H1'); }
- }
- );
- await render(hbs`
Hello `);
- });
-
- test('positional arguments are passed', async function(assert) {
- this.registerModifierClass(
- 'songbird',
- class SongbirdModifier extends Modifier {
- didReceiveArguments([a, b]) {
- assert.equal(a, '1');
- assert.equal(b, '2');
- }
- }
- );
- await render(hbs`
Hey `);
- });
-
- test('named arguments are passed', async function(assert) {
- this.registerModifierClass(
- 'songbird',
- class SongbirdModifier extends Modifier {
- didReceiveArguments(_, { a, b }) {
- assert.equal(a, '1');
- assert.equal(b, '2');
- }
- }
- );
- await render(hbs`
Hey `);
- });
- });
-
- module('didUpdateArguments with calling deprecated Modifier.modifier', function() {
- test('it has DOM element on this.element', async function(assert) {
- this.value = 0;
- class SongbirdModifier extends Modifier {
- didUpdateArguments() { assert.equal(this.element.tagName, 'H1'); }
- }
- this.registerModifierClass(
- 'songbird',
- Modifier.modifier(SongbirdModifier)
- );
- await render(hbs`
Hello `);
- this.set('value', 1);
- });
-
- test('positional arguments are passed', async function(assert) {
- this.value = 0;
- class SongbirdModifier extends Modifier {
- didUpdateArguments([, a, b]) {
- assert.equal(a, '1');
- assert.equal(b, '2');
- }
- }
- this.registerModifierClass(
- 'songbird',
- Modifier.modifier(SongbirdModifier)
- );
- await render(hbs`
Hey `);
- this.set('value', 1);
- });
-
- test('named arguments are passed', async function(assert) {
- this.value = 0;
- class SongbirdModifier extends Modifier {
- didUpdateArguments(_, { a, b }) {
- assert.equal(a, '1');
- assert.equal(b, '2');
- }
- }
- this.registerModifierClass(
- 'songbird',
- Modifier.modifier(SongbirdModifier)
- );
- await render(hbs`
Hey `);
- this.set('value', 1);
- });
- });
-
- module('didUpdateArguments without calling Modifier.modifier', function() {
- test('it has DOM element on this.element', async function(assert) {
- this.value = 0;
- this.registerModifierClass(
- 'songbird',
- class SongbirdModifier extends Modifier {
- didUpdateArguments() { assert.equal(this.element.tagName, 'H1'); }
- }
- );
- await render(hbs`
Hello `);
- this.set('value', 1);
- });
-
- test('positional arguments are passed', async function(assert) {
- this.value = 0;
- this.registerModifierClass(
- 'songbird',
- class SongbirdModifier extends Modifier {
- didUpdateArguments([, a, b]) {
- assert.equal(a, '1');
- assert.equal(b, '2');
- }
- }
- );
- await render(hbs`
Hey `);
- this.set('value', 1);
- });
-
- test('named arguments are passed', async function(assert) {
- this.value = 0;
- this.registerModifierClass(
- 'songbird',
- class SongbirdModifier extends Modifier {
- didUpdateArguments(_, { a, b }) {
- assert.equal(a, '1');
- assert.equal(b, '2');
- }
- }
- );
- await render(hbs`
Hey `);
- this.set('value', 1);
- });
- });
-
- module('willDestroyElement with calling deprecated Modifier.modifier', function() {
- test('it has DOM element on this.element', async function(assert) {
- this.shouldRender = true;
- class SongbirdModifier extends Modifier {
- willDestroyElement() { assert.equal(this.element.tagName, 'H1'); }
- }
- this.registerModifierClass(
- 'songbird',
- Modifier.modifier(SongbirdModifier)
- );
- await render(hbs`
- {{#if this.shouldRender}}
-
Hello
- {{/if}}
- `);
- this.set('shouldRender', false);
- });
-
- test('positional arguments are passed', async function(assert) {
- this.shouldRender = true;
- class SongbirdModifier extends Modifier {
- willDestroyElement([a, b]) {
- assert.equal(a, '1');
- assert.equal(b, '2');
- }
- }
- this.registerModifierClass(
- 'songbird',
- Modifier.modifier(SongbirdModifier)
- );
- await render(hbs`
- {{#if this.shouldRender}}
-
Hey
- {{/if}}
- `);
- this.set('shouldRender', false);
- });
-
- test('named arguments are passed', async function(assert) {
- this.shouldRender = true;
- class SongbirdModifier extends Modifier {
- willDestroyElement(_, { a, b }) {
- assert.equal(a, '1');
- assert.equal(b, '2');
- }
- }
- this.registerModifierClass(
- 'songbird',
- Modifier.modifier(SongbirdModifier)
- );
- await render(hbs`
- {{#if this.shouldRender}}
-
Hey
- {{/if}}
- `);
- this.set('shouldRender', false);
- });
- });
-
- module('willDestroyElement without calling Modifier.modifier', function() {
- test('it has DOM element on this.element', async function(assert) {
- this.shouldRender = true;
- this.registerModifierClass(
- 'songbird',
- class SongbirdModifier extends Modifier {
- willDestroyElement() { assert.equal(this.element.tagName, 'H1'); }
- }
- );
- await render(hbs`
- {{#if this.shouldRender}}
-
Hello
- {{/if}}
- `);
- this.set('shouldRender', false);
- });
-
- test('positional arguments are passed', async function(assert) {
- this.shouldRender = true;
- this.registerModifierClass(
- 'songbird',
- class SongbirdModifier extends Modifier {
- willDestroyElement([a, b]) {
- assert.equal(a, '1');
- assert.equal(b, '2');
- }
- }
- );
- await render(hbs`
- {{#if this.shouldRender}}
-
Hey
- {{/if}}
- `);
- this.set('shouldRender', false);
- });
-
- test('named arguments are passed', async function(assert) {
- this.shouldRender = true;
- this.registerModifierClass(
- 'songbird',
- class SongbirdModifier extends Modifier {
- willDestroyElement(_, { a, b }) {
- assert.equal(a, '1');
- assert.equal(b, '2');
- }
- }
- );
- await render(hbs`
- {{#if this.shouldRender}}
-
Hey
- {{/if}}
- `);
- this.set('shouldRender', false);
- });
- });
-
- module('Lifecycle and dependency with calling deprecated Modifier.modifier', function() {
- test('has correct lifecycle hooks ordering', async function(assert) {
- let callstack = [];
- this.value = 0;
- this.shouldRender = true;
- class SongbirdModifier extends Modifier {
- didInsertElement() { callstack.push('didInsertElement'); }
- didReceiveArguments() { callstack.push('didReceiveArguments'); }
- didUpdateArguments() { callstack.push('didUpdateArguments'); }
- willDestroyElement() { callstack.push('willDestroyElement'); }
- }
- this.registerModifierClass(
- 'songbird',
- Modifier.modifier(SongbirdModifier)
- );
- await render(hbs`
- {{#if this.shouldRender}}
-
Hey
- {{/if}}
- `);
- this.set('value', 1);
- await settled();
- this.set('shouldRender', false);
- await settled();
- assert.deepEqual(callstack, [
- 'didInsertElement',
- 'didReceiveArguments',
- 'didReceiveArguments',
- 'didUpdateArguments',
- 'willDestroyElement'
- ]);
- });
-
- test('can participate in ember dependency injection', async function(assert) {
- this.owner.register(
- 'service:test-service',
- class TestService extends Service {
- value = 'test-service-value'
- }
- );
- class SongbirdModifier extends Modifier {
- @service testService
- didInsertElement() {
- assert.equal(this.testService.value, 'test-service-value');
- }
- }
- this.registerModifierClass(
- 'songbird',
- Modifier.modifier(SongbirdModifier)
- );
- await render(hbs`
Hello `);
- });
- });
-
- module('Lifecycle and dependency without calling Modifier.modifier', function() {
- test('has correct lifecycle hooks ordering', async function(assert) {
- let callstack = [];
- this.value = 0;
- this.shouldRender = true;
- this.registerModifierClass(
- 'songbird',
- class SongbirdModifier extends Modifier {
- didInsertElement() { callstack.push('didInsertElement'); }
- didReceiveArguments() { callstack.push('didReceiveArguments'); }
- didUpdateArguments() { callstack.push('didUpdateArguments'); }
- willDestroyElement() { callstack.push('willDestroyElement'); }
- }
- );
- await render(hbs`
- {{#if this.shouldRender}}
-
Hey
- {{/if}}
- `);
- this.set('value', 1);
- await settled();
- this.set('shouldRender', false);
- await settled();
- assert.deepEqual(callstack, [
- 'didInsertElement',
- 'didReceiveArguments',
- 'didReceiveArguments',
- 'didUpdateArguments',
- 'willDestroyElement'
- ]);
- });
-
- test('can participate in ember dependency injection', async function(assert) {
- this.owner.register(
- 'service:test-service',
- class TestService extends Service {
- value = 'test-service-value'
- }
- );
- this.registerModifierClass(
- 'songbird',
- class SongbirdModifier extends Modifier {
- @service testService
- didInsertElement() {
- assert.equal(this.testService.value, 'test-service-value');
- }
- }
- );
- await render(hbs`
Hello `);
- });
- });
-
- module('Modifier.modifier deprecations', function() {
- test('rendering with Modifier.modifier causes deprecation warning', async function(assert) {
- class SongbirdModifier extends Modifier {
- didInsertElement() { assert.equal(this.element.tagName, 'H1'); }
- }
- this.registerModifierClass(
- 'songbird',
- Modifier.modifier(SongbirdModifier)
- );
- await render(hbs`
Hello `);
- assert.ok( deprecations.includes("Modifier.modifier is deprecated. Export the class directly. See https://github.com/sukima/ember-oo-modifiers/pull/8") );
- });
- });
-
- module('modifier function', function() {
- test('it calls passed function on `didReceiveArguments`', async function(assert) {
- this.positional = '1';
- this.named = 'a';
-
- this.registerModifierClass(
- 'songbird',
- modifier(function songbird(element, [positional], { named }) {
- assert.step(element.tagName);
- assert.step(positional);
- assert.step(named);
- })
- );
-
- await render(hbs`
Hello `);
-
- this.set('positional', '2');
- this.set('named', 'b');
- await settled();
-
- assert.verifySteps([
- 'H1', '1', 'a',
- 'H1', '2', 'a',
- 'H1', '2', 'b'
- ]);
- });
-
- test('it asserts when argument is not a function', function(assert) {
- assert.throws(() => {
- this.registerModifierClass(
- 'songbird',
- modifier(true)
- );
- }, /You must pass a function as the first argument to the `modifier` function/);
- });
- })
-});
diff --git a/tests/integration/modifier-managers/shared.js b/tests/integration/modifier-managers/shared.js
new file mode 100644
index 0000000..3d3a2da
--- /dev/null
+++ b/tests/integration/modifier-managers/shared.js
@@ -0,0 +1,406 @@
+import { render, settled } from '@ember/test-helpers';
+import hbs from 'htmlbars-inline-precompile';
+import { module, test } from 'qunit';
+
+export function testHooks(factory) {
+ testHook({
+ name: 'constructor',
+ insert: true,
+ update: false,
+ destroy: false,
+ element: false,
+ factory
+ });
+
+ testHook({
+ name: 'didReceiveArguments',
+ insert: true,
+ update: true,
+ destroy: false,
+ element: true,
+ factory
+ });
+
+ testHook({
+ name: 'didUpdateArguments',
+ insert: false,
+ update: true,
+ destroy: false,
+ element: true,
+ factory
+ });
+
+ testHook({
+ name: 'didInstall',
+ insert: true,
+ update: false,
+ destroy: false,
+ element: true,
+ factory
+ });
+
+ testHook({
+ name: 'willRemove',
+ insert: false,
+ update: false,
+ destroy: true,
+ element: true,
+ factory
+ });
+
+ testHook({
+ name: 'willDestroy',
+ insert: false,
+ update: false,
+ destroy: true,
+ element: false,
+ factory
+ });
+
+ testHooksOrdering(factory);
+}
+
+function testHook({ name, insert, update, destroy, element, factory }) {
+ module(`\`${name}\` hook`, function(hooks) {
+ hooks.beforeEach(function(assert) {
+ this.instance = null;
+
+ let called = () => {
+ assert.ok(false, `\`${name}\` hook was called unexpectedly`);
+ };
+
+ this.hook = assertions => {
+ let callback = (hookName, instance) => {
+ this.instance = instance;
+
+ if (hookName === name) {
+ called();
+
+ assert.strictEqual(instance.isDestroying, name === 'willDestroy', 'isDestroying');
+ assert.strictEqual(instance.isDestroyed, false, 'isDestroyed');
+
+ assertions(instance);
+ }
+ };
+
+ this.owner.register('modifier:songbird', factory(callback));
+ };
+
+ this.assertCalled = async (shouldCall, callback) => {
+ let count = 0;
+ let _called = called;
+
+ if (shouldCall) {
+ called = () => count++;
+ }
+
+ try {
+ await callback();
+ } finally {
+ if (shouldCall) {
+ assert.equal(count, 1, `Expected \`${name}\` hook to be called exactly once`);
+ }
+
+ called = _called;
+ }
+ };
+ });
+
+ hooks.afterEach(async function(assert) {
+ await settled();
+
+ assert.strictEqual(this.instance.isDestroying, true, 'isDestroying');
+ assert.strictEqual(this.instance.isDestroyed, true, 'isDestroyed');
+ });
+
+ if (element) {
+ test('it has access to the DOM element', async function(assert) {
+ this.hook(instance => {
+ assert.equal(instance.element.tagName, 'H1', 'this.element.tagName');
+ assert.equal(instance.element.id, 'expected', 'this.element.id');
+ });
+
+ assert.step('no-op render');
+
+ await this.assertCalled(false, async () => {
+ this.setProperties({
+ isShowing: false,
+ foo: 'foo',
+ });
+
+ await render(hbs`
+ {{#if this.isShowing}}
+
Hello
+ {{/if}}
+ `);
+ });
+
+ assert.step('insert');
+
+ await this.assertCalled(insert, () => {
+ this.set('isShowing', true);
+ });
+
+ assert.step('update');
+
+ await this.assertCalled(update, () => {
+ this.set('foo', 'FOO');
+ });
+
+ assert.step('destroy');
+
+ await this.assertCalled(destroy, () => {
+ this.set('isShowing', false);
+ });
+
+ assert.verifySteps([
+ 'no-op render',
+ 'insert',
+ 'update',
+ 'destroy'
+ ]);
+ });
+ } else {
+ test('it does not have access to the DOM element', async function(assert) {
+ this.hook(instance => {
+ assert.strictEqual(instance.element, null, 'this.element');
+ });
+
+ assert.step('no-op render');
+
+ await this.assertCalled(false, async () => {
+ this.setProperties({
+ isShowing: false,
+ foo: 'foo',
+ });
+
+ await render(hbs`
+ {{#if this.isShowing}}
+
Hello
+ {{/if}}
+ `);
+ });
+
+ assert.step('insert');
+
+ await this.assertCalled(insert, () => {
+ this.set('isShowing', true);
+ });
+
+ assert.step('update');
+
+ await this.assertCalled(update, () => {
+ this.set('foo', 'FOO');
+ });
+
+ assert.step('destroy');
+
+ await this.assertCalled(destroy, () => {
+ this.set('isShowing', false);
+ });
+
+ assert.verifySteps([
+ 'no-op render',
+ 'insert',
+ 'update',
+ 'destroy'
+ ]);
+ });
+ }
+
+ test('has access to positional arguments', async function(assert) {
+ let expected;
+
+ this.hook(instance => {
+ assert.deepEqual(instance.args.positional, expected, 'this.args.positional');
+ });
+
+ assert.step('no-op render');
+
+ await this.assertCalled(false, async () => {
+ this.setProperties({
+ isShowing: false,
+ foo: 'foo',
+ bar: 'bar',
+ });
+
+ await render(hbs`
+ {{#if this.isShowing}}
+
Hello
+ {{/if}}
+ `);
+ });
+
+ assert.step('insert');
+ expected = ['foo', 'bar'];
+
+ await this.assertCalled(insert, () => {
+ this.set('isShowing', true);
+ });
+
+ assert.step('update 1');
+ expected = ['FOO', 'bar'];
+
+ await this.assertCalled(update, () => {
+ this.set('foo', 'FOO');
+ });
+
+ assert.step('update 2');
+ expected = ['FOO', 'BAR'];
+
+ await this.assertCalled(update, () => {
+ this.set('bar', 'BAR');
+ });
+
+ assert.step('destroy');
+
+ await this.assertCalled(destroy, () => {
+ this.set('isShowing', false);
+ });
+
+ assert.verifySteps([
+ 'no-op render',
+ 'insert',
+ 'update 1',
+ 'update 2',
+ 'destroy'
+ ]);
+ });
+
+ test('has access to positional arguments', async function(assert) {
+ let expected;
+
+ this.hook(instance => {
+ assert.deepEqual(instance.args.named, expected, 'this.args.named');
+ });
+
+ assert.step('no-op render');
+
+ await this.assertCalled(false, async () => {
+ this.setProperties({
+ isShowing: false,
+ foo: 'foo',
+ bar: 'bar',
+ });
+
+ await render(hbs`
+ {{#if this.isShowing}}
+
Hello
+ {{/if}}
+ `);
+ });
+
+ assert.step('insert');
+ expected = { foo: 'foo', bar: 'bar' };
+
+ await this.assertCalled(insert, () => {
+ this.set('isShowing', true);
+ });
+
+ assert.step('update 1');
+ expected = { foo: 'FOO', bar: 'bar' };
+
+ await this.assertCalled(update, () => {
+ this.set('foo', 'FOO');
+ });
+
+ assert.step('update 2');
+ expected = { foo: 'FOO', bar: 'BAR' };
+
+ await this.assertCalled(update, () => {
+ this.set('bar', 'BAR');
+ });
+
+ assert.step('destroy');
+
+ await this.assertCalled(destroy, () => {
+ this.set('isShowing', false);
+ });
+
+ assert.verifySteps([
+ 'no-op render',
+ 'insert',
+ 'update 1',
+ 'update 2',
+ 'destroy'
+ ]);
+ });
+ });
+}
+
+function testHooksOrdering(factory) {
+ module('hooks ordering', function() {
+ test('hooks are fired in the right order', async function (assert) {
+ let actualHooks;
+
+ let callback = function(name) {
+ if (actualHooks) {
+ actualHooks.push(name);
+ } else {
+ assert.ok(false, `\`${name}\` hook was called unexpectedly`);
+ }
+ };
+
+ async function assertHooks(expectedHooks, callback) {
+ actualHooks = [];
+
+ try {
+ await callback();
+ } finally {
+ assert.deepEqual(actualHooks, expectedHooks, 'hooks');
+ actualHooks = undefined;
+ }
+ }
+
+ this.owner.register('modifier:songbird', factory(callback));
+
+ assert.step('no-op render');
+
+ await assertHooks([], async () => {
+ this.setProperties({
+ isShowing: false,
+ foo: 'foo',
+ bar: 'bar',
+ });
+
+ await render(hbs`
+ {{#if this.isShowing}}
+
Hello
+ {{/if}}
+ `);
+ });
+
+ assert.step('insert');
+
+ await assertHooks(['constructor', 'didReceiveArguments', 'didInstall'], () => {
+ this.set('isShowing', true);
+ });
+
+ assert.step('update 1');
+
+ await assertHooks(['didUpdateArguments', 'didReceiveArguments'], () => {
+ this.set('foo', 'FOO');
+ });
+
+ assert.step('update 2');
+
+ await assertHooks(['didUpdateArguments', 'didReceiveArguments'], () => {
+ this.set('bar', 'BAR');
+ });
+
+ assert.step('destroy');
+
+ await assertHooks(['willRemove', 'willDestroy'], () => {
+ this.set('isShowing', false);
+ });
+
+ assert.verifySteps([
+ 'no-op render',
+ 'insert',
+ 'update 1',
+ 'update 2',
+ 'destroy'
+ ]);
+ });
+ });
+}
diff --git a/yarn.lock b/yarn.lock
index 74925f3..1e6d483 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -16,6 +16,13 @@
dependencies:
"@babel/highlight" "^7.0.0"
+"@babel/code-frame@^7.5.5":
+ version "7.5.5"
+ resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.5.5.tgz#bc0782f6d69f7b7d49531219699b988f669a8f9d"
+ integrity sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==
+ dependencies:
+ "@babel/highlight" "^7.0.0"
+
"@babel/core@^7.0.0", "@babel/core@^7.1.6", "@babel/core@^7.3.3":
version "7.3.4"
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.3.4.tgz#921a5a13746c21e32445bf0798680e9d11a6530b"
@@ -36,6 +43,26 @@
semver "^5.4.1"
source-map "^0.5.0"
+"@babel/core@^7.2.2":
+ version "7.6.0"
+ resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.6.0.tgz#9b00f73554edd67bebc86df8303ef678be3d7b48"
+ integrity sha512-FuRhDRtsd6IptKpHXAa+4WPZYY2ZzgowkbLBecEDDSje1X/apG7jQM33or3NdOmjXBKWGOg4JmSiRfUfuTtHXw==
+ dependencies:
+ "@babel/code-frame" "^7.5.5"
+ "@babel/generator" "^7.6.0"
+ "@babel/helpers" "^7.6.0"
+ "@babel/parser" "^7.6.0"
+ "@babel/template" "^7.6.0"
+ "@babel/traverse" "^7.6.0"
+ "@babel/types" "^7.6.0"
+ convert-source-map "^1.1.0"
+ debug "^4.1.0"
+ json5 "^2.1.0"
+ lodash "^4.17.13"
+ 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"
@@ -69,6 +96,17 @@
source-map "^0.5.0"
trim-right "^1.0.1"
+"@babel/generator@^7.6.0":
+ version "7.6.0"
+ resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.6.0.tgz#e2c21efbfd3293ad819a2359b448f002bfdfda56"
+ integrity sha512-Ms8Mo7YBdMMn1BYuNtKuP/z0TgEIhbcyB8HVR6PPNYp4P61lMsABiS4A3VG1qznjXVCf3r+fVHhm4efTYVsySA==
+ dependencies:
+ "@babel/types" "^7.6.0"
+ jsesc "^2.5.1"
+ lodash "^4.17.13"
+ 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"
@@ -278,6 +316,13 @@
dependencies:
"@babel/types" "^7.4.0"
+"@babel/helper-split-export-declaration@^7.4.4":
+ version "7.4.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz#ff94894a340be78f53f06af038b205c49d993677"
+ integrity sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==
+ dependencies:
+ "@babel/types" "^7.4.4"
+
"@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"
@@ -297,6 +342,15 @@
"@babel/traverse" "^7.1.5"
"@babel/types" "^7.3.0"
+"@babel/helpers@^7.6.0":
+ version "7.6.0"
+ resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.6.0.tgz#21961d16c6a3c3ab597325c34c465c0887d31c6e"
+ integrity sha512-W9kao7OBleOjfXtFGgArGRX6eCP0UEcA2ZWEWNkJdRZnHhW4eEbeswbG3EwaRsnQUAEGWYgMq1HsIXuNNNy2eQ==
+ dependencies:
+ "@babel/template" "^7.6.0"
+ "@babel/traverse" "^7.6.0"
+ "@babel/types" "^7.6.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"
@@ -325,6 +379,11 @@
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.4.3.tgz#eb3ac80f64aa101c907d4ce5406360fe75b7895b"
integrity sha512-gxpEUhTS1sGA63EGQGuA+WESPR/6tz6ng7tSHFCmaTJK/cGK8y37cBTspX+U2xCAue2IQVvF6Z0oigmjwD8YGQ==
+"@babel/parser@^7.4.5", "@babel/parser@^7.6.0":
+ version "7.6.0"
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.6.0.tgz#3e05d0647432a8326cb28d0de03895ae5a57f39b"
+ integrity sha512-+o2q111WEx4srBs7L9eJmcwi655eD8sXniLqMB93TBK9GrNzGrxDWSjiqz2hLU0Ha8MTXFIP0yd9fNdP+m43ZQ==
+
"@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"
@@ -406,6 +465,13 @@
dependencies:
"@babel/helper-plugin-utils" "^7.0.0"
+"@babel/plugin-syntax-dynamic-import@^7.2.0":
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.2.0.tgz#69c159ffaf4998122161ad8ebc5e6d1f55df8612"
+ integrity sha512-mVxuJ0YroI/h/tbFTPGZR8cv6ai+STMKNBq0f8hFxsxWjl94qqhsb+wXbpNMDPU3cfR1TIsVFzU3nXyZMqyK4w==
+ 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"
@@ -757,6 +823,15 @@
"@babel/parser" "^7.2.2"
"@babel/types" "^7.2.2"
+"@babel/template@^7.6.0":
+ version "7.6.0"
+ resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.6.0.tgz#7f0159c7f5012230dad64cca42ec9bdb5c9536e6"
+ integrity sha512-5AEH2EXD8euCk446b7edmgFdub/qfH1SN6Nii3+fyXP807QRx9Q73A2N5hNwRRslC2H9sNzaFhsPubkS4L8oNQ==
+ dependencies:
+ "@babel/code-frame" "^7.0.0"
+ "@babel/parser" "^7.6.0"
+ "@babel/types" "^7.6.0"
+
"@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"
@@ -788,6 +863,21 @@
globals "^11.1.0"
lodash "^4.17.11"
+"@babel/traverse@^7.2.4", "@babel/traverse@^7.4.5", "@babel/traverse@^7.6.0":
+ version "7.6.0"
+ resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.6.0.tgz#389391d510f79be7ce2ddd6717be66d3fed4b516"
+ integrity sha512-93t52SaOBgml/xY74lsmt7xOR4ufYvhb5c5qiM6lu4J/dWGMAfAh6eKw4PjLes6DI6nQgearoxnFJk60YchpvQ==
+ dependencies:
+ "@babel/code-frame" "^7.5.5"
+ "@babel/generator" "^7.6.0"
+ "@babel/helper-function-name" "^7.1.0"
+ "@babel/helper-split-export-declaration" "^7.4.4"
+ "@babel/parser" "^7.6.0"
+ "@babel/types" "^7.6.0"
+ debug "^4.1.0"
+ globals "^11.1.0"
+ lodash "^4.17.13"
+
"@babel/traverse@^7.4.0":
version "7.4.3"
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.4.3.tgz#1a01f078fc575d589ff30c0f71bf3c3d9ccbad84"
@@ -821,6 +911,15 @@
lodash "^4.17.11"
to-fast-properties "^2.0.0"
+"@babel/types@^7.3.2", "@babel/types@^7.4.4", "@babel/types@^7.6.0":
+ version "7.6.1"
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.6.1.tgz#53abf3308add3ac2a2884d539151c57c4b3ac648"
+ integrity sha512-X7gdiuaCmA0uRjCmRtYJNAVCc/q+5xSgsfKJHqMN4iNLILX39677fJE1O40arPMh0TTtS9ItH67yre6c7k6t0g==
+ dependencies:
+ esutils "^2.0.2"
+ lodash "^4.17.13"
+ to-fast-properties "^2.0.0"
+
"@babel/types@^7.4.0":
version "7.4.0"
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.4.0.tgz#670724f77d24cce6cc7d8cf64599d511d164894c"
@@ -870,6 +969,52 @@
ember-cli-babel "^6.12.0"
ember-cli-htmlbars-inline-precompile "^1.0.0"
+"@embroider/core@0.4.3", "@embroider/core@^0.4.3":
+ version "0.4.3"
+ resolved "https://registry.yarnpkg.com/@embroider/core/-/core-0.4.3.tgz#117973b9761d68aee14d820bbaefeb05d5984ba8"
+ integrity sha512-n24WU/dGuGDqZrljWoX8raK2wFX3R8iJG0rfCWx+1kW87IvB+ZgS3j4KiZ/S788BA07udrYsrgecYnciG2bBMg==
+ dependencies:
+ "@babel/core" "^7.2.2"
+ "@babel/parser" "^7.3.4"
+ "@babel/plugin-syntax-dynamic-import" "^7.2.0"
+ "@babel/traverse" "^7.3.4"
+ "@babel/types" "^7.3.4"
+ "@embroider/macros" "0.4.3"
+ assert-never "^1.1.0"
+ babel-plugin-syntax-dynamic-import "^6.18.0"
+ broccoli-persistent-filter "^2.2.2"
+ broccoli-plugin "^1.3.0"
+ broccoli-source "^1.1.0"
+ debug "^3.1.0"
+ fast-sourcemap-concat "^1.4.0"
+ filesize "^4.1.2"
+ fs-extra "^7.0.1"
+ fs-tree-diff "^2.0.0"
+ handlebars "^4.0.11"
+ js-string-escape "^1.0.1"
+ jsdom "^12.0.0"
+ json-stable-stringify "^1.0.1"
+ lodash "^4.17.10"
+ pkg-up "^2.0.0"
+ resolve "^1.8.1"
+ resolve-package-path "^1.2.2"
+ semver "^5.5.0"
+ strip-bom "^3.0.0"
+ typescript-memoize "^1.0.0-alpha.3"
+ walk-sync "^1.1.3"
+
+"@embroider/macros@0.4.3":
+ version "0.4.3"
+ resolved "https://registry.yarnpkg.com/@embroider/macros/-/macros-0.4.3.tgz#ea5604b8bd578520f15886a428a6c4fa9481abc0"
+ integrity sha512-vq/Ny2ULpKxq60Sv5usSrz651dXFM5phP/O5G5MWDY8YOodIkRLGqtub34sB0OmwxpCuTntUzl9P/I4wkyQ3Kw==
+ dependencies:
+ "@babel/core" "^7.2.2"
+ "@babel/traverse" "^7.2.4"
+ "@babel/types" "^7.3.2"
+ "@embroider/core" "0.4.3"
+ resolve "^1.8.1"
+ semver "^5.6.0"
+
"@glimmer/compiler@^0.38.0":
version "0.38.1"
resolved "https://registry.yarnpkg.com/@glimmer/compiler/-/compiler-0.38.1.tgz#03b43a2a8a04b1ed39517862158e8897d0f6798b"
@@ -890,13 +1035,6 @@
resolved "https://registry.yarnpkg.com/@glimmer/env/-/env-0.1.7.tgz#fd2d2b55a9029c6b37a6c935e8c8871ae70dfa07"
integrity sha1-/S0rVakCnGs3psk16MiHGucN+gc=
-"@glimmer/interfaces@^0.36.6":
- version "0.36.6"
- resolved "https://registry.yarnpkg.com/@glimmer/interfaces/-/interfaces-0.36.6.tgz#07350f321988fd3cf2c41a96fc787ea84b4886fa"
- integrity sha512-JM+oc791Zwo3vyPEh5+MwUOug3Fv7lEa3ty0JdA7GkjSRruZpmMf8DvWAKXna2DJxNLZTPJgcyQ57Xy0ItT7Ow==
- dependencies:
- "@glimmer/wire-format" "^0.36.6"
-
"@glimmer/interfaces@^0.38.1":
version "0.38.1"
resolved "https://registry.yarnpkg.com/@glimmer/interfaces/-/interfaces-0.38.1.tgz#5b1c174363396b99d6a6bddb35538151e4c4c989"
@@ -905,6 +1043,11 @@
"@glimmer/wire-format" "^0.38.1"
"@simple-dom/interface" "1.4.0"
+"@glimmer/interfaces@^0.42.0":
+ version "0.42.0"
+ resolved "https://registry.yarnpkg.com/@glimmer/interfaces/-/interfaces-0.42.0.tgz#525f5352dd78011eef7b3eb0e3fb61b981c94319"
+ integrity sha512-lZlydeRRK3yL6pco0gCstPVuC5XYjBUtql1vSvWTRd+MUO0Chg8kxIvduFVg6f+Xfr1kqWd2YQq1MCMdmfzfvg==
+
"@glimmer/resolver@^0.4.1":
version "0.4.3"
resolved "https://registry.yarnpkg.com/@glimmer/resolver/-/resolver-0.4.3.tgz#b1baae5c3291b4621002ccf8d7870466097e841d"
@@ -912,16 +1055,6 @@
dependencies:
"@glimmer/di" "^0.2.0"
-"@glimmer/syntax@^0.36.4":
- version "0.36.6"
- resolved "https://registry.yarnpkg.com/@glimmer/syntax/-/syntax-0.36.6.tgz#d37b2118b279546b3efc94ab3fa5fc52fe5d92f8"
- integrity sha512-VBGUmNMNBK3zYgrSAXzqzTLQx9K1L71ABCaEAreXlKIuYg3NY8p/B5g40tXPhy9gP81Ieyp+fFq7v94XB4Anvw==
- dependencies:
- "@glimmer/interfaces" "^0.36.6"
- "@glimmer/util" "^0.36.6"
- handlebars "^4.0.6"
- simple-html-tokenizer "^0.5.6"
-
"@glimmer/syntax@^0.38.1":
version "0.38.1"
resolved "https://registry.yarnpkg.com/@glimmer/syntax/-/syntax-0.38.1.tgz#625875da5f1e827ad5806fdaa23e2cd00369fda8"
@@ -932,22 +1065,25 @@
handlebars "^4.0.6"
simple-html-tokenizer "^0.5.6"
-"@glimmer/util@^0.36.6":
- version "0.36.6"
- resolved "https://registry.yarnpkg.com/@glimmer/util/-/util-0.36.6.tgz#0b36d571ef2f052011f73f379593385ec1abd308"
- integrity sha512-ljlXwrtg3yhftH/TX8VXNEpqkoweNRumhRq41Y8diGnd7wFWiuiWZUWghTcpAFtilVCOc2e+9WvdvUWTISM1MA==
+"@glimmer/syntax@^0.42.0":
+ version "0.42.0"
+ resolved "https://registry.yarnpkg.com/@glimmer/syntax/-/syntax-0.42.0.tgz#65d38f6f6339e0e00cfbb34bc08ed3ff94f080c6"
+ integrity sha512-H0vydEQjlSqlVyjUmQxOy9BMBdL8OAII4GQjTXHWOQKmQBreZ05Dpr2EbXusiby6E2lMgbcPOqxGXdB/VVUBew==
+ dependencies:
+ "@glimmer/interfaces" "^0.42.0"
+ "@glimmer/util" "^0.42.0"
+ handlebars "^4.0.13"
+ simple-html-tokenizer "^0.5.8"
"@glimmer/util@^0.38.1":
version "0.38.1"
resolved "https://registry.yarnpkg.com/@glimmer/util/-/util-0.38.1.tgz#41ca0544f95ec980bc492f4f0e5a85564964c028"
integrity sha512-WAe+bqJSFBR8EmA/NsxcqWmyi2AfOyW9x1jpWczZHJiBkvssiRF6nre39CJVwwMPlFDtdKzvnRQkWVl8ZBhcNw==
-"@glimmer/wire-format@^0.36.6":
- version "0.36.6"
- resolved "https://registry.yarnpkg.com/@glimmer/wire-format/-/wire-format-0.36.6.tgz#8a139ef0a686a9d054838c20ff2d53bebd289955"
- integrity sha512-WSm5qSVCunDkhzvBEmbDQRtk3vLVbMqkDFb34xBJ8MLWd8Sohirf0ncRoaB5G/q7bPHLOSxzvXOcsSGzV9pNSA==
- dependencies:
- "@glimmer/util" "^0.36.6"
+"@glimmer/util@^0.42.0":
+ version "0.42.0"
+ resolved "https://registry.yarnpkg.com/@glimmer/util/-/util-0.42.0.tgz#3f3a647ecaa16bbe4fc0545923d3b0a527319d78"
+ integrity sha512-rvXxKVb7BoQUvdrEQgxyvIeqGRUFM4LZAc7X1OmIpMnoaEh3fyx/e8Bz0blF0Yk6QvHpfV/GKirhlGmfum/ISA==
"@glimmer/wire-format@^0.38.1":
version "0.38.1"
@@ -1216,6 +1352,11 @@
resolved "https://registry.yarnpkg.com/@types/node/-/node-9.6.45.tgz#a9e5cfd026a3abaaf17e3c0318a470da9f2f178e"
integrity sha512-9scD7xI1kpIoMs3gVFMOWsWDyRIQ1AOZwe56i1CQPE6N/P4POYkn9UtW5F66t8C2AIoPtVfOFycQ2r11t3pcyg==
+"@types/q@^1.5.1":
+ version "1.5.2"
+ resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.2.tgz#690a1475b84f2a884fd07cd797c00f5f31356ea8"
+ integrity sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw==
+
"@types/rsvp@*", "@types/rsvp@^4.0.2":
version "4.0.2"
resolved "https://registry.yarnpkg.com/@types/rsvp/-/rsvp-4.0.2.tgz#bf9f72eaa6771292638a85bb8ce1db97e754b371"
@@ -1226,6 +1367,11 @@
resolved "https://registry.yarnpkg.com/@types/sizzle/-/sizzle-2.3.2.tgz#a811b8c18e2babab7d542b3365887ae2e4d9de47"
integrity sha512-7EJYyKTL7tFR8+gDbB6Wwz/arpGa0Mywk1TJbNzKzHtzbwVmY4HR9WqS5VV7dsBUKQmPNr192jHr/VpBluj/hg==
+"@types/symlink-or-copy@^1.2.0":
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/@types/symlink-or-copy/-/symlink-or-copy-1.2.0.tgz#4151a81b4052c80bc2becbae09f3a9ec010a9c7a"
+ integrity sha512-Lja2xYuuf2B3knEsga8ShbOdsfNOtzT73GyJmZyY7eGl2+ajOqrs8yM5ze0fsSoYwvA6bw7/Qr7OZ7PEEmYwWg==
+
"@webassemblyjs/ast@1.7.11":
version "1.7.11"
resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.7.11.tgz#b988582cafbb2b095e8b556526f30c90d057cace"
@@ -1402,10 +1548,10 @@ abbrev@1:
resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==
-abortcontroller-polyfill@^1.2.1:
- version "1.2.6"
- resolved "https://registry.yarnpkg.com/abortcontroller-polyfill/-/abortcontroller-polyfill-1.2.6.tgz#e8cc55ca43dd269723ac02d8d9dd2f34e1c3e229"
- integrity sha512-BP/ixRR9LiVr83IItbONoebJK5nRcHVSHasftOTT8v9VVP9xDud1rmvMwd5KXaKL1LG5sIsX6tUpIZcYYdGJlg==
+abortcontroller-polyfill@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/abortcontroller-polyfill/-/abortcontroller-polyfill-1.3.0.tgz#de69af32ae926c210b7efbcc29bf644ee4838b00"
+ integrity sha512-lbWQgf+eRvku3va8poBlDBO12FigTQr9Zb7NIjXrePrhxWVKdCP2wbDl1tLDaYa18PWTom3UEWwdH13S46I+yA==
accepts@~1.3.4, accepts@~1.3.5:
version "1.3.5"
@@ -1437,6 +1583,14 @@ acorn-globals@^4.1.0:
acorn "^6.0.1"
acorn-walk "^6.0.1"
+acorn-globals@^4.3.0:
+ version "4.3.4"
+ resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.4.tgz#9fa1926addc11c97308c4e66d7add0d40c3272e7"
+ integrity sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==
+ dependencies:
+ acorn "^6.0.1"
+ acorn-walk "^6.0.1"
+
acorn-jsx@^3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b"
@@ -1469,6 +1623,11 @@ acorn@^6.0.1:
resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.1.1.tgz#7d25ae05bb8ad1f9b699108e1094ecd7884adc1f"
integrity sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA==
+acorn@^6.0.2:
+ version "6.3.0"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.3.0.tgz#0087509119ffa4fc0a0041d1e93a417e68cb856e"
+ integrity sha512-/czfa8BwS88b9gWQVhc8eknunSA2DoJpJyTQkhheIf5E48u1N0R4q/YxxsAeqRrmK9TQ/uYfgLDfZo91UlANIA==
+
after@0.8.2:
version "0.8.2"
resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f"
@@ -1593,6 +1752,14 @@ anymatch@^2.0.0:
micromatch "^3.1.4"
normalize-path "^2.1.1"
+anymatch@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.0.tgz#e609350e50a9313b472789b2f14ef35808ee14d6"
+ integrity sha512-Ozz7l4ixzI7Oxj2+cw+p0tVUt27BpaJ+1+q1TCeANWxHpvyn2+Un+YamBdfKu0uh8xLodGhoa1v7595NhKDAuA==
+ dependencies:
+ normalize-path "^3.0.0"
+ picomatch "^2.0.4"
+
aot-test-generators@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/aot-test-generators/-/aot-test-generators-0.1.0.tgz#43f0f615f97cb298d7919c1b0b4e6b7310b03cd0"
@@ -1724,6 +1891,11 @@ asn1@~0.2.3:
dependencies:
safer-buffer "~2.1.0"
+assert-never@^1.1.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/assert-never/-/assert-never-1.2.0.tgz#e6597ed9e357f7e62c074dfa7c71e30ed7b67a8b"
+ integrity sha512-61QPxh2lfV5j2dBsEtwhz8/sUj+baAIuCpQxeWorGeMxlTkbeyGyq7igxJB8yij1JdzUhyoiekNHMXrMYnkjvA==
+
assert-plus@1.0.0, assert-plus@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
@@ -1746,6 +1918,11 @@ assign-symbols@^1.0.0:
resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"
integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=
+ast-types@0.13.2:
+ version "0.13.2"
+ resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.13.2.tgz#df39b677a911a83f3a049644fb74fdded23cea48"
+ integrity sha512-uWMHxJxtfj/1oZClOxDEV1sQ1HCDkA4MG8Gr69KKeBjEVH0R84WlejZ0y2DcwyBlpAEMltmVYkVgqfLFb2oyiA==
+
ast-types@0.9.6:
version "0.9.6"
resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.9.6.tgz#102c9e9e9005d3e7e3829bf0c4fa24ee862ee9b9"
@@ -2035,6 +2212,16 @@ babel-helpers@^6.24.1:
babel-runtime "^6.22.0"
babel-template "^6.24.1"
+babel-loader@^8.0.6:
+ version "8.0.6"
+ resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.0.6.tgz#e33bdb6f362b03f4bb141a0c21ab87c501b70dfb"
+ integrity sha512-4BmWKtBOBm13uoUwd08UwjZlaw3O9GWf456R9j+5YykFZ6LUIjIKLc0zEZf+hauxPOJs96C8k6FvYD09vWzhYw==
+ dependencies:
+ find-cache-dir "^2.0.0"
+ loader-utils "^1.0.2"
+ mkdirp "^0.5.1"
+ pify "^4.0.1"
+
babel-messages@^6.23.0:
version "6.23.0"
resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e"
@@ -2070,12 +2257,12 @@ babel-plugin-debug-macros@^0.3.0:
dependencies:
semver "^5.3.0"
-babel-plugin-ember-modules-api-polyfill@^2.11.0:
- version "2.11.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-ember-modules-api-polyfill/-/babel-plugin-ember-modules-api-polyfill-2.11.0.tgz#3a67bdeb05a929a96776b45fa784bd3798517acc"
- integrity sha512-S3bw77LglkWIstoF+hBLyRPyyNAUsdzqK6zLxktuM6EniVt06st/ikhPDUttMWixS2LNA+jnBfGerYO1D/VvDw==
+babel-plugin-ember-modules-api-polyfill@^2.12.0:
+ version "2.12.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-ember-modules-api-polyfill/-/babel-plugin-ember-modules-api-polyfill-2.12.0.tgz#a5e703205ba4e625a7fab9bb1aea64ef3222cf75"
+ integrity sha512-ZQU4quX0TJ1yYyosPy5PFigKdCFEVHJ6H0b3hwjxekIP9CDwzk0OhQuKhCOPti+d52VWjjCjxu2BrXEih29mFw==
dependencies:
- ember-rfc176-data "^0.3.11"
+ ember-rfc176-data "^0.3.12"
babel-plugin-ember-modules-api-polyfill@^2.6.0, babel-plugin-ember-modules-api-polyfill@^2.7.0:
version "2.7.0"
@@ -2102,6 +2289,11 @@ babel-plugin-htmlbars-inline-precompile@^0.2.5:
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-htmlbars-inline-precompile@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-htmlbars-inline-precompile/-/babel-plugin-htmlbars-inline-precompile-1.0.0.tgz#a9d2f6eaad8a3f3d361602de593a8cbef8179c22"
+ integrity sha512-4jvKEHR1bAX03hBDZ94IXsYCj3bwk9vYsn6ux6JZNL2U5pvzCWjqyrGahfsGNrhERyxw8IqcirOi9Q6WCo3dkQ==
+
babel-plugin-module-resolver@^3.1.1:
version "3.2.0"
resolved "https://registry.yarnpkg.com/babel-plugin-module-resolver/-/babel-plugin-module-resolver-3.2.0.tgz#ddfa5e301e3b9aa12d852a9979f18b37881ff5a7"
@@ -2577,6 +2769,11 @@ binary-extensions@^1.0.0:
resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.0.tgz#9523e001306a32444b907423f1de2164222f6ab1"
integrity sha512-EgmjVLMn22z7eGGv3kcnHwSnJXmFHjISTY9E/S5lIcTD3Oxw05QTcBLNkJFzcb3cNueUdF/IN4U+d78V0zO8Hw==
+binary-extensions@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.0.0.tgz#23c0df14f6a88077f5f986c0d167ec03c3d5537c"
+ integrity sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==
+
"binaryextensions@1 || 2":
version "2.1.2"
resolved "https://registry.yarnpkg.com/binaryextensions/-/binaryextensions-2.1.2.tgz#c83c3d74233ba7674e4f313cb2a2b70f54e94b7c"
@@ -2628,7 +2825,7 @@ body@^5.1.0:
raw-body "~1.1.0"
safe-json-parse "~1.0.1"
-boolbase@~1.0.0:
+boolbase@^1.0.0, boolbase@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e"
integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24=
@@ -2701,6 +2898,13 @@ braces@^2.3.1, braces@^2.3.2:
split-string "^3.0.2"
to-regex "^3.0.1"
+braces@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
+ integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
+ dependencies:
+ fill-range "^7.0.1"
+
broccoli-amd-funnel@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/broccoli-amd-funnel/-/broccoli-amd-funnel-2.0.1.tgz#dbdbfd28841731342d538126567c25bea3f15310"
@@ -2844,6 +3048,24 @@ broccoli-concat@^3.2.2, broccoli-concat@^3.7.1, broccoli-concat@^3.7.3:
lodash.uniq "^4.2.0"
walk-sync "^0.3.2"
+broccoli-concat@^3.7.4:
+ version "3.7.4"
+ resolved "https://registry.yarnpkg.com/broccoli-concat/-/broccoli-concat-3.7.4.tgz#7371e846eb7a97cb44ccff10f68582bcadcafacd"
+ integrity sha512-9gRv1tyCQuq2+48DT9DQyxRNLOuwDtHybDeYuWA3g26HFqZd0PGAOeXcLXHpKRhxzrEbU6Gm28dZ/KolMr04cQ==
+ 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.6.2"
+ lodash.omit "^4.1.0"
+ lodash.uniq "^4.2.0"
+ walk-sync "^0.3.2"
+
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"
@@ -2948,7 +3170,7 @@ broccoli-funnel@^2.0.0, broccoli-funnel@^2.0.1, broccoli-funnel@^2.0.2:
symlink-or-copy "^1.0.0"
walk-sync "^0.3.1"
-broccoli-kitchen-sink-helpers@^0.2.0, broccoli-kitchen-sink-helpers@^0.2.5:
+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=
@@ -3058,7 +3280,7 @@ broccoli-persistent-filter@^1.1.5, broccoli-persistent-filter@^1.1.6, broccoli-p
symlink-or-copy "^1.0.1"
walk-sync "^0.3.1"
-broccoli-persistent-filter@^2.0.0, broccoli-persistent-filter@^2.1.1, broccoli-persistent-filter@^2.2.1:
+broccoli-persistent-filter@^2.1.1, broccoli-persistent-filter@^2.2.1:
version "2.2.2"
resolved "https://registry.yarnpkg.com/broccoli-persistent-filter/-/broccoli-persistent-filter-2.2.2.tgz#e0180e75ede5dd05d4c702f24f6c049e93fba915"
integrity sha512-PW12RD1yY+x5SASUADuUMJce+dVSmjBO3pV1rLNHmT1C31rp1P++TvX7AgUObFmGhL7qlwviSdhMbBkY1v3G2w==
@@ -3077,6 +3299,26 @@ broccoli-persistent-filter@^2.0.0, broccoli-persistent-filter@^2.1.1, broccoli-p
symlink-or-copy "^1.0.1"
walk-sync "^1.0.0"
+broccoli-persistent-filter@^2.2.2, broccoli-persistent-filter@^2.3.1:
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/broccoli-persistent-filter/-/broccoli-persistent-filter-2.3.1.tgz#4a052e0e0868b344c3a2977e35a3d497aa9eca72"
+ integrity sha512-hVsmIgCDrl2NFM+3Gs4Cr2TA6UPaIZip99hN8mtkaUPgM8UeVnCbxelCvBjUBHo0oaaqP5jzqqnRVvb568Yu5g==
+ dependencies:
+ async-disk-cache "^1.2.1"
+ async-promise-queue "^1.0.3"
+ broccoli-plugin "^1.0.0"
+ fs-tree-diff "^2.0.0"
+ hash-for-dep "^1.5.0"
+ 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"
+ sync-disk-cache "^1.3.3"
+ walk-sync "^1.0.0"
+
broccoli-plugin@1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/broccoli-plugin/-/broccoli-plugin-1.1.0.tgz#73e2cfa05f8ea1e3fc1420c40c3d9e7dc724bf02"
@@ -3157,16 +3399,7 @@ broccoli-sri-hash@^2.1.0:
sri-toolbox "^0.2.0"
symlink-or-copy "^1.0.1"
-broccoli-static-compiler@^0.1.4:
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/broccoli-static-compiler/-/broccoli-static-compiler-0.1.4.tgz#713d18f08eb3131530575a0c5ad2951bba10af41"
- integrity sha1-cT0Y8I6zExUwV1oMWtKVG7oQr0E=
- dependencies:
- broccoli-kitchen-sink-helpers "^0.2.0"
- broccoli-writer "^0.1.1"
- mkdirp "^0.3.5"
-
-broccoli-stew@^1.4.2, broccoli-stew@^1.5.0:
+broccoli-stew@^1.5.0:
version "1.6.0"
resolved "https://registry.yarnpkg.com/broccoli-stew/-/broccoli-stew-1.6.0.tgz#01f6d92806ed6679ddbe48d405066a0e164dfbef"
integrity sha512-sUwCJNnYH4Na690By5xcEMAZqKgquUQnMAEuIiL3Z2k63mSw9Xg+7Ew4wCrFrMmXMcLpWjZDOm6Yqnq268N+ZQ==
@@ -3206,6 +3439,26 @@ broccoli-stew@^2.0.0:
symlink-or-copy "^1.2.0"
walk-sync "^0.3.3"
+broccoli-stew@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/broccoli-stew/-/broccoli-stew-2.1.0.tgz#ba73add17fda3b9b01d8cfb343a8b613b7136a0a"
+ integrity sha512-tgCkuTWYl4uf7k7ib2D79KFEj2hCgnTUNPMnrCoAha0/4bywcNccmaZVWtL9Ex37yX5h5eAbnM/ak2ULoMwSSw==
+ 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-string-replace@^0.1.2:
version "0.1.2"
resolved "https://registry.yarnpkg.com/broccoli-string-replace/-/broccoli-string-replace-0.1.2.tgz#1ed92f85680af8d503023925e754e4e33676b91f"
@@ -3225,27 +3478,16 @@ broccoli-style-manifest@^1.5.2:
rsvp "^4.8.2"
walk-sync "^0.3.1"
-broccoli-svg-optimizer@1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/broccoli-svg-optimizer/-/broccoli-svg-optimizer-1.1.0.tgz#5d6e03310298c7a1d22d373508beedc6258590cc"
- integrity sha512-cFwZLK4xHreyTPRl1D2yVHnba5UhiS0EE7j42z05Q22aPFOmRrpMIJNiBnrfaPBmskpQYseZLnOYdwWP8Pj6Dw==
- dependencies:
- broccoli-persistent-filter "^1.2.0"
- json-stable-stringify "^1.0.1"
- lodash "^4.17.10"
- rsvp "^4.8.2"
- svgo "0.6.6"
-
-broccoli-symbolizer@^0.6.0:
- version "0.6.0"
- resolved "https://registry.yarnpkg.com/broccoli-symbolizer/-/broccoli-symbolizer-0.6.0.tgz#1ece00fba329f19ab42d920350a5f2014f8d0b52"
- integrity sha512-ZwVDX+kkJ7/TXdhl2ChRZARNAeBiru1+53HHafN5UcnpIzJaE+CbyuSQdxEtnIakSKIZtgI/J6uJIffGDgft3g==
+broccoli-svg-optimizer@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/broccoli-svg-optimizer/-/broccoli-svg-optimizer-2.0.0.tgz#22b6920bee5e126e86b95ae0cdf8ad6cc4be3735"
+ integrity sha512-zIbUmBeSxl9r18Mqjl0OArvXyAKuSDd4FFVcH5HmiX2/1SFUofL4JN5g5qhP/GqQnLTEVdwr61LawSGDZHcqOg==
dependencies:
- broccoli-concat "^3.2.2"
- broccoli-persistent-filter "^1.2.0"
- cheerio "^0.22.0"
+ broccoli-persistent-filter "^2.3.1"
json-stable-stringify "^1.0.1"
- lodash "^4.17.10"
+ lodash "^4.17.15"
+ rsvp "^4.8.5"
+ svgo "1.3.0"
broccoli-templater@^2.0.1:
version "2.0.2"
@@ -3275,14 +3517,6 @@ broccoli-uglify-sourcemap@^2.1.1:
walk-sync "^0.3.2"
workerpool "^2.3.0"
-broccoli-writer@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/broccoli-writer/-/broccoli-writer-0.1.1.tgz#d4d71aa8f2afbc67a3866b91a2da79084b96ab2d"
- integrity sha1-1NcaqPKvvGejhmuRotp5CEuWqy0=
- dependencies:
- quick-temp "^0.1.0"
- rsvp "^3.0.6"
-
broccoli@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/broccoli/-/broccoli-2.1.0.tgz#5c896691bd440bdb60afbb56c79d08abfe8aa620"
@@ -3552,6 +3786,13 @@ calculate-cache-key-for-tree@^1.1.0:
dependencies:
json-stable-stringify "^1.0.1"
+calculate-cache-key-for-tree@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/calculate-cache-key-for-tree/-/calculate-cache-key-for-tree-2.0.0.tgz#7ac57f149a4188eacb0a45b210689215d3fef8d6"
+ integrity sha512-Quw8a6y8CPmRd6eU+mwypktYCwUcf8yVFIRbNZ6tPQEckX9yd+EBVEPC/GSZZrMWH9e7Vz4pT7XhpmyApRByLQ==
+ dependencies:
+ json-stable-stringify "^1.0.1"
+
call-me-maybe@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b"
@@ -3742,7 +3983,22 @@ cheerio@0.22.0, cheerio@^0.22.0:
lodash.reject "^4.4.0"
lodash.some "^4.4.0"
-chokidar@^2.0.0, chokidar@^2.0.2:
+"chokidar@>=2.0.0 <4.0.0":
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.1.0.tgz#ff23d077682a90eadd209bfa76eb10ed6d359668"
+ integrity sha512-6vZfo+7W0EOlbSo0nhVKMz4yyssrwiPbBZ8wj1lq8/+l4ZhGZ2U4Md7PspvmijXp1a26D3B7AHEBmIB7aVtaOQ==
+ dependencies:
+ anymatch "^3.1.0"
+ braces "^3.0.2"
+ glob-parent "^5.0.0"
+ is-binary-path "^2.1.0"
+ is-glob "^4.0.1"
+ normalize-path "^3.0.0"
+ readdirp "^3.1.1"
+ optionalDependencies:
+ fsevents "^2.0.6"
+
+chokidar@^2.0.2:
version "2.1.2"
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.2.tgz#9c23ea40b01638439e0513864d362aeacc5ad058"
integrity sha512-IwXUx0FXc5ibYmPC2XeEj5mpXoV66sR+t3jqu2NS2GYwCktt3KF1/Qqjws/NkegajBA4RbZ5+DDwlOiJsxDHEg==
@@ -3796,13 +4052,6 @@ circular-json@^0.3.1:
resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66"
integrity sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==
-clap@^1.0.9:
- version "1.2.3"
- resolved "https://registry.yarnpkg.com/clap/-/clap-1.2.3.tgz#4f36745b32008492557f46412d66d50cb99bce51"
- integrity sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA==
- dependencies:
- chalk "^1.1.3"
-
class-utils@^0.3.5:
version "0.3.6"
resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463"
@@ -3919,11 +4168,13 @@ co@^4.6.0:
resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=
-coa@~1.0.1:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/coa/-/coa-1.0.4.tgz#a9ef153660d6a86a8bdec0289a5c684d217432fd"
- integrity sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0=
+coa@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3"
+ integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==
dependencies:
+ "@types/q" "^1.5.1"
+ chalk "^2.4.1"
q "^1.1.2"
code-point-at@^1.0.0:
@@ -3971,11 +4222,6 @@ colors@^1.1.2:
resolved "https://registry.yarnpkg.com/colors/-/colors-1.3.3.tgz#39e005d546afe01e01f9c4ca8fa50f686a01205d"
integrity sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg==
-colors@~1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63"
- integrity sha1-FopHAXVran9RoSzgyXv6KMCE7WM=
-
combined-stream@^1.0.6, combined-stream@~1.0.6:
version "1.0.7"
resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.7.tgz#2d1d24317afb8abe95d6d2c0b07b57813539d828"
@@ -4357,6 +4603,11 @@ copy-descriptor@^0.1.0:
resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d"
integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=
+core-js@2.4.1:
+ version "2.4.1"
+ resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e"
+ integrity sha1-TekR5mew6ukSTjQlS1OupvxhjT4=
+
core-js@^2.4.0, core-js@^2.5.0, core-js@^2.5.7:
version "2.6.5"
resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.5.tgz#44bc8d249e7fb2ff5d00e0341a7ffb94fbf67895"
@@ -4508,6 +4759,21 @@ cson-parser@^1.1.0:
dependencies:
coffee-script "^1.10.0"
+css-select-base-adapter@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7"
+ integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==
+
+css-select@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.0.2.tgz#ab4386cec9e1f668855564b17c3733b43b2a5ede"
+ integrity sha512-dSpYaDVoWaELjvZ3mS6IKZM/y2PMPa/XYoEfYNZePL4U/XgyxZNroHEHReDx/d+VgXh9VbCTtFqLkFbmeqeaRQ==
+ dependencies:
+ boolbase "^1.0.0"
+ css-what "^2.1.2"
+ domutils "^1.7.0"
+ nth-check "^1.0.2"
+
css-select@~1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858"
@@ -4518,7 +4784,23 @@ css-select@~1.2.0:
domutils "1.5.1"
nth-check "~1.0.1"
-css-what@2.1:
+css-tree@1.0.0-alpha.29:
+ version "1.0.0-alpha.29"
+ resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.29.tgz#3fa9d4ef3142cbd1c301e7664c1f352bd82f5a39"
+ integrity sha512-sRNb1XydwkW9IOci6iB2xmy8IGCj6r/fr+JWitvJ2JxQRPzN3T4AGGVWCMlVmVwM1gtgALJRmGIlWv5ppnGGkg==
+ dependencies:
+ mdn-data "~1.1.0"
+ source-map "^0.5.3"
+
+css-tree@1.0.0-alpha.33:
+ version "1.0.0-alpha.33"
+ resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.33.tgz#970e20e5a91f7a378ddd0fc58d0b6c8d4f3be93e"
+ integrity sha512-SPt57bh5nQnpsTBsx/IXbO14sRc9xXu5MtMAVuo0BaQQmyf0NupNPPSoMaqiAF5tDFafYsTkfeH4Q/HCKXkg4w==
+ dependencies:
+ mdn-data "2.0.4"
+ source-map "^0.5.3"
+
+css-what@2.1, css-what@^2.1.2:
version "2.1.3"
resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2"
integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==
@@ -4528,19 +4810,23 @@ css.escape@^1.5.1:
resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb"
integrity sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s=
-csso@~2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/csso/-/csso-2.0.0.tgz#178b43a44621221c27756086f531e02f42900ee8"
- integrity sha1-F4tDpEYhIhwndWCG9THgL0KQDug=
+csso@^3.5.1:
+ version "3.5.1"
+ resolved "https://registry.yarnpkg.com/csso/-/csso-3.5.1.tgz#7b9eb8be61628973c1b261e169d2f024008e758b"
+ integrity sha512-vrqULLffYU1Q2tLdJvaCYbONStnfkfimRxXNaGjxMldI0C7JPBC4rB1RyjhfdZ4m1frm8pM9uRPKH3d2knZ8gg==
dependencies:
- clap "^1.0.9"
- source-map "^0.5.3"
+ css-tree "1.0.0-alpha.29"
cssom@0.3.x, "cssom@>= 0.3.0 < 0.4.0", "cssom@>= 0.3.2 < 0.4.0":
version "0.3.6"
resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.6.tgz#f85206cee04efa841f3c5982a74ba96ab20d65ad"
integrity sha512-DtUeseGk9/GBW0hl0vVPpU22iHL6YB5BUX7ml1hB+GMpo0NX5G4voX3kdWiMSEguFtcW3Vh3djqNF4aIe6ne0A==
+cssom@^0.3.4:
+ version "0.3.8"
+ resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a"
+ integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==
+
"cssstyle@>= 0.2.29 < 0.3.0":
version "0.2.37"
resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-0.2.37.tgz#541097234cb2513c83ceed3acddc27ff27987d54"
@@ -4555,6 +4841,13 @@ cssstyle@^1.0.0:
dependencies:
cssom "0.3.x"
+cssstyle@^1.1.1:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.4.0.tgz#9d31328229d3c565c61e586b02041a28fccdccf1"
+ integrity sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==
+ dependencies:
+ cssom "0.3.x"
+
ctype@0.5.3:
version "0.5.3"
resolved "https://registry.yarnpkg.com/ctype/-/ctype-0.5.3.tgz#82c18c2461f74114ef16c135224ad0b9144ca12f"
@@ -4591,7 +4884,7 @@ dashdash@^1.12.0:
dependencies:
assert-plus "^1.0.0"
-data-urls@^1.0.0:
+data-urls@^1.0.0, data-urls@^1.0.1:
version "1.1.0"
resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-1.1.0.tgz#15ee0582baa5e22bb59c77140da8f9c76963bbfe"
integrity sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==
@@ -4704,7 +4997,7 @@ defer-to-connect@^1.0.1:
resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.0.2.tgz#4bae758a314b034ae33902b5aac25a8dd6a8633e"
integrity sha512-k09hcQcTDY+cwgiwa6PYKLm3jlagNzQ+RSvhjzESOGOx+MNOuXkxTfEvPrO1IOQ81tArCFYQgi631clB70RpQw==
-define-properties@^1.1.2:
+define-properties@^1.1.2, define-properties@^1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==
@@ -4886,7 +5179,7 @@ domutils@1.5, domutils@1.5.1:
dom-serializer "0"
domelementtype "1"
-domutils@^1.5.1:
+domutils@^1.5.1, domutils@^1.7.0:
version "1.7.0"
resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a"
integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==
@@ -4979,7 +5272,7 @@ ember-app-scheduler@^1.0.5:
ember-cli-babel "^7.1.3"
ember-compatibility-helpers "^1.1.2"
-ember-assign-polyfill@^2.5.0:
+ember-assign-polyfill@^2.5.0, ember-assign-polyfill@^2.6.0:
version "2.6.0"
resolved "https://registry.yarnpkg.com/ember-assign-polyfill/-/ember-assign-polyfill-2.6.0.tgz#07847e3357ee35b33f886a0b5fbec6873f6860eb"
integrity sha512-Y8NzOmHI/g4PuJ+xC14eTYiQbigNYddyHB8FY2kuQMxThTEIDE7SJtgttJrYYcPciOu0Tnb5ff36iO46LeiXkw==
@@ -4995,15 +5288,18 @@ ember-assign-polyfill@~2.4.0:
ember-cli-babel "^6.6.0"
ember-cli-version-checker "^2.0.0"
-ember-auto-import@^1.2.19:
- version "1.2.21"
- resolved "https://registry.yarnpkg.com/ember-auto-import/-/ember-auto-import-1.2.21.tgz#e02ded183844faba66c3f2af97028ef35175b837"
- integrity sha512-coHnqO3mRnlj/JAQSQBEqzX2wL8rH5YrfEJMzk1102X9MdSX1CWeaUYBcyjvI/pG8fHUhv+4VsD6rQuhTUyZUQ==
+ember-auto-import@^1.5.2:
+ version "1.5.2"
+ resolved "https://registry.yarnpkg.com/ember-auto-import/-/ember-auto-import-1.5.2.tgz#e97ed96b600caa6090ffed83e4611c3e7ec9bad7"
+ integrity sha512-skVQpfdc6G5OVRsyemDn3vI1nj/iBBgnoqRLRka0ZbDT2GqelmyJ86bp+Bd/ztJe45Le3we+LXbR7T54RU5A9w==
dependencies:
"@babel/core" "^7.1.6"
+ "@babel/preset-env" "^7.0.0"
"@babel/traverse" "^7.1.6"
"@babel/types" "^7.1.6"
+ "@embroider/core" "^0.4.3"
babel-core "^6.26.3"
+ babel-loader "^8.0.6"
babel-plugin-syntax-dynamic-import "^6.18.0"
babel-template "^6.26.0"
babylon "^6.18.0"
@@ -5014,7 +5310,7 @@ ember-auto-import@^1.2.19:
enhanced-resolve "^4.0.0"
fs-extra "^6.0.1"
fs-tree-diff "^1.0.0"
- handlebars "~4.0.13"
+ handlebars "~4.1.2"
js-string-escape "^1.0.1"
lodash "^4.17.10"
mkdirp "^0.5.1"
@@ -5022,6 +5318,7 @@ ember-auto-import@^1.2.19:
resolve "^1.7.1"
rimraf "^2.6.2"
symlink-or-copy "^1.2.0"
+ typescript-memoize "^1.0.0-alpha.3"
walk-sync "^0.3.3"
webpack "~4.28"
@@ -5042,62 +5339,67 @@ ember-cli-addon-docs-esdoc@^0.2.1:
walk-sync "^0.3.2"
ember-cli-addon-docs@^0.6.5:
- version "0.6.6"
- resolved "https://registry.yarnpkg.com/ember-cli-addon-docs/-/ember-cli-addon-docs-0.6.6.tgz#4679296a5f15d701a0f938549874a10116764ce8"
- integrity sha512-aU4FM/y2xjlr3C/67lmB8AaWE8svF8FL4yLA8r8WKOnsPMKAGuyVioMdg5fRTU0mjtC6jXUUPWTLGxD94PrSYg==
+ version "0.6.14"
+ resolved "https://registry.yarnpkg.com/ember-cli-addon-docs/-/ember-cli-addon-docs-0.6.14.tgz#7d7801f0ffca6df00b86a11d58101c8523e6d44b"
+ integrity sha512-kfwGcoeNN6ban1ghHdaIqlfvMkj7T9oWoiel7kHknbgcukC5GX67G1w5CaEVMtmAK69kIlJDzo7VB+hAUnCthw==
dependencies:
- "@glimmer/syntax" "^0.36.4"
+ "@glimmer/syntax" "^0.42.0"
broccoli-bridge "^1.0.0"
broccoli-caching-writer "^3.0.3"
broccoli-debug "^0.6.4"
broccoli-filter "^1.2.4"
- broccoli-funnel "^2.0.1"
+ broccoli-funnel "^2.0.2"
broccoli-merge-trees "^3.0.1"
- broccoli-persistent-filter "^2.0.0"
+ broccoli-persistent-filter "^2.3.1"
broccoli-plugin "^1.3.1"
broccoli-source "^1.1.0"
broccoli-stew "^2.0.0"
- ember-auto-import "^1.2.19"
+ chalk "^2.4.2"
+ ember-assign-polyfill "^2.6.0"
+ ember-auto-import "^1.5.2"
ember-cli-autoprefixer "^0.8.1"
- ember-cli-babel "^6.16.0"
+ ember-cli-babel "^7.7.3"
ember-cli-clipboard "^0.11.1"
- ember-cli-htmlbars "^3.0.0"
- ember-cli-htmlbars-inline-precompile "^1.0.3"
+ ember-cli-htmlbars "^3.0.1"
+ ember-cli-htmlbars-inline-precompile "^2.1.0"
ember-cli-sass "10.0.0"
ember-cli-string-helpers "^1.9.0"
+ ember-cli-string-utils "^1.1.0"
ember-cli-tailwind "^0.6.2"
- ember-code-snippet "^2.4.0"
- ember-component-css "^0.6.7"
- ember-concurrency "^0.8.21"
+ ember-code-snippet "^2.4.1"
+ ember-component-css "^0.7.4"
+ ember-concurrency "^0.9.0 || ^0.10.0 || ^1.0.0"
ember-data "2.x - 3.x"
- ember-fetch "^6.2.0"
+ ember-fetch "^6.7.0"
ember-fetch-adapter "^0.4.3"
ember-href-to "^1.15.1"
ember-keyboard "^4.0.0"
- ember-modal-dialog "3.0.0-beta.3"
- ember-responsive "^3.0.0-beta.1"
- ember-router-scroll "^1.0.0"
- ember-svg-jar "^1.2.2"
+ ember-modal-dialog "^3.0.0-beta.4"
+ ember-responsive "^3.0.5"
+ ember-router-generator "^2.0.0"
+ ember-router-scroll "^1.2.1"
+ ember-svg-jar "^2.1.0"
ember-tether "^1.0.0-beta.2"
ember-truth-helpers "^2.1.0"
- esm "^3.2.4"
+ esm "^3.2.25"
execa "^1.0.0"
fs-extra "^7.0.0"
- git-repo-info "^2.0.0"
+ git-repo-info "^2.1.0"
highlight.js "^9.14.2"
hosted-git-info "^2.7.1"
html-entities "^1.2.1"
inflected "^2.0.3"
jsdom "^11.12.0"
json-api-serializer "^1.13.0"
- liquid-fire "^0.29.5"
- lodash "^4.17.11"
- lunr "^2.3.3"
+ liquid-fire "^0.29.5 || ^0.30.0"
+ lodash "^4.17.15"
+ lunr "^2.3.6"
marked "^0.5.0"
+ pad-start "^1.0.2"
parse-git-config "^2.0.3"
quick-temp "^0.1.8"
- resolve "^1.8.1"
- sass "^1.17.0"
+ resolve "^1.12.0"
+ sass "^1.22.10"
semver "^5.5.1"
striptags "^3.1.1"
walk-sync "^0.3.3"
@@ -5140,7 +5442,7 @@ ember-cli-babel@^6.0.0-beta.4, ember-cli-babel@^6.0.0-beta.7, ember-cli-babel@^6
ember-cli-version-checker "^2.1.2"
semver "^5.5.0"
-ember-cli-babel@^7.1.0, ember-cli-babel@^7.1.2, ember-cli-babel@^7.1.3, ember-cli-babel@^7.1.4, ember-cli-babel@^7.2.0:
+ember-cli-babel@^7.1.0, ember-cli-babel@^7.1.2, ember-cli-babel@^7.1.3, ember-cli-babel@^7.1.4:
version "7.5.0"
resolved "https://registry.yarnpkg.com/ember-cli-babel/-/ember-cli-babel-7.5.0.tgz#af654dcef23630391d2efe85aaa3bdf8b6ca17b7"
integrity sha512-wWXqPPQNRxCtEHvYaLBNiIVgCVCy8YqZ0tM8Dpql1D5nGnPDbaK073sS1vlOYBP7xe5Ab2nXhvQkFwUxFacJ2g==
@@ -5164,10 +5466,10 @@ ember-cli-babel@^7.1.0, ember-cli-babel@^7.1.2, ember-cli-babel@^7.1.3, ember-cl
ensure-posix-path "^1.0.2"
semver "^5.5.0"
-ember-cli-babel@^7.10.0:
- version "7.10.0"
- resolved "https://registry.yarnpkg.com/ember-cli-babel/-/ember-cli-babel-7.10.0.tgz#5505254b21f3c98400c91bf565dc1c0cf408b6b4"
- integrity sha512-eNgPXobC+Pke5L3XzoJ0BXbb2+eYzZI+LljqbwXNuG4q63pF000aARFpTQ0p/NWkfGQxKi2L6tVIa1ZOYdQS+A==
+ember-cli-babel@^7.10.0, ember-cli-babel@^7.2.0, ember-cli-babel@^7.7.3:
+ version "7.11.0"
+ resolved "https://registry.yarnpkg.com/ember-cli-babel/-/ember-cli-babel-7.11.0.tgz#a2f4e4f123a4690968b512b87b4ff4bfa57ec244"
+ integrity sha512-ykEsr7XoEPaADCBCJMViycCok1grtBRGvZ1k/atlL/gQYCQ1W4E4OROY/Mm2YBgyLftBv6buH7IZsULyQRZUmg==
dependencies:
"@babel/core" "^7.0.0"
"@babel/plugin-proposal-class-properties" "^7.3.4"
@@ -5179,7 +5481,7 @@ ember-cli-babel@^7.10.0:
"@babel/runtime" "^7.2.0"
amd-name-resolver "^1.2.1"
babel-plugin-debug-macros "^0.3.0"
- babel-plugin-ember-modules-api-polyfill "^2.11.0"
+ babel-plugin-ember-modules-api-polyfill "^2.12.0"
babel-plugin-module-resolver "^3.1.1"
broccoli-babel-transpiler "^7.1.2"
broccoli-debug "^0.6.4"
@@ -5318,6 +5620,17 @@ ember-cli-htmlbars-inline-precompile@^1.0.0, ember-cli-htmlbars-inline-precompil
heimdalljs-logger "^0.1.9"
silent-error "^1.1.0"
+ember-cli-htmlbars-inline-precompile@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/ember-cli-htmlbars-inline-precompile/-/ember-cli-htmlbars-inline-precompile-2.1.0.tgz#61b91ff1879d44ae504cadb46fb1f2604995ae08"
+ integrity sha512-BylIHduwQkncPhnj0ZyorBuljXbTzLgRo6kuHf1W+IHFxThFl2xG+r87BVwsqx4Mn9MTgW9SE0XWjwBJcSWd6Q==
+ dependencies:
+ babel-plugin-htmlbars-inline-precompile "^1.0.0"
+ 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.1, ember-cli-htmlbars@^2.0.2:
version "2.0.5"
resolved "https://registry.yarnpkg.com/ember-cli-htmlbars/-/ember-cli-htmlbars-2.0.5.tgz#b5a105429a6bce4f7c9c97b667e3b8926e31397f"
@@ -5338,6 +5651,16 @@ ember-cli-htmlbars@^3.0.0:
json-stable-stringify "^1.0.0"
strip-bom "^3.0.0"
+ember-cli-htmlbars@^3.0.1:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/ember-cli-htmlbars/-/ember-cli-htmlbars-3.1.0.tgz#87806c2a0bca2ab52d4fb8af8e2215c1ca718a99"
+ integrity sha512-cgvRJM73IT0aePUG7oQ/afB7vSRBV3N0wu9BrWhHX2zkR7A7cUBI7KC9VPk6tbctCXoM7BRGsCC4aIjF7yrfXA==
+ dependencies:
+ broccoli-persistent-filter "^2.3.1"
+ hash-for-dep "^1.5.1"
+ json-stable-stringify "^1.0.1"
+ strip-bom "^3.0.0"
+
ember-cli-inject-live-reload@^1.8.2:
version "1.10.2"
resolved "https://registry.yarnpkg.com/ember-cli-inject-live-reload/-/ember-cli-inject-live-reload-1.10.2.tgz#43c59f7f1d1e717772da32e5e81d948fb9fe7c94"
@@ -5621,15 +5944,16 @@ ember-cli@~3.8.1:
watch-detector "^0.1.0"
yam "^1.0.0"
-ember-code-snippet@^2.4.0:
- version "2.4.0"
- resolved "https://registry.yarnpkg.com/ember-code-snippet/-/ember-code-snippet-2.4.0.tgz#3ed901ee0c6458019b67733e923056d5b9f74bc2"
- integrity sha512-MLnUxsbxoW1njWYrIRB0T0AbH8Ng2IJTUMXSmR/40z4Hnu6ykC7sCFJyzxcmdIj6IVPmOcFN7WpOMEfPWjKmIQ==
+ember-code-snippet@^2.4.1:
+ version "2.4.1"
+ resolved "https://registry.yarnpkg.com/ember-code-snippet/-/ember-code-snippet-2.4.1.tgz#4f4416bcfbc6c5e4a7c073158aff92748e31f219"
+ integrity sha512-LQTYH2E2/5cVxEPhL8v1VcXJSd/73735gj3KuRNwCYPK4PS91lpOho6L/1cLACSOg0W2a8YZKgfPAHN7aQGfgw==
dependencies:
broccoli-flatiron "^0.1.3"
broccoli-merge-trees "^1.0.0"
- broccoli-static-compiler "^0.1.4"
- broccoli-writer "^0.1.1"
+ broccoli-plugin "^1.3.1"
+ ember-cli-babel "^7.7.3"
+ ember-cli-htmlbars "^3.0.1"
es6-promise "^1.0.0"
glob "^7.1.3"
@@ -5642,10 +5966,10 @@ ember-compatibility-helpers@^1.1.1, ember-compatibility-helpers@^1.1.2, ember-co
ember-cli-version-checker "^2.1.1"
semver "^5.4.1"
-ember-component-css@^0.6.7:
- version "0.6.7"
- resolved "https://registry.yarnpkg.com/ember-component-css/-/ember-component-css-0.6.7.tgz#dbc6debe5c04a2c0fe8a5edc64303c7324b33945"
- integrity sha512-nZbGVHr3TI5uBb6mGqAvB2QJo8VQcmXTLCy/PnJ/Lyq3sKZCjg5dQE66X+TcHPG3IWEMOmCe/1vaK4HPtE8gfA==
+ember-component-css@^0.7.4:
+ version "0.7.4"
+ resolved "https://registry.yarnpkg.com/ember-component-css/-/ember-component-css-0.7.4.tgz#b8e94b062468721df6c9ea0c8739226c96809c9f"
+ integrity sha512-dJV6WyvIc4NZ2fSNhMWe4UJaSPLBtjQ4zHJ9bOg6UCMLHfTlwjJsn+rYqddMn65xau7MS8mwxa+otujQij0xEw==
dependencies:
broccoli-concat "^3.7.3"
broccoli-funnel "^2.0.1"
@@ -5655,14 +5979,14 @@ ember-component-css@^0.6.7:
broccoli-replace "^0.12.0"
broccoli-style-manifest "^1.5.2"
ember-cli-babel "^7.1.4"
- ember-cli-version-checker "^2.1.2"
+ ember-cli-version-checker "^3.0.1"
ember-getowner-polyfill "^2.2.0"
- fs-tree-diff "^1.0.2"
+ fs-tree-diff "^0.5.9"
md5 "^2.2.1"
postcss "^7.0.6"
postcss-less "^3.1.0"
postcss-scss "^2.0.0"
- postcss-selector-namespace "^1.5.0"
+ postcss-selector-namespace "^2.0.0"
rsvp "^4.8.4"
walk-sync "^1.0.1"
@@ -5674,13 +5998,14 @@ ember-composable-helpers@^2.1.0:
broccoli-funnel "^1.0.1"
ember-cli-babel "^7.1.0"
-ember-concurrency@^0.8.21:
- version "0.8.27"
- resolved "https://registry.yarnpkg.com/ember-concurrency/-/ember-concurrency-0.8.27.tgz#6dd1b9928cf5d13d5ae9c8cd3d5869f6ff81a9a9"
- integrity sha512-2IujJ0Y79a+sHvEOPhUtZ7Ga8HDrwjbQqO7aZ88b0KCsXPro7birQFB508njQSQ0mxrsR9qzDv/KS5V67Cy5dA==
+"ember-concurrency@^0.9.0 || ^0.10.0 || ^1.0.0":
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/ember-concurrency/-/ember-concurrency-1.0.0.tgz#3b650672fdd5dc1d45007626119135829076c2b6"
+ integrity sha512-76aKC0lo2LAPoQYz7vMRlpolWTIQerszr8PPf3JMM5cTOzPwXUtzDcjfso3JAEDdhyUF9fkv2V1DmHagFbC2YQ==
dependencies:
babel-core "^6.24.1"
ember-cli-babel "^6.8.2"
+ ember-compatibility-helpers "^1.2.0"
ember-maybe-import-regenerator "^0.1.5"
ember-copy@^1.0.0:
@@ -5758,25 +6083,25 @@ ember-fetch-adapter@^0.4.3:
dependencies:
ember-cli-babel "^6.12.0"
-ember-fetch@^6.2.0:
- version "6.4.0"
- resolved "https://registry.yarnpkg.com/ember-fetch/-/ember-fetch-6.4.0.tgz#806b2acfbda07f3b0dd48a9fcdbc575c5519611d"
- integrity sha512-/GtJWQiUAAOX2HMGuLrWQMNWO9YRNH9+AiMzZYc5PrTHKdv+Ib5fciysz0+e97Dj9vyvF2mQa49mrosAPW9ziQ==
+ember-fetch@^6.7.0:
+ version "6.7.1"
+ resolved "https://registry.yarnpkg.com/ember-fetch/-/ember-fetch-6.7.1.tgz#778390bc9993d31cc32d429ae69a591e431e85ac"
+ integrity sha512-B/s0HZWcIrDDz3wOxvAsWM2SyT4nND274aH3Othzxzax/lOJnGHKbNa+IGLrXKSja+ANeD5P8sVwDaAUw8pzpQ==
dependencies:
- abortcontroller-polyfill "^1.2.1"
+ abortcontroller-polyfill "^1.3.0"
broccoli-concat "^3.2.2"
broccoli-debug "^0.6.5"
broccoli-merge-trees "^3.0.0"
broccoli-rollup "^2.1.1"
- broccoli-stew "^2.0.0"
+ broccoli-stew "^2.1.0"
broccoli-templater "^2.0.1"
- calculate-cache-key-for-tree "^1.1.0"
+ calculate-cache-key-for-tree "^2.0.0"
caniuse-api "^3.0.0"
ember-cli-babel "^6.8.2"
- node-fetch "^2.3.0"
+ node-fetch "^2.6.0"
whatwg-fetch "^3.0.0"
-ember-getowner-polyfill@^2.0.1, ember-getowner-polyfill@^2.2.0:
+ember-getowner-polyfill@^2.2.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/ember-getowner-polyfill/-/ember-getowner-polyfill-2.2.0.tgz#38e7dccbcac69d5ec694000329ec0b2be651d2b2"
integrity sha512-rwGMJgbGzxIAiWYjdpAh04Abvt0s3HuS/VjHzUFhVyVg2pzAuz45B9AzOxYXzkp88vFC7FPaiA4kE8NxNk4A4Q==
@@ -5784,14 +6109,6 @@ ember-getowner-polyfill@^2.0.1, ember-getowner-polyfill@^2.2.0:
ember-cli-version-checker "^2.1.0"
ember-factory-for-polyfill "^1.3.1"
-ember-hash-helper-polyfill@^0.2.0:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/ember-hash-helper-polyfill/-/ember-hash-helper-polyfill-0.2.1.tgz#73b074d8e2f7183d2e68c3df77e951097afa907c"
- integrity sha512-bEiKQeWGjswH1ykVY1zXabambolEPDwQCPuYOgUoRyEV4JFR9h91s3c8PNNy2pjoYBLkIYuCk4F4POJJLmDPjw==
- dependencies:
- ember-cli-babel "^6.8.2"
- ember-cli-version-checker "^2.1.0"
-
ember-href-to@^1.15.1:
version "1.15.1"
resolved "https://registry.yarnpkg.com/ember-href-to/-/ember-href-to-1.15.1.tgz#1ba20ec201245c7cae7e2aa3eec50eb2aa25b729"
@@ -5839,10 +6156,10 @@ ember-maybe-import-regenerator@^0.1.5, ember-maybe-import-regenerator@^0.1.6:
ember-cli-babel "^6.0.0-beta.4"
regenerator-runtime "^0.9.5"
-ember-modal-dialog@3.0.0-beta.3:
- version "3.0.0-beta.3"
- resolved "https://registry.yarnpkg.com/ember-modal-dialog/-/ember-modal-dialog-3.0.0-beta.3.tgz#8ba00c1a228d62d837f63dc7ce964e48f25d1326"
- integrity sha512-R9vo3KftPmNJK89rIipKvoTEvTC3tMEtM4Yhy2gyMX3yrFCcNPlnTXTRyTePUtSVxPNq9lNT1n0YWMBT1xoJxg==
+ember-modal-dialog@^3.0.0-beta.4:
+ version "3.0.0-beta.4"
+ resolved "https://registry.yarnpkg.com/ember-modal-dialog/-/ember-modal-dialog-3.0.0-beta.4.tgz#2da8b5424cf33fd87117624dcaabfe9727f967e9"
+ integrity sha512-23kCmH0uPkDh132NbXr4E7x15gF00pGM8f/Q0lCV6IKZOJcW+lb9L6sKgkEEayzGTvgxp4BPU8n8xnIP3go4FA==
dependencies:
ember-cli-babel "^7.1.3"
ember-cli-htmlbars "^3.0.0"
@@ -5885,17 +6202,17 @@ ember-resolver@^5.0.1:
ember-cli-version-checker "^3.0.0"
resolve "^1.10.0"
-ember-responsive@^3.0.0-beta.1:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/ember-responsive/-/ember-responsive-3.0.0.tgz#03791da324299a8c8cb461e541a5e1aeca887881"
- integrity sha512-5JQ+REBu37M7NNDJOnTjzp5eQzg4cX7VtPcD19V3nBcntRuDwf7N6TndLxmw4Kt3JXuzQL4PkDE2SgVKuNTdWQ==
+ember-responsive@^3.0.5:
+ version "3.0.5"
+ resolved "https://registry.yarnpkg.com/ember-responsive/-/ember-responsive-3.0.5.tgz#690c96a051dcf7c10a8c3bcfb3b23ecc784e3f7d"
+ integrity sha512-tQMDxrIsDyfvyLWhyQ2MYpJVkm1pmBKJSQKgdA06EFRrVw5QYX4coXemSZOzBM9gPrkgOUfPp522GaldsAeInw==
dependencies:
ember-cli-babel "^6.6.0"
-ember-rfc176-data@^0.3.11:
- version "0.3.11"
- resolved "https://registry.yarnpkg.com/ember-rfc176-data/-/ember-rfc176-data-0.3.11.tgz#9042e96aa4e962bf5bd5433939c92a1cf3a63de8"
- integrity sha512-c46uisicHswFHo0R515LPM0L/X/Ju+N7KonJPuHx9C6cWD3AWzkNG9ASv+Bc85mq/9l3LFFsFpljdM1m2YnQ6A==
+ember-rfc176-data@^0.3.12:
+ version "0.3.12"
+ resolved "https://registry.yarnpkg.com/ember-rfc176-data/-/ember-rfc176-data-0.3.12.tgz#90d82878e69e2ac9a5438e8ce14d12c6031c5bd2"
+ integrity sha512-g9HeZj/gU5bfIIrGXkP7MhS2b3Vu5DfNUrYr14hy99TgIvtZETO+96QF4WOEUXGjIJdfTRjerVnQlqngPQSv1g==
ember-rfc176-data@^0.3.5, ember-rfc176-data@^0.3.7:
version "0.3.7"
@@ -5909,14 +6226,23 @@ ember-router-generator@^1.2.3:
dependencies:
recast "^0.11.3"
-ember-router-scroll@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/ember-router-scroll/-/ember-router-scroll-1.0.2.tgz#2c0f25c8b800f65fb5eff56e1603e9bd3b3bf9b8"
- integrity sha512-v/+wvb+Pwc4AtdTjFkDzAMU7WhVhrG83m/89rK/J/m9tQENYzsWoSa4+04WfRJj5ivWSaA/iWNkSfvseTp84Zg==
+ember-router-generator@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/ember-router-generator/-/ember-router-generator-2.0.0.tgz#d04abfed4ba8b42d166477bbce47fccc672dbde0"
+ integrity sha512-89oVHVJwmLDvGvAUWgS87KpBoRhy3aZ6U0Ql6HOmU4TrPkyaa8pM0W81wj9cIwjYprcQtN9EwzZMHnq46+oUyw==
+ dependencies:
+ "@babel/parser" "^7.4.5"
+ "@babel/traverse" "^7.4.5"
+ recast "^0.18.1"
+
+ember-router-scroll@^1.2.1:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/ember-router-scroll/-/ember-router-scroll-1.3.2.tgz#d7e49c7214d06c6cdf9fc809a3564ab554cdde35"
+ integrity sha512-MxBuaPSWvprE3JIeS9Jvp0emfnrhddBSkPRKlcBlUo8Zchi5lxqf7ffWYRxdXfnwoot+CWTYGnoU/iXE2gp9tg==
dependencies:
ember-app-scheduler "^1.0.5"
ember-cli-babel "^7.1.2"
- ember-getowner-polyfill "^2.2.0"
+ ember-compatibility-helpers "^1.1.2"
ember-router-service-polyfill@^1.0.2:
version "1.0.3"
@@ -5933,9 +6259,9 @@ ember-source-channel-url@^1.0.1, ember-source-channel-url@^1.1.0:
got "^8.0.1"
ember-source@~3.8.0:
- version "3.8.0"
- resolved "https://registry.yarnpkg.com/ember-source/-/ember-source-3.8.0.tgz#b84ba995d5049514a146c6df20c2fe20de08f211"
- integrity sha512-iar9EL0AglbwgsLl8jeh++2mnnpBL2u/JUttP6jjkN/pItHfBGlgBtQ3GH0xyG37DH2SbP5bsj3pBM3xm7rTdA==
+ version "3.8.3"
+ resolved "https://registry.yarnpkg.com/ember-source/-/ember-source-3.8.3.tgz#831a4e792f06d1ff292595fad817eed8f2be9d0c"
+ integrity sha512-QPeBgszpL9N5TL8Dbq4fIpJyG9uiMP7+tST01/y86ToUHmYuCrEuGeHDWLM3qTG+eKczuqx1b5K18gyM9K5JeA==
dependencies:
broccoli-funnel "^2.0.1"
broccoli-merge-trees "^3.0.2"
@@ -5952,21 +6278,23 @@ ember-source@~3.8.0:
jquery "^3.3.1"
resolve "^1.9.0"
-ember-svg-jar@^1.2.2:
- version "1.2.2"
- resolved "https://registry.yarnpkg.com/ember-svg-jar/-/ember-svg-jar-1.2.2.tgz#065d9a462353dbf3b1b4f57fb653859bfbe52022"
- integrity sha512-vIB/SyLdsp1PLuz0oPd56CD9U4yUYWv0ghhMlemVM8wwshgopztE0tDFjoIEZjhbZ7kNkLLUt69qMvyMjx5NPg==
+ember-svg-jar@^2.1.0:
+ version "2.2.2"
+ resolved "https://registry.yarnpkg.com/ember-svg-jar/-/ember-svg-jar-2.2.2.tgz#024e298dd65d0e23f98c8be5706035de819a647f"
+ integrity sha512-AeOG3egRAM6QXNB4LX4coBkyxQjXGIzXY3i5XcaDuf861+e79yD7L9PZwhb7fBWfwwn8ls479x1hfT1Yw5QAWw==
dependencies:
broccoli-caching-writer "^3.0.3"
- broccoli-funnel "^2.0.1"
- broccoli-merge-trees "^2.0.0"
+ broccoli-concat "^3.7.4"
+ broccoli-funnel "^2.0.2"
+ broccoli-merge-trees "^3.0.2"
+ broccoli-persistent-filter "^2.3.1"
broccoli-string-replace "^0.1.2"
- broccoli-svg-optimizer "1.1.0"
- broccoli-symbolizer "^0.6.0"
+ broccoli-svg-optimizer "2.0.0"
cheerio "^0.22.0"
ember-assign-polyfill "^2.5.0"
- ember-cli-babel "^6.6.0"
- lodash "^4.13.1"
+ ember-cli-babel "^7.7.3"
+ json-stable-stringify "^1.0.1"
+ lodash "^4.17.15"
mkdirp "^0.5.1"
path-posix "^1.0.0"
@@ -6150,6 +6478,22 @@ error@^7.0.0:
string-template "~0.2.1"
xtend "~4.0.0"
+es-abstract@^1.12.0:
+ version "1.14.2"
+ resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.14.2.tgz#7ce108fad83068c8783c3cdf62e504e084d8c497"
+ integrity sha512-DgoQmbpFNOofkjJtKwr87Ma5EW4Dc8fWhD0R+ndq7Oc456ivUfGOOP6oAZTTKl5/CcNMP+EN+e3/iUzgE0veZg==
+ dependencies:
+ es-to-primitive "^1.2.0"
+ function-bind "^1.1.1"
+ has "^1.0.3"
+ has-symbols "^1.0.0"
+ is-callable "^1.1.4"
+ is-regex "^1.0.4"
+ object-inspect "^1.6.0"
+ object-keys "^1.1.1"
+ string.prototype.trimleft "^2.0.0"
+ string.prototype.trimright "^2.0.0"
+
es-abstract@^1.5.1, es-abstract@^1.9.0:
version "1.13.0"
resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9"
@@ -6186,6 +6530,18 @@ escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
+escodegen@^1.11.0:
+ version "1.12.0"
+ resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.12.0.tgz#f763daf840af172bb3a2b6dd7219c0e17f7ff541"
+ integrity sha512-TuA+EhsanGcme5T3R0L80u4t8CpbXQjegRmf7+FPTJrtCTErXFeelblRgHQa1FofEzqYYJmJ/OqjTwREp9qgmg==
+ dependencies:
+ esprima "^3.1.3"
+ estraverse "^4.2.0"
+ esutils "^2.0.2"
+ optionator "^0.8.1"
+ optionalDependencies:
+ source-map "~0.6.1"
+
escodegen@^1.6.1, escodegen@^1.9.1:
version "1.11.1"
resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.11.1.tgz#c485ff8d6b4cdb89e27f4a856e91f118401ca510"
@@ -6330,6 +6686,11 @@ eslint@^4.0.0:
table "4.0.2"
text-table "~0.2.0"
+esm@^3.2.25:
+ version "3.2.25"
+ resolved "https://registry.yarnpkg.com/esm/-/esm-3.2.25.tgz#342c18c29d56157688ba5ce31f8431fbb795cc10"
+ integrity sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==
+
esm@^3.2.4:
version "3.2.14"
resolved "https://registry.yarnpkg.com/esm/-/esm-3.2.14.tgz#567f65e9433bb0873eb92ed5e92e876c3ec2a212"
@@ -6343,17 +6704,12 @@ espree@^3.5.4:
acorn "^5.5.0"
acorn-jsx "^3.0.0"
-esprima@^2.6.0:
- version "2.7.3"
- resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581"
- integrity sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=
-
esprima@^3.1.3, esprima@~3.1.0:
version "3.1.3"
resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633"
integrity sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=
-esprima@^4.0.0:
+esprima@^4.0.0, esprima@~4.0.0:
version "4.0.1"
resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
@@ -6708,6 +7064,11 @@ filesize@^3.6.1:
resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.6.1.tgz#090bb3ee01b6f801a8a8be99d31710b3422bb317"
integrity sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==
+filesize@^4.1.2:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/filesize/-/filesize-4.2.0.tgz#a8c989a179ca3a895cc32eab4abc64ebf6d34d44"
+ integrity sha512-bdS2UP98MZzLyTZzhuSH5ctAWyDt81n5xMti9BSdmgPXjjENLDz5Bmbk2R7ATVw/HRysZzWA2JIPgcSAOimWpw==
+
fill-range@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7"
@@ -6718,6 +7079,13 @@ fill-range@^4.0.0:
repeat-string "^1.6.1"
to-regex-range "^2.1.0"
+fill-range@^7.0.1:
+ version "7.0.1"
+ resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
+ integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
+ dependencies:
+ to-regex-range "^5.0.1"
+
finalhandler@1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.0.tgz#ce0b6855b45853e791b2fcc680046d88253dd7f5"
@@ -6958,7 +7326,7 @@ fs-extra@^6.0.1:
jsonfile "^4.0.0"
universalify "^0.1.0"
-fs-extra@^7.0.0:
+fs-extra@^7.0.0, fs-extra@^7.0.1:
version "7.0.1"
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9"
integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==
@@ -6994,6 +7362,17 @@ fs-tree-diff@^1.0.0, fs-tree-diff@^1.0.2:
path-posix "^1.0.0"
symlink-or-copy "^1.1.8"
+fs-tree-diff@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/fs-tree-diff/-/fs-tree-diff-2.0.1.tgz#343e4745ab435ec39ebac5f9059ad919cd034afa"
+ integrity sha512-x+CfAZ/lJHQqwlD64pYM5QxWjzWhSjroaVsr8PW831zOApL55qPibed0c+xebaLWVr2BnHFoHdrwOv8pzt8R5A==
+ dependencies:
+ "@types/symlink-or-copy" "^1.2.0"
+ heimdalljs-logger "^0.1.7"
+ object-assign "^4.1.0"
+ path-posix "^1.0.0"
+ symlink-or-copy "^1.1.8"
+
fs-updater@^1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/fs-updater/-/fs-updater-1.0.4.tgz#2329980f99ae9176e9a0e84f7637538a182ce63b"
@@ -7028,6 +7407,11 @@ fsevents@^1.2.3, fsevents@^1.2.7:
nan "^2.9.2"
node-pre-gyp "^0.10.0"
+fsevents@^2.0.6:
+ version "2.0.7"
+ resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.0.7.tgz#382c9b443c6cbac4c57187cdda23aa3bf1ccfc2a"
+ integrity sha512-a7YT0SV3RB+DjYcppwVDLtn13UQnmg0SWZS7ezZD0UjnLwXmy8Zm21GMVGLaFGimIqcvyMQaOJBrop8MyOp1kQ==
+
function-bind@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
@@ -7156,7 +7540,7 @@ git-remote-origin-url@^2.0.0:
gitconfiglocal "^1.0.0"
pify "^2.3.0"
-git-repo-info@^2.0.0:
+git-repo-info@^2.0.0, git-repo-info@^2.1.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==
@@ -7218,6 +7602,13 @@ glob-parent@^3.1.0:
is-glob "^3.1.0"
path-dirname "^1.0.0"
+glob-parent@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.0.0.tgz#1dc99f0f39b006d3e92c2c284068382f0c20e954"
+ integrity sha512-Z2RwiujPRGluePM6j699ktJYxmPpJKCfpGA13jz2hmFZC7gKetzrWvg5KN3+OsIFmydGyZ1AVwERCq1w/ZZwRg==
+ dependencies:
+ is-glob "^4.0.1"
+
glob-to-regexp@^0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab"
@@ -7398,12 +7789,23 @@ handlebars@^4.0.11, handlebars@^4.0.4, handlebars@^4.0.6, handlebars@^4.1.0:
optionalDependencies:
uglify-js "^3.1.4"
-handlebars@~4.0.13:
- version "4.0.13"
- resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.13.tgz#89fc17bf26f46fd7f6f99d341d92efaae64f997d"
- integrity sha512-uydY0jy4Z3wy/iGXsi64UtLD4t1fFJe16c/NFxsYE4WdQis8ZCzOXUZaPQNG0e5bgtLQV41QTfqBindhEjnpyQ==
+handlebars@^4.0.13:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.2.0.tgz#57ce8d2175b9bbb3d8b3cf3e4217b1aec8ddcb2e"
+ integrity sha512-Kb4xn5Qh1cxAKvQnzNWZ512DhABzyFNmsaJf3OAkWNa4NkaqWcNI8Tao8Tasi0/F4JD9oyG0YxuFyvyR57d+Gw==
dependencies:
- async "^2.5.0"
+ neo-async "^2.6.0"
+ optimist "^0.6.1"
+ source-map "^0.6.1"
+ optionalDependencies:
+ uglify-js "^3.1.4"
+
+handlebars@~4.1.2:
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.1.2.tgz#b6b37c1ced0306b221e094fc7aca3ec23b131b67"
+ integrity sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw==
+ dependencies:
+ neo-async "^2.6.0"
optimist "^0.6.1"
source-map "^0.6.1"
optionalDependencies:
@@ -7531,6 +7933,18 @@ hash-for-dep@^1.0.2, hash-for-dep@^1.2.3, hash-for-dep@^1.4.7, hash-for-dep@^1.5
resolve "^1.10.0"
resolve-package-path "^1.0.11"
+hash-for-dep@^1.5.1:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/hash-for-dep/-/hash-for-dep-1.5.1.tgz#497754b39bee2f1c4ade4521bfd2af0a7c1196e3"
+ integrity sha512-/dQ/A2cl7FBPI2pO0CANkvuuVi/IFS5oTyJ0PsOb6jW6WbVW1js5qJXMJTNbWHXBIPdFTWFbabjB+mE0d+gelw==
+ dependencies:
+ broccoli-kitchen-sink-helpers "^0.3.1"
+ heimdalljs "^0.2.3"
+ heimdalljs-logger "^0.1.7"
+ path-root "^0.1.1"
+ resolve "^1.10.0"
+ resolve-package-path "^1.0.11"
+
hash.js@^1.0.0, hash.js@^1.0.3:
version "1.1.7"
resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42"
@@ -7945,6 +8359,13 @@ is-binary-path@^1.0.0:
dependencies:
binary-extensions "^1.0.0"
+is-binary-path@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
+ integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
+ dependencies:
+ binary-extensions "^2.0.0"
+
is-buffer@^1.1.5, is-buffer@~1.1.1:
version "1.1.6"
resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
@@ -8066,6 +8487,13 @@ is-glob@^4.0.0:
dependencies:
is-extglob "^2.1.1"
+is-glob@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc"
+ integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==
+ dependencies:
+ is-extglob "^2.1.1"
+
is-installed-globally@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.1.0.tgz#0dfd98f5a9111716dd535dda6492f67bf3d25a80"
@@ -8091,6 +8519,11 @@ is-number@^3.0.0:
dependencies:
kind-of "^3.0.2"
+is-number@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
+ integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
+
is-obj@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f"
@@ -8290,9 +8723,9 @@ joi@^12.0.0:
topo "2.x.x"
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==
+ version "3.4.1"
+ resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.4.1.tgz#714f1f8d9dde4bdfa55764ba37ef214630d80ef2"
+ integrity sha512-36+AdBzCL+y6qjw5Tx7HgzeGCzC81MDDgaUP8ld2zhx58HdqXGoBd+tHdrBMiyjGQs0Hxs/MLZTu/eHNJJuWPw==
js-base64@^2.1.9:
version "2.5.1"
@@ -8332,13 +8765,13 @@ js-yaml@^3.12.1, js-yaml@^3.2.5, js-yaml@^3.2.7, js-yaml@^3.3.0, js-yaml@^3.9.1:
argparse "^1.0.7"
esprima "^4.0.0"
-js-yaml@~3.6.0:
- version "3.6.1"
- resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.6.1.tgz#6e5fe67d8b205ce4d22fad05b7781e8dadcc4b30"
- integrity sha1-bl/mfYsgXOTSL60Ft3geja3MSzA=
+js-yaml@^3.13.1:
+ version "3.13.1"
+ resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847"
+ integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==
dependencies:
argparse "^1.0.7"
- esprima "^2.6.0"
+ esprima "^4.0.0"
jsbn@~0.1.0:
version "0.1.1"
@@ -8377,6 +8810,37 @@ jsdom@^11.12.0:
ws "^5.2.0"
xml-name-validator "^3.0.0"
+jsdom@^12.0.0:
+ version "12.2.0"
+ resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-12.2.0.tgz#7cf3f5b5eafd47f8f09ca52315d367ff6e95de23"
+ integrity sha512-QPOggIJ8fquWPLaYYMoh+zqUmdphDtu1ju0QGTitZT1Yd8I5qenPpXM1etzUegu3MjVp8XPzgZxdn8Yj7e40ig==
+ dependencies:
+ abab "^2.0.0"
+ acorn "^6.0.2"
+ acorn-globals "^4.3.0"
+ array-equal "^1.0.0"
+ cssom "^0.3.4"
+ cssstyle "^1.1.1"
+ data-urls "^1.0.1"
+ domexception "^1.0.1"
+ escodegen "^1.11.0"
+ html-encoding-sniffer "^1.0.2"
+ nwsapi "^2.0.9"
+ parse5 "5.1.0"
+ pn "^1.1.0"
+ request "^2.88.0"
+ request-promise-native "^1.0.5"
+ saxes "^3.1.3"
+ symbol-tree "^3.2.2"
+ tough-cookie "^2.4.3"
+ w3c-hr-time "^1.0.1"
+ webidl-conversions "^4.0.2"
+ whatwg-encoding "^1.0.5"
+ whatwg-mimetype "^2.2.0"
+ whatwg-url "^7.0.0"
+ ws "^6.1.0"
+ xml-name-validator "^3.0.0"
+
jsdom@^7.0.2:
version "7.2.2"
resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-7.2.2.tgz#40b402770c2bda23469096bee91ab675e3b1fc6e"
@@ -8620,22 +9084,20 @@ linkify-it@~1.2.0:
dependencies:
uc.micro "^1.0.1"
-liquid-fire@^0.29.5:
- version "0.29.5"
- resolved "https://registry.yarnpkg.com/liquid-fire/-/liquid-fire-0.29.5.tgz#da8e3158e3f96c34a8cf371b90b8ae941ea8960d"
- integrity sha512-h+KxMaCvavkAfL5duNc5tQikrZxzbGVvUdmBU9mjkInUQQKvTjpD1DwphRKk6qWRRuDY9HT2ecY0Hf6/gMXkJA==
+"liquid-fire@^0.29.5 || ^0.30.0":
+ version "0.30.0"
+ resolved "https://registry.yarnpkg.com/liquid-fire/-/liquid-fire-0.30.0.tgz#20e6673f9db32d503f909592fd2c691452b07d6d"
+ integrity sha512-5ffmsrPvAzc4EQdjVHouiPc0m+c+wt4YOBgABrPgO+30cSAlYLYuIhQIQ5j+zX87oa61btq0BJVjjtxunG1Nrg==
dependencies:
- broccoli-funnel "^1.0.1"
- broccoli-merge-trees "^1.0.0"
- broccoli-stew "^1.4.2"
- ember-cli-babel "^6.6.0"
- ember-cli-htmlbars "^2.0.1"
- ember-cli-version-checker "^2.0.0"
+ broccoli-funnel "^2.0.2"
+ broccoli-merge-trees "^3.0.2"
+ broccoli-stew "^2.1.0"
+ ember-cli-babel "^7.7.3"
+ ember-cli-htmlbars "^3.0.1"
+ ember-cli-version-checker "^3.1.3"
ember-copy "^1.0.0"
- ember-getowner-polyfill "^2.0.1"
- ember-hash-helper-polyfill "^0.2.0"
match-media "^0.2.0"
- velocity-animate "^1.5.1"
+ velocity-animate "^1.5.2"
livereload-js@^2.3.0:
version "2.4.0"
@@ -8668,7 +9130,7 @@ loader-runner@^2.3.0:
resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357"
integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==
-loader-utils@^1.1.0:
+loader-utils@^1.0.2, loader-utils@^1.1.0:
version "1.2.3"
resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7"
integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==
@@ -9042,6 +9504,11 @@ lodash.merge@^4.3.1, lodash.merge@^4.4.0, lodash.merge@^4.6.0:
resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.1.tgz#adc25d9cb99b9391c59624f379fbba60d7111d54"
integrity sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ==
+lodash.merge@^4.6.2:
+ version "4.6.2"
+ resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"
+ integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
+
lodash.noop@~2.3.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/lodash.noop/-/lodash.noop-2.3.0.tgz#3059d628d51bbf937cd2a0b6fc3a7f212a669c2c"
@@ -9147,7 +9614,7 @@ lodash.values@~2.3.0:
dependencies:
lodash.keys "~2.3.0"
-lodash@4.17.11, lodash@^4.0.0, lodash@^4.1.0, lodash@^4.13.1, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0, lodash@^4.5.1, lodash@^4.6.1:
+lodash@4.17.11, lodash@^4.0.0, lodash@^4.1.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0, lodash@^4.5.1, lodash@^4.6.1:
version "4.17.11"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d"
integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==
@@ -9157,6 +9624,11 @@ lodash@^3.10.0:
resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6"
integrity sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=
+lodash@^4.17.13, lodash@^4.17.15:
+ version "4.17.15"
+ resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548"
+ integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==
+
log-symbols@^2.2.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a"
@@ -9209,7 +9681,7 @@ lru-cache@^5.1.1:
dependencies:
yallist "^3.0.2"
-lunr@^2.3.3:
+lunr@^2.3.6:
version "2.3.6"
resolved "https://registry.yarnpkg.com/lunr/-/lunr-2.3.6.tgz#f278beee7ffd56ad86e6e478ce02ab2b98c78dd5"
integrity sha512-swStvEyDqQ85MGpABCMBclZcLI/pBIlu8FFDtmX197+oEgKloJ67QnB+Tidh0340HmLMs39c4GrkPY3cmkXp6Q==
@@ -9362,6 +9834,16 @@ md5@^2.2.1:
crypt "~0.0.1"
is-buffer "~1.1.1"
+mdn-data@2.0.4:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b"
+ integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==
+
+mdn-data@~1.1.0:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-1.1.4.tgz#50b5d4ffc4575276573c4eedb8780812a8419f01"
+ integrity sha512-FSYbp3lyKjyj3E7fMl6rYvUdX0FBXaluGqlFoYESWQlyUTq8R+wp0rkFxoYFqZlHCvsUXGjyJmLQSnXToYhOSA==
+
mdn-links@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/mdn-links/-/mdn-links-0.1.0.tgz#e24c83b97cb4c5886cc39f2f780705fbfe273aa5"
@@ -9722,6 +10204,11 @@ neo-async@^2.5.0:
resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.0.tgz#b9d15e4d71c6762908654b5183ed38b753340835"
integrity sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA==
+neo-async@^2.6.0:
+ version "2.6.1"
+ resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c"
+ integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==
+
nested-error-stacks@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/nested-error-stacks/-/nested-error-stacks-2.1.0.tgz#0fbdcf3e13fe4994781280524f8b96b0cdff9c61"
@@ -9744,6 +10231,11 @@ node-fetch@^2.3.0:
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.3.0.tgz#1a1d940bbfb916a1d3e0219f037e89e71f8c5fa5"
integrity sha512-MOd8pV3fxENbryESLgVIeaGKrdl+uaYhCSSVkjeOb/31/njTpcis5aWfdqgNlHIrKOLRbMnfPINPOML2CIFeXA==
+node-fetch@^2.6.0:
+ version "2.6.0"
+ resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd"
+ integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==
+
node-int64@^0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b"
@@ -9923,7 +10415,7 @@ npmlog@^4.0.0, npmlog@^4.0.2:
gauge "~2.7.3"
set-blocking "~2.0.0"
-nth-check@~1.0.1:
+nth-check@^1.0.2, nth-check@~1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c"
integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==
@@ -9950,6 +10442,11 @@ nwsapi@^2.0.7:
resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.1.1.tgz#08d6d75e69fd791bdea31507ffafe8c843b67e9c"
integrity sha512-T5GaA1J/d34AC8mkrFD2O0DR17kwJ702ZOtJOsS8RpbsQZVOC2/xYFb1i/cw+xdM54JIlMuojjDOYct8GIWtwg==
+nwsapi@^2.0.9:
+ version "2.1.4"
+ resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.1.4.tgz#e006a878db23636f8e8a67d33ca0e4edf61a842f"
+ integrity sha512-iGfd9Y6SFdTNldEy2L0GUhcarIutFmk+MPWIn9dmj8NMIup03G08uUF2KGbbmv/Ux4RT0VZJoP/sVbWA6d/VIw==
+
oauth-sign@~0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.3.0.tgz#cb540f93bb2b22a7d5941691a288d60e8ea9386e"
@@ -9989,11 +10486,21 @@ 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-inspect@^1.6.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.6.0.tgz#c70b6cbf72f274aab4c34c0c82f5167bf82cf15b"
+ integrity sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ==
+
object-keys@^1.0.12:
version "1.1.0"
resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.0.tgz#11bd22348dd2e096a045ab06f6c85bcc340fa032"
integrity sha512-6OO5X1+2tYkNyNEx6TsCxEqFfRWaqx6EtMiSbGrw8Ob8v9Ne+Hl8rBAgLBZn5wjEz3s/s6U1WXFUFOcxxAwUpg==
+object-keys@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
+ integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
+
object-visit@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb"
@@ -10016,6 +10523,16 @@ object.pick@^1.3.0:
dependencies:
isobject "^3.0.1"
+object.values@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.0.tgz#bf6810ef5da3e5325790eaaa2be213ea84624da9"
+ integrity sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg==
+ dependencies:
+ define-properties "^1.1.3"
+ es-abstract "^1.12.0"
+ function-bind "^1.1.1"
+ has "^1.0.3"
+
octokit-pagination-methods@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/octokit-pagination-methods/-/octokit-pagination-methods-1.1.0.tgz#cf472edc9d551055f9ef73f6e42b4dbb4c80bea4"
@@ -10185,6 +10702,11 @@ package-json@^4.0.0, package-json@^4.0.1:
registry-url "^3.0.3"
semver "^5.1.0"
+pad-start@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/pad-start/-/pad-start-1.0.2.tgz#23e5bab3e96446b62816cff6f150975f040d1b14"
+ integrity sha1-I+W6s+lkRrYoFs/28VCXXwQNGxQ=
+
pako@~1.0.5:
version "1.0.10"
resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.10.tgz#4328badb5086a426aa90f541977d4955da5c9732"
@@ -10273,6 +10795,11 @@ parse5@4.0.0:
resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608"
integrity sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==
+parse5@5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.0.tgz#c59341c9723f414c452975564c7c00a68d58acd2"
+ integrity sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==
+
parse5@^1.5.1:
version "1.5.1"
resolved "https://registry.yarnpkg.com/parse5/-/parse5-1.5.1.tgz#9b7f3b0de32be78dc2401b17573ccaf0f6f59d94"
@@ -10414,6 +10941,11 @@ performance-now@^2.1.0:
resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=
+picomatch@^2.0.4:
+ version "2.0.7"
+ resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.0.7.tgz#514169d8c7cd0bdbeecc8a2609e34a7163de69f6"
+ integrity sha512-oLHIdio3tZ0qH76NybpeneBhYVj0QFTfXEFTc/B3zKQspYfYYkWYgFsmzo+4kvId/bQRcNkVeguI3y+CD22BtA==
+
pify@^2.0.0, pify@^2.3.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
@@ -10551,12 +11083,12 @@ postcss-scss@^2.0.0:
dependencies:
postcss "^7.0.0"
-postcss-selector-namespace@^1.5.0:
- version "1.5.0"
- resolved "https://registry.yarnpkg.com/postcss-selector-namespace/-/postcss-selector-namespace-1.5.0.tgz#62335de8f1992eae989d1be33ba2298156ab458b"
- integrity sha512-tQmqzuqOyH4sCwr+yRmnIKPzNQy1tIVvEZMR9qd82npDJ2X5KwMoeFFjCdupJ00eqMrCYj58wWvSwwZDA3kTmA==
+postcss-selector-namespace@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-selector-namespace/-/postcss-selector-namespace-2.0.0.tgz#d784cc24f5f483a301c9148fc7e50f5d7b64845e"
+ integrity sha512-1Eka6f/6IL08c8gWfslUdwqmURvHYbdI57zOMHeslIuiLaK1nxvQefqAGcr9Em9T0k+4IcwhBTAtJm+6nCz2wQ==
dependencies:
- postcss "^6.0.14"
+ postcss "^7.0.0"
postcss-selector-parser@^3.1.1:
version "3.1.1"
@@ -10799,7 +11331,7 @@ quick-lru@^1.0.0:
resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-1.1.0.tgz#4360b17c61136ad38078397ff11416e186dcfbb8"
integrity sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=
-quick-temp@^0.1.0, quick-temp@^0.1.2, quick-temp@^0.1.3, quick-temp@^0.1.5, quick-temp@^0.1.8:
+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"
integrity sha1-urAqJCq4+w3XWKPJd2sy+aXZRAg=
@@ -10976,6 +11508,13 @@ readdirp@^2.2.1:
micromatch "^3.1.10"
readable-stream "^2.0.2"
+readdirp@^3.1.1:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.1.2.tgz#fa85d2d14d4289920e4671dead96431add2ee78a"
+ integrity sha512-8rhl0xs2cxfVsqzreYCvs8EwBfn/DhVdqtoLmw19uI3SC5avYX9teCurlErfpPXGmYtMHReGaP2RsLnFvz/lnw==
+ dependencies:
+ picomatch "^2.0.4"
+
recast@^0.11.3:
version "0.11.23"
resolved "https://registry.yarnpkg.com/recast/-/recast-0.11.23.tgz#451fd3004ab1e4df9b4e4b66376b2a21912462d3"
@@ -10986,6 +11525,16 @@ recast@^0.11.3:
private "~0.1.5"
source-map "~0.5.0"
+recast@^0.18.1:
+ version "0.18.2"
+ resolved "https://registry.yarnpkg.com/recast/-/recast-0.18.2.tgz#ada263677edc70c45408caf20e6ae990958fdea8"
+ integrity sha512-MbuHc1lzIDIn7bpxaqIAGwwtyaokkzPqINf1Vm/LA0BSyVrTgXNVTTT7RzWC9kP+vqrUoYVpd6wHhI8x75ej8w==
+ dependencies:
+ ast-types "0.13.2"
+ esprima "~4.0.0"
+ private "^0.1.8"
+ source-map "~0.6.1"
+
rechoir@^0.6.2:
version "0.6.2"
resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384"
@@ -11226,7 +11775,7 @@ request-promise-native@^1.0.5:
stealthy-require "^1.1.1"
tough-cookie "^2.3.3"
-request@^2.55.0, request@^2.87.0:
+request@^2.55.0, request@^2.87.0, request@^2.88.0:
version "2.88.0"
resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef"
integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==
@@ -11316,6 +11865,14 @@ resolve-package-path@^1.0.11, resolve-package-path@^1.1.1:
path-root "^0.1.1"
resolve "^1.10.0"
+resolve-package-path@^1.2.2:
+ version "1.2.7"
+ resolved "https://registry.yarnpkg.com/resolve-package-path/-/resolve-package-path-1.2.7.tgz#2a7bc37ad96865e239330e3102c31322847e652e"
+ integrity sha512-fVEKHGeK85bGbVFuwO9o1aU0n3vqQGrezPc51JGu9UTXpFQfWq5qCeKxyaRUSvephs+06c5j5rPq/dzHGEo8+Q==
+ dependencies:
+ path-root "^0.1.1"
+ resolve "^1.10.0"
+
resolve-package-path@^1.2.6:
version "1.2.6"
resolved "https://registry.yarnpkg.com/resolve-package-path/-/resolve-package-path-1.2.6.tgz#48f5d69a5b3a0ea68f7b9c7398459dd4125807c7"
@@ -11344,13 +11901,20 @@ resolve@1.5.0:
dependencies:
path-parse "^1.0.5"
-resolve@^1.1.3, resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.3.2, resolve@^1.3.3, resolve@^1.4.0, resolve@^1.5.0, resolve@^1.7.1, resolve@^1.8.1, resolve@^1.9.0:
+resolve@^1.1.3, resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.3.2, resolve@^1.3.3, resolve@^1.4.0, resolve@^1.5.0, resolve@^1.7.1, resolve@^1.8.1:
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"
+resolve@^1.12.0, resolve@^1.9.0:
+ version "1.12.0"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.12.0.tgz#3fc644a35c84a48554609ff26ec52b66fa577df6"
+ integrity sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==
+ dependencies:
+ path-parse "^1.0.6"
+
responselike@1.0.2, responselike@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7"
@@ -11446,6 +12010,11 @@ rsvp@^4.6.1, rsvp@^4.7.0, rsvp@^4.8.1, rsvp@^4.8.2, rsvp@^4.8.3, rsvp@^4.8.4:
resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.4.tgz#b50e6b34583f3dd89329a2f23a8a2be072845911"
integrity sha512-6FomvYPfs+Jy9TfXmBpBuMWNH94SgCsZmJKcanySzgNNP6LjWxBvyLTa9KaMfDDM5oxRfrKDB0r/qeRsLwnBfA==
+rsvp@^4.8.5:
+ version "4.8.5"
+ resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734"
+ integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==
+
rsvp@~3.2.1:
version "3.2.1"
resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-3.2.1.tgz#07cb4a5df25add9e826ebc67dcc9fd89db27d84a"
@@ -11537,18 +12106,25 @@ sane@^4.0.0:
minimist "^1.1.1"
walker "~1.0.5"
-sass@^1.17.0:
- version "1.17.2"
- resolved "https://registry.yarnpkg.com/sass/-/sass-1.17.2.tgz#b5a28f2f13c6a219f28084c03623bb2c8d176323"
- integrity sha512-TBNcwSIEXpXAIaFxQnWbHzhciwPKpHRprQ+1ww+g9eHCiY3PINJs6vQTu+LcBt1vIhrtQGRFIoxJO39TfLrptA==
+sass@^1.22.10:
+ version "1.22.12"
+ resolved "https://registry.yarnpkg.com/sass/-/sass-1.22.12.tgz#5cbdd38720ffd1857da695331faee9f634bcb5d7"
+ integrity sha512-u5Rxn+dKTPCW5/11kMNxtmqKsxCjcpnqj9CaJoru1NqeJ0DOa9rOM00e0HqmseTAatGkKoLY+jaNecMYevu1gg==
dependencies:
- chokidar "^2.0.0"
+ chokidar ">=2.0.0 <4.0.0"
-sax@^1.1.4, sax@^1.2.4, sax@~1.2.1:
+sax@^1.1.4, sax@^1.2.4, sax@~1.2.4:
version "1.2.4"
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
+saxes@^3.1.3:
+ version "3.1.11"
+ resolved "https://registry.yarnpkg.com/saxes/-/saxes-3.1.11.tgz#d59d1fd332ec92ad98a2e0b2ee644702384b1c5b"
+ integrity sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==
+ dependencies:
+ xmlchars "^2.1.1"
+
schema-utils@^0.4.4:
version "0.4.7"
resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.4.7.tgz#ba74f597d2be2ea880131746ee17d0a093c68187"
@@ -11708,6 +12284,11 @@ simple-html-tokenizer@^0.5.6:
resolved "https://registry.yarnpkg.com/simple-html-tokenizer/-/simple-html-tokenizer-0.5.7.tgz#8eca336ecfbe2b3c6166cbb31b2682088de79f40"
integrity sha512-APW9iYbkJ5cijjX4Ljhf3VG8SwYPUJT5gZrwci/wieMabQxWFiV5VwsrP5c6GMRvXKEQMGkAB1d9dvW66dTqpg==
+simple-html-tokenizer@^0.5.8:
+ version "0.5.8"
+ resolved "https://registry.yarnpkg.com/simple-html-tokenizer/-/simple-html-tokenizer-0.5.8.tgz#3417382f75954ee34515cc4fd32d9918e693f173"
+ integrity sha512-0Sq4FvLlQEQODVA6PH2MIrc7tzYO0KT2HzzwvaVLYClWgIsuvaNUOrhrAvTi1pZHrcq7GDB4WiI3ukjqBMxcGQ==
+
slash@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55"
@@ -12004,6 +12585,11 @@ ssri@^6.0.1:
dependencies:
figgy-pudding "^3.5.1"
+stable@^0.1.8:
+ version "0.1.8"
+ resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf"
+ integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==
+
stagehand@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/stagehand/-/stagehand-1.0.0.tgz#79515e2ad3a02c63f8720c7df9b6077ae14276d9"
@@ -12110,6 +12696,22 @@ string.prototype.repeat@^0.2.0:
resolved "https://registry.yarnpkg.com/string.prototype.repeat/-/string.prototype.repeat-0.2.0.tgz#aba36de08dcee6a5a337d49b2ea1da1b28fc0ecf"
integrity sha1-q6Nt4I3O5qWjN9SbLqHaGyj8Ds8=
+string.prototype.trimleft@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz#6cc47f0d7eb8d62b0f3701611715a3954591d634"
+ integrity sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw==
+ dependencies:
+ define-properties "^1.1.3"
+ function-bind "^1.1.1"
+
+string.prototype.trimright@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz#669d164be9df9b6f7559fa8e89945b168a5a6c58"
+ integrity sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg==
+ dependencies:
+ define-properties "^1.1.3"
+ function-bind "^1.1.1"
+
string_decoder@0.10, string_decoder@~0.10.x:
version "0.10.31"
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
@@ -12232,18 +12834,24 @@ supports-color@^5.3.0, supports-color@^5.4.0:
dependencies:
has-flag "^3.0.0"
-svgo@0.6.6:
- version "0.6.6"
- resolved "https://registry.yarnpkg.com/svgo/-/svgo-0.6.6.tgz#b340889036f20f9b447543077d0f5573ed044c08"
- integrity sha1-s0CIkDbyD5tEdUMHfQ9Vc+0ETAg=
+svgo@1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.0.tgz#bae51ba95ded9a33a36b7c46ce9c359ae9154313"
+ integrity sha512-MLfUA6O+qauLDbym+mMZgtXCGRfIxyQoeH6IKVcFslyODEe/ElJNwr0FohQ3xG4C6HK6bk3KYPPXwHVJk3V5NQ==
dependencies:
- coa "~1.0.1"
- colors "~1.1.2"
- csso "~2.0.0"
- js-yaml "~3.6.0"
+ chalk "^2.4.1"
+ coa "^2.0.2"
+ css-select "^2.0.0"
+ css-select-base-adapter "^0.1.1"
+ css-tree "1.0.0-alpha.33"
+ csso "^3.5.1"
+ js-yaml "^3.13.1"
mkdirp "~0.5.1"
- sax "~1.2.1"
- whet.extend "~0.9.9"
+ object.values "^1.1.0"
+ sax "~1.2.4"
+ stable "^0.1.8"
+ unquote "~1.1.1"
+ util.promisify "~1.0.0"
"symbol-tree@>= 3.1.0 < 4.0.0", symbol-tree@^3.2.2:
version "3.2.2"
@@ -12255,6 +12863,17 @@ symlink-or-copy@^1.0.0, symlink-or-copy@^1.0.1, symlink-or-copy@^1.1.8, symlink-
resolved "https://registry.yarnpkg.com/symlink-or-copy/-/symlink-or-copy-1.2.0.tgz#5d49108e2ab824a34069b68974486c290020b393"
integrity sha512-W31+GLiBmU/ZR02Ii0mVZICuNEN9daZ63xZMPDsYgPgNjMtg+atqLEGI7PPI936jYSQZxoLb/63xos8Adrx4Eg==
+sync-disk-cache@^1.3.3:
+ version "1.3.3"
+ resolved "https://registry.yarnpkg.com/sync-disk-cache/-/sync-disk-cache-1.3.3.tgz#481933461623fdc2bdf46cfc87872ba215a7e246"
+ integrity sha512-Kp7DFemXDPRUbFW856CKamtX7bJuThZPa2dwnK2RfNqMew7Ah8xDc52SdooNlfN8oydDdDHlBPLsXTrtmA7HKw==
+ dependencies:
+ debug "^2.1.3"
+ heimdalljs "^0.2.3"
+ mkdirp "^0.5.0"
+ rimraf "^2.2.8"
+ username-sync "^1.0.2"
+
table@4.0.2:
version "4.0.2"
resolved "https://registry.yarnpkg.com/table/-/table-4.0.2.tgz#a33447375391e766ad34d3486e6e2aedc84d2e36"
@@ -12525,6 +13144,13 @@ to-regex-range@^2.1.0:
is-number "^3.0.0"
repeat-string "^1.6.1"
+to-regex-range@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
+ integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
+ dependencies:
+ is-number "^7.0.0"
+
to-regex@^3.0.1, to-regex@^3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce"
@@ -12556,7 +13182,7 @@ tough-cookie@>=0.12.0:
psl "^1.1.28"
punycode "^2.1.1"
-tough-cookie@^2.2.0, tough-cookie@^2.3.3, tough-cookie@^2.3.4:
+tough-cookie@^2.2.0, tough-cookie@^2.3.3, tough-cookie@^2.3.4, tough-cookie@^2.4.3:
version "2.5.0"
resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2"
integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==
@@ -12662,6 +13288,13 @@ typedarray@^0.0.6:
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
+typescript-memoize@^1.0.0-alpha.3:
+ version "1.0.0-alpha.3"
+ resolved "https://registry.yarnpkg.com/typescript-memoize/-/typescript-memoize-1.0.0-alpha.3.tgz#699a5415f886694a8d6e2e5451bc28a39a6bc2f9"
+ integrity sha1-aZpUFfiGaUqNbi5UUbwoo5prwvk=
+ dependencies:
+ core-js "2.4.1"
+
uc.micro@^1.0.0, uc.micro@^1.0.1, uc.micro@^1.0.5:
version "1.0.6"
resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac"
@@ -12777,6 +13410,11 @@ unpipe@1.0.0, unpipe@~1.0.0:
resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=
+unquote@~1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544"
+ integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=
+
unset-value@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559"
@@ -12882,7 +13520,7 @@ util-deprecate@^1.0.1, 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:
+util.promisify@^1.0.0, 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==
@@ -12934,7 +13572,7 @@ vary@~1.1.2:
resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=
-velocity-animate@^1.5.1:
+velocity-animate@^1.5.2:
version "1.5.2"
resolved "https://registry.yarnpkg.com/velocity-animate/-/velocity-animate-1.5.2.tgz#5a351d75fca2a92756f5c3867548b873f6c32105"
integrity sha512-m6EXlCAMetKztO1ppBhGU1/1MR3IiEevO6ESq6rcrSQ3Q77xYSW13jkfXW88o4xMrkXJhy/U7j4wFR/twMB0Eg==
@@ -13005,6 +13643,15 @@ walk-sync@^1.0.0, walk-sync@^1.0.1:
ensure-posix-path "^1.1.0"
matcher-collection "^1.1.1"
+walk-sync@^1.1.3:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/walk-sync/-/walk-sync-1.1.4.tgz#81049f3d8095479b49574cfa5f558d7a252b127d"
+ integrity sha512-nowc9thB/Jg0KW4TgxoRjLLYRPvl3DB/98S89r4ZcJqq2B0alNcKDh6pzLkBSkPMzRSMsJghJHQi79qw0YWEkA==
+ dependencies:
+ "@types/minimatch" "^3.0.3"
+ ensure-posix-path "^1.1.0"
+ matcher-collection "^1.1.1"
+
walker@~1.0.5:
version "1.0.7"
resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb"
@@ -13108,7 +13755,7 @@ websocket-extensions@>=0.1.1:
resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.3.tgz#5d2ff22977003ec687a4b87073dfbbac146ccf29"
integrity sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==
-whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3:
+whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3, whatwg-encoding@^1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0"
integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==
@@ -13150,11 +13797,6 @@ whatwg-url@^7.0.0:
tr46 "^1.0.1"
webidl-conversions "^4.0.2"
-whet.extend@~0.9.9:
- version "0.9.9"
- resolved "https://registry.yarnpkg.com/whet.extend/-/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1"
- integrity sha1-+HfVv2SMl+WqVC+twW1qJZucEaE=
-
which@^1.2.14, which@^1.2.9, which@^1.3.0:
version "1.3.1"
resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
@@ -13255,6 +13897,13 @@ ws@^5.2.0:
dependencies:
async-limiter "~1.0.0"
+ws@^6.1.0:
+ version "6.2.1"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb"
+ integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==
+ dependencies:
+ async-limiter "~1.0.0"
+
ws@~6.1.0:
version "6.1.4"
resolved "https://registry.yarnpkg.com/ws/-/ws-6.1.4.tgz#5b5c8800afab925e94ccb29d153c8d02c1776ef9"
@@ -13277,6 +13926,11 @@ xml-name-validator@^3.0.0:
resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a"
integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==
+xmlchars@^2.1.1:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb"
+ integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==
+
xmldom@^0.1.19:
version "0.1.27"
resolved "https://registry.yarnpkg.com/xmldom/-/xmldom-0.1.27.tgz#d501f97b3bdb403af8ef9ecc20573187aadac0e9"