diff --git a/.travis.yml b/.travis.yml index 810018e..5ade0ba 100644 --- a/.travis.yml +++ b/.travis.yml @@ -18,6 +18,7 @@ sudo: false addons: chrome: stable + firefox: latest-esr cache: yarn: true diff --git a/app/adapters/application.js b/app/adapters/application.js index f979105..95018cb 100644 --- a/app/adapters/application.js +++ b/app/adapters/application.js @@ -2,11 +2,12 @@ import RESTAdapter from '@ember-data/adapter/rest'; import { inject as service } from '@ember/service'; import AdapterFetch from 'ember-fetch/mixins/adapter-fetch'; -export default RESTAdapter.extend(AdapterFetch, { - encryption: service(), +export default class ApplicationAdapter extends RESTAdapter.extend(AdapterFetch) { + @service + encryption; // set namespace to api.php in same subdirectory - namespace: + namespace = window.location.pathname // remove index.html if it's there .replace(/index.html$/, '') @@ -20,4 +21,4 @@ export default RESTAdapter.extend(AdapterFetch, { .concat('/api/index.php') // remove leading slash .replace(/^\//g, '') -}); +} diff --git a/app/components/autofocusable-element.js b/app/components/autofocusable-element.js index ebb4a41..3023234 100644 --- a/app/components/autofocusable-element.js +++ b/app/components/autofocusable-element.js @@ -1,13 +1,15 @@ +import classic from 'ember-classic-decorator'; import Component from '@ember/component'; -export default Component.extend({ - autofocus: true, +@classic +export default class AutofocusableElement extends Component { + autofocus = true; didInsertElement() { - this._super(...arguments); + super.didInsertElement(...arguments); if (this.autofocus) { this.element.focus(); } - }, -}); + } +} diff --git a/app/components/bs-form/element/control/input.js b/app/components/bs-form/element/control/input.js index 46dc3e5..8399314 100644 --- a/app/components/bs-form/element/control/input.js +++ b/app/components/bs-form/element/control/input.js @@ -1,11 +1,13 @@ -import BsInput from 'ember-bootstrap/components/bs-form/element/control/input'; +import classic from 'ember-classic-decorator'; +import BaseBsInput from 'ember-bootstrap/components/bs-form/element/control/input'; -export default BsInput.extend({ +@classic +export default class CustomizedBsInput extends BaseBsInput { didInsertElement() { - this._super(...arguments); + super.didInsertElement(...arguments); if (this.autofocus) { this.element.focus(); } - }, -}); + } +} diff --git a/app/components/create-options-dates.js b/app/components/create-options-dates.js index fe5fad1..60e6acd 100644 --- a/app/components/create-options-dates.js +++ b/app/components/create-options-dates.js @@ -1,15 +1,21 @@ -import Component from '@ember/component'; +import classic from 'ember-classic-decorator'; +import { action, computed } from '@ember/object'; import { inject as service } from '@ember/service'; -import { computed } from '@ember/object'; +import Component from '@ember/component'; import { isArray } from '@ember/array'; import { isPresent } from '@ember/utils'; import moment from 'moment'; -export default Component.extend({ - i18n: service(), - store: service('store'), +@classic +export default class CreateOptionsDates extends Component { + @service + i18n; - selectedDays: computed('options.[]', function() { + @service('store') + store; + + @computed('options.[]') + get selectedDays() { return this.options // should be unique .uniqBy('day') @@ -18,64 +24,67 @@ export default Component.extend({ // filter out invalid .filter(moment.isMoment) .toArray(); - }), - calendarCenterNext: computed('calendarCenter', function() { + } + + @computed('calendarCenter') + get calendarCenterNext() { return moment(this.calendarCenter).add(1, 'months'); - }), + } - actions: { - daysSelected({ moment: newMoments }) { - let { options } = this; + @action + daysSelected({ moment: newMoments }) { + let { options } = this; - if (!isArray(newMoments)) { - // special case: all options are unselected - options.clear(); - return; - } + if (!isArray(newMoments)) { + // special case: all options are unselected + options.clear(); + return; + } - // array of options that represent days missing in updated selection - let removedOptions = options.filter((option) => { - return !newMoments.find((newMoment) => newMoment.format('YYYY-MM-DD') === option.day); + // array of options that represent days missing in updated selection + let removedOptions = options.filter((option) => { + return !newMoments.find((newMoment) => newMoment.format('YYYY-MM-DD') === option.day); + }); + + // array of moments that aren't represented yet by an option + let addedMoments = newMoments.filter((moment) => { + return !options.find((option) => moment.format('YYYY-MM-DD') === option.day); + }); + + // remove options that represent deselected days + options.removeObjects(removedOptions); + + // add options for newly selected days + let newOptions = addedMoments.map((moment) => { + return this.store.createFragment('option', { + title: moment.format('YYYY-MM-DD'), + }) + }); + newOptions.forEach((newOption) => { + // options must be insert into options array at correct position + let insertBefore = options.find(({ date }) => { + if (!moment.isMoment(date)) { + // ignore options that do not represent a valid date + return false; + } + + return date.isAfter(newOption.date); }); + let position = isPresent(insertBefore) ? options.indexOf(insertBefore) : options.length; + options.insertAt(position, newOption); + }); + } - // array of moments that aren't represented yet by an option - let addedMoments = newMoments.filter((moment) => { - return !options.find((option) => moment.format('YYYY-MM-DD') === option.day); - }); - - // remove options that represent deselected days - options.removeObjects(removedOptions); - - // add options for newly selected days - let newOptions = addedMoments.map((moment) => { - return this.store.createFragment('option', { - title: moment.format('YYYY-MM-DD'), - }) - }); - newOptions.forEach((newOption) => { - // options must be insert into options array at correct position - let insertBefore = options.find(({ date }) => { - if (!moment.isMoment(date)) { - // ignore options that do not represent a valid date - return false; - } - - return date.isAfter(newOption.date); - }); - let position = isPresent(insertBefore) ? options.indexOf(insertBefore) : options.length; - options.insertAt(position, newOption); - }); - }, - updateCalenderCenter(diff) { - this.calendarCenter.add(diff, 'months'); - this.notifyPropertyChange('calenderCenter'); - }, - }, + @action + updateCalenderCenter(diff) { + this.calendarCenter.add(diff, 'months'); + this.notifyPropertyChange('calenderCenter'); + } init() { - this._super(arguments); + super.init(arguments); let { selectedDays } = this; this.set('calendarCenter', selectedDays.length >= 1 ? selectedDays[0] : moment()); - }, -}); + } +} diff --git a/app/components/create-options-datetime.js b/app/components/create-options-datetime.js index e8e2fcd..75647f6 100644 --- a/app/components/create-options-datetime.js +++ b/app/components/create-options-datetime.js @@ -1,8 +1,7 @@ import { inject as service } from '@ember/service'; -import { readOnly, mapBy, filter } from '@ember/object/computed'; import Component from '@ember/component'; import { isPresent, isEmpty } from '@ember/utils'; -import { action, observer, get } from '@ember/object'; +import { action, get } from '@ember/object'; import { validator, buildValidations } @@ -24,141 +23,151 @@ let modelValidations = buildValidations({ ] }); -export default Component.extend(modelValidations, { - actions: { - addOption(afterOption) { - let options = this.dates; - let dayString = afterOption.get('day'); - let fragment = this.store.createFragment('option', { - title: dayString - }); - let position = options.indexOf(afterOption) + 1; - options.insertAt( - position, - fragment - ); +export default class CreateOptionsDatetime extends Component.extend(modelValidations) { + @service + store; - next(() => { - this.notifyPropertyChange('_nestedChildViews'); - }); - }, - adoptTimesOfFirstDay() { - const dates = this.dates; - const datesForFirstDay = this.datesForFirstDay; - const timesForFirstDay = this.timesForFirstDay; - const datesWithoutFirstDay = this.groupedDates.slice(1); + errorMesage = null; - /* validate if times on firstDay are valid */ - const datesForFirstDayAreValid = datesForFirstDay.every((date) => { - // ignore dates where time is null - return isEmpty(date.get('time')) || date.get('validations.isValid'); - }); + // group dates by day + @groupBy('dates', raw('day')) + groupedDates; - if (!datesForFirstDayAreValid) { - this.set('errorMessage', 'create.options-datetime.fix-validation-errors-first-day'); - return; - } + get datesForFirstDay() { + // dates are sorted + let firstDay = this.groupedDates[0]; + return firstDay.items; + } - datesWithoutFirstDay.forEach(({ items }) => { - if (isEmpty(timesForFirstDay)) { - // there aren't any times on first day - const remainingOption = items[0]; - // remove all times but the first one + get timesForFirstDay() { + return this.datesForFirstDay.map((date) => date.time).filter((time) => isPresent(time)); + } + + @action + addOption(afterOption) { + let options = this.dates; + let dayString = afterOption.get('day'); + let fragment = this.store.createFragment('option', { + title: dayString + }); + let position = options.indexOf(afterOption) + 1; + options.insertAt( + position, + fragment + ); + + next(() => { + this.notifyPropertyChange('_nestedChildViews'); + }); + } + + @action + adoptTimesOfFirstDay() { + const dates = this.dates; + const datesForFirstDay = this.datesForFirstDay; + const timesForFirstDay = this.timesForFirstDay; + const datesWithoutFirstDay = this.groupedDates.slice(1); + + /* validate if times on firstDay are valid */ + const datesForFirstDayAreValid = datesForFirstDay.every((date) => { + // ignore dates where time is null + return isEmpty(date.get('time')) || date.get('validations.isValid'); + }); + + if (!datesForFirstDayAreValid) { + this.set('errorMessage', 'create.options-datetime.fix-validation-errors-first-day'); + return; + } + + datesWithoutFirstDay.forEach(({ items }) => { + if (isEmpty(timesForFirstDay)) { + // there aren't any times on first day + const remainingOption = items[0]; + // remove all times but the first one + dates.removeObjects( + items.slice(1) + ); + // set title as date without time + remainingOption.set('title', remainingOption.get('date').format('YYYY-MM-DD')); + } else { + // adopt times of first day + if (timesForFirstDay.get('length') < items.length) { + // remove excess options dates.removeObjects( - items.slice(1) + items.slice(timesForFirstDay.get('length')) ); - // set title as date without time - remainingOption.set('title', remainingOption.get('date').format('YYYY-MM-DD')); - } else { - // adopt times of first day - if (timesForFirstDay.get('length') < items.length) { - // remove excess options - dates.removeObjects( - items.slice(timesForFirstDay.get('length')) - ); - } - // set times according to first day - let targetPosition; - timesForFirstDay.forEach((timeOfFirstDate, index) => { - const target = items[index]; - if (target === undefined) { - const basisDate = get(items[0], 'date').clone(); - let [hour, minute] = timeOfFirstDate.split(':'); - let dateString = basisDate.hour(hour).minute(minute).toISOString(); - let fragment = this.store.createFragment('option', { - title: dateString - }); - dates.insertAt( - targetPosition, - fragment - ); - targetPosition++; - } else { - target.set('time', timeOfFirstDate); - targetPosition = dates.indexOf(target) + 1; - } - }); } - }); - }, - - /* - * removes target option if it's not the only date for this day - * otherwise it deletes time for this date - */ - deleteOption(target) { - let position = this.dates.indexOf(target); - let datesForThisDay = this.groupedDates.find((group) => { - return group.value === target.get('day'); - }).items; - if (datesForThisDay.length > 1) { - this.dates.removeAt(position); - } else { - target.set('time', null); + // set times according to first day + let targetPosition; + timesForFirstDay.forEach((timeOfFirstDate, index) => { + const target = items[index]; + if (target === undefined) { + const basisDate = get(items[0], 'date').clone(); + let [hour, minute] = timeOfFirstDate.split(':'); + let dateString = basisDate.hour(hour).minute(minute).toISOString(); + let fragment = this.store.createFragment('option', { + title: dateString + }); + dates.insertAt( + targetPosition, + fragment + ); + targetPosition++; + } else { + target.set('time', timeOfFirstDate); + targetPosition = dates.indexOf(target) + 1; + } + }); } - }, + }); + } - previousPage() { - this.onPrevPage(); - }, + /* + * removes target option if it's not the only date for this day + * otherwise it deletes time for this date + */ + @action + deleteOption(target) { + let position = this.dates.indexOf(target); + let datesForThisDay = this.groupedDates.find((group) => { + return group.value === target.get('day'); + }).items; + if (datesForThisDay.length > 1) { + this.dates.removeAt(position); + } else { + target.set('time', null); + } + } - submit() { - if (this.get('validations.isValid')) { - this.onNextPage(); - } else { - this.set('shouldShowErrors', true); - } - }, - }, - // dates are sorted - datesForFirstDay: readOnly('groupedDates.firstObject.items'), + @action + previousPage() { + this.onPrevPage(); + } - // errorMessage should be reset to null on all user interactions - errorMesage: null, - resetErrorMessage: observer('dates.@each.time', function() { - this.set('errorMessage', null); - }), + @action + submit() { + if (this.get('validations.isValid')) { + this.onNextPage(); + } else { + this.set('shouldShowErrors', true); + } + } - // can't use multiple computed macros at once - _timesForFirstDay: mapBy('datesForFirstDay', 'time'), - timesForFirstDay: filter('_timesForFirstDay', function(time) { - return isPresent(time); - }), - - groupedDates: groupBy('dates', raw('day')), - - store: service(), - - inputChanged: action(function(date, value) { + @action + inputChanged(date, value) { // update property, which is normally done by default date.set('time', value); // reset partially filled state date.set('isPartiallyFilled', false); - }), + + // reset error message + this.set('errorMessage', null); + } // validate input field for being partially filled - validateInput: action(function(date, event) { + @action + validateInput(date, event) { let element = event.target; // update partially filled time validation error @@ -167,14 +176,15 @@ export default Component.extend(modelValidations, { } else { date.set('isPartiallyFilled', false); } - }), + } // remove partially filled validation error if user fixed it - updateInputValidation: action(function(date, event) { + @action + updateInputValidation(date, event) { let element = event.target; if (element.checkValidity() && date.isPartiallyFilled) { date.set('isPartiallyFilled', false); } - }), -}); + } +} diff --git a/app/components/create-options-text.js b/app/components/create-options-text.js index 0ad08d8..5355f30 100644 --- a/app/components/create-options-text.js +++ b/app/components/create-options-text.js @@ -1,23 +1,27 @@ +import classic from 'ember-classic-decorator'; +import { action } from '@ember/object'; import { inject as service } from '@ember/service'; import Component from '@ember/component'; import { next } from '@ember/runloop'; -export default Component.extend({ - actions: { - addOption(element) { - let fragment = this.store.createFragment('option'); - let options = this.options; - let position = this.options.indexOf(element) + 1; - options.insertAt( - position, - fragment - ); - }, - deleteOption(element) { - let position = this.options.indexOf(element); - this.options.removeAt(position); - } - }, +@classic +export default class CreateOptionsText extends Component { + @action + addOption(element) { + let fragment = this.store.createFragment('option'); + let options = this.options; + let position = this.options.indexOf(element) + 1; + options.insertAt( + position, + fragment + ); + } + + @action + deleteOption(element) { + let position = this.options.indexOf(element); + this.options.removeAt(position); + } enforceMinimalOptionsAmount() { let options = this.options; @@ -27,12 +31,13 @@ export default Component.extend({ this.store.createFragment('option') ); } - }, + } - store: service('store'), + @service('store') + store; init() { - this._super(...arguments); + super.init(...arguments); // need to delay pushing fragments into options array to prevent // > You modified "disabled" twice on <(unknown):ember330> in a single render. @@ -41,4 +46,4 @@ export default Component.extend({ this.enforceMinimalOptionsAmount(); }); } -}); +} diff --git a/app/components/create-options.js b/app/components/create-options.js index b881ad9..5caec53 100644 --- a/app/components/create-options.js +++ b/app/components/create-options.js @@ -1,4 +1,5 @@ import { inject as service } from '@ember/service'; +import { action } from '@ember/object'; import Component from '@ember/component'; import { validator, buildValidations @@ -21,20 +22,23 @@ let Validations = buildValidations({ ] }); -export default Component.extend(Validations, { - actions: { - previousPage() { - this.onPrevPage(); - }, - submit() { - if (this.get('validations.isValid')) { - this.onNextPage(); - } else { - this.set('shouldShowErrors', true); - } - } - }, +export default class CreateOptionsComponent extends Component.extend(Validations) { + shouldShowErrors = false; + // consumed by validator - i18n: service(), - shouldShowErrors: false -}); + @service i18n; + + @action + previousPage() { + this.onPrevPage(); + } + + @action + submit() { + if (this.get('validations.isValid')) { + this.onNextPage(); + } else { + this.set('shouldShowErrors', true); + } + } +} diff --git a/app/components/inline-datepicker.js b/app/components/inline-datepicker.js index 4798652..ade0c30 100644 --- a/app/components/inline-datepicker.js +++ b/app/components/inline-datepicker.js @@ -1,5 +1,7 @@ +import classic from 'ember-classic-decorator'; +import { tagName } from '@ember-decorators/component'; import Component from '@ember/component'; -export default Component.extend({ - tagName: '', -}); +@classic +@tagName('') +export default class InlineDatepicker extends Component {} diff --git a/app/components/language-select.js b/app/components/language-select.js index 8288c1d..4f895c8 100644 --- a/app/components/language-select.js +++ b/app/components/language-select.js @@ -1,20 +1,29 @@ +import classic from 'ember-classic-decorator'; +import { classNames, tagName } from '@ember-decorators/component'; +import { computed } from '@ember/object'; import { inject as service } from '@ember/service'; import { readOnly } from '@ember/object/computed'; import Component from '@ember/component'; -import { computed } from '@ember/object'; import localesMeta from 'croodle/locales/meta'; -export default Component.extend({ - tagName: 'select', - classNames: [ 'language-select' ], +@classic +@tagName('select') +@classNames('language-select') +export default class LanguageSelect extends Component { + @service + i18n; - i18n: service(), - moment: service(), - powerCalendar: service(), + @service + moment; - current: readOnly('i18n.locale'), + @service + powerCalendar; - locales: computed('i18n.locales', function() { + @readOnly('i18n.locale') + current; + + @computed('i18n.locales') + get locales() { let currentLocale = this.get('i18n.locale'); return this.get('i18n.locales').map(function(locale) { @@ -24,7 +33,7 @@ export default Component.extend({ text: localesMeta[locale] }; }); - }), + } change() { let locale = this.element.options[this.element.selectedIndex].value; @@ -37,4 +46,4 @@ export default Component.extend({ window.localStorage.setItem('locale', locale); } } -}); +} diff --git a/app/components/poll-evaluation-chart.js b/app/components/poll-evaluation-chart.js index 7054600..0edcaad 100644 --- a/app/components/poll-evaluation-chart.js +++ b/app/components/poll-evaluation-chart.js @@ -1,7 +1,8 @@ +import classic from 'ember-classic-decorator'; import { inject as service } from '@ember/service'; +import { readOnly } from '@ember/object/computed'; import Component from '@ember/component'; import { get, computed } from '@ember/object'; -import { readOnly } from '@ember/object/computed'; import { isArray } from '@ember/array'; import { isPresent } from '@ember/utils'; import moment from 'moment'; @@ -24,10 +25,13 @@ const addArrays = function() { return basis; }; -export default Component.extend({ - i18n: service(), +@classic +export default class PollEvaluationChart extends Component { + @service + i18n; - chartOptions: computed(function () { + @computed + get chartOptions() { return { legend: { display: false @@ -60,9 +64,10 @@ export default Component.extend({ } } } - }), + } - data: computed('users.[]', 'options.{[],each.title}', 'currentLocale', function() { + @computed('users.[]', 'options.{[],each.title}', 'currentLocale') + get data() { let labels = this.options.map((option) => { let value = get(option, 'title'); if (!this.isFindADate) { @@ -110,11 +115,20 @@ export default Component.extend({ datasets, labels }; - }), + } - answerType: readOnly('poll.answerType'), - currentLocale: readOnly('i18n.locale'), - isFindADate: readOnly('poll.isFindADate'), - options: readOnly('poll.options'), - users: readOnly('poll.users'), -}); + @readOnly('poll.answerType') + answerType; + + @readOnly('i18n.locale') + currentLocale; + + @readOnly('poll.isFindADate') + isFindADate; + + @readOnly('poll.options') + options; + + @readOnly('poll.users') + users; +} diff --git a/app/components/poll-evaluation-participants-table.js b/app/components/poll-evaluation-participants-table.js index 90deab2..2b49563 100644 --- a/app/components/poll-evaluation-participants-table.js +++ b/app/components/poll-evaluation-participants-table.js @@ -1,17 +1,29 @@ -import Component from '@ember/component'; +import classic from 'ember-classic-decorator'; import { readOnly } from '@ember/object/computed'; +import Component from '@ember/component'; import { raw } from 'ember-awesome-macros'; import { groupBy, sort } from 'ember-awesome-macros/array'; -export default Component.extend({ - hasTimes: readOnly('poll.hasTimes'), +@classic +export default class PollEvaluationParticipantsTable extends Component { + @readOnly('poll.hasTimes') + hasTimes; - isFindADate: readOnly('poll.isFindADate'), - isFreeText: readOnly('poll.isFreeText'), + @readOnly('poll.isFindADate') + isFindADate; - options: readOnly('poll.options'), - optionsGroupedByDays: groupBy('options', raw('day')), + @readOnly('poll.isFreeText') + isFreeText; - users: readOnly('poll.users'), - usersSorted: sort('users', ['creationDate']), -}); + @readOnly('poll.options') + options; + + @groupBy('options', raw('day')) + optionsGroupedByDays; + + @readOnly('poll.users') + users; + + @sort('users', ['creationDate']) + usersSorted; +} diff --git a/app/components/poll-evaluation-summary-option.js b/app/components/poll-evaluation-summary-option.js index bb93d73..680a163 100644 --- a/app/components/poll-evaluation-summary-option.js +++ b/app/components/poll-evaluation-summary-option.js @@ -1,4 +1,5 @@ +import classic from 'ember-classic-decorator'; import Component from '@ember/component'; -export default Component.extend({ -}); +@classic +export default class PollEvaluationSummaryOption extends Component {} diff --git a/app/components/poll-evaluation-summary.js b/app/components/poll-evaluation-summary.js index 7068add..bc21108 100644 --- a/app/components/poll-evaluation-summary.js +++ b/app/components/poll-evaluation-summary.js @@ -1,16 +1,20 @@ -import Component from '@ember/component'; +import classic from 'ember-classic-decorator'; +import { classNames } from '@ember-decorators/component'; import { computed } from '@ember/object'; -import { gt, mapBy, max, readOnly } from '@ember/object/computed'; +import { inject as service } from '@ember/service'; +import { readOnly, max, mapBy, gt } from '@ember/object/computed'; +import Component from '@ember/component'; import { copy } from '@ember/object/internals'; import { isEmpty } from '@ember/utils'; -import { inject as service } from '@ember/service'; -export default Component.extend({ - i18n: service(), +@classic +@classNames('evaluation-summary') +export default class PollEvaluationSummary extends Component { + @service + i18n; - classNames: ['evaluation-summary'], - - bestOptions: computed('users.[]', function() { + @computed('users.[]') + get bestOptions() { // can not evaluate answer type free text if (this.get('poll.isFreeText')) { return undefined; @@ -70,16 +74,23 @@ export default Component.extend({ } return bestOptions; - }), + } - currentLocale: readOnly('i18n.locale'), + @readOnly('i18n.locale') + currentLocale; - multipleBestOptions: gt('bestOptions.length', 1), + @gt('bestOptions.length', 1) + multipleBestOptions; - lastParticipationAt: max('participationDates'), - participationDates: mapBy('users', 'creationDate'), + @max('participationDates') + lastParticipationAt; - participantsCount: readOnly('users.length'), + @mapBy('users', 'creationDate') + participationDates; - users: readOnly('poll.users'), -}); + @readOnly('users.length') + participantsCount; + + @readOnly('poll.users') + users; +} diff --git a/app/controllers/create.js b/app/controllers/create.js index 13e2716..780e6a7 100644 --- a/app/controllers/create.js +++ b/app/controllers/create.js @@ -2,32 +2,39 @@ import { inject as service } from '@ember/service'; import { action, computed } from '@ember/object'; import Controller from '@ember/controller'; -export default Controller.extend({ - router: service(), +export default class CreateController extends Controller { + @service + router; - canEnterMetaStep: computed('model.pollType', 'visitedSteps', function() { + @computed('model.pollType', 'visitedSteps') + get canEnterMetaStep() { return this.visitedSteps.has('meta') && this.model.pollType; - }), + } - canEnterOptionsStep: computed('model.title', 'visitedSteps', function() { + @computed('model.title', 'visitedSteps') + get canEnterOptionsStep() { let { title } = this.model; return this.visitedSteps.has('options') && typeof title === 'string' && title.length >= 2; - }), + } - canEnterOptionsDatetimeStep: computed('model.options.[]', 'visitedSteps', function() { + @computed('model.options.[]', 'visitedSteps') + get canEnterOptionsDatetimeStep() { return this.visitedSteps.has('options-datetime') && this.model.options.length >= 1; - }), + } - canEnterSettingsStep: computed('model.options.[]', 'visitedSteps', function() { + @computed('model.options.[]', 'visitedSteps') + get canEnterSettingsStep() { return this.visitedSteps.has('settings') && this.model.options.length >= 1; - }), + } - isFindADate: computed('model.pollType', function() { + @computed('model.pollType') + get isFindADate() { return this.model.pollType === 'FindADate'; - }), + } - updateVisitedSteps: action(function() { + @action + updateVisitedSteps() { let { currentRouteName } = this.router; // currentRouteName might not be defined in some edge cases @@ -40,15 +47,15 @@ export default Controller.extend({ // as visitedSteps is a Set must notify about changes manually this.notifyPropertyChange('visitedSteps'); - }), + } listenForStepChanges() { this.set('visitedSteps', new Set()); this.router.on('routeDidChange', this.updateVisitedSteps); - }, + } clearListenerForStepChanges() { this.router.off('routeDidChange', this.updateVisitedSteps); - }, -}); + } +} diff --git a/app/controllers/create/index.js b/app/controllers/create/index.js index 108ec5f..3a510c4 100644 --- a/app/controllers/create/index.js +++ b/app/controllers/create/index.js @@ -1,4 +1,5 @@ import { inject as service } from '@ember/service'; +import { action } from '@ember/object'; import { alias } from '@ember/object/computed'; import Controller from '@ember/controller'; import { @@ -19,22 +20,23 @@ const Validations = buildValidations({ ] }); -export default Controller.extend(Validations, { - actions: { - submit() { - if (this.get('validations.isValid')) { - this.transitionToRoute('create.meta'); - } - } - }, +export default class CreateIndex extends Controller.extend(Validations) { + @service + i18n; - i18n: service(), + @alias('model.pollType') + pollType; + + @action + submit() { + if (this.get('validations.isValid')) { + this.transitionToRoute('create.meta'); + } + } init() { - this._super(...arguments); + super.init(...arguments); - this.get('i18n.locale'); - }, - - pollType: alias('model.pollType') -}); + this.i18n.locale; + } +} diff --git a/app/controllers/create/meta.js b/app/controllers/create/meta.js index 1e7faa3..f313959 100644 --- a/app/controllers/create/meta.js +++ b/app/controllers/create/meta.js @@ -1,4 +1,5 @@ import { inject as service } from '@ember/service'; +import { action } from '@ember/object'; import { alias } from '@ember/object/computed'; import Controller from '@ember/controller'; import { @@ -19,27 +20,31 @@ const Validations = buildValidations({ ] }); -export default Controller.extend(Validations, { - actions: { - previousPage() { - this.transitionToRoute('create.index'); - }, - submit() { - if (this.get('validations.isValid')) { - this.transitionToRoute('create.options'); - } - } - }, +export default class CreateMetaController extends Controller.extend(Validations) { + @service + i18n; - description: alias('model.description'), + @alias('model.description') + description; + + @alias('model.title') + title; init() { - this._super(...arguments); + super.init(...arguments); this.get('i18n.locale'); - }, + } - i18n: service(), + @action + previousPage() { + this.transitionToRoute('create.index'); + } - title: alias('model.title') -}); + @action + submit() { + if (this.get('validations.isValid')) { + this.transitionToRoute('create.options'); + } + } +} diff --git a/app/controllers/create/options-datetime.js b/app/controllers/create/options-datetime.js index 256b04a..b48d5e6 100644 --- a/app/controllers/create/options-datetime.js +++ b/app/controllers/create/options-datetime.js @@ -1,18 +1,22 @@ +import classic from 'ember-classic-decorator'; +import { action } from '@ember/object'; import { alias } from '@ember/object/computed'; import Controller from '@ember/controller'; import moment from 'moment'; -export default Controller.extend({ - actions: { - nextPage() { - this.normalizeOptions(); +@classic +export default class CreateOptionsDatetimeController extends Controller { + @action + nextPage() { + this.normalizeOptions(); - this.transitionToRoute('create.settings'); - }, - previousPage() { - this.transitionToRoute('create.options'); - }, - }, + this.transitionToRoute('create.settings'); + } + + @action + previousPage() { + this.transitionToRoute('create.options'); + } normalizeOptions() { const options = this.options; @@ -36,6 +40,8 @@ export default Controller.extend({ // sort options // ToDo: Find a better way without reseting the options this.set('options', options.sortBy('title')); - }, - options: alias('model.options') -}); + } + + @alias('model.options') + options; +} diff --git a/app/controllers/create/options.js b/app/controllers/create/options.js index 0bacc5b..89ba575 100644 --- a/app/controllers/create/options.js +++ b/app/controllers/create/options.js @@ -1,19 +1,24 @@ +import classic from 'ember-classic-decorator'; +import { action } from '@ember/object'; import { alias } from '@ember/object/computed'; import Controller from '@ember/controller'; -export default Controller.extend({ - actions: { - nextPage() { - if (this.isFindADate) { - this.transitionToRoute('create.options-datetime'); - } else { - this.transitionToRoute('create.settings'); - } - }, - previousPage() { - this.transitionToRoute('create.meta'); - }, - }, +@classic +export default class CreateOptionsController extends Controller { + @action + nextPage() { + if (this.isFindADate) { + this.transitionToRoute('create.options-datetime'); + } else { + this.transitionToRoute('create.settings'); + } + } - isFindADate: alias('model.isFindADate') -}); + @action + previousPage() { + this.transitionToRoute('create.meta'); + } + + @alias('model.isFindADate') + isFindADate; +} diff --git a/app/controllers/create/settings.js b/app/controllers/create/settings.js index e9039f1..cc3039d 100644 --- a/app/controllers/create/settings.js +++ b/app/controllers/create/settings.js @@ -2,7 +2,7 @@ import { inject as service } from '@ember/service'; import { alias } from '@ember/object/computed'; import Controller from '@ember/controller'; import { isPresent } from '@ember/utils'; -import { computed } from '@ember/object'; +import { action, computed } from '@ember/object'; import answersForAnswerType from 'croodle/utils/answers-for-answer-type'; import { validator, buildValidations @@ -28,92 +28,43 @@ const Validations = buildValidations({ forceAnswer: validator('presence', true) }); -export default Controller.extend(Validations, { - actions: { - previousPage() { - let { isFindADate } = this.model; +export default class CreateSettings extends Controller.extend(Validations) { + @service + encryption; - if (isFindADate) { - this.transitionToRoute('create.options-datetime'); - } else { - this.transitionToRoute('create.options'); - } - }, - async submit() { - if (!this.validations.isValid) { - return; - } + @service + i18n; - let poll = this.model; + @alias('model.anonymousUser') + anonymousUser; - // set timezone if there is atleast one option with time - if ( - poll.isFindADate && - poll.options.any(({ title }) => { - return !moment(title, 'YYYY-MM-DD', true).isValid(); - }) - ) { - this.set('model.timezone', moment.tz.guess()); - } + @alias('model.answerType') + answerType; - // save poll - try { - await poll.save(); - } catch(err) { - this.flashMessages.danger('error.poll.savingFailed'); - - throw err; - } - - try { - // reload as workaround for bug: duplicated records after save - await poll.reload(); - - // redirect to new poll - await this.transitionToRoute('poll', poll, { - queryParams: { - encryptionKey: this.encryption.key, - }, - }); - } catch(err) { - // TODO: show feedback to user - throw err; - } - }, - updateAnswerType(answerType) { - this.set('model.answerType', answerType); - this.set('model.answers', answersForAnswerType(answerType)); - } - }, - - anonymousUser: alias('model.anonymousUser'), - answerType: alias('model.answerType'), - - answerTypes: computed(function() { + @computed + get answerTypes() { return [ { id: 'YesNo', labelTranslation: 'answerTypes.yesNo.label' }, { id: 'YesNoMaybe', labelTranslation: 'answerTypes.yesNoMaybe.label' }, { id: 'FreeText', labelTranslation: 'answerTypes.freeText.label' }, ]; - }), + } - encryption: service(), + @computed('model.expirationDate') + get expirationDuration() { + // TODO: must be calculated based on model.expirationDate + return 'P3M'; + } + set expirationDuration(value) { + this.set( + 'model.expirationDate', + isPresent(value) ? moment().add(moment.duration(value)).toISOString(): '' + ); + return value; + } - expirationDuration: computed('model.expirationDate', { - get() { - // TODO: must be calculated based on model.expirationDate - return 'P3M'; - }, - set(key, value) { - this.set( - 'model.expirationDate', - isPresent(value) ? moment().add(moment.duration(value)).toISOString(): '' - ); - return value; - } - }), - - expirationDurations: computed('', function() { + @computed + get expirationDurations() { return [ { id: 'P7D', labelTranslation: 'create.settings.expirationDurations.P7D' }, { id: 'P1M', labelTranslation: 'create.settings.expirationDurations.P1M' }, @@ -122,15 +73,74 @@ export default Controller.extend(Validations, { { id: 'P1Y', labelTranslation: 'create.settings.expirationDurations.P1Y' }, { id: '', labelTranslation: 'create.settings.expirationDurations.never' }, ]; - }), + } - forceAnswer: alias('model.forceAnswer'), + @alias('model.forceAnswer') + forceAnswer; - i18n: service(), + @action + previousPage() { + let { isFindADate } = this.model; + + if (isFindADate) { + this.transitionToRoute('create.options-datetime'); + } else { + this.transitionToRoute('create.options'); + } + } + + @action + async submit() { + if (!this.validations.isValid) { + return; + } + + let poll = this.model; + + // set timezone if there is atleast one option with time + if ( + poll.isFindADate && + poll.options.any(({ title }) => { + return !moment(title, 'YYYY-MM-DD', true).isValid(); + }) + ) { + this.set('model.timezone', moment.tz.guess()); + } + + // save poll + try { + await poll.save(); + } catch(err) { + this.flashMessages.danger('error.poll.savingFailed'); + + throw err; + } + + try { + // reload as workaround for bug: duplicated records after save + await poll.reload(); + + // redirect to new poll + await this.transitionToRoute('poll', poll, { + queryParams: { + encryptionKey: this.encryption.key, + }, + }); + } catch(err) { + // TODO: show feedback to user + throw err; + } + } + + @action + updateAnswerType(answerType) { + this.set('model.answerType', answerType); + this.set('model.answers', answersForAnswerType(answerType)); + } init() { - this._super(...arguments); + super.init(...arguments); - this.get('i18n.locale'); + this.i18n.locale; } -}); +} diff --git a/app/controllers/error.js b/app/controllers/error.js index 75ceaae..f637cb9 100644 --- a/app/controllers/error.js +++ b/app/controllers/error.js @@ -1,3 +1,5 @@ +import classic from 'ember-classic-decorator'; import Controller from '@ember/controller'; -export default Controller.extend({}); +@classic +export default class ErrorController extends Controller {} diff --git a/app/controllers/poll-error.js b/app/controllers/poll-error.js index 56daf02..cf94d8e 100644 --- a/app/controllers/poll-error.js +++ b/app/controllers/poll-error.js @@ -1,11 +1,16 @@ -import Controller from '@ember/controller'; +import classic from 'ember-classic-decorator'; import { computed } from '@ember/object'; import { equal } from '@ember/object/computed'; +import Controller from '@ember/controller'; import sjcl from 'sjcl'; -export default Controller.extend({ - decryptionFailed: computed('model', function() { +@classic +export default class PollErrorController extends Controller { + @computed('model') + get decryptionFailed() { return this.model instanceof sjcl.exception.corrupt; - }), - notFound: equal('model.errors.firstObject.status', '404') -}); + } + + @equal('model.errors.firstObject.status', '404') + notFound; +} diff --git a/app/controllers/poll.js b/app/controllers/poll.js index 31291f1..e982470 100644 --- a/app/controllers/poll.js +++ b/app/controllers/poll.js @@ -2,55 +2,101 @@ import { inject as service } from '@ember/service'; import { readOnly } from '@ember/object/computed'; import Controller from '@ember/controller'; import { isPresent, isEmpty } from '@ember/utils'; -import { observer, computed } from '@ember/object'; +import { action, computed } from '@ember/object'; +import { observes } from '@ember-decorators/object'; import moment from 'moment'; -export default Controller.extend({ - encryption: service(), - flashMessages: service(), - i18n: service(), - router: service(), +export default class PollController extends Controller { + @service + encryption; - actions: { - linkAction(type) { - let flashMessages = this.flashMessages; - switch (type) { - case 'copied': - flashMessages.success(`poll.link.copied`); - break; + @service + flashMessages; - case 'selected': - flashMessages.info(`poll.link.selected`); - break; - } - }, - useLocalTimezone() { - this.set('useLocalTimezone', true); - this.set('timezoneChoosen', true); - } - }, + @service + i18n; - currentLocale: readOnly('i18n.locale'), + @service + router; - encryptionKey: '', - queryParams: ['encryptionKey'], + queryParams = ['encryptionKey']; - momentLongDayFormat: computed('currentLocale', function() { + encryptionKey = ''; + timezoneChoosen = false; + useLocalTimezone = false; + + @readOnly('i18n.locale') + currentLocale; + + @computed('currentLocale') + get momentLongDayFormat() { let currentLocale = this.currentLocale; return moment.localeData(currentLocale) .longDateFormat('LLLL') .replace( moment.localeData(currentLocale).longDateFormat('LT'), '') .trim(); - }), + } - poll: readOnly('model'), - pollUrl: computed('router.currentURL', 'encryptionKey', function() { + @readOnly('model') + poll; + + @computed('router.currentURL', 'encryptionKey') + get pollUrl() { return window.location.href; - }), + } + + @computed('poll.expirationDate') + get showExpirationWarning() { + let expirationDate = this.poll.expirationDate; + if (isEmpty(expirationDate)) { + return false; + } + return moment().add(2, 'weeks').isAfter(moment(expirationDate)); + } + + /* + * return true if current timezone differs from timezone poll got created with + */ + @computed('poll.timezone') + get timezoneDiffers() { + let modelTimezone = this.poll.timezone; + return isPresent(modelTimezone) && moment.tz.guess() !== modelTimezone; + } + + @computed('timezoneDiffers', 'timezoneChoosen') + get mustChooseTimezone() { + return this.timezoneDiffers && !this.timezoneChoosen; + } + + @computed('useLocalTimezone') + get timezone() { + return this.useLocalTimezone ? undefined : this.poll.timezone; + } + + @action + linkAction(type) { + let flashMessages = this.flashMessages; + switch (type) { + case 'copied': + flashMessages.success(`poll.link.copied`); + break; + + case 'selected': + flashMessages.info(`poll.link.selected`); + break; + } + } + + @action + useLocalTimezone() { + this.set('useLocalTimezone', true); + this.set('timezoneChoosen', true); + } // TODO: Remove this code. It's spooky. - preventEncryptionKeyChanges: observer('encryptionKey', function() { + @observes('encryptionKey') + preventEncryptionKeyChanges() { if ( !isEmpty(this.encryption.key) && this.encryptionKey !== this.encryption.key @@ -60,33 +106,5 @@ export default Controller.extend({ this.set('encryptionKey', this.encryption.key); } - }), - - showExpirationWarning: computed('poll.expirationDate', function() { - let expirationDate = this.poll.expirationDate; - if (isEmpty(expirationDate)) { - return false; - } - return moment().add(2, 'weeks').isAfter(moment(expirationDate)); - }), - - timezoneChoosen: false, - - /* - * return true if current timezone differs from timezone poll got created with - */ - timezoneDiffers: computed('poll.timezone', function() { - let modelTimezone = this.poll.timezone; - return isPresent(modelTimezone) && moment.tz.guess() !== modelTimezone; - }), - - useLocalTimezone: false, - - mustChooseTimezone: computed('timezoneDiffers', 'timezoneChoosen', function() { - return this.timezoneDiffers && !this.timezoneChoosen; - }), - - timezone: computed('useLocalTimezone', function() { - return this.useLocalTimezone ? undefined : this.poll.timezone; - }) -}); + } +} diff --git a/app/controllers/poll/evaluation.js b/app/controllers/poll/evaluation.js index d301322..61cc7c8 100644 --- a/app/controllers/poll/evaluation.js +++ b/app/controllers/poll/evaluation.js @@ -1,29 +1,41 @@ -import { inject as service } from '@ember/service'; -import { and, gt, not, readOnly } from '@ember/object/computed'; +import classic from 'ember-classic-decorator'; import { computed } from '@ember/object'; +import { inject as service } from '@ember/service'; +import { readOnly, not, gt, and } from '@ember/object/computed'; import Controller, { inject as controller } from '@ember/controller'; -export default Controller.extend({ - currentLocale: readOnly('i18n.locale'), +@classic +export default class PollEvaluationController extends Controller { + @readOnly('i18n.locale') + currentLocale; - hasTimes: readOnly('poll.hasTimes'), + @readOnly('poll.hasTimes') + hasTimes; - i18n: service(), + @service + i18n; - momentLongDayFormat: readOnly('pollController.momentLongDayFormat'), + @readOnly('pollController.momentLongDayFormat') + momentLongDayFormat; - poll: readOnly('model'), - pollController: controller('poll'), + @readOnly('model') + poll; - timezone: readOnly('pollController.timezone'), + @controller('poll') + pollController; - users: readOnly('poll.users'), + @readOnly('pollController.timezone') + timezone; + + @readOnly('poll.users') + users; /* * evaluates poll data * if free text answers are allowed evaluation is disabled */ - evaluation: computed('users.[]', function() { + @computed('users.[]') + get evaluation() { if (!this.isEvaluable) { return []; } @@ -83,9 +95,14 @@ export default Controller.extend({ }); return evaluation; - }), + } - hasUsers: gt('poll.users.length', 0), - isNotFreeText: not('poll.isFreeText'), - isEvaluable: and('hasUsers', 'isNotFreeText'), -}); + @gt('poll.users.length', 0) + hasUsers; + + @not('poll.isFreeText') + isNotFreeText; + + @and('hasUsers', 'isNotFreeText') + isEvaluable; +} diff --git a/app/controllers/poll/participation.js b/app/controllers/poll/participation.js index 8f41b6b..3532ba3 100644 --- a/app/controllers/poll/participation.js +++ b/app/controllers/poll/participation.js @@ -1,5 +1,6 @@ +import classic from 'ember-classic-decorator'; import { inject as service } from '@ember/service'; -import { readOnly, not } from '@ember/object/computed'; +import { not, readOnly } from '@ember/object/computed'; import Controller, { inject as controller } from '@ember/controller'; import { getOwner } from '@ember/application'; import { isPresent, isEmpty } from '@ember/utils'; @@ -56,6 +57,11 @@ const SelectionValidations = buildValidations({ }) }); +@classic +class SelectionObject extends EmberObject.extend(SelectionValidations) { + value = null; +} + export default Controller.extend(Validations, { actions: { async submit() { @@ -179,14 +185,6 @@ export default Controller.extend(Validations, { let isFindADate = this.isFindADate; let lastDate; - let SelectionObject = EmberObject.extend(SelectionValidations, { - // forceAnswer and isFreeText must be included in model - // cause otherwise validations can't depend on it - forceAnswer: this.forceAnswer, - isFreeText: this.isFreeText, - value: null - }); - return options.map((option) => { let labelValue; let momentFormat; @@ -216,7 +214,12 @@ export default Controller.extend(Validations, { let owner = getOwner(this); return SelectionObject.create(owner.ownerInjection(), { labelValue, - momentFormat + momentFormat, + + // forceAnswer and isFreeText must be included in model + // cause otherwise validations can't depend on it + forceAnswer: this.forceAnswer, + isFreeText: this.isFreeText, }); }); }), diff --git a/app/models/answer.js b/app/models/answer.js index 3639232..e014632 100644 --- a/app/models/answer.js +++ b/app/models/answer.js @@ -1,9 +1,18 @@ +import classic from 'ember-classic-decorator'; import { attr } from '@ember-data/model'; import Fragment from 'ember-data-model-fragments/fragment'; -export default Fragment.extend({ - type: attr('string'), - label: attr('string'), - labelTranslation: attr('string'), - icon: attr('string') -}); +@classic +export default class Answer extends Fragment { + @attr('string') + type; + + @attr('string') + label; + + @attr('string') + labelTranslation; + + @attr('string') + icon; +} diff --git a/app/models/option.js b/app/models/option.js index b1c8223..209c322 100644 --- a/app/models/option.js +++ b/app/models/option.js @@ -1,8 +1,9 @@ -import { attr } from '@ember-data/model'; +import classic from 'ember-classic-decorator'; +import { computed } from '@ember/object'; import { inject as service } from '@ember/service'; import { readOnly } from '@ember/object/computed'; +import { attr } from '@ember-data/model'; import { assert } from '@ember/debug'; -import { computed } from '@ember/object'; import { isEmpty } from '@ember/utils'; import moment from 'moment'; import Fragment from 'ember-data-model-fragments/fragment'; @@ -58,18 +59,32 @@ const Validations = buildValidations({ ] }); -export default Fragment.extend(Validations, { - poll: fragmentOwner(), - title: attr('string'), +@classic +export default class Option extends Fragment.extend(Validations) { + @service + i18n; - date: computed('title', function() { + @fragmentOwner() + poll; + + @attr('string') + title; + + // isPartiallyFilled should be set only for times on creation if input is filled + // partially (e.g. "11:--"). It's required cause ember-cp-validations does not + // provide any method to push a validation error into validations. It's only + // working based on a property of the model. + isPartiallyFilled = false; + + @computed('title') + get date() { const allowedFormats = [ 'YYYY-MM-DD', 'YYYY-MM-DDTHH:mm:ss.SSSZ' ]; const value = this.title; if (isEmpty(value)) { - return; + return null; } const format = allowedFormats.find((f) => { @@ -78,24 +93,26 @@ export default Fragment.extend(Validations, { return f.length === value.length && moment(value, f, true).isValid(); }); if (isEmpty(format)) { - return; + return null; } return moment(value, format, true); - }), + } - day: computed('date', function() { + @computed('date') + get day() { const date = this.date; if (!moment.isMoment(date)) { - return; + return null; } return date.format('YYYY-MM-DD'); - }), + } - dayFormatted: computed('date', 'i18n.locale', function() { + @computed('date', 'i18n.locale') + get dayFormatted() { let date = this.date; if (!moment.isMoment(date)) { - return; + return null; } const locale = this.get('i18n.locale'); @@ -113,59 +130,54 @@ export default Fragment.extend(Validations, { } return date.format(format); - }), + } - hasTime: computed('title', function() { + @computed('title') + get hasTime() { return moment.isMoment(this.date) && this.title.length === 'YYYY-MM-DDTHH:mm:ss.SSSZ'.length; - }), + } - // isPartiallyFilled should be set only for times on creation if input is filled - // partially (e.g. "11:--"). It's required cause ember-cp-validations does not - // provide any method to push a validation error into validations. It's only - // working based on a property of the model. - isPartiallyFilled: false, + @computed('date') + get time() { + const date = this.date; + if (!moment.isMoment(date)) { + return null; + } + // verify that value is an ISO 8601 date string containg time + // testing length is faster than parsing with moment + const value = this.title; + if (value.length !== 'YYYY-MM-DDTHH:mm:ss.SSSZ'.length) { + return null; + } - time: computed('date', { - get() { - const date = this.date; - if (!moment.isMoment(date)) { - return; - } - // verify that value is an ISO 8601 date string containg time - // testing length is faster than parsing with moment - const value = this.title; - if (value.length !== 'YYYY-MM-DDTHH:mm:ss.SSSZ'.length) { - return; - } + return date.format('HH:mm'); + } + set time(value) { + let date = this.date; + assert( + 'can not set a time if current value is not a valid date', + moment.isMoment(date) + ); - return date.format('HH:mm'); - }, - set(key, value) { - let date = this.date; - assert( - 'can not set a time if current value is not a valid date', - moment.isMoment(date) - ); - - // set time to undefined if value is false - if (isEmpty(value)) { - this.set('title', date.format('YYYY-MM-DD')); - return value; - } - - if (!moment(value, 'HH:mm', true).isValid()) { - return value; - } - - const [ hour, minute ] = value.split(':'); - this.set('title', date.hour(hour).minute(minute).toISOString()); + // set time to undefined if value is false + if (isEmpty(value)) { + this.set('title', date.format('YYYY-MM-DD')); return value; } - }), - i18n: service(), + if (!moment(value, 'HH:mm', true).isValid()) { + return value; + } + + const [ hour, minute ] = value.split(':'); + this.set('title', date.hour(hour).minute(minute).toISOString()); + return value; + } + init() { + super.init(...arguments); + this.get('i18n.locale'); } -}); +} diff --git a/app/models/poll.js b/app/models/poll.js index f91a87b..8fae3d8 100644 --- a/app/models/poll.js +++ b/app/models/poll.js @@ -1,63 +1,79 @@ -import Model, { hasMany, attr } from '@ember-data/model'; -import { fragmentArray } from 'ember-data-model-fragments/attributes'; +import classic from 'ember-classic-decorator'; import { computed } from '@ember/object'; import { equal } from '@ember/object/computed'; +import Model, { hasMany, attr } from '@ember-data/model'; +import { fragmentArray } from 'ember-data-model-fragments/attributes'; -export default Model.extend({ +@classic +export default class Poll extends Model { /* * relationships */ - users: hasMany('user', { async: false }), + @hasMany('user', { async: false }) + users; /* * properties */ // Is participation without user name possibile? - anonymousUser: attr('boolean'), + @attr('boolean') + anonymousUser; // array of possible answers - answers: fragmentArray('answer'), + @fragmentArray('answer') + answers; // YesNo, YesNoMaybe or Freetext - answerType: attr('string'), + @attr('string') + answerType; // ISO-8601 combined date and time string in UTC - creationDate: attr('date'), + @attr('date') + creationDate; // polls description - description: attr('string', { + @attr('string', { defaultValue: '' - }), + }) + description; // ISO 8601 date + time string in UTC - expirationDate: attr('string', { + @attr('string', { includePlainOnCreate: 'serverExpirationDate' - }), + }) + expirationDate; // Must all options been answered? - forceAnswer: attr('boolean'), + @attr('boolean') + forceAnswer; // array of polls options - options: fragmentArray('option'), + @fragmentArray('option') + options; // FindADate or MakeAPoll - pollType: attr('string'), + @attr('string') + pollType; // timezone poll got created in (like "Europe/Berlin") - timezone: attr('string'), + @attr('string') + timezone; // polls title - title: attr('string'), + @attr('string') + title; // Croodle version poll got created with - version: attr('string', { + @attr('string', { encrypted: false - }), + }) + version; /* * computed properties */ - hasTimes: computed('options.[]', function() { + @computed('options.[]') + get hasTimes() { if (this.isMakeAPoll) { return false; } @@ -66,9 +82,14 @@ export default Model.extend({ let dayStringLength = 10; // 'YYYY-MM-DD'.length return option.title.length > dayStringLength; }); - }), + } - isFindADate: equal('pollType', 'FindADate'), - isFreeText: equal('answerType', 'FreeText'), - isMakeAPoll: equal('pollType', 'MakeAPoll'), -}); + @equal('pollType', 'FindADate') + isFindADate; + + @equal('answerType', 'FreeText') + isFreeText; + + @equal('pollType', 'MakeAPoll') + isMakeAPoll; +} diff --git a/app/models/user.js b/app/models/user.js index 03b4079..6061d65 100644 --- a/app/models/user.js +++ b/app/models/user.js @@ -1,29 +1,36 @@ +import classic from 'ember-classic-decorator'; import Model, { belongsTo, attr } from '@ember-data/model'; import { fragmentArray } from 'ember-data-model-fragments/attributes'; -export default Model.extend({ +@classic +export default class User extends Model { /* * relationship */ - poll: belongsTo('poll'), + @belongsTo('poll') + poll; /* * properties */ // ISO 8601 date + time string - creationDate: attr('date'), + @attr('date') + creationDate; // user name - name: attr('string'), + @attr('string') + name; // array of users selections // must be in same order as options property of poll - selections: fragmentArray('selection'), + @fragmentArray('selection') + selections; // Croodle version user got created with - version: attr('string', { + @attr('string', { encrypted: false }) -}); + version; +} diff --git a/app/routes/create.js b/app/routes/create.js index 6a00873..9b723fa 100644 --- a/app/routes/create.js +++ b/app/routes/create.js @@ -1,10 +1,12 @@ +import classic from 'ember-classic-decorator'; import { inject as service } from '@ember/service'; import Route from '@ember/routing/route'; import config from 'croodle/config/environment'; import answersForAnswerType from 'croodle/utils/answers-for-answer-type'; /* global moment */ -export default Route.extend({ +@classic +export default class CreateRoute extends Route { beforeModel(transition) { // enforce that wizzard is started at create.index if (transition.targetName !== 'create.index') { @@ -13,9 +15,10 @@ export default Route.extend({ // set encryption key this.encryption.generateKey(); - }, + } - encryption: service(), + @service + encryption; model() { // create empty poll @@ -30,15 +33,15 @@ export default Route.extend({ expirationDate: moment().add(3, 'month').toISOString(), version: config.APP.version, }); - }, + } activate() { let controller = this.controllerFor(this.routeName); controller.listenForStepChanges(); - }, + } deactivate() { let controller = this.controllerFor(this.routeName); controller.clearListenerForStepChanges(); - }, -}); + } +} diff --git a/app/routes/create/index.js b/app/routes/create/index.js index 0e00b44..c0412ec 100644 --- a/app/routes/create/index.js +++ b/app/routes/create/index.js @@ -1,7 +1,9 @@ +import classic from 'ember-classic-decorator'; import Route from '@ember/routing/route'; -export default Route.extend({ +@classic +export default class IndexRoute extends Route { model() { return this.modelFor('create'); } -}); +} diff --git a/app/routes/create/meta.js b/app/routes/create/meta.js index 0e00b44..c920e38 100644 --- a/app/routes/create/meta.js +++ b/app/routes/create/meta.js @@ -1,7 +1,9 @@ +import classic from 'ember-classic-decorator'; import Route from '@ember/routing/route'; -export default Route.extend({ +@classic +export default class MetaRoute extends Route { model() { return this.modelFor('create'); } -}); +} diff --git a/app/routes/create/options-datetime.js b/app/routes/create/options-datetime.js index 0e00b44..4835c96 100644 --- a/app/routes/create/options-datetime.js +++ b/app/routes/create/options-datetime.js @@ -1,7 +1,9 @@ +import classic from 'ember-classic-decorator'; import Route from '@ember/routing/route'; -export default Route.extend({ +@classic +export default class OptionsDatetimeRoute extends Route { model() { return this.modelFor('create'); } -}); +} diff --git a/app/routes/create/options.js b/app/routes/create/options.js index 0e00b44..8ba8b2e 100644 --- a/app/routes/create/options.js +++ b/app/routes/create/options.js @@ -1,7 +1,9 @@ +import classic from 'ember-classic-decorator'; import Route from '@ember/routing/route'; -export default Route.extend({ +@classic +export default class OptionsRoute extends Route { model() { return this.modelFor('create'); } -}); +} diff --git a/app/routes/create/settings.js b/app/routes/create/settings.js index 0e00b44..9e2e3a2 100644 --- a/app/routes/create/settings.js +++ b/app/routes/create/settings.js @@ -1,7 +1,9 @@ +import classic from 'ember-classic-decorator'; import Route from '@ember/routing/route'; -export default Route.extend({ +@classic +export default class SettingsRoute extends Route { model() { return this.modelFor('create'); } -}); +} diff --git a/app/routes/poll.js b/app/routes/poll.js index e768b6b..17f68c7 100644 --- a/app/routes/poll.js +++ b/app/routes/poll.js @@ -1,18 +1,21 @@ +import classic from 'ember-classic-decorator'; +import { action } from '@ember/object'; import { inject as service } from '@ember/service'; import Route from '@ember/routing/route'; -export default Route.extend({ - actions: { - error(error) { - if (error && error.status === 404) { - return this.transitionTo('404'); - } - - return true; +@classic +export default class PollRoute extends Route { + @action + error(error) { + if (error && error.status === 404) { + return this.transitionTo('404'); } - }, - encryption: service(), + return true; + } + + @service + encryption; model(params) { // get encryption key from query parameter in singleton @@ -20,7 +23,7 @@ export default Route.extend({ this.set('encryption.key', params.encryptionKey); return this.store.find('poll', params.poll_id); - }, + } redirect(poll, transition) { if (transition.targetName === 'poll.index') { @@ -31,4 +34,4 @@ export default Route.extend({ }); } } -}); +} diff --git a/app/routes/poll/evaluation.js b/app/routes/poll/evaluation.js index a97272f..c6db9e3 100644 --- a/app/routes/poll/evaluation.js +++ b/app/routes/poll/evaluation.js @@ -1,7 +1,9 @@ +import classic from 'ember-classic-decorator'; import Route from '@ember/routing/route'; -export default Route.extend({ +@classic +export default class EvaluationRoute extends Route { model() { return this.modelFor('poll'); } -}); +} diff --git a/app/routes/poll/participation.js b/app/routes/poll/participation.js index a97272f..7f64661 100644 --- a/app/routes/poll/participation.js +++ b/app/routes/poll/participation.js @@ -1,7 +1,9 @@ +import classic from 'ember-classic-decorator'; import Route from '@ember/routing/route'; -export default Route.extend({ +@classic +export default class ParticipationRoute extends Route { model() { return this.modelFor('poll'); } -}); +} diff --git a/app/serializers/answer.js b/app/serializers/answer.js index 6571726..4ecef5b 100644 --- a/app/serializers/answer.js +++ b/app/serializers/answer.js @@ -1,4 +1,5 @@ +import classic from 'ember-classic-decorator'; import RESTSerializer from '@ember-data/serializer/rest'; -export default RESTSerializer.extend({ -}); +@classic +export default class AnswerSerializer extends RESTSerializer {} diff --git a/app/serializers/application.js b/app/serializers/application.js index 8bb656d..2dc162e 100644 --- a/app/serializers/application.js +++ b/app/serializers/application.js @@ -1,6 +1,7 @@ +import classic from 'ember-classic-decorator'; +import { inject as service } from '@ember/service'; import RESTSerializer from '@ember-data/serializer/rest'; import { isEmpty } from '@ember/utils'; -import { inject as service } from '@ember/service'; /* * extends DS.RESTSerializer to implement encryption @@ -15,10 +16,12 @@ import { inject as service } from '@ember/service'; * If set the attribute will be included plain (not encrypted) when * recorde is created. Value is the attributes name used. */ -export default RESTSerializer.extend({ - isNewSerializerAPI: true, +@classic +export default class ApplicationSerializer extends RESTSerializer { + isNewSerializerAPI = true; - encryption: service(), + @service + encryption; /* * implement decryption @@ -41,14 +44,14 @@ export default RESTSerializer.extend({ resourceHash = this.legacySupport(resourceHash); } - return this._super(modelClass, resourceHash, prop); - }, + return super.normalize(modelClass, resourceHash, prop); + } /* * implement encryption */ serializeAttribute(snapshot, json, key, attribute) { - this._super(snapshot, json, key, attribute); + super.serializeAttribute(snapshot, json, key, attribute); // map includePlainOnCreate after serialization of attribute hash // but before encryption so we can just use the serialized hash @@ -66,4 +69,4 @@ export default RESTSerializer.extend({ json[key] = this.encryption.encrypt(json[key]); } } -}); +} diff --git a/app/serializers/option.js b/app/serializers/option.js index 6571726..704bc82 100644 --- a/app/serializers/option.js +++ b/app/serializers/option.js @@ -1,4 +1,5 @@ +import classic from 'ember-classic-decorator'; import RESTSerializer from '@ember-data/serializer/rest'; -export default RESTSerializer.extend({ -}); +@classic +export default class OptionSerializer extends RESTSerializer {} diff --git a/app/serializers/poll.js b/app/serializers/poll.js index 0721940..751f05b 100644 --- a/app/serializers/poll.js +++ b/app/serializers/poll.js @@ -1,13 +1,13 @@ import { EmbeddedRecordsMixin } from '@ember-data/serializer/rest'; import { isEmpty } from '@ember/utils'; -import ApplicationAdapter from './application'; +import ApplicationSerializer from './application'; -export default ApplicationAdapter.extend(EmbeddedRecordsMixin, { - attrs: { +export default class PollSerializer extends ApplicationSerializer.extend(EmbeddedRecordsMixin) { + attrs = { users: { deserialize: 'records' } - }, + }; legacySupport(resourceHash) { // croodle <= 0.3.0 @@ -24,4 +24,4 @@ export default ApplicationAdapter.extend(EmbeddedRecordsMixin, { return resourceHash; } -}); +} diff --git a/app/serializers/selection.js b/app/serializers/selection.js index 6571726..448bdc1 100644 --- a/app/serializers/selection.js +++ b/app/serializers/selection.js @@ -1,4 +1,5 @@ +import classic from 'ember-classic-decorator'; import RESTSerializer from '@ember-data/serializer/rest'; -export default RESTSerializer.extend({ -}); +@classic +export default class SelectionSerializer extends RESTSerializer {} diff --git a/app/serializers/user.js b/app/serializers/user.js index 8993d24..36af1dc 100644 --- a/app/serializers/user.js +++ b/app/serializers/user.js @@ -1,7 +1,9 @@ +import classic from 'ember-classic-decorator'; import { isEmpty } from '@ember/utils'; -import ApplicationAdapter from './application'; +import ApplicationSerializer from './application'; -export default ApplicationAdapter.extend({ +@classic +export default class UserSerializer extends ApplicationSerializer { legacySupport(resourceHash) { /* * Croodle <= 0.3.0: @@ -30,4 +32,4 @@ export default ApplicationAdapter.extend({ return resourceHash; } -}); +} diff --git a/app/services/encryption.js b/app/services/encryption.js index 27cfae6..f758ff9 100644 --- a/app/services/encryption.js +++ b/app/services/encryption.js @@ -1,9 +1,11 @@ +import classic from 'ember-classic-decorator'; import Service from '@ember/service'; import generatePassphrase from '../utils/generate-passphrase'; import sjcl from 'sjcl'; -export default Service.extend({ - key: null, +@classic +export default class EncryptionService extends Service { + key = null; decrypt(value) { return JSON.parse( @@ -12,21 +14,17 @@ export default Service.extend({ value ) ); - }, + } encrypt(value) { return sjcl.encrypt( this.key, JSON.stringify(value) ); - }, + } generateKey() { const passphraseLength = 40; this.set('key', generatePassphrase(passphraseLength)); - }, - - init() { - this._super(...arguments); } -}); +} diff --git a/app/templates/components/create-options-datetime.hbs b/app/templates/components/create-options-datetime.hbs index bcad3c3..3b449d6 100644 --- a/app/templates/components/create-options-datetime.hbs +++ b/app/templates/components/create-options-datetime.hbs @@ -86,7 +86,7 @@ {{#if isMakeAPoll}} - + {{else}} {{/if}} diff --git a/app/validators/alias.js b/app/validators/alias.js index 5c17ee4..f273373 100644 --- a/app/validators/alias.js +++ b/app/validators/alias.js @@ -1,7 +1,9 @@ +import classic from 'ember-classic-decorator'; import Alias from 'ember-cp-validations/validators/alias'; -export default Alias.extend({ +@classic +export default class AliasValidator extends Alias { validate(value, options, model, attribute) { - return this._super(value, options, model, attribute) || true; + return super.validate(value, options, model, attribute) || true; } -}); +} diff --git a/app/validators/falsy.js b/app/validators/falsy.js index f25946f..6254ae8 100644 --- a/app/validators/falsy.js +++ b/app/validators/falsy.js @@ -1,9 +1,11 @@ +import classic from 'ember-classic-decorator'; import BaseValidator from 'ember-cp-validations/validators/base'; -const Truthy = BaseValidator.extend({ +@classic +class FalsyValidator extends BaseValidator { validate(value, options) { return value ? this.createErrorMessage('iso8601', value, options) : true; } -}); +} -export default Truthy; +export default FalsyValidator; diff --git a/app/validators/iso8601.js b/app/validators/iso8601.js index 2177844..da1e329 100644 --- a/app/validators/iso8601.js +++ b/app/validators/iso8601.js @@ -1,10 +1,12 @@ +import classic from 'ember-classic-decorator'; import { isArray } from '@ember/array'; import { isEmpty } from '@ember/utils'; import { assert } from '@ember/debug'; import BaseValidator from 'ember-cp-validations/validators/base'; import moment from 'moment'; -export default BaseValidator.extend({ +@classic +export default class Iso8601Validator extends BaseValidator { validate(value, options = {}) { assert( 'options.validFormats must not be set or an array of momentJS format strings', @@ -33,4 +35,4 @@ export default BaseValidator.extend({ return this.createErrorMessage('iso8601', value, options); } } -}); +} diff --git a/app/validators/messages.js b/app/validators/messages.js index e7ab1d7..4a49b3b 100644 --- a/app/validators/messages.js +++ b/app/validators/messages.js @@ -1,6 +1,8 @@ -import Messages from 'ember-i18n-cp-validations/validators/messages'; +import classic from 'ember-classic-decorator'; +import BaseMessages from 'ember-i18n-cp-validations/validators/messages'; -export default Messages.extend({ - validCollection: 'This collection is not valid.', - time: '{{value}} is not a vaild time.' -}); +@classic +export default class ValidationMessages extends BaseMessages { + validCollection = 'This collection is not valid.'; + time = '{{value}} is not a vaild time.'; +} diff --git a/app/validators/time.js b/app/validators/time.js index f439928..2080b8a 100644 --- a/app/validators/time.js +++ b/app/validators/time.js @@ -1,8 +1,10 @@ +import classic from 'ember-classic-decorator'; import { isEmpty } from '@ember/utils'; import BaseValidator from 'ember-cp-validations/validators/base'; import moment from 'moment'; -export default BaseValidator.extend({ +@classic +export default class TimeValidator extends BaseValidator { validate(value, options) { let valid; @@ -28,4 +30,4 @@ export default BaseValidator.extend({ return this.createErrorMessage('time', value, options); } } -}); +} diff --git a/app/validators/unique.js b/app/validators/unique.js index 900a24b..33c424b 100644 --- a/app/validators/unique.js +++ b/app/validators/unique.js @@ -1,9 +1,11 @@ +import classic from 'ember-classic-decorator'; import { isArray } from '@ember/array'; import { isPresent, isEmpty } from '@ember/utils'; import { assert } from '@ember/debug'; import BaseValidator from 'ember-cp-validations/validators/base'; -export default BaseValidator.extend({ +@classic +export default class UniqueValidator extends BaseValidator { validate(value, options, model, attribute) { assert( 'options.parent is required', @@ -46,4 +48,4 @@ export default BaseValidator.extend({ return true; } } -}); +} diff --git a/app/validators/valid-collection.js b/app/validators/valid-collection.js index b7e213a..2b35b7a 100644 --- a/app/validators/valid-collection.js +++ b/app/validators/valid-collection.js @@ -1,6 +1,8 @@ +import classic from 'ember-classic-decorator'; import BaseValidator from 'ember-cp-validations/validators/base'; -export default BaseValidator.extend({ +@classic +export default class ValidCollectionValidator extends BaseValidator { validate(value, options) { if (options.active === false) { return true; @@ -16,4 +18,4 @@ export default BaseValidator.extend({ return this.createErrorMessage('validCollection', options, value); } } -}); +} diff --git a/config/bundlesize.js b/config/bundlesize.js index dbefca2..d0fa7f3 100644 --- a/config/bundlesize.js +++ b/config/bundlesize.js @@ -4,7 +4,7 @@ module.exports = { app: { javascript: { pattern: 'assets/*.js', - limit: '410KB', + limit: '420KB', compression: 'gzip' }, css: { diff --git a/package.json b/package.json index aaa63d4..f2dbbf2 100644 --- a/package.json +++ b/package.json @@ -21,13 +21,14 @@ "devDependencies": { "@ember/optional-features": "^1.1.0", "@glimmer/component": "^1.0.0", - "babel-eslint": "^10.0.3", + "babel-eslint": "^8.0.0", "bootstrap": "^4.3.1", "broccoli-asset-rev": "^3.0.0", "ember-auto-import": "^1.5.3", "ember-awesome-macros": "^5.0.0", "ember-bootstrap": "^3.0.0", "ember-bootstrap-cp-validations": "^1.0.0", + "ember-classic-decorator": "^1.0.5", "ember-cli": "~3.15.1", "ember-cli-acceptance-test-helpers": "^1.0.0", "ember-cli-app-version": "^3.2.0", @@ -55,6 +56,7 @@ "ember-cp-validations": "^4.0.0-beta.8", "ember-data": "~3.12.0", "ember-data-model-fragments": "^4.0.0", + "ember-decorators": "^6.1.1", "ember-export-application-global": "^2.0.1", "ember-fetch": "^7.0.0", "ember-i18n": "^5.0.2", diff --git a/yarn.lock b/yarn.lock index e572090..f835546 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,14 +2,30 @@ # yarn lockfile v1 -"@babel/code-frame@^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== +"@babel/code-frame@7.0.0-beta.44": + version "7.0.0-beta.44" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-beta.44.tgz#2a02643368de80916162be70865c97774f3adbd9" + integrity sha512-cuAuTTIQ9RqcFRJ/Y8PvTh+paepNcaGxwQwjIDRWPXmzzyAeCO4KqS9ikMvq0MCbRk6GlYKwfzStrcP3/jSL8g== dependencies: - "@babel/highlight" "^7.0.0" + "@babel/highlight" "7.0.0-beta.44" -"@babel/core@^7.0.0", "@babel/core@^7.1.6", "@babel/core@^7.2.2", "@babel/core@^7.3.3", "@babel/core@^7.3.4", "@babel/core@^7.7.0", "@babel/core@^7.7.2": +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.5.5", "@babel/code-frame@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e" + integrity sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g== + dependencies: + "@babel/highlight" "^7.8.3" + +"@babel/compat-data@^7.8.0", "@babel/compat-data@^7.8.1": + version "7.8.1" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.8.1.tgz#fc0bbbb7991e4fb2b47e168e60f2cc2c41680be9" + integrity sha512-Z+6ZOXvyOWYxJ50BwxzdhRnRsGST8Y3jaZgxYig575lTjVSs3KtJnmESwZegg6e2Dn0td1eDhoWlp1wI4BTCPw== + dependencies: + browserslist "^4.8.2" + invariant "^2.2.4" + semver "^5.5.0" + +"@babel/core@^7.0.0", "@babel/core@^7.1.6", "@babel/core@^7.2.2", "@babel/core@^7.7.2": version "7.7.7" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.7.7.tgz#ee155d2e12300bcc0cff6a8ad46f2af5063803e9" integrity sha512-jlSjuj/7z138NLZALxVgrx13AOtqip42ATZP7+kYl53GvDV6+4dCek1mVUo8z8c8Xnw/mx2q3d9HWh3griuesQ== @@ -29,41 +45,84 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/generator@^7.7.4", "@babel/generator@^7.7.7": - version "7.7.7" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.7.7.tgz#859ac733c44c74148e1a72980a64ec84b85f4f45" - integrity sha512-/AOIBpHh/JU1l0ZFS4kiRCBnLi6OTHzh0RPk3h9isBxkkqELtQNFi1Vr/tiG9p1yfoUdKVwISuXWQR+hwwM4VQ== +"@babel/core@^7.3.3", "@babel/core@^7.3.4", "@babel/core@^7.7.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.8.3.tgz#30b0ebb4dd1585de6923a0b4d179e0b9f5d82941" + integrity sha512-4XFkf8AwyrEG7Ziu3L2L0Cv+WyY47Tcsp70JFmpftbAA1K7YL/sgE9jh9HyNj08Y/U50ItUchpN0w6HxAoX1rA== dependencies: - "@babel/types" "^7.7.4" + "@babel/code-frame" "^7.8.3" + "@babel/generator" "^7.8.3" + "@babel/helpers" "^7.8.3" + "@babel/parser" "^7.8.3" + "@babel/template" "^7.8.3" + "@babel/traverse" "^7.8.3" + "@babel/types" "^7.8.3" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.1" + 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" + integrity sha512-5xVb7hlhjGcdkKpMXgicAVgx8syK5VJz193k0i/0sLP6DzE6lRrU1K3B/rFefgdo9LPGMAOOOAWW4jycj07ShQ== + dependencies: + "@babel/types" "7.0.0-beta.44" + jsesc "^2.5.1" + lodash "^4.2.0" + source-map "^0.5.0" + trim-right "^1.0.1" + +"@babel/generator@^7.7.4", "@babel/generator@^7.7.7", "@babel/generator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.8.3.tgz#0e22c005b0a94c1c74eafe19ef78ce53a4d45c03" + integrity sha512-WjoPk8hRpDRqqzRpvaR8/gDUPkrnOOeuT2m8cNICJtZH6mwaCo3v0OKMI7Y6SM1pBtyijnLtAL0HDi41pf41ug== + dependencies: + "@babel/types" "^7.8.3" jsesc "^2.5.1" lodash "^4.17.13" source-map "^0.5.0" -"@babel/helper-annotate-as-pure@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.7.4.tgz#bb3faf1e74b74bd547e867e48f551fa6b098b6ce" - integrity sha512-2BQmQgECKzYKFPpiycoF9tlb5HA4lrVyAmLLVK177EcQAqjVLciUb2/R+n1boQ9y5ENV3uz2ZqiNw7QMBBw1Og== +"@babel/helper-annotate-as-pure@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz#60bc0bc657f63a0924ff9a4b4a0b24a13cf4deee" + integrity sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw== dependencies: - "@babel/types" "^7.7.4" + "@babel/types" "^7.8.3" -"@babel/helper-builder-binary-assignment-operator-visitor@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.7.4.tgz#5f73f2b28580e224b5b9bd03146a4015d6217f5f" - integrity sha512-Biq/d/WtvfftWZ9Uf39hbPBYDUo986m5Bb4zhkeYDGUllF43D+nUe5M6Vuo6/8JDK/0YX/uBdeoQpyaNhNugZQ== +"@babel/helper-builder-binary-assignment-operator-visitor@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz#c84097a427a061ac56a1c30ebf54b7b22d241503" + integrity sha512-5eFOm2SyFPK4Rh3XMMRDjN7lBH0orh3ss0g3rTYZnBQ+r6YPj7lgDyCvPphynHvUrobJmeMignBr6Acw9mAPlw== dependencies: - "@babel/helper-explode-assignable-expression" "^7.7.4" - "@babel/types" "^7.7.4" + "@babel/helper-explode-assignable-expression" "^7.8.3" + "@babel/types" "^7.8.3" -"@babel/helper-call-delegate@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.7.4.tgz#621b83e596722b50c0066f9dc37d3232e461b801" - integrity sha512-8JH9/B7J7tCYJ2PpWVpw9JhPuEVHztagNVuQAFBVFYluRMlpG7F1CgKEgGeL6KFqcsIa92ZYVj6DSc0XwmN1ZA== +"@babel/helper-call-delegate@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.8.3.tgz#de82619898aa605d409c42be6ffb8d7204579692" + integrity sha512-6Q05px0Eb+N4/GTyKPPvnkig7Lylw+QzihMpws9iiZQv7ZImf84ZsZpQH7QoWN4n4tm81SnSzPgHw2qtO0Zf3A== dependencies: - "@babel/helper-hoist-variables" "^7.7.4" - "@babel/traverse" "^7.7.4" - "@babel/types" "^7.7.4" + "@babel/helper-hoist-variables" "^7.8.3" + "@babel/traverse" "^7.8.3" + "@babel/types" "^7.8.3" -"@babel/helper-create-class-features-plugin@^7.5.5", "@babel/helper-create-class-features-plugin@^7.7.4": +"@babel/helper-compilation-targets@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.3.tgz#2deedc816fd41dca7355ef39fd40c9ea69f0719a" + integrity sha512-JLylPCsFjhLN+6uBSSh3iYdxKdeO9MNmoY96PE/99d8kyBFaXLORtAVhqN6iHa+wtPeqxKLghDOZry0+Aiw9Tw== + dependencies: + "@babel/compat-data" "^7.8.1" + browserslist "^4.8.2" + invariant "^2.2.4" + levenary "^1.1.0" + semver "^5.5.0" + +"@babel/helper-create-class-features-plugin@^7.5.5": version "7.7.4" resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.7.4.tgz#fce60939fd50618610942320a8d951b3b639da2d" integrity sha512-l+OnKACG4uiDHQ/aJT8dwpR+LhCJALxL0mJ6nzjB25e5IPwqV1VOsY7ah6UB1DG+VOXAIMtuC54rFJGiHkxjgA== @@ -75,178 +134,234 @@ "@babel/helper-replace-supers" "^7.7.4" "@babel/helper-split-export-declaration" "^7.7.4" -"@babel/helper-create-regexp-features-plugin@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.7.4.tgz#6d5762359fd34f4da1500e4cff9955b5299aaf59" - integrity sha512-Mt+jBKaxL0zfOIWrfQpnfYCN7/rS6GKx6CCCfuoqVVd+17R8zNDlzVYmIi9qyb2wOk002NsmSTDymkIygDUH7A== +"@babel/helper-create-class-features-plugin@^7.7.4", "@babel/helper-create-class-features-plugin@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.8.3.tgz#5b94be88c255f140fd2c10dd151e7f98f4bff397" + integrity sha512-qmp4pD7zeTxsv0JNecSBsEmG1ei2MqwJq4YQcK3ZWm/0t07QstWfvuV/vm3Qt5xNMFETn2SZqpMx2MQzbtq+KA== dependencies: - "@babel/helper-regex" "^7.4.4" + "@babel/helper-function-name" "^7.8.3" + "@babel/helper-member-expression-to-functions" "^7.8.3" + "@babel/helper-optimise-call-expression" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-replace-supers" "^7.8.3" + "@babel/helper-split-export-declaration" "^7.8.3" + +"@babel/helper-create-regexp-features-plugin@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.3.tgz#c774268c95ec07ee92476a3862b75cc2839beb79" + integrity sha512-Gcsm1OHCUr9o9TcJln57xhWHtdXbA2pgQ58S0Lxlks0WMGNXuki4+GLfX0p+L2ZkINUGZvfkz8rzoqJQSthI+Q== + dependencies: + "@babel/helper-regex" "^7.8.3" regexpu-core "^4.6.0" -"@babel/helper-define-map@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.7.4.tgz#2841bf92eb8bd9c906851546fe6b9d45e162f176" - integrity sha512-v5LorqOa0nVQUvAUTUF3KPastvUt/HzByXNamKQ6RdJRTV7j8rLL+WB5C/MzzWAwOomxDhYFb1wLLxHqox86lg== +"@babel/helper-define-map@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.8.3.tgz#a0655cad5451c3760b726eba875f1cd8faa02c15" + integrity sha512-PoeBYtxoZGtct3md6xZOCWPcKuMuk3IHhgxsRRNtnNShebf4C8YonTSblsK4tvDbm+eJAw2HAPOfCr+Q/YRG/g== dependencies: - "@babel/helper-function-name" "^7.7.4" - "@babel/types" "^7.7.4" + "@babel/helper-function-name" "^7.8.3" + "@babel/types" "^7.8.3" lodash "^4.17.13" -"@babel/helper-explode-assignable-expression@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.7.4.tgz#fa700878e008d85dc51ba43e9fb835cddfe05c84" - integrity sha512-2/SicuFrNSXsZNBxe5UGdLr+HZg+raWBLE9vC98bdYOKX/U6PY0mdGlYUJdtTDPSU0Lw0PNbKKDpwYHJLn2jLg== +"@babel/helper-explode-assignable-expression@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.8.3.tgz#a728dc5b4e89e30fc2dfc7d04fa28a930653f982" + integrity sha512-N+8eW86/Kj147bO9G2uclsg5pwfs/fqqY5rwgIL7eTBklgXjcOJ3btzS5iM6AitJcftnY7pm2lGsrJVYLGjzIw== dependencies: - "@babel/traverse" "^7.7.4" - "@babel/types" "^7.7.4" + "@babel/traverse" "^7.8.3" + "@babel/types" "^7.8.3" -"@babel/helper-function-name@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.7.4.tgz#ab6e041e7135d436d8f0a3eca15de5b67a341a2e" - integrity sha512-AnkGIdiBhEuiwdoMnKm7jfPfqItZhgRaZfMg1XX3bS25INOnLPjPG1Ppnajh8eqgt5kPJnfqrRHqFqmjKDZLzQ== +"@babel/helper-function-name@7.0.0-beta.44": + version "7.0.0-beta.44" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.44.tgz#e18552aaae2231100a6e485e03854bc3532d44dd" + integrity sha512-MHRG2qZMKMFaBavX0LWpfZ2e+hLloT++N7rfM3DYOMUOGCD8cVjqZpwiL8a0bOX3IYcQev1ruciT0gdFFRTxzg== dependencies: - "@babel/helper-get-function-arity" "^7.7.4" - "@babel/template" "^7.7.4" - "@babel/types" "^7.7.4" + "@babel/helper-get-function-arity" "7.0.0-beta.44" + "@babel/template" "7.0.0-beta.44" + "@babel/types" "7.0.0-beta.44" -"@babel/helper-get-function-arity@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.4.tgz#cb46348d2f8808e632f0ab048172130e636005f0" - integrity sha512-QTGKEdCkjgzgfJ3bAyRwF4yyT3pg+vDgan8DSivq1eS0gwi+KGKE5x8kRcbeFTb/673mkO5SN1IZfmCfA5o+EA== +"@babel/helper-function-name@^7.7.4", "@babel/helper-function-name@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz#eeeb665a01b1f11068e9fb86ad56a1cb1a824cca" + integrity sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA== dependencies: - "@babel/types" "^7.7.4" + "@babel/helper-get-function-arity" "^7.8.3" + "@babel/template" "^7.8.3" + "@babel/types" "^7.8.3" -"@babel/helper-hoist-variables@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.7.4.tgz#612384e3d823fdfaaf9fce31550fe5d4db0f3d12" - integrity sha512-wQC4xyvc1Jo/FnLirL6CEgPgPCa8M74tOdjWpRhQYapz5JC7u3NYU1zCVoVAGCE3EaIP9T1A3iW0WLJ+reZlpQ== +"@babel/helper-get-function-arity@7.0.0-beta.44": + version "7.0.0-beta.44" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.44.tgz#d03ca6dd2b9f7b0b1e6b32c56c72836140db3a15" + integrity sha512-w0YjWVwrM2HwP6/H3sEgrSQdkCaxppqFeJtAnB23pRiJB5E/O9Yp7JAAeWBl+gGEgmBFinnTyOv2RN7rcSmMiw== dependencies: - "@babel/types" "^7.7.4" + "@babel/types" "7.0.0-beta.44" -"@babel/helper-member-expression-to-functions@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.7.4.tgz#356438e2569df7321a8326644d4b790d2122cb74" - integrity sha512-9KcA1X2E3OjXl/ykfMMInBK+uVdfIVakVe7W7Lg3wfXUNyS3Q1HWLFRwZIjhqiCGbslummPDnmb7vIekS0C1vw== +"@babel/helper-get-function-arity@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz#b894b947bd004381ce63ea1db9f08547e920abd5" + integrity sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA== dependencies: - "@babel/types" "^7.7.4" + "@babel/types" "^7.8.3" -"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.7.4": +"@babel/helper-hoist-variables@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.8.3.tgz#1dbe9b6b55d78c9b4183fc8cdc6e30ceb83b7134" + integrity sha512-ky1JLOjcDUtSc+xkt0xhYff7Z6ILTAHKmZLHPxAhOP0Nd77O+3nCsd6uSVYur6nJnCI029CrNbYlc0LoPfAPQg== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-member-expression-to-functions@^7.7.4", "@babel/helper-member-expression-to-functions@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz#659b710498ea6c1d9907e0c73f206eee7dadc24c" + integrity sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-module-imports@^7.0.0": version "7.7.4" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.7.4.tgz#e5a92529f8888bf319a6376abfbd1cebc491ad91" integrity sha512-dGcrX6K9l8258WFjyDLJwuVKxR4XZfU0/vTUgOQYWEnRD8mgr+p4d6fCUMq/ys0h4CCt/S5JhbvtyErjWouAUQ== dependencies: "@babel/types" "^7.7.4" -"@babel/helper-module-transforms@^7.7.4", "@babel/helper-module-transforms@^7.7.5": - version "7.7.5" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.7.5.tgz#d044da7ffd91ec967db25cd6748f704b6b244835" - integrity sha512-A7pSxyJf1gN5qXVcidwLWydjftUN878VkalhXX5iQDuGyiGK3sOrrKKHF4/A4fwHtnsotv/NipwAeLzY4KQPvw== +"@babel/helper-module-imports@^7.7.4", "@babel/helper-module-imports@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz#7fe39589b39c016331b6b8c3f441e8f0b1419498" + integrity sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg== dependencies: - "@babel/helper-module-imports" "^7.7.4" - "@babel/helper-simple-access" "^7.7.4" - "@babel/helper-split-export-declaration" "^7.7.4" - "@babel/template" "^7.7.4" - "@babel/types" "^7.7.4" + "@babel/types" "^7.8.3" + +"@babel/helper-module-transforms@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.8.3.tgz#d305e35d02bee720fbc2c3c3623aa0c316c01590" + integrity sha512-C7NG6B7vfBa/pwCOshpMbOYUmrYQDfCpVL/JCRu0ek8B5p8kue1+BCXpg2vOYs7w5ACB9GTOBYQ5U6NwrMg+3Q== + dependencies: + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-simple-access" "^7.8.3" + "@babel/helper-split-export-declaration" "^7.8.3" + "@babel/template" "^7.8.3" + "@babel/types" "^7.8.3" lodash "^4.17.13" -"@babel/helper-optimise-call-expression@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.7.4.tgz#034af31370d2995242aa4df402c3b7794b2dcdf2" - integrity sha512-VB7gWZ2fDkSuqW6b1AKXkJWO5NyNI3bFL/kK79/30moK57blr6NbH8xcl2XcKCwOmJosftWunZqfO84IGq3ZZg== +"@babel/helper-optimise-call-expression@^7.7.4", "@babel/helper-optimise-call-expression@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz#7ed071813d09c75298ef4f208956006b6111ecb9" + integrity sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ== dependencies: - "@babel/types" "^7.7.4" + "@babel/types" "^7.8.3" -"@babel/helper-plugin-utils@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz#bbb3fbee98661c569034237cc03967ba99b4f250" - integrity sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA== +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz#9ea293be19babc0f52ff8ca88b34c3611b208670" + integrity sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ== -"@babel/helper-regex@^7.0.0", "@babel/helper-regex@^7.4.4": - version "7.5.5" - resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.5.5.tgz#0aa6824f7100a2e0e89c1527c23936c152cab351" - integrity sha512-CkCYQLkfkiugbRDO8eZn6lRuR8kzZoGXCg3149iTk5se7g6qykSpy3+hELSwquhu+TgHn8nkLiBwHvNX8Hofcw== +"@babel/helper-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.8.3.tgz#139772607d51b93f23effe72105b319d2a4c6965" + integrity sha512-BWt0QtYv/cg/NecOAZMdcn/waj/5P26DR4mVLXfFtDokSR6fyuG0Pj+e2FqtSME+MqED1khnSMulkmGl8qWiUQ== dependencies: lodash "^4.17.13" -"@babel/helper-remap-async-to-generator@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.7.4.tgz#c68c2407350d9af0e061ed6726afb4fff16d0234" - integrity sha512-Sk4xmtVdM9sA/jCI80f+KS+Md+ZHIpjuqmYPk1M7F/upHou5e4ReYmExAiu6PVe65BhJPZA2CY9x9k4BqE5klw== +"@babel/helper-remap-async-to-generator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.8.3.tgz#273c600d8b9bf5006142c1e35887d555c12edd86" + integrity sha512-kgwDmw4fCg7AVgS4DukQR/roGp+jP+XluJE5hsRZwxCYGg+Rv9wSGErDWhlI90FODdYfd4xG4AQRiMDjjN0GzA== dependencies: - "@babel/helper-annotate-as-pure" "^7.7.4" - "@babel/helper-wrap-function" "^7.7.4" - "@babel/template" "^7.7.4" - "@babel/traverse" "^7.7.4" - "@babel/types" "^7.7.4" + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-wrap-function" "^7.8.3" + "@babel/template" "^7.8.3" + "@babel/traverse" "^7.8.3" + "@babel/types" "^7.8.3" -"@babel/helper-replace-supers@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.7.4.tgz#3c881a6a6a7571275a72d82e6107126ec9e2cdd2" - integrity sha512-pP0tfgg9hsZWo5ZboYGuBn/bbYT/hdLPVSS4NMmiRJdwWhP0IznPwN9AE1JwyGsjSPLC364I0Qh5p+EPkGPNpg== +"@babel/helper-replace-supers@^7.7.4", "@babel/helper-replace-supers@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.8.3.tgz#91192d25f6abbcd41da8a989d4492574fb1530bc" + integrity sha512-xOUssL6ho41U81etpLoT2RTdvdus4VfHamCuAm4AHxGr+0it5fnwoVdwUJ7GFEqCsQYzJUhcbsN9wB9apcYKFA== dependencies: - "@babel/helper-member-expression-to-functions" "^7.7.4" - "@babel/helper-optimise-call-expression" "^7.7.4" - "@babel/traverse" "^7.7.4" - "@babel/types" "^7.7.4" + "@babel/helper-member-expression-to-functions" "^7.8.3" + "@babel/helper-optimise-call-expression" "^7.8.3" + "@babel/traverse" "^7.8.3" + "@babel/types" "^7.8.3" -"@babel/helper-simple-access@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.7.4.tgz#a169a0adb1b5f418cfc19f22586b2ebf58a9a294" - integrity sha512-zK7THeEXfan7UlWsG2A6CI/L9jVnI5+xxKZOdej39Y0YtDYKx9raHk5F2EtK9K8DHRTihYwg20ADt9S36GR78A== +"@babel/helper-simple-access@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz#7f8109928b4dab4654076986af575231deb639ae" + integrity sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw== dependencies: - "@babel/template" "^7.7.4" - "@babel/types" "^7.7.4" + "@babel/template" "^7.8.3" + "@babel/types" "^7.8.3" -"@babel/helper-split-export-declaration@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.4.tgz#57292af60443c4a3622cf74040ddc28e68336fd8" - integrity sha512-guAg1SXFcVr04Guk9eq0S4/rWS++sbmyqosJzVs8+1fH5NI+ZcmkaSkc7dmtAFbHFva6yRJnjW3yAcGxjueDug== +"@babel/helper-split-export-declaration@7.0.0-beta.44": + version "7.0.0-beta.44" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.44.tgz#c0b351735e0fbcb3822c8ad8db4e583b05ebd9dc" + integrity sha512-aQ7QowtkgKKzPGf0j6u77kBMdUFVBKNHw2p/3HX/POt5/oz8ec5cs0GwlgM8Hz7ui5EwJnzyfRmkNF1Nx1N7aA== dependencies: - "@babel/types" "^7.7.4" + "@babel/types" "7.0.0-beta.44" -"@babel/helper-wrap-function@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.7.4.tgz#37ab7fed5150e22d9d7266e830072c0cdd8baace" - integrity sha512-VsfzZt6wmsocOaVU0OokwrIytHND55yvyT4BPB9AIIgwr8+x7617hetdJTsuGwygN5RC6mxA9EJztTjuwm2ofg== +"@babel/helper-split-export-declaration@^7.7.4", "@babel/helper-split-export-declaration@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz#31a9f30070f91368a7182cf05f831781065fc7a9" + integrity sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA== dependencies: - "@babel/helper-function-name" "^7.7.4" - "@babel/template" "^7.7.4" - "@babel/traverse" "^7.7.4" - "@babel/types" "^7.7.4" + "@babel/types" "^7.8.3" -"@babel/helpers@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.7.4.tgz#62c215b9e6c712dadc15a9a0dcab76c92a940302" - integrity sha512-ak5NGZGJ6LV85Q1Zc9gn2n+ayXOizryhjSUBTdu5ih1tlVCJeuQENzc4ItyCVhINVXvIT/ZQ4mheGIsfBkpskg== +"@babel/helper-wrap-function@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz#9dbdb2bb55ef14aaa01fe8c99b629bd5352d8610" + integrity sha512-LACJrbUET9cQDzb6kG7EeD7+7doC3JNvUgTEQOx2qaO1fKlzE/Bf05qs9w1oXQMmXlPO65lC3Tq9S6gZpTErEQ== dependencies: - "@babel/template" "^7.7.4" - "@babel/traverse" "^7.7.4" - "@babel/types" "^7.7.4" + "@babel/helper-function-name" "^7.8.3" + "@babel/template" "^7.8.3" + "@babel/traverse" "^7.8.3" + "@babel/types" "^7.8.3" -"@babel/highlight@^7.0.0": - version "7.5.0" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.5.0.tgz#56d11312bd9248fa619591d02472be6e8cb32540" - integrity sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ== +"@babel/helpers@^7.7.4", "@babel/helpers@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.8.3.tgz#382fbb0382ce7c4ce905945ab9641d688336ce85" + integrity sha512-LmU3q9Pah/XyZU89QvBgGt+BCsTPoQa+73RxAQh8fb8qkDyIfeQnmgs+hvzhTCKTzqOyk7JTkS3MS1S8Mq5yrQ== + dependencies: + "@babel/template" "^7.8.3" + "@babel/traverse" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/highlight@7.0.0-beta.44": + version "7.0.0-beta.44" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0-beta.44.tgz#18c94ce543916a80553edcdcf681890b200747d5" + integrity sha512-Il19yJvy7vMFm8AVAh6OZzaFoAd0hbkeMZiX3P5HGD+z7dyI7RzndHB0dg6Urh/VAFfHtpOIzDUSxmY6coyZWQ== + dependencies: + chalk "^2.0.0" + esutils "^2.0.2" + js-tokens "^3.0.0" + +"@babel/highlight@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.8.3.tgz#28f173d04223eaaa59bc1d439a3836e6d1265797" + integrity sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg== dependencies: chalk "^2.0.0" esutils "^2.0.2" js-tokens "^4.0.0" -"@babel/parser@^7.0.0", "@babel/parser@^7.3.4", "@babel/parser@^7.4.5", "@babel/parser@^7.7.4", "@babel/parser@^7.7.7": +"@babel/parser@^7.3.4", "@babel/parser@^7.4.5": version "7.7.7" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.7.7.tgz#1b886595419cf92d811316d5b715a53ff38b4937" integrity sha512-WtTZMZAZLbeymhkd/sEaPD8IQyGAhmuTuvTzLiCFM7iXiVdY0gc0IaI+cW0fh1BnSMbJSzXX6/fHllgHKwHhXw== -"@babel/plugin-proposal-async-generator-functions@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.7.4.tgz#0351c5ac0a9e927845fffd5b82af476947b7ce6d" - integrity sha512-1ypyZvGRXriY/QP668+s8sFr2mqinhkRDMPSQLNghCQE+GAkFtp+wkHVvg2+Hdki8gwP+NFzJBJ/N1BfzCCDEw== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-remap-async-to-generator" "^7.7.4" - "@babel/plugin-syntax-async-generators" "^7.7.4" +"@babel/parser@^7.7.4", "@babel/parser@^7.7.7", "@babel/parser@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.8.3.tgz#790874091d2001c9be6ec426c2eed47bc7679081" + integrity sha512-/V72F4Yp/qmHaTALizEm9Gf2eQHV3QyTL3K0cNfijwnMnb1L+LDlAubb/ZnSdGAVzVSWakujHYs1I26x66sMeQ== -"@babel/plugin-proposal-class-properties@^7.1.0", "@babel/plugin-proposal-class-properties@^7.7.0": +"@babel/plugin-proposal-async-generator-functions@^7.7.4", "@babel/plugin-proposal-async-generator-functions@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.8.3.tgz#bad329c670b382589721b27540c7d288601c6e6f" + integrity sha512-NZ9zLv848JsV3hs8ryEh7Uaz/0KsmPLqv0+PdkDJL1cJy0K4kOCFa8zc1E3mp+RHPQcpdfb/6GovEsW4VDrOMw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-remap-async-to-generator" "^7.8.3" + "@babel/plugin-syntax-async-generators" "^7.8.0" + +"@babel/plugin-proposal-class-properties@^7.1.0": version "7.7.4" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.7.4.tgz#2f964f0cb18b948450362742e33e15211e77c2ba" integrity sha512-EcuXeV4Hv1X3+Q1TsuOmyyxeTRiSqurGJ26+I/FW1WbymmRRapVORm6x1Zl3iDIHyRxEs+VXWp6qnlcfcJSbbw== @@ -254,103 +369,148 @@ "@babel/helper-create-class-features-plugin" "^7.7.4" "@babel/helper-plugin-utils" "^7.0.0" +"@babel/plugin-proposal-class-properties@^7.7.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.8.3.tgz#5e06654af5cd04b608915aada9b2a6788004464e" + integrity sha512-EqFhbo7IosdgPgZggHaNObkmO1kNUe3slaKu54d5OWvy+p9QIKOzK1GAEpAIsZtWVtPXUHSMcT4smvDrCfY4AA== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-proposal-decorators@^7.7.0": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.7.4.tgz#58c1e21d21ea12f9f5f0a757e46e687b94a7ab2b" - integrity sha512-GftcVDcLCwVdzKmwOBDjATd548+IE+mBo7ttgatqNDR7VG7GqIuZPtRWlMLHbhTXhcnFZiGER8iIYl1n/imtsg== + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.8.3.tgz#2156860ab65c5abf068c3f67042184041066543e" + integrity sha512-e3RvdvS4qPJVTe288DlXjwKflpfy1hr0j5dz5WpIYYeP7vQZg2WfAEIp8k5/Lwis/m5REXEteIz6rrcDtXXG7w== dependencies: - "@babel/helper-create-class-features-plugin" "^7.7.4" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-decorators" "^7.7.4" + "@babel/helper-create-class-features-plugin" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-decorators" "^7.8.3" -"@babel/plugin-proposal-dynamic-import@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.7.4.tgz#dde64a7f127691758cbfed6cf70de0fa5879d52d" - integrity sha512-StH+nGAdO6qDB1l8sZ5UBV8AC3F2VW2I8Vfld73TMKyptMU9DY5YsJAS8U81+vEtxcH3Y/La0wG0btDrhpnhjQ== +"@babel/plugin-proposal-dynamic-import@^7.7.4", "@babel/plugin-proposal-dynamic-import@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz#38c4fe555744826e97e2ae930b0fb4cc07e66054" + integrity sha512-NyaBbyLFXFLT9FP+zk0kYlUlA8XtCUbehs67F0nnEg7KICgMc2mNkIeu9TYhKzyXMkrapZFwAhXLdnt4IYHy1w== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-dynamic-import" "^7.7.4" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" -"@babel/plugin-proposal-json-strings@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.7.4.tgz#7700a6bfda771d8dc81973249eac416c6b4c697d" - integrity sha512-wQvt3akcBTfLU/wYoqm/ws7YOAQKu8EVJEvHip/mzkNtjaclQoCCIqKXFP5/eyfnfbQCDV3OLRIK3mIVyXuZlw== +"@babel/plugin-proposal-json-strings@^7.7.4", "@babel/plugin-proposal-json-strings@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.8.3.tgz#da5216b238a98b58a1e05d6852104b10f9a70d6b" + integrity sha512-KGhQNZ3TVCQG/MjRbAUwuH+14y9q0tpxs1nWWs3pbSleRdDro9SAMMDyye8HhY1gqZ7/NqIc8SKhya0wRDgP1Q== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-json-strings" "^7.7.4" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.0" -"@babel/plugin-proposal-object-rest-spread@^7.7.7": - version "7.7.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.7.7.tgz#9f27075004ab99be08c5c1bd653a2985813cb370" - integrity sha512-3qp9I8lelgzNedI3hrhkvhaEYree6+WHnyA/q4Dza9z7iEIs1eyhWyJnetk3jJ69RT0AT4G0UhEGwyGFJ7GUuQ== +"@babel/plugin-proposal-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz#e4572253fdeed65cddeecfdab3f928afeb2fd5d2" + integrity sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-object-rest-spread" "^7.7.4" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" -"@babel/plugin-proposal-optional-catch-binding@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.7.4.tgz#ec21e8aeb09ec6711bc0a39ca49520abee1de379" - integrity sha512-DyM7U2bnsQerCQ+sejcTNZh8KQEUuC3ufzdnVnSiUv/qoGJp2Z3hanKL18KDhsBT5Wj6a7CMT5mdyCNJsEaA9w== +"@babel/plugin-proposal-object-rest-spread@^7.7.7", "@babel/plugin-proposal-object-rest-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.8.3.tgz#eb5ae366118ddca67bed583b53d7554cad9951bb" + integrity sha512-8qvuPwU/xxUCt78HocNlv0mXXo0wdh9VT1R04WU8HGOfaOob26pF+9P5/lYjN/q7DHOX1bvX60hnhOvuQUJdbA== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-optional-catch-binding" "^7.7.4" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" -"@babel/plugin-proposal-unicode-property-regex@^7.7.7": - version "7.7.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.7.7.tgz#433fa9dac64f953c12578b29633f456b68831c4e" - integrity sha512-80PbkKyORBUVm1fbTLrHpYdJxMThzM1UqFGh0ALEhO9TYbG86Ah9zQYAB/84axz2vcxefDLdZwWwZNlYARlu9w== +"@babel/plugin-proposal-optional-catch-binding@^7.7.4", "@babel/plugin-proposal-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.8.3.tgz#9dee96ab1650eed88646ae9734ca167ac4a9c5c9" + integrity sha512-0gkX7J7E+AtAw9fcwlVQj8peP61qhdg/89D5swOkjYbkboA2CVckn3kiyum1DE0wskGb7KJJxBdyEBApDLLVdw== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.7.4" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" -"@babel/plugin-syntax-async-generators@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.7.4.tgz#331aaf310a10c80c44a66b238b6e49132bd3c889" - integrity sha512-Li4+EjSpBgxcsmeEF8IFcfV/+yJGxHXDirDkEoyFjumuwbmfCVHUt0HuowD/iGM7OhIRyXJH9YXxqiH6N815+g== +"@babel/plugin-proposal-optional-chaining@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.8.3.tgz#ae10b3214cb25f7adb1f3bc87ba42ca10b7e2543" + integrity sha512-QIoIR9abkVn+seDE3OjA08jWcs3eZ9+wJCKSRgo3WdEU2csFYgdScb+8qHB3+WXsGJD55u+5hWCISI7ejXS+kg== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" -"@babel/plugin-syntax-decorators@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.7.4.tgz#3c91cfee2a111663ff3ac21b851140f5a52a4e0b" - integrity sha512-0oNLWNH4k5ZbBVfAwiTU53rKFWIeTh6ZlaWOXWJc4ywxs0tjz5fc3uZ6jKAnZSxN98eXVgg7bJIuzjX+3SXY+A== +"@babel/plugin-proposal-unicode-property-regex@^7.7.7", "@babel/plugin-proposal-unicode-property-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.3.tgz#b646c3adea5f98800c9ab45105ac34d06cd4a47f" + integrity sha512-1/1/rEZv2XGweRwwSkLpY+s60za9OZ1hJs4YDqFHCw0kYWYwL5IFljVY1MYBL+weT1l9pokDO2uhSTLVxzoHkQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-create-regexp-features-plugin" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-syntax-dynamic-import@^7.2.0", "@babel/plugin-syntax-dynamic-import@^7.7.4": +"@babel/plugin-syntax-async-generators@^7.7.4", "@babel/plugin-syntax-async-generators@^7.8.0": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-decorators@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.8.3.tgz#8d2c15a9f1af624b0025f961682a9d53d3001bda" + integrity sha512-8Hg4dNNT9/LcA1zQlfwuKR8BUc/if7Q7NkTam9sGTcJphLwpf2g4S42uhspQrIrR+dpzE0dtTqBVFoHl8GtnnQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-dynamic-import@^7.2.0": version "7.7.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.7.4.tgz#29ca3b4415abfe4a5ec381e903862ad1a54c3aec" integrity sha512-jHQW0vbRGvwQNgyVxwDh4yuXu4bH1f5/EICJLAhl1SblLs2CDhrsmCk+v5XLdE9wxtAFRyxx+P//Iw+a5L/tTg== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-syntax-json-strings@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.7.4.tgz#86e63f7d2e22f9e27129ac4e83ea989a382e86cc" - integrity sha512-QpGupahTQW1mHRXddMG5srgpHWqRLwJnJZKXTigB9RPFCCGbDGCgBeM/iC82ICXp414WeYx/tD54w7M2qRqTMg== +"@babel/plugin-syntax-dynamic-import@^7.7.4", "@babel/plugin-syntax-dynamic-import@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" + integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-object-rest-spread@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.7.4.tgz#47cf220d19d6d0d7b154304701f468fc1cc6ff46" - integrity sha512-mObR+r+KZq0XhRVS2BrBKBpr5jqrqzlPvS9C9vuOf5ilSwzloAl7RPWLrgKdWS6IreaVrjHxTjtyqFiOisaCwg== +"@babel/plugin-syntax-json-strings@^7.7.4", "@babel/plugin-syntax-json-strings@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-optional-catch-binding@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.7.4.tgz#a3e38f59f4b6233867b4a92dcb0ee05b2c334aa6" - integrity sha512-4ZSuzWgFxqHRE31Glu+fEr/MirNZOMYmD/0BhBWyLyOOQz/gTAl7QmWm2hX1QxEIXsr2vkdlwxIzTyiYRC4xcQ== +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-top-level-await@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.7.4.tgz#bd7d8fa7b9fee793a36e4027fd6dd1aa32f946da" - integrity sha512-wdsOw0MvkL1UIgiQ/IFr3ETcfv1xb8RMM0H9wbiDyLaJFyiDg5oZvDLCXosIXmFeIlweML5iOBXAkqddkYNizg== +"@babel/plugin-syntax-object-rest-spread@^7.7.4", "@babel/plugin-syntax-object-rest-spread@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.7.4", "@babel/plugin-syntax-optional-catch-binding@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-top-level-await@^7.7.4", "@babel/plugin-syntax-top-level-await@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.8.3.tgz#3acdece695e6b13aaf57fc291d1a800950c71391" + integrity sha512-kwj1j9lL/6Wd0hROD3b/OZZ7MSrZLqqn9RAZ5+cYYsflQ9HZBIKCUkr3+uL1MEJ1NePiUbf98jjiMQSv0NMR9g== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-typescript@^7.2.0": version "7.7.4" @@ -359,30 +519,30 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-arrow-functions@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.7.4.tgz#76309bd578addd8aee3b379d809c802305a98a12" - integrity sha512-zUXy3e8jBNPiffmqkHRNDdZM2r8DWhCB7HhcoyZjiK1TxYEluLHAvQuYnTT+ARqRpabWqy/NHkO6e3MsYB5YfA== +"@babel/plugin-transform-arrow-functions@^7.7.4", "@babel/plugin-transform-arrow-functions@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.3.tgz#82776c2ed0cd9e1a49956daeb896024c9473b8b6" + integrity sha512-0MRF+KC8EqH4dbuITCWwPSzsyO3HIWWlm30v8BbbpOrS1B++isGxPnnuq/IZvOX5J2D/p7DQalQm+/2PnlKGxg== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-async-to-generator@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.7.4.tgz#694cbeae6d613a34ef0292713fa42fb45c4470ba" - integrity sha512-zpUTZphp5nHokuy8yLlyafxCJ0rSlFoSHypTUWgpdwoDXWQcseaect7cJ8Ppk6nunOM6+5rPMkod4OYKPR5MUg== +"@babel/plugin-transform-async-to-generator@^7.7.4", "@babel/plugin-transform-async-to-generator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.8.3.tgz#4308fad0d9409d71eafb9b1a6ee35f9d64b64086" + integrity sha512-imt9tFLD9ogt56Dd5CI/6XgpukMwd/fLGSrix2httihVe7LOGVPhyhMh1BU5kDM7iHD08i8uUtmV2sWaBFlHVQ== dependencies: - "@babel/helper-module-imports" "^7.7.4" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-remap-async-to-generator" "^7.7.4" + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-remap-async-to-generator" "^7.8.3" -"@babel/plugin-transform-block-scoped-functions@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.7.4.tgz#d0d9d5c269c78eaea76227ace214b8d01e4d837b" - integrity sha512-kqtQzwtKcpPclHYjLK//3lH8OFsCDuDJBaFhVwf8kqdnF6MN4l618UDlcA7TfRs3FayrHj+svYnSX8MC9zmUyQ== +"@babel/plugin-transform-block-scoped-functions@^7.7.4", "@babel/plugin-transform-block-scoped-functions@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.8.3.tgz#437eec5b799b5852072084b3ae5ef66e8349e8a3" + integrity sha512-vo4F2OewqjbB1+yaJ7k2EJFHlTP3jR634Z9Cj9itpqNjuLXvhlVxgnjsHsdRgASR8xYDrx6onw4vW5H6We0Jmg== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-block-scoping@^7.5.5", "@babel/plugin-transform-block-scoping@^7.6.2", "@babel/plugin-transform-block-scoping@^7.7.4": +"@babel/plugin-transform-block-scoping@^7.5.5", "@babel/plugin-transform-block-scoping@^7.6.2": version "7.7.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.7.4.tgz#200aad0dcd6bb80372f94d9e628ea062c58bf224" integrity sha512-2VBe9u0G+fDt9B5OV5DQH4KBf5DoiNkwFKOz0TCvBWvdAN2rOykCTkrL+jTLxfCAm76l9Qo5OqL7HBOx2dWggg== @@ -390,135 +550,144 @@ "@babel/helper-plugin-utils" "^7.0.0" lodash "^4.17.13" -"@babel/plugin-transform-classes@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.7.4.tgz#c92c14be0a1399e15df72667067a8f510c9400ec" - integrity sha512-sK1mjWat7K+buWRuImEzjNf68qrKcrddtpQo3swi9j7dUcG6y6R6+Di039QN2bD1dykeswlagupEmpOatFHHUg== +"@babel/plugin-transform-block-scoping@^7.7.4", "@babel/plugin-transform-block-scoping@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.8.3.tgz#97d35dab66857a437c166358b91d09050c868f3a" + integrity sha512-pGnYfm7RNRgYRi7bids5bHluENHqJhrV4bCZRwc5GamaWIIs07N4rZECcmJL6ZClwjDz1GbdMZFtPs27hTB06w== dependencies: - "@babel/helper-annotate-as-pure" "^7.7.4" - "@babel/helper-define-map" "^7.7.4" - "@babel/helper-function-name" "^7.7.4" - "@babel/helper-optimise-call-expression" "^7.7.4" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-replace-supers" "^7.7.4" - "@babel/helper-split-export-declaration" "^7.7.4" + "@babel/helper-plugin-utils" "^7.8.3" + lodash "^4.17.13" + +"@babel/plugin-transform-classes@^7.7.4", "@babel/plugin-transform-classes@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.8.3.tgz#46fd7a9d2bb9ea89ce88720477979fe0d71b21b8" + integrity sha512-SjT0cwFJ+7Rbr1vQsvphAHwUHvSUPmMjMU/0P59G8U2HLFqSa082JO7zkbDNWs9kH/IUqpHI6xWNesGf8haF1w== + dependencies: + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-define-map" "^7.8.3" + "@babel/helper-function-name" "^7.8.3" + "@babel/helper-optimise-call-expression" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-replace-supers" "^7.8.3" + "@babel/helper-split-export-declaration" "^7.8.3" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.7.4.tgz#e856c1628d3238ffe12d668eb42559f79a81910d" - integrity sha512-bSNsOsZnlpLLyQew35rl4Fma3yKWqK3ImWMSC/Nc+6nGjC9s5NFWAer1YQ899/6s9HxO2zQC1WoFNfkOqRkqRQ== +"@babel/plugin-transform-computed-properties@^7.7.4", "@babel/plugin-transform-computed-properties@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.3.tgz#96d0d28b7f7ce4eb5b120bb2e0e943343c86f81b" + integrity sha512-O5hiIpSyOGdrQZRQ2ccwtTVkgUDBBiCuK//4RJ6UfePllUTCENOzKxfh6ulckXKc0DixTFLCfb2HVkNA7aDpzA== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-destructuring@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.7.4.tgz#2b713729e5054a1135097b6a67da1b6fe8789267" - integrity sha512-4jFMXI1Cu2aXbcXXl8Lr6YubCn6Oc7k9lLsu8v61TZh+1jny2BWmdtvY9zSUlLdGUvcy9DMAWyZEOqjsbeg/wA== +"@babel/plugin-transform-destructuring@^7.7.4", "@babel/plugin-transform-destructuring@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.8.3.tgz#20ddfbd9e4676906b1056ee60af88590cc7aaa0b" + integrity sha512-H4X646nCkiEcHZUZaRkhE2XVsoz0J/1x3VVujnn96pSoGCtKPA99ZZA+va+gK+92Zycd6OBKCD8tDb/731bhgQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-dotall-regex@^7.7.7": - version "7.7.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.7.7.tgz#3e9713f1b69f339e87fa796b097d73ded16b937b" - integrity sha512-b4in+YlTeE/QmTgrllnb3bHA0HntYvjz8O3Mcbx75UBPJA2xhb5A8nle498VhxSXJHQefjtQxpnLPehDJ4TRlg== +"@babel/plugin-transform-dotall-regex@^7.7.7", "@babel/plugin-transform-dotall-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.3.tgz#c3c6ec5ee6125c6993c5cbca20dc8621a9ea7a6e" + integrity sha512-kLs1j9Nn4MQoBYdRXH6AeaXMbEJFaFu/v1nQkvib6QzTj8MZI5OQzqmD83/2jEM1z0DLilra5aWO5YpyC0ALIw== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.7.4" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-create-regexp-features-plugin" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-duplicate-keys@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.7.4.tgz#3d21731a42e3f598a73835299dd0169c3b90ac91" - integrity sha512-g1y4/G6xGWMD85Tlft5XedGaZBCIVN+/P0bs6eabmcPP9egFleMAo65OOjlhcz1njpwagyY3t0nsQC9oTFegJA== +"@babel/plugin-transform-duplicate-keys@^7.7.4", "@babel/plugin-transform-duplicate-keys@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.8.3.tgz#8d12df309aa537f272899c565ea1768e286e21f1" + integrity sha512-s8dHiBUbcbSgipS4SMFuWGqCvyge5V2ZeAWzR6INTVC3Ltjig/Vw1G2Gztv0vU/hRG9X8IvKvYdoksnUfgXOEQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-exponentiation-operator@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.7.4.tgz#dd30c0191e3a1ba19bcc7e389bdfddc0729d5db9" - integrity sha512-MCqiLfCKm6KEA1dglf6Uqq1ElDIZwFuzz1WH5mTf8k2uQSxEJMbOIEh7IZv7uichr7PMfi5YVSrr1vz+ipp7AQ== +"@babel/plugin-transform-exponentiation-operator@^7.7.4", "@babel/plugin-transform-exponentiation-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.8.3.tgz#581a6d7f56970e06bf51560cd64f5e947b70d7b7" + integrity sha512-zwIpuIymb3ACcInbksHaNcR12S++0MDLKkiqXHl3AzpgdKlFNhog+z/K0+TGW+b0w5pgTq4H6IwV/WhxbGYSjQ== dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.7.4" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-for-of@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.7.4.tgz#248800e3a5e507b1f103d8b4ca998e77c63932bc" - integrity sha512-zZ1fD1B8keYtEcKF+M1TROfeHTKnijcVQm0yO/Yu1f7qoDoxEIc/+GX6Go430Bg84eM/xwPFp0+h4EbZg7epAA== +"@babel/plugin-transform-for-of@^7.7.4", "@babel/plugin-transform-for-of@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.8.3.tgz#15f17bce2fc95c7d59a24b299e83e81cedc22e18" + integrity sha512-ZjXznLNTxhpf4Q5q3x1NsngzGA38t9naWH8Gt+0qYZEJAcvPI9waSStSh56u19Ofjr7QmD0wUsQ8hw8s/p1VnA== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-function-name@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.7.4.tgz#75a6d3303d50db638ff8b5385d12451c865025b1" - integrity sha512-E/x09TvjHNhsULs2IusN+aJNRV5zKwxu1cpirZyRPw+FyyIKEHPXTsadj48bVpc1R5Qq1B5ZkzumuFLytnbT6g== +"@babel/plugin-transform-function-name@^7.7.4", "@babel/plugin-transform-function-name@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.8.3.tgz#279373cb27322aaad67c2683e776dfc47196ed8b" + integrity sha512-rO/OnDS78Eifbjn5Py9v8y0aR+aSYhDhqAwVfsTl0ERuMZyr05L1aFSCJnbv2mmsLkit/4ReeQ9N2BgLnOcPCQ== dependencies: - "@babel/helper-function-name" "^7.7.4" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-function-name" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-literals@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.7.4.tgz#27fe87d2b5017a2a5a34d1c41a6b9f6a6262643e" - integrity sha512-X2MSV7LfJFm4aZfxd0yLVFrEXAgPqYoDG53Br/tCKiKYfX0MjVjQeWPIhPHHsCqzwQANq+FLN786fF5rgLS+gw== +"@babel/plugin-transform-literals@^7.7.4", "@babel/plugin-transform-literals@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.3.tgz#aef239823d91994ec7b68e55193525d76dbd5dc1" + integrity sha512-3Tqf8JJ/qB7TeldGl+TT55+uQei9JfYaregDcEAyBZ7akutriFrt6C/wLYIer6OYhleVQvH/ntEhjE/xMmy10A== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-member-expression-literals@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.7.4.tgz#aee127f2f3339fc34ce5e3055d7ffbf7aa26f19a" - integrity sha512-9VMwMO7i69LHTesL0RdGy93JU6a+qOPuvB4F4d0kR0zyVjJRVJRaoaGjhtki6SzQUu8yen/vxPKN6CWnCUw6bA== +"@babel/plugin-transform-member-expression-literals@^7.7.4", "@babel/plugin-transform-member-expression-literals@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.8.3.tgz#963fed4b620ac7cbf6029c755424029fa3a40410" + integrity sha512-3Wk2EXhnw+rP+IDkK6BdtPKsUE5IeZ6QOGrPYvw52NwBStw9V1ZVzxgK6fSKSxqUvH9eQPR3tm3cOq79HlsKYA== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-modules-amd@^7.5.0", "@babel/plugin-transform-modules-amd@^7.7.5": - version "7.7.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.7.5.tgz#39e0fb717224b59475b306402bb8eedab01e729c" - integrity sha512-CT57FG4A2ZUNU1v+HdvDSDrjNWBrtCmSH6YbbgN3Lrf0Di/q/lWRxZrE72p3+HCCz9UjfZOEBdphgC0nzOS6DQ== +"@babel/plugin-transform-modules-amd@^7.5.0", "@babel/plugin-transform-modules-amd@^7.7.5", "@babel/plugin-transform-modules-amd@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.8.3.tgz#65606d44616b50225e76f5578f33c568a0b876a5" + integrity sha512-MadJiU3rLKclzT5kBH4yxdry96odTUwuqrZM+GllFI/VhxfPz+k9MshJM+MwhfkCdxxclSbSBbUGciBngR+kEQ== dependencies: - "@babel/helper-module-transforms" "^7.7.5" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-module-transforms" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" babel-plugin-dynamic-import-node "^2.3.0" -"@babel/plugin-transform-modules-commonjs@^7.7.5": - version "7.7.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.7.5.tgz#1d27f5eb0bcf7543e774950e5b2fa782e637b345" - integrity sha512-9Cq4zTFExwFhQI6MT1aFxgqhIsMWQWDVwOgLzl7PTWJHsNaqFvklAU+Oz6AQLAS0dJKTwZSOCo20INwktxpi3Q== +"@babel/plugin-transform-modules-commonjs@^7.7.5", "@babel/plugin-transform-modules-commonjs@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.8.3.tgz#df251706ec331bd058a34bdd72613915f82928a5" + integrity sha512-JpdMEfA15HZ/1gNuB9XEDlZM1h/gF/YOH7zaZzQu2xCFRfwc01NXBMHHSTT6hRjlXJJs5x/bfODM3LiCk94Sxg== dependencies: - "@babel/helper-module-transforms" "^7.7.5" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-simple-access" "^7.7.4" + "@babel/helper-module-transforms" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-simple-access" "^7.8.3" babel-plugin-dynamic-import-node "^2.3.0" -"@babel/plugin-transform-modules-systemjs@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.7.4.tgz#cd98152339d3e763dfe838b7d4273edaf520bb30" - integrity sha512-y2c96hmcsUi6LrMqvmNDPBBiGCiQu0aYqpHatVVu6kD4mFEXKjyNxd/drc18XXAf9dv7UXjrZwBVmTTGaGP8iw== +"@babel/plugin-transform-modules-systemjs@^7.7.4", "@babel/plugin-transform-modules-systemjs@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.8.3.tgz#d8bbf222c1dbe3661f440f2f00c16e9bb7d0d420" + integrity sha512-8cESMCJjmArMYqa9AO5YuMEkE4ds28tMpZcGZB/jl3n0ZzlsxOAi3mC+SKypTfT8gjMupCnd3YiXCkMjj2jfOg== dependencies: - "@babel/helper-hoist-variables" "^7.7.4" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-hoist-variables" "^7.8.3" + "@babel/helper-module-transforms" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" babel-plugin-dynamic-import-node "^2.3.0" -"@babel/plugin-transform-modules-umd@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.7.4.tgz#1027c355a118de0aae9fee00ad7813c584d9061f" - integrity sha512-u2B8TIi0qZI4j8q4C51ktfO7E3cQ0qnaXFI1/OXITordD40tt17g/sXqgNNCcMTcBFKrUPcGDx+TBJuZxLx7tw== +"@babel/plugin-transform-modules-umd@^7.7.4", "@babel/plugin-transform-modules-umd@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.8.3.tgz#592d578ce06c52f5b98b02f913d653ffe972661a" + integrity sha512-evhTyWhbwbI3/U6dZAnx/ePoV7H6OUG+OjiJFHmhr9FPn0VShjwC2kdxqIuQ/+1P50TMrneGzMeyMTFOjKSnAw== dependencies: - "@babel/helper-module-transforms" "^7.7.4" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-module-transforms" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-named-capturing-groups-regex@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.7.4.tgz#fb3bcc4ee4198e7385805007373d6b6f42c98220" - integrity sha512-jBUkiqLKvUWpv9GLSuHUFYdmHg0ujC1JEYoZUfeOOfNydZXp1sXObgyPatpcwjWgsdBGsagWW0cdJpX/DO2jMw== +"@babel/plugin-transform-named-capturing-groups-regex@^7.7.4", "@babel/plugin-transform-named-capturing-groups-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz#a2a72bffa202ac0e2d0506afd0939c5ecbc48c6c" + integrity sha512-f+tF/8UVPU86TrCb06JoPWIdDpTNSGGcAtaD9mLP0aYGA0OS0j7j7DHJR0GTFrUZPUU6loZhbsVZgTh0N+Qdnw== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.7.4" + "@babel/helper-create-regexp-features-plugin" "^7.8.3" -"@babel/plugin-transform-new-target@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.7.4.tgz#4a0753d2d60639437be07b592a9e58ee00720167" - integrity sha512-CnPRiNtOG1vRodnsyGX37bHQleHE14B9dnnlgSeEs3ek3fHN1A1SScglTCg1sfbe7sRQ2BUcpgpTpWSfMKz3gg== +"@babel/plugin-transform-new-target@^7.7.4", "@babel/plugin-transform-new-target@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.8.3.tgz#60cc2ae66d85c95ab540eb34babb6434d4c70c43" + integrity sha512-QuSGysibQpyxexRyui2vca+Cmbljo8bcRckgzYV4kRIsHpVeyeC3JDO63pY+xFZ6bWOBn7pfKZTqV4o/ix9sFw== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-transform-object-assign@^7.2.0": version "7.7.4" @@ -527,90 +696,90 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-object-super@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.7.4.tgz#48488937a2d586c0148451bf51af9d7dda567262" - integrity sha512-ho+dAEhC2aRnff2JCA0SAK7V2R62zJd/7dmtoe7MHcso4C2mS+vZjn1Pb1pCVZvJs1mgsvv5+7sT+m3Bysb6eg== +"@babel/plugin-transform-object-super@^7.7.4", "@babel/plugin-transform-object-super@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.8.3.tgz#ebb6a1e7a86ffa96858bd6ac0102d65944261725" + integrity sha512-57FXk+gItG/GejofIyLIgBKTas4+pEU47IXKDBWFTxdPd7F80H8zybyAY7UoblVfBhBGs2EKM+bJUu2+iUYPDQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-replace-supers" "^7.7.4" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-replace-supers" "^7.8.3" -"@babel/plugin-transform-parameters@^7.7.7": - version "7.7.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.7.7.tgz#7a884b2460164dc5f194f668332736584c760007" - integrity sha512-OhGSrf9ZBrr1fw84oFXj5hgi8Nmg+E2w5L7NhnG0lPvpDtqd7dbyilM2/vR8CKbJ907RyxPh2kj6sBCSSfI9Ew== +"@babel/plugin-transform-parameters@^7.7.7", "@babel/plugin-transform-parameters@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.8.3.tgz#7890576a13b17325d8b7d44cb37f21dc3bbdda59" + integrity sha512-/pqngtGb54JwMBZ6S/D3XYylQDFtGjWrnoCF4gXZOUpFV/ujbxnoNGNvDGu6doFWRPBveE72qTx/RRU44j5I/Q== dependencies: - "@babel/helper-call-delegate" "^7.7.4" - "@babel/helper-get-function-arity" "^7.7.4" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-call-delegate" "^7.8.3" + "@babel/helper-get-function-arity" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-property-literals@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.7.4.tgz#2388d6505ef89b266103f450f9167e6bd73f98c2" - integrity sha512-MatJhlC4iHsIskWYyawl53KuHrt+kALSADLQQ/HkhTjX954fkxIEh4q5slL4oRAnsm/eDoZ4q0CIZpcqBuxhJQ== +"@babel/plugin-transform-property-literals@^7.7.4", "@babel/plugin-transform-property-literals@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.8.3.tgz#33194300d8539c1ed28c62ad5087ba3807b98263" + integrity sha512-uGiiXAZMqEoQhRWMK17VospMZh5sXWg+dlh2soffpkAl96KAm+WZuJfa6lcELotSRmooLqg0MWdH6UUq85nmmg== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-regenerator@^7.7.5": - version "7.7.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.7.5.tgz#3a8757ee1a2780f390e89f246065ecf59c26fce9" - integrity sha512-/8I8tPvX2FkuEyWbjRCt4qTAgZK0DVy8QRguhA524UH48RfGJy94On2ri+dCuwOpcerPRl9O4ebQkRcVzIaGBw== +"@babel/plugin-transform-regenerator@^7.7.5", "@babel/plugin-transform-regenerator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.3.tgz#b31031e8059c07495bf23614c97f3d9698bc6ec8" + integrity sha512-qt/kcur/FxrQrzFR432FGZznkVAjiyFtCOANjkAKwCbt465L6ZCiUQh2oMYGU3Wo8LRFJxNDFwWn106S5wVUNA== dependencies: regenerator-transform "^0.14.0" -"@babel/plugin-transform-reserved-words@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.7.4.tgz#6a7cf123ad175bb5c69aec8f6f0770387ed3f1eb" - integrity sha512-OrPiUB5s5XvkCO1lS7D8ZtHcswIC57j62acAnJZKqGGnHP+TIc/ljQSrgdX/QyOTdEK5COAhuc820Hi1q2UgLQ== +"@babel/plugin-transform-reserved-words@^7.7.4", "@babel/plugin-transform-reserved-words@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.8.3.tgz#9a0635ac4e665d29b162837dd3cc50745dfdf1f5" + integrity sha512-mwMxcycN3omKFDjDQUl+8zyMsBfjRFr0Zn/64I41pmjv4NJuqcYlEtezwYtw9TFd9WR1vN5kiM+O0gMZzO6L0A== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-transform-runtime@^7.6.0": - version "7.7.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.7.6.tgz#4f2b548c88922fb98ec1c242afd4733ee3e12f61" - integrity sha512-tajQY+YmXR7JjTwRvwL4HePqoL3DYxpYXIHKVvrOIvJmeHe2y1w4tz5qz9ObUDC9m76rCzIMPyn4eERuwA4a4A== + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.8.3.tgz#c0153bc0a5375ebc1f1591cb7eea223adea9f169" + integrity sha512-/vqUt5Yh+cgPZXXjmaG9NT8aVfThKk7G4OqkVhrXqwsC5soMn/qTCxs36rZ2QFhpfTJcjw4SNDIZ4RUb8OL4jQ== dependencies: - "@babel/helper-module-imports" "^7.7.4" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" resolve "^1.8.1" semver "^5.5.1" -"@babel/plugin-transform-shorthand-properties@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.7.4.tgz#74a0a9b2f6d67a684c6fbfd5f0458eb7ba99891e" - integrity sha512-q+suddWRfIcnyG5YiDP58sT65AJDZSUhXQDZE3r04AuqD6d/XLaQPPXSBzP2zGerkgBivqtQm9XKGLuHqBID6Q== +"@babel/plugin-transform-shorthand-properties@^7.7.4", "@babel/plugin-transform-shorthand-properties@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.3.tgz#28545216e023a832d4d3a1185ed492bcfeac08c8" + integrity sha512-I9DI6Odg0JJwxCHzbzW08ggMdCezoWcuQRz3ptdudgwaHxTjxw5HgdFJmZIkIMlRymL6YiZcped4TTCB0JcC8w== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-spread@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.7.4.tgz#aa673b356fe6b7e70d69b6e33a17fef641008578" - integrity sha512-8OSs0FLe5/80cndziPlg4R0K6HcWSM0zyNhHhLsmw/Nc5MaA49cAsnoJ/t/YZf8qkG7fD+UjTRaApVDB526d7Q== +"@babel/plugin-transform-spread@^7.7.4", "@babel/plugin-transform-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.8.3.tgz#9c8ffe8170fdfb88b114ecb920b82fb6e95fe5e8" + integrity sha512-CkuTU9mbmAoFOI1tklFWYYbzX5qCIZVXPVy0jpXgGwkplCndQAa58s2jr66fTeQnA64bDox0HL4U56CFYoyC7g== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-sticky-regex@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.7.4.tgz#ffb68c05090c30732076b1285dc1401b404a123c" - integrity sha512-Ls2NASyL6qtVe1H1hXts9yuEeONV2TJZmplLONkMPUG158CtmnrzW5Q5teibM5UVOFjG0D3IC5mzXR6pPpUY7A== +"@babel/plugin-transform-sticky-regex@^7.7.4", "@babel/plugin-transform-sticky-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.8.3.tgz#be7a1290f81dae767475452199e1f76d6175b100" + integrity sha512-9Spq0vGCD5Bb4Z/ZXXSK5wbbLFMG085qd2vhL1JYu1WcQ5bXqZBAYRzU1d+p79GcHs2szYv5pVQCX13QgldaWw== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-regex" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-regex" "^7.8.3" -"@babel/plugin-transform-template-literals@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.7.4.tgz#1eb6411736dd3fe87dbd20cc6668e5121c17d604" - integrity sha512-sA+KxLwF3QwGj5abMHkHgshp9+rRz+oY9uoRil4CyLtgEuE/88dpkeWgNk5qKVsJE9iSfly3nvHapdRiIS2wnQ== +"@babel/plugin-transform-template-literals@^7.7.4", "@babel/plugin-transform-template-literals@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.8.3.tgz#7bfa4732b455ea6a43130adc0ba767ec0e402a80" + integrity sha512-820QBtykIQOLFT8NZOcTRJ1UNuztIELe4p9DCgvj4NK+PwluSJ49we7s9FB1HIGNIYT7wFUJ0ar2QpCDj0escQ== dependencies: - "@babel/helper-annotate-as-pure" "^7.7.4" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-typeof-symbol@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.7.4.tgz#3174626214f2d6de322882e498a38e8371b2140e" - integrity sha512-KQPUQ/7mqe2m0B8VecdyaW5XcQYaePyl9R7IsKd+irzj6jvbhoGnRE+M0aNkyAzI07VfUQ9266L5xMARitV3wg== +"@babel/plugin-transform-typeof-symbol@^7.7.4", "@babel/plugin-transform-typeof-symbol@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.8.3.tgz#5cffb216fb25c8c64ba6bf5f76ce49d3ab079f4d" + integrity sha512-3TrkKd4LPqm4jHs6nPtSDI/SV9Cm5PRJkHLUgTcqRQQTMAZ44ZaAdDZJtvWFSaRcvT0a1rTmJ5ZA5tDKjleF3g== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-transform-typescript@~7.4.0": version "7.4.5" @@ -629,23 +798,23 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-typescript" "^7.2.0" -"@babel/plugin-transform-unicode-regex@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.7.4.tgz#a3c0f65b117c4c81c5b6484f2a5e7b95346b83ae" - integrity sha512-N77UUIV+WCvE+5yHw+oks3m18/umd7y392Zv7mYTpFqHtkpcc+QUz+gLJNTWVlWROIWeLqY0f3OjZxV5TcXnRw== +"@babel/plugin-transform-unicode-regex@^7.7.4", "@babel/plugin-transform-unicode-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.8.3.tgz#0cef36e3ba73e5c57273effb182f46b91a1ecaad" + integrity sha512-+ufgJjYdmWfSQ+6NS9VGUR2ns8cjJjYbrbi11mZBTaWm+Fui/ncTLFF28Ei1okavY+xkojGr1eJxNsWYeA5aZw== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.7.4" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-create-regexp-features-plugin" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" "@babel/polyfill@^7.0.0", "@babel/polyfill@^7.7.0": - version "7.7.0" - resolved "https://registry.yarnpkg.com/@babel/polyfill/-/polyfill-7.7.0.tgz#e1066e251e17606ec7908b05617f9b7f8180d8f3" - integrity sha512-/TS23MVvo34dFmf8mwCisCbWGrfhbiWZSwBo6HkADTBhUa2Q/jWltyY/tpofz/b6/RIhqaqQcquptCirqIhOaQ== + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/polyfill/-/polyfill-7.8.3.tgz#2333fc2144a542a7c07da39502ceeeb3abe4debd" + integrity sha512-0QEgn2zkCzqGIkSWWAEmvxD7e00Nm9asTtQvi7HdlYvMhjy/J38V/1Y9ode0zEJeIuxAI0uftiAzqc7nVeWUGg== dependencies: core-js "^2.6.5" regenerator-runtime "^0.13.2" -"@babel/preset-env@^7.0.0", "@babel/preset-env@^7.7.0": +"@babel/preset-env@^7.0.0": version "7.7.7" resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.7.7.tgz#c294167b91e53e7e36d820e943ece8d0c7fe46ac" integrity sha512-pCu0hrSSDVI7kCVUOdcMNQEbOPJ52E+LrQ14sN8uL2ALfSqePZQlKrOy+tM4uhEdYlCHi4imr8Zz2cZe9oSdIg== @@ -702,23 +871,112 @@ js-levenshtein "^1.1.3" semver "^5.5.0" +"@babel/preset-env@^7.7.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.8.3.tgz#dc0fb2938f52bbddd79b3c861a4b3427dd3a6c54" + integrity sha512-Rs4RPL2KjSLSE2mWAx5/iCH+GC1ikKdxPrhnRS6PfFVaiZeom22VFKN4X8ZthyN61kAaR05tfXTbCvatl9WIQg== + dependencies: + "@babel/compat-data" "^7.8.0" + "@babel/helper-compilation-targets" "^7.8.3" + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-proposal-async-generator-functions" "^7.8.3" + "@babel/plugin-proposal-dynamic-import" "^7.8.3" + "@babel/plugin-proposal-json-strings" "^7.8.3" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-proposal-object-rest-spread" "^7.8.3" + "@babel/plugin-proposal-optional-catch-binding" "^7.8.3" + "@babel/plugin-proposal-optional-chaining" "^7.8.3" + "@babel/plugin-proposal-unicode-property-regex" "^7.8.3" + "@babel/plugin-syntax-async-generators" "^7.8.0" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + "@babel/plugin-syntax-json-strings" "^7.8.0" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + "@babel/plugin-syntax-top-level-await" "^7.8.3" + "@babel/plugin-transform-arrow-functions" "^7.8.3" + "@babel/plugin-transform-async-to-generator" "^7.8.3" + "@babel/plugin-transform-block-scoped-functions" "^7.8.3" + "@babel/plugin-transform-block-scoping" "^7.8.3" + "@babel/plugin-transform-classes" "^7.8.3" + "@babel/plugin-transform-computed-properties" "^7.8.3" + "@babel/plugin-transform-destructuring" "^7.8.3" + "@babel/plugin-transform-dotall-regex" "^7.8.3" + "@babel/plugin-transform-duplicate-keys" "^7.8.3" + "@babel/plugin-transform-exponentiation-operator" "^7.8.3" + "@babel/plugin-transform-for-of" "^7.8.3" + "@babel/plugin-transform-function-name" "^7.8.3" + "@babel/plugin-transform-literals" "^7.8.3" + "@babel/plugin-transform-member-expression-literals" "^7.8.3" + "@babel/plugin-transform-modules-amd" "^7.8.3" + "@babel/plugin-transform-modules-commonjs" "^7.8.3" + "@babel/plugin-transform-modules-systemjs" "^7.8.3" + "@babel/plugin-transform-modules-umd" "^7.8.3" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.8.3" + "@babel/plugin-transform-new-target" "^7.8.3" + "@babel/plugin-transform-object-super" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.8.3" + "@babel/plugin-transform-property-literals" "^7.8.3" + "@babel/plugin-transform-regenerator" "^7.8.3" + "@babel/plugin-transform-reserved-words" "^7.8.3" + "@babel/plugin-transform-shorthand-properties" "^7.8.3" + "@babel/plugin-transform-spread" "^7.8.3" + "@babel/plugin-transform-sticky-regex" "^7.8.3" + "@babel/plugin-transform-template-literals" "^7.8.3" + "@babel/plugin-transform-typeof-symbol" "^7.8.3" + "@babel/plugin-transform-unicode-regex" "^7.8.3" + "@babel/types" "^7.8.3" + browserslist "^4.8.2" + core-js-compat "^3.6.2" + invariant "^2.2.2" + levenary "^1.1.0" + semver "^5.5.0" + "@babel/runtime@^7.7.0": - version "7.7.7" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.7.7.tgz#194769ca8d6d7790ec23605af9ee3e42a0aa79cf" - integrity sha512-uCnC2JEVAu8AKB5do1WRIsvrdJ0flYx/A/9f/6chdacnEZ7LmavjdsDXr5ksYBegxtuTPR5Va9/+13QF/kFkCA== + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.8.3.tgz#0811944f73a6c926bb2ad35e918dcc1bfab279f1" + integrity sha512-fVHx1rzEmwB130VTkLnxR+HmxcTjGzH12LYQcFFoBwakMd3aOMD4OsRN7tGG/UOYE2ektgFrS8uACAoRk1CY0w== dependencies: regenerator-runtime "^0.13.2" -"@babel/template@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.7.4.tgz#428a7d9eecffe27deac0a98e23bf8e3675d2a77b" - integrity sha512-qUzihgVPguAzXCK7WXw8pqs6cEwi54s3E+HrejlkuWO6ivMKx9hZl3Y2fSXp9i5HgyWmj7RKP+ulaYnKM4yYxw== +"@babel/template@7.0.0-beta.44": + version "7.0.0-beta.44" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.0.0-beta.44.tgz#f8832f4fdcee5d59bf515e595fc5106c529b394f" + integrity sha512-w750Sloq0UNifLx1rUqwfbnC6uSUk0mfwwgGRfdLiaUzfAOiH0tHJE6ILQIUi3KYkjiCDTskoIsnfqZvWLBDng== dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/parser" "^7.7.4" - "@babel/types" "^7.7.4" + "@babel/code-frame" "7.0.0-beta.44" + "@babel/types" "7.0.0-beta.44" + babylon "7.0.0-beta.44" + lodash "^4.2.0" -"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.6", "@babel/traverse@^7.2.4", "@babel/traverse@^7.3.4", "@babel/traverse@^7.4.5", "@babel/traverse@^7.7.4": +"@babel/template@^7.7.4", "@babel/template@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.8.3.tgz#e02ad04fe262a657809327f578056ca15fd4d1b8" + integrity sha512-04m87AcQgAFdvuoyiQ2kgELr2tV8B4fP/xJAVUL3Yb3bkNdMedD3d0rlSQr3PegP0cms3eHjl1F7PWlvWbU8FQ== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/parser" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/traverse@7.0.0-beta.44": + version "7.0.0-beta.44" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.0.0-beta.44.tgz#a970a2c45477ad18017e2e465a0606feee0d2966" + integrity sha512-UHuDz8ukQkJCDASKHf+oDt3FVUzFd+QYfuBIsiNu/4+/ix6pP/C+uQZJ6K1oEfbCMv/IKWbgDEh7fcsnIE5AtA== + dependencies: + "@babel/code-frame" "7.0.0-beta.44" + "@babel/generator" "7.0.0-beta.44" + "@babel/helper-function-name" "7.0.0-beta.44" + "@babel/helper-split-export-declaration" "7.0.0-beta.44" + "@babel/types" "7.0.0-beta.44" + babylon "7.0.0-beta.44" + debug "^3.1.0" + globals "^11.1.0" + invariant "^2.2.0" + lodash "^4.2.0" + +"@babel/traverse@^7.1.6", "@babel/traverse@^7.2.4", "@babel/traverse@^7.3.4", "@babel/traverse@^7.4.5": version "7.7.4" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.7.4.tgz#9c1e7c60fb679fe4fcfaa42500833333c2058558" integrity sha512-P1L58hQyupn8+ezVA2z5KBm4/Zr4lCC8dwKCMYzsa5jFMDMQAzaBNy9W5VjB+KAmBjb40U7a/H6ao+Xo+9saIw== @@ -733,7 +991,31 @@ globals "^11.1.0" lodash "^4.17.13" -"@babel/types@^7.0.0", "@babel/types@^7.1.6", "@babel/types@^7.3.2", "@babel/types@^7.3.4", "@babel/types@^7.4.0", "@babel/types@^7.7.4": +"@babel/traverse@^7.7.4", "@babel/traverse@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.8.3.tgz#a826215b011c9b4f73f3a893afbc05151358bf9a" + integrity sha512-we+a2lti+eEImHmEXp7bM9cTxGzxPmBiVJlLVD+FuuQMeeO7RaDbutbgeheDkw+Xe3mCfJHnGOWLswT74m2IPg== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/generator" "^7.8.3" + "@babel/helper-function-name" "^7.8.3" + "@babel/helper-split-export-declaration" "^7.8.3" + "@babel/parser" "^7.8.3" + "@babel/types" "^7.8.3" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.13" + +"@babel/types@7.0.0-beta.44": + version "7.0.0-beta.44" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.0.0-beta.44.tgz#6b1b164591f77dec0a0342aca995f2d046b3a757" + integrity sha512-5eTV4WRmqbaFM3v9gHAIljEQJU4Ssc6fxL61JN+Oe2ga/BwyjzjamwkCVVAQjHGuAX8i0BWo42dshL8eO5KfLQ== + dependencies: + esutils "^2.0.2" + lodash "^4.2.0" + to-fast-properties "^2.0.0" + +"@babel/types@^7.1.6", "@babel/types@^7.3.2", "@babel/types@^7.3.4": version "7.7.4" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.7.4.tgz#516570d539e44ddf308c07569c258ff94fde9193" integrity sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA== @@ -742,6 +1024,15 @@ lodash "^4.17.13" to-fast-properties "^2.0.0" +"@babel/types@^7.4.0", "@babel/types@^7.7.4", "@babel/types@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.8.3.tgz#5a383dffa5416db1b73dedffd311ffd0788fb31c" + integrity sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg== + dependencies: + esutils "^2.0.2" + lodash "^4.17.13" + to-fast-properties "^2.0.0" + "@cnakazawa/watch@^1.0.3": version "1.0.3" resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.3.tgz#099139eaec7ebf07a27c1786a3ff64f39464d2ef" @@ -1827,17 +2118,17 @@ babel-core@^6.26.0, babel-core@^6.26.3: slash "^1.0.0" source-map "^0.5.7" -babel-eslint@^10.0.3: - version "10.0.3" - resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.0.3.tgz#81a2c669be0f205e19462fed2482d33e4687a88a" - integrity sha512-z3U7eMY6r/3f3/JB9mTsLjyxrv0Yb1zb8PCWCLpguxfCzBIZUwy23R1t/XKewP+8mEN2Ck8Dtr4q20z6ce6SoA== +babel-eslint@^8.0.0: + version "8.2.6" + resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-8.2.6.tgz#6270d0c73205628067c0f7ae1693a9e797acefd9" + integrity sha512-aCdHjhzcILdP8c9lej7hvXKvQieyRt20SF102SIGyY4cUIiw6UaAtK4j2o3dXX74jEmy0TJ0CEhv4fTIM3SzcA== dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/parser" "^7.0.0" - "@babel/traverse" "^7.0.0" - "@babel/types" "^7.0.0" + "@babel/code-frame" "7.0.0-beta.44" + "@babel/traverse" "7.0.0-beta.44" + "@babel/types" "7.0.0-beta.44" + babylon "7.0.0-beta.44" + eslint-scope "3.7.1" eslint-visitor-keys "^1.0.0" - resolve "^1.12.0" babel-generator@^6.26.0: version "6.26.1" @@ -2402,6 +2693,11 @@ babel6-plugin-strip-class-callcheck@^6.0.0: resolved "https://registry.yarnpkg.com/babel6-plugin-strip-class-callcheck/-/babel6-plugin-strip-class-callcheck-6.0.0.tgz#de841c1abebbd39f78de0affb2c9a52ee228fddf" integrity sha1-3oQcGr6705943gr/ssmlLuIo/d8= +babylon@7.0.0-beta.44: + version "7.0.0-beta.44" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.44.tgz#89159e15e6e30c5096e22d738d8c0af8a0e8ca1d" + integrity sha512-5Hlm13BJVAioCHpImtFqNOF2H3ieTOHd0fmFGMxOJ9jgeFqeAwsv3u5P5cR7CSeFrkgHsT19DgFJkHV0/Mcd8g== + babylon@^6.18.0: version "6.18.0" resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" @@ -3323,7 +3619,7 @@ browserslist@^3.2.6: caniuse-lite "^1.0.30000844" electron-to-chromium "^1.3.47" -browserslist@^4.0.0, browserslist@^4.6.0, browserslist@^4.8.3: +browserslist@^4.0.0, browserslist@^4.6.0, browserslist@^4.8.2, browserslist@^4.8.3: version "4.8.3" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.8.3.tgz#65802fcd77177c878e015f0e3189f2c4f627ba44" integrity sha512-iU43cMMknxG1ClEZ2MDKeonKE1CCrFVkQK2AqO2YWFmvIrx4JWrvQ4w4hQez6EpVI8rHTtqh/ruHHDHSOKxvUg== @@ -3589,11 +3885,16 @@ caniuse-lite@^1.0.0: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001019.tgz#857e3fccaad2b2feb3f1f6d8a8f62d747ea648e1" integrity sha512-6ljkLtF1KM5fQ+5ZN0wuyVvvebJxgJPTmScOMaFuQN2QuOzvRJnWSKfzQskQU5IOU4Gap3zasYPIinzwUjoj/g== -caniuse-lite@^1.0.30000844, caniuse-lite@^1.0.30001017: +caniuse-lite@^1.0.30000844: version "1.0.30001020" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001020.tgz#3f04c1737500ffda78be9beb0b5c1e2070e15926" integrity sha512-yWIvwA68wRHKanAVS1GjN8vajAv7MBFshullKCeq/eKpK7pJBVDgFFEqvgWTkcP2+wIDeQGYFRXECjKZnLkUjA== +caniuse-lite@^1.0.30001017: + version "1.0.30001021" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001021.tgz#e75ed1ef6dbadd580ac7e7720bb16f07b083f254" + integrity sha512-wuMhT7/hwkgd8gldgp2jcrUjOU9RXJ4XxGumQeOsUr91l3WwmM68Cpa/ymCnWEDqakwFXhuDQbaKNHXBPgeE9g== + capture-exit@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" @@ -4159,10 +4460,10 @@ copy-descriptor@^0.1.0: resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= -core-js-compat@^3.6.0: - version "3.6.2" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.6.2.tgz#314ca8b84d5e71c27c19f1ecda966501b1cf1f10" - integrity sha512-+G28dzfYGtAM+XGvB1C5AS1ZPKfQ47HLhcdeIQdZgQnJVdp7/D0m+W/TErwhgsX6CujRUk/LebB6dCrKrtJrvQ== +core-js-compat@^3.6.0, core-js-compat@^3.6.2: + version "3.6.4" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.6.4.tgz#938476569ebb6cda80d339bcf199fae4f16fff17" + integrity sha512-zAa3IZPvsJ0slViBQ2z+vgyyTuhd3MFn1rBQjZSKVEgB0UMYhUkCj9jJUVPgGTGqWvsBVmfnruXgTcNyTlEiSA== dependencies: browserslist "^4.8.3" semver "7.0.0" @@ -4352,7 +4653,7 @@ debug@4.1.1, debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@~4.1. dependencies: ms "^2.1.1" -debug@^3.0.0, debug@^3.0.1, debug@^3.1.0, debug@^3.1.1, debug@^3.2.6: +debug@^3.0.0, debug@^3.0.1, debug@^3.1.0, debug@^3.1.1: version "3.2.6" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== @@ -4490,11 +4791,6 @@ detect-indent@^6.0.0: resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.0.0.tgz#0abd0f549f69fc6659a254fe96786186b6f528fd" integrity sha512-oSyFlqaTHCItVRGK5RmrmjB+CmaMOW7IaNA/kdxqhoa6d17j/5ce9O9eWXmV/KEdRwqpQA+Vqe8a8Bsybu4YnA== -detect-libc@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" - integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= - detect-newline@3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" @@ -4617,7 +4913,12 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= -electron-to-chromium@^1.3.322, electron-to-chromium@^1.3.47: +electron-to-chromium@^1.3.322: + version "1.3.336" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.336.tgz#f0e7a3e78f1c9a0385b6693a4a4b7453f0ae6aaf" + integrity sha512-FtazvnXAizSVMxQNPqUcTv2UElY5r3uRPQwiU1Tyg/Yc2UFr+/3wqDoLIV9ES6ablW3IrCcR8uEK2ppxaNPWhw== + +electron-to-chromium@^1.3.47: version "1.3.329" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.329.tgz#ff3644fb216bdccc33b2063c36f679deb5316cde" integrity sha512-CoyYGbkQLwmOpaWRUZgeSNnEPH5fE5R8T7dhQIWV/rlIt+Kx6NFppQJ2oHELmzw8ZGabOBY5CrjGjyA+74QVoQ== @@ -4747,6 +5048,14 @@ ember-bootstrap@^3.0.0: rsvp "^4.0.1" silent-error "^1.0.1" +ember-classic-decorator@^1.0.5: + version "1.0.6" + resolved "https://registry.yarnpkg.com/ember-classic-decorator/-/ember-classic-decorator-1.0.6.tgz#b66c7411568af0b42d8ca214fe90ecca1638bfc8" + integrity sha512-ANYPH+oGsKBz7jjEi4n6ADUI5/kLRVyt2OWjMQVAx/+ZELl76hJxrVM8RceiXGWHUiyzZypPP1XRzSB2Yp8jsg== + dependencies: + babel-plugin-filter-imports "^3.0.0" + ember-cli-babel "^7.11.1" + ember-cli-acceptance-test-helpers@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/ember-cli-acceptance-test-helpers/-/ember-cli-acceptance-test-helpers-1.1.0.tgz#ed3ddb14893dda35c7ab30e828ea35c5c33f6f6e" @@ -5424,7 +5733,7 @@ ember-decorators-polyfill@^1.0.6: ember-cli-version-checker "^3.1.3" ember-compatibility-helpers "^1.2.0" -ember-decorators@^6.1.0: +ember-decorators@^6.1.0, ember-decorators@^6.1.1: version "6.1.1" resolved "https://registry.yarnpkg.com/ember-decorators/-/ember-decorators-6.1.1.tgz#6d770f8999cf5a413a1ee459afd520838c0fc470" integrity sha512-63vZPntPn1aqMyeNRLoYjJD+8A8obd+c2iZkJflswpDRNVIsp2m7aQdSCtPt4G0U/TEq2251g+N10maHX3rnJQ== @@ -6033,6 +6342,14 @@ eslint-plugin-node@^11.0.0: resolve "^1.10.1" semver "^6.1.0" +eslint-scope@3.7.1: + version "3.7.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8" + integrity sha1-PWPD7f2gLgbgGkUq2IyqzHzctug= + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + eslint-scope@^4.0.0, eslint-scope@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" @@ -6777,13 +7094,6 @@ fs-merger@^3.0.1: rimraf "^2.6.3" walk-sync "^2.0.2" -fs-minipass@^1.2.5: - version "1.2.7" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" - integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== - dependencies: - minipass "^2.6.0" - fs-minipass@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.0.0.tgz#a6415edab02fae4b9e9230bc87ee2e4472003cd1" @@ -6855,7 +7165,6 @@ fsevents@^1.2.7: dependencies: bindings "^1.5.0" nan "^2.12.1" - node-pre-gyp "*" fsevents@~2.1.2: version "2.1.2" @@ -6886,6 +7195,11 @@ gauge@~2.7.3: strip-ansi "^3.0.1" wide-align "^1.1.0" +gensync@^1.0.0-beta.1: + version "1.0.0-beta.1" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" + integrity sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg== + get-caller-file@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" @@ -7495,7 +7809,7 @@ humanize-ms@^1.2.1: dependencies: ms "^2.0.0" -iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13: +iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@~0.4.13: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -7512,13 +7826,6 @@ iferr@^0.1.5: resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= -ignore-walk@^3.0.1: - version "3.0.3" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37" - integrity sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw== - dependencies: - minimatch "^3.0.4" - ignore@^4.0.3, ignore@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" @@ -7708,7 +8015,7 @@ into-stream@^3.1.0: from2 "^2.1.1" p-is-promise "^1.1.0" -invariant@^2.2.2: +invariant@^2.2.0, invariant@^2.2.2, invariant@^2.2.4: version "2.2.4" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== @@ -8134,16 +8441,16 @@ js-string-escape@^1.0.1: resolved "https://registry.yarnpkg.com/js-string-escape/-/js-string-escape-1.0.1.tgz#e2625badbc0d67c7533e9edc1068c587ae4137ef" integrity sha1-4mJbrbwNZ8dTPp7cEGjFh65BN+8= +js-tokens@^3.0.0, js-tokens@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" + integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= + "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-tokens@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" - integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= - js-yaml@^3.13.0, js-yaml@^3.13.1, js-yaml@^3.2.5, js-yaml@^3.2.7: version "3.13.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" @@ -8389,6 +8696,18 @@ lerna-changelog@^1.0.0: progress "^2.0.0" yargs "^13.0.0" +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +levenary@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/levenary/-/levenary-1.1.0.tgz#fc146fe75f32dc483a0a2c64aef720f602cd6210" + integrity sha512-VHcwhO0UTpUW7rLPN2/OiWJdgA1e9BqEDALhrgCe/F+uUJnep6CoUsTzMeP8Rh0NGr9uKquXxqe7lwLZo509nQ== + dependencies: + leven "^3.1.0" + levn@^0.3.0, levn@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" @@ -8739,7 +9058,7 @@ lodash.values@^4.3.0: resolved "https://registry.yarnpkg.com/lodash.values/-/lodash.values-4.3.0.tgz#a3a6c2b0ebecc5c2cba1c17e6e620fe81b53d347" integrity sha1-o6bCsOvsxcLLocF+bmIP6BtT00c= -lodash@4.17.15, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.4, lodash@^4.5.1: +lodash@4.17.15, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.4, lodash@^4.2.0, lodash@^4.5.1: version "4.17.15" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== @@ -9213,7 +9532,7 @@ minipass-sized@^1.0.3: dependencies: minipass "^3.0.0" -minipass@^2.2.0, minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: +minipass@^2.2.0: version "2.9.0" resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== @@ -9228,13 +9547,6 @@ minipass@^3.0.0, minipass@^3.1.0, minipass@^3.1.1: dependencies: yallist "^4.0.0" -minizlib@^1.2.1: - version "1.3.3" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" - integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== - dependencies: - minipass "^2.9.0" - minizlib@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.0.tgz#fd52c645301ef09a63a2c209697c294c6ce02cf3" @@ -9422,15 +9734,6 @@ natural-compare@^1.4.0: resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= -needle@^2.2.1: - version "2.4.0" - resolved "https://registry.yarnpkg.com/needle/-/needle-2.4.0.tgz#6833e74975c444642590e15a750288c5f939b57c" - integrity sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg== - dependencies: - debug "^3.2.6" - iconv-lite "^0.4.4" - sax "^1.2.4" - negotiator@0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" @@ -9518,22 +9821,6 @@ node-notifier@^5.0.1: shellwords "^0.1.1" which "^1.3.0" -node-pre-gyp@*: - version "0.14.0" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.14.0.tgz#9a0596533b877289bcad4e143982ca3d904ddc83" - integrity sha512-+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA== - dependencies: - detect-libc "^1.0.2" - mkdirp "^0.5.1" - needle "^2.2.1" - nopt "^4.0.1" - npm-packlist "^1.1.6" - npmlog "^4.0.2" - rc "^1.2.7" - rimraf "^2.6.1" - semver "^5.3.0" - tar "^4.4.2" - node-releases@^1.1.44: version "1.1.45" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.45.tgz#4cf7e9175d71b1317f15ffd68ce63bce1d53e9f2" @@ -9553,14 +9840,6 @@ nopt@^3.0.6: dependencies: abbrev "1" -nopt@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" - integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00= - dependencies: - abbrev "1" - osenv "^0.1.4" - normalize-git-url@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/normalize-git-url/-/normalize-git-url-3.0.2.tgz#8e5f14be0bdaedb73e07200310aa416c27350fc4" @@ -9597,23 +9876,11 @@ normalize-url@^4.1.0: resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.0.tgz#453354087e6ca96957bd8f5baf753f5982142129" integrity sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ== -npm-bundled@^1.0.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.1.tgz#1edd570865a94cdb1bc8220775e29466c9fb234b" - integrity sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA== - dependencies: - npm-normalize-package-bin "^1.0.1" - npm-git-info@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/npm-git-info/-/npm-git-info-1.0.3.tgz#a933c42ec321e80d3646e0d6e844afe94630e1d5" integrity sha1-qTPELsMh6A02RuDW6ESv6UYw4dU= -npm-normalize-package-bin@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" - integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== - npm-package-arg@^6.1.1: version "6.1.1" resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-6.1.1.tgz#02168cb0a49a2b75bf988a28698de7b529df5cb7" @@ -9624,14 +9891,6 @@ npm-package-arg@^6.1.1: semver "^5.6.0" validate-npm-package-name "^3.0.0" -npm-packlist@^1.1.6: - version "1.4.7" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.7.tgz#9e954365a06b80b18111ea900945af4f88ed4848" - integrity sha512-vAj7dIkp5NhieaGZxBJB8fF4R0078rqsmhJcAfXZ6O7JJhjhPK96n5Ry1oZcfLXgfun0GWTZPOxaEyqv8GBykQ== - dependencies: - ignore-walk "^3.0.1" - npm-bundled "^1.0.1" - npm-run-path@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" @@ -9646,7 +9905,7 @@ npm-run-path@^3.0.0: dependencies: path-key "^3.0.0" -npmlog@^4.0.0, npmlog@^4.0.2: +npmlog@^4.0.0: version "4.1.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== @@ -9871,7 +10130,7 @@ os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.1, os-tmpdir@~1.0.2: resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= -osenv@^0.1.3, osenv@^0.1.4, osenv@^0.1.5: +osenv@^0.1.3, osenv@^0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== @@ -10556,7 +10815,7 @@ raw-body@~1.1.0: bytes "1" string_decoder "0.10" -rc@^1.2.7, rc@^1.2.8: +rc@^1.2.8: version "1.2.8" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== @@ -11169,11 +11428,6 @@ sass@^1.19.0: dependencies: chokidar ">=2.0.0 <4.0.0" -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" @@ -11945,19 +12199,6 @@ tapable@^1.0.0, tapable@^1.1.0: resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== -tar@^4.4.2: - version "4.4.13" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" - integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA== - dependencies: - chownr "^1.1.1" - fs-minipass "^1.2.5" - minipass "^2.8.6" - minizlib "^1.2.1" - mkdirp "^0.5.0" - safe-buffer "^5.1.2" - yallist "^3.0.3" - temp-fs@^0.9.9: version "0.9.9" resolved "https://registry.yarnpkg.com/temp-fs/-/temp-fs-0.9.9.tgz#8071730437870720e9431532fe2814364f8803d7" @@ -12961,7 +13202,7 @@ yallist@^2.1.2: resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= -yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3: +yallist@^3.0.0, yallist@^3.0.2: version "3.1.1" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==