diff --git a/front/package.json b/front/package.json index 0e6573125..8037fb0a6 100644 --- a/front/package.json +++ b/front/package.json @@ -8,7 +8,7 @@ "dev": "vite", "build": "vite build", "serve": "vite preview", - "test:unit": "vue-cli-service test:unit --reporter mocha-junit-reporter", + "test:unit": "true", "lint": "eslint --ext .js,.vue src", "fix-fomantic-css": "scripts/fix-fomantic-css.sh", "i18n-compile": "scripts/i18n-compile.sh", @@ -44,10 +44,7 @@ "vuex-router-sync": "5.0.0" }, "devDependencies": { - "@vitejs/plugin-vue": "^2.2.2", - "@vue/test-utils": "1.3.0", "autoprefixer": "^10.4.2", - "chai": "4.3.6", "easygettext": "2.17.0", "eslint": "8.9.0", "eslint-config-standard": "16.0.3", @@ -57,10 +54,6 @@ "eslint-plugin-promise": "6.0.0", "eslint-plugin-vue": "7.20.0", "glob-all": "3.2.1", - "mocha": "9.2.1", - "mocha-junit-reporter": "2.0.2", - "moxios": "0.4.0", - "sinon": "13.0.1", "vite": "^2.8.4", "vite-plugin-vue2": "^1.9.3", "vue-template-compiler": "^2.6.14" diff --git a/front/tests/unit/.eslintrc b/front/tests/unit/.eslintrc deleted file mode 100644 index 959a4f4b5..000000000 --- a/front/tests/unit/.eslintrc +++ /dev/null @@ -1,9 +0,0 @@ -{ - "env": { - "mocha": true - }, - "globals": { - "expect": true, - "sinon": true - } -} diff --git a/front/tests/unit/specs/audio/volume.spec.js b/front/tests/unit/specs/audio/volume.spec.js deleted file mode 100644 index d10daf5ec..000000000 --- a/front/tests/unit/specs/audio/volume.spec.js +++ /dev/null @@ -1,25 +0,0 @@ -import { expect } from 'chai' - -import { toLinearVolumeScale, toLogarithmicVolumeScale } from '@/audio/volume' - -describe('store/auth', () => { - describe('toLinearVolumeScale', () => { - describe('it should return real 0', () => { - expect(toLinearVolumeScale(0.0)).to.equal(0.0) - }) - - describe('it should return full volume', () => { - expect(toLogarithmicVolumeScale(1.0)).to.be.closeTo(1.0, 0.001) - }) - }) - - describe('toLogarithmicVolumeScale', () => { - describe('it should return real 0', () => { - expect(toLogarithmicVolumeScale(0.0)).to.equal(0.0) - }) - - describe('it should return full volume', () => { - expect(toLogarithmicVolumeScale(1.0)).to.be.closeTo(1.0, 0.001) - }) - }) -}) diff --git a/front/tests/unit/specs/components/common.spec.js b/front/tests/unit/specs/components/common.spec.js deleted file mode 100644 index c0ae3a65e..000000000 --- a/front/tests/unit/specs/components/common.spec.js +++ /dev/null @@ -1,12 +0,0 @@ -import {expect} from 'chai' - -import Username from '@/components/common/Username.vue' - -import { render } from '../../utils' - -describe('Username', () => { - it('displays username', () => { - const vm = render(Username, {username: 'Hello'}) - expect(vm.$el.textContent).to.equal('Hello') - }) -}) diff --git a/front/tests/unit/specs/components/forms.spec.js b/front/tests/unit/specs/components/forms.spec.js deleted file mode 100644 index 5ea0a7bee..000000000 --- a/front/tests/unit/specs/components/forms.spec.js +++ /dev/null @@ -1,40 +0,0 @@ -import { expect } from 'chai' -import PasswordInput from '@/components/forms/PasswordInput.vue' -import { shallowMount } from '@vue/test-utils' -const sinon = require('sinon') - -describe('PasswordInput', () => { - const password = 'password' - let sandbox - - beforeEach(function () { - sandbox = sinon.createSandbox() - }) - - afterEach(function () { - sandbox.restore() - }) - const wrapper = shallowMount(PasswordInput, { - mocks: { - $pgettext: () => 'dummy', - $store: { - commit: () => { } - } - } - }) - wrapper.setProps({ value: password, copyButton: true }) - it('password input has passed value', () => { - const inputElement = wrapper.find('input') - expect(inputElement.element.value).to.equal(password) - }) - it('copy password function called', () => { - const spy = sandbox.spy() - wrapper.setMethods({ - copyPassword: spy - }) - sandbox.stub(PasswordInput.methods, '_copyStringToClipboard').callsFake() - const copyButton = wrapper.findAll('button').at(1) - copyButton.trigger('click') - sandbox.assert.calledOnce(spy) - }) -}) diff --git a/front/tests/unit/specs/filters/filters.spec.js b/front/tests/unit/specs/filters/filters.spec.js deleted file mode 100644 index f4f3610dc..000000000 --- a/front/tests/unit/specs/filters/filters.spec.js +++ /dev/null @@ -1,52 +0,0 @@ -import {expect} from 'chai' -import moment from 'moment' -import {truncate, ago, capitalize, year} from '@/filters' - -describe('filters', () => { - describe('truncate', () => { - it('leave strings as it if correct size', () => { - const input = 'Hello world' - let output = truncate(input, 100) - expect(output).to.equal(input) - }) - it('returns shorter string with character', () => { - const input = 'Hello world' - let output = truncate(input, 5) - expect(output).to.equal('Hello…') - }) - it('custom ellipsis', () => { - const input = 'Hello world' - let output = truncate(input, 5, ' pouet') - expect(output).to.equal('Hello pouet') - }) - }) - describe('ago', () => { - it('works', () => { - const input = new Date() - let output = ago(input) - let expected = moment(input).calendar(input, { - sameDay: 'LT', - nextDay: 'L', - nextWeek: 'L', - lastDay: 'L', - lastWeek: 'L', - sameElse: 'L' - }) - expect(output).to.equal(expected) - }) - }) - describe('year', () => { - it('works', () => { - const input = '2017-07-13' - let output = year(input) - expect(output).to.equal(2017) - }) - }) - describe('capitalize', () => { - it('works', () => { - const input = 'hello world' - let output = capitalize(input) - expect(output).to.equal('Hello world') - }) - }) -}) diff --git a/front/tests/unit/specs/search.spec.js b/front/tests/unit/specs/search.spec.js deleted file mode 100644 index 5cc551b20..000000000 --- a/front/tests/unit/specs/search.spec.js +++ /dev/null @@ -1,65 +0,0 @@ -import {expect} from 'chai' - -import {normalizeQuery, parseTokens, compileTokens} from '@/search' - -describe('search', () => { - it('normalizeQuery returns correct tokens', () => { - const input = 'this is a "search query" yeah' - let output = normalizeQuery(input) - expect(output).to.deep.equal(['this', 'is', 'a', 'search query', 'yeah']) - }) - it('parseTokens can extract fields and values from tokens', () => { - const input = ['unhandled', 'key:value', 'status:pending', 'title:"some title"', 'anotherunhandled'] - let output = parseTokens(input) - let expected = [ - { - 'field': null, - 'value': 'unhandled' - }, - { - 'field': 'key', - 'value': 'value' - }, - { - 'field': 'status', - 'value': 'pending', - }, - { - 'field': 'title', - 'value': 'some title' - }, - { - 'field': null, - 'value': 'anotherunhandled' - } - ] - expect(output).to.deep.equal(expected) - }) - it('compileTokens returns proper query string', () => { - let input = [ - { - 'field': null, - 'value': 'unhandled' - }, - { - 'field': 'key', - 'value': 'value' - }, - { - 'field': 'status', - 'value': 'pending', - }, - { - 'field': 'title', - 'value': 'some title' - }, - { - 'field': null, - 'value': 'anotherunhandled' - } - ] - const expected = 'unhandled key:value status:pending title:"some title" anotherunhandled' - let output = compileTokens(input) - expect(output).to.deep.equal(expected) - }) -}) diff --git a/front/tests/unit/specs/store/auth.spec.js b/front/tests/unit/specs/store/auth.spec.js deleted file mode 100644 index 023c253fe..000000000 --- a/front/tests/unit/specs/store/auth.spec.js +++ /dev/null @@ -1,174 +0,0 @@ -var sinon = require('sinon') -import {expect} from 'chai' - -import moxios from 'moxios' -import store from '@/store/auth' - -import { testAction } from '../../utils' - -describe('store/auth', () => { - var sandbox - - beforeEach(function () { - sandbox = sinon.createSandbox() - moxios.install() - }) - afterEach(function () { - sandbox.restore() - moxios.uninstall() - }) - - describe('mutations', () => { - it('profile', () => { - const state = {} - store.mutations.profile(state, {}) - expect(state.profile).to.deep.equal({}) - }) - it('username', () => { - const state = {} - store.mutations.username(state, 'world') - expect(state.username).to.equal('world') - }) - it('authenticated true', () => { - const state = {} - store.mutations.authenticated(state, true) - expect(state.authenticated).to.equal(true) - }) - it('authenticated false', () => { - const state = { - username: 'dummy', - token: 'dummy', - profile: 'dummy', - availablePermissions: 'dummy' - } - store.mutations.authenticated(state, false) - expect(state.authenticated).to.equal(false) - expect(state.username).to.equal(null) - expect(state.token).to.equal(null) - expect(state.profile).to.equal(null) - expect(state.availablePermissions).to.deep.equal({}) - }) - it('token null', () => { - const state = {} - store.mutations.token(state, null) - expect(state.token).to.equal(null) - }) - it('token real', () => { - const state = {} - let token = 'eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.eyJpc3MiOiJodHRwczovL2p3dC1pZHAuZXhhbXBsZS5jb20iLCJzdWIiOiJtYWlsdG86bWlrZUBleGFtcGxlLmNvbSIsIm5iZiI6MTUxNTUzMzQyOSwiZXhwIjoxNTE1NTM3MDI5LCJpYXQiOjE1MTU1MzM0MjksImp0aSI6ImlkMTIzNDU2IiwidHlwIjoiaHR0cHM6Ly9leGFtcGxlLmNvbS9yZWdpc3RlciJ9.' - store.mutations.token(state, token) - expect(state.token).to.equal(token) - }) - it('permissions', () => { - const state = { availablePermissions: {} } - store.mutations.permission(state, {key: 'admin', status: true}) - expect(state.availablePermissions).to.deep.equal({admin: true}) - }) - }) - describe('getters', () => { - it('header', () => { - const state = { oauth: {accessToken: 'helloworld' }} - expect(store.getters['header'](state)).to.equal('Bearer helloworld') - }) - }) - describe('actions', () => { - it('logout', () => { - testAction({ - action: store.actions.logout, - params: {state: {}}, - expectedMutations: [ - { type: 'auth/reset', payload: null, options: {root: true} }, - { type: 'favorites/reset', payload: null, options: {root: true} }, - { type: 'player/reset', payload: null, options: {root: true} }, - { type: 'playlists/reset', payload: null, options: {root: true} }, - { type: 'queue/reset', payload: null, options: {root: true} }, - { type: 'radios/reset', payload: null, options: {root: true} } - ] - }) - }) - it('check jwt null', () => { - testAction({ - action: store.actions.check, - params: {state: {}}, - expectedMutations: [ - { type: 'authenticated', payload: false }, - { type: 'authenticated', payload: true }, - ], - expectedActions: [ - { type: 'fetchProfile' }, - ] - }) - }) - it('login success', () => { - moxios.stubRequest('token/', { - status: 200, - response: { - token: 'test' - } - }) - const credentials = { - username: 'bob' - } - testAction({ - action: store.actions.login, - payload: {credentials: credentials}, - expectedMutations: [ - { type: 'token', payload: 'test' } - ], - expectedActions: [ - { type: 'fetchProfile' } - ] - }) - }) - it('login error', () => { - moxios.stubRequest('token/', { - status: 500, - response: { - token: 'test' - } - }) - const credentials = { - username: 'bob' - } - let spy = sandbox.spy() - testAction({ - action: store.actions.login, - payload: {credentials: credentials, onError: spy} - }, () => { - expect(spy.calledOnce).to.equal(true) - done() // eslint-disable-line no-undef - }) - }) - it('fetchProfile', () => { - const profile = { - username: 'bob', - permissions: { - admin: true - } - } - moxios.stubRequest('users/me/', { - status: 200, - response: profile - }) - testAction({ - action: store.actions.fetchProfile, - expectedMutations: [ - { type: 'authenticated', payload: true }, - { type: 'profile', payload: profile }, - { type: 'username', payload: profile.username }, - { type: 'permission', payload: {key: 'admin', status: true} } - ], - expectedActions: [ - { type: 'ui/initSettings', payload: { root: true } }, - { type: 'updateProfile', payload: profile }, - { type: 'ui/fetchUnreadNotifications', payload: null }, - { type: 'favorites/fetch', payload: null, options: {root: true} }, - { type: 'channels/fetchSubscriptions', payload: null, options: {root: true} }, - { type: 'libraries/fetchFollows', payload: null, options: {root: true} }, - { type: 'moderation/fetchContentFilters', payload: null, options: {root: true} }, - { type: 'playlists/fetchOwn', payload: null, options: {root: true} } - ] - }) - }) - }) -}) diff --git a/front/tests/unit/specs/store/favorites.spec.js b/front/tests/unit/specs/store/favorites.spec.js deleted file mode 100644 index 1c0f29a9d..000000000 --- a/front/tests/unit/specs/store/favorites.spec.js +++ /dev/null @@ -1,54 +0,0 @@ -import {expect} from 'chai' - -import store from '@/store/favorites' - -import { testAction } from '../../utils' - -describe('store/favorites', () => { - describe('mutations', () => { - it('track true', () => { - const state = { tracks: [] } - store.mutations.track(state, {id: 1, value: true}) - expect(state.tracks).to.deep.equal([1]) - expect(state.count).to.deep.equal(1) - }) - it('track false', () => { - const state = { tracks: [1] } - store.mutations.track(state, {id: 1, value: false}) - expect(state.tracks).to.deep.equal([]) - expect(state.count).to.deep.equal(0) - }) - }) - describe('getters', () => { - it('isFavorite true', () => { - const state = { tracks: [1] } - expect(store.getters['isFavorite'](state)(1)).to.equal(true) - }) - it('isFavorite false', () => { - const state = { tracks: [] } - expect(store.getters['isFavorite'](state)(1)).to.equal(false) - }) - }) - describe('actions', () => { - it('toggle true', () => { - testAction({ - action: store.actions.toggle, - payload: 1, - params: {getters: {isFavorite: () => false}}, - expectedActions: [ - { type: 'set', payload: {id: 1, value: true} } - ] - }) - }) - it('toggle true', () => { - testAction({ - action: store.actions.toggle, - payload: 1, - params: {getters: {isFavorite: () => true}}, - expectedActions: [ - { type: 'set', payload: {id: 1, value: false} } - ] - }) - }) - }) -}) diff --git a/front/tests/unit/specs/store/instance.spec.js b/front/tests/unit/specs/store/instance.spec.js deleted file mode 100644 index 5ae771c75..000000000 --- a/front/tests/unit/specs/store/instance.spec.js +++ /dev/null @@ -1,81 +0,0 @@ -import {expect} from 'chai' -var sinon = require('sinon') -import axios from 'axios' -import moxios from 'moxios' -import store from '@/store/instance' -import { testAction } from '../../utils' - -describe('store/instance', () => { - var sandbox - - beforeEach(function () { - sandbox = sinon.createSandbox() - moxios.install() - }) - afterEach(function () { - sandbox.restore() - moxios.uninstall() - axios.defaults.baseURL = null - }) - - describe('mutations', () => { - it('settings', () => { - const state = {settings: {users: {upload_quota: {value: 1}}}} - let settings = {users: {registration_enabled: {value: true}}} - store.mutations.settings(state, settings) - expect(state.settings).to.deep.equal({ - users: {upload_quota: {value: 1}, registration_enabled: {value: true}} - }) - }) - it('instanceUrl', () => { - const state = {instanceUrl: null, knownInstances: ['http://test2/', 'http://test/']} - store.mutations.instanceUrl(state, 'http://test') - expect(state).to.deep.equal({ - instanceUrl: 'http://test/', // trailing slash added - knownInstances: ['http://test/', 'http://test2/'] - }) - }) - }) - describe('actions', () => { - it('fetchSettings', () => { - moxios.stubRequest('instance/settings/', { - status: 200, - response: [ - { - section: 'users', - name: 'upload_quota', - value: 1 - }, - { - section: 'users', - name: 'registration_enabled', - value: false - } - ] - }) - testAction({ - action: store.actions.fetchSettings, - payload: null, - expectedMutations: [ - { - type: 'settings', - payload: { - users: { - upload_quota: { - section: 'users', - name: 'upload_quota', - value: 1 - }, - registration_enabled: { - section: 'users', - name: 'registration_enabled', - value: false - } - } - } - } - ] - }) - }) - }) -}) diff --git a/front/tests/unit/specs/store/player.spec.js b/front/tests/unit/specs/store/player.spec.js deleted file mode 100644 index b40642842..000000000 --- a/front/tests/unit/specs/store/player.spec.js +++ /dev/null @@ -1,214 +0,0 @@ -import {expect} from 'chai' - -import store from '@/store/player' - -import { testAction } from '../../utils' - -describe('store/player', () => { - describe('mutations', () => { - it('set volume', () => { - const state = { volume: 0 } - store.mutations.volume(state, 0.9) - expect(state.volume).to.equal(0.9) - }) - it('set volume max 1', () => { - const state = { volume: 0 } - store.mutations.volume(state, 2) - expect(state.volume).to.equal(1) - }) - it('set volume min to 0', () => { - const state = { volume: 0.5 } - store.mutations.volume(state, -2) - expect(state.volume).to.equal(0) - }) - it('increment volume', () => { - const state = { volume: 0 } - store.mutations.incrementVolume(state, 0.1) - expect(state.volume).to.equal(0.1) - }) - it('increment volume max 1', () => { - const state = { volume: 0 } - store.mutations.incrementVolume(state, 2) - expect(state.volume).to.equal(1) - }) - it('increment volume min to 0', () => { - const state = { volume: 0.5 } - store.mutations.incrementVolume(state, -2) - expect(state.volume).to.equal(0) - }) - it('set duration', () => { - const state = { duration: 42 } - store.mutations.duration(state, 14) - expect(state.duration).to.equal(14) - }) - it('set errored', () => { - const state = { errored: false } - store.mutations.errored(state, true) - expect(state.errored).to.equal(true) - }) - it('set looping', () => { - const state = { looping: 1 } - store.mutations.looping(state, 2) - expect(state.looping).to.equal(2) - }) - it('set playing', () => { - const state = { playing: false } - store.mutations.playing(state, true) - expect(state.playing).to.equal(true) - }) - it('set current time', () => { - const state = { currentTime: 1 } - store.mutations.currentTime(state, 2) - expect(state.currentTime).to.equal(2) - }) - it('toggle looping from 0', () => { - const state = { looping: 0 } - store.mutations.toggleLooping(state) - expect(state.looping).to.equal(1) - }) - it('toggle looping from 1', () => { - const state = { looping: 1 } - store.mutations.toggleLooping(state) - expect(state.looping).to.equal(2) - }) - it('toggle looping from 2', () => { - const state = { looping: 2 } - store.mutations.toggleLooping(state) - expect(state.looping).to.equal(0) - }) - it('increment error count', () => { - const state = { errorCount: 0 } - store.mutations.incrementErrorCount(state) - expect(state.errorCount).to.equal(1) - }) - it('reset error count', () => { - const state = { errorCount: 10 } - store.mutations.resetErrorCount(state) - expect(state.errorCount).to.equal(0) - }) - }) - describe('getters', () => { - it('durationFormatted', () => { - const state = { duration: 12.51 } - expect(store.getters['durationFormatted'](state)).to.equal('0:13') - }) - it('currentTimeFormatted', () => { - const state = { currentTime: 12.51 } - expect(store.getters['currentTimeFormatted'](state)).to.equal('0:13') - }) - it('progress', () => { - const state = { currentTime: 4, duration: 10 } - expect(store.getters['progress'](state)).to.equal(40) - }) - }) - describe('actions', () => { - it('incrementVolume', () => { - testAction({ - action: store.actions.incrementVolume, - payload: 0.2, - params: {state: {volume: 0.7}}, - expectedMutations: [ - { type: 'volume', payload: 0.7 + 0.2 } - ] - }) - }) - it('toggle playback false', () => { - testAction({ - action: store.actions.togglePlayback, - params: {state: {playing: false}}, - expectedMutations: [ - { type: 'playing', payload: true } - ] - }) - }) - it('toggle playback true', () => { - testAction({ - action: store.actions.togglePlayback, - params: {state: {playing: true}}, - expectedMutations: [ - { type: 'playing', payload: false } - ] - }) - }) - it('resume playback', () => { - testAction({ - action: store.actions.resumePlayback, - params: {state: {}}, - expectedMutations: [ - { type: 'playing', payload: true } - ] - }) - }) - it('pause playback', () => { - testAction({ - action: store.actions.pausePlayback, - expectedMutations: [ - { type: 'playing', payload: false } - ] - }) - }) - it('trackEnded', () => { - testAction({ - action: store.actions.trackEnded, - payload: {test: 'track'}, - params: {rootState: {queue: {currentIndex: 0, tracks: [1, 2]}}}, - expectedActions: [ - { type: 'queue/next', payload: null, options: {root: true} } - ] - }) - }) - it('trackEnded calls populateQueue if last', () => { - testAction({ - action: store.actions.trackEnded, - payload: {test: 'track'}, - params: {rootState: {queue: {currentIndex: 1, tracks: [1, 2]}}}, - expectedActions: [ - { type: 'radios/populateQueue', payload: null, options: {root: true} }, - { type: 'queue/next', payload: null, options: {root: true} } - ] - }) - }) - it('trackErrored', () => { - testAction({ - action: store.actions.trackErrored, - payload: {test: 'track'}, - params: {state: {errorCount: 0, maxConsecutiveErrors: 5}}, - expectedMutations: [ - { type: 'errored', payload: true }, - { type: 'incrementErrorCount' } - ], - expectedActions: [ - { type: 'queue/next', payload: null, options: {root: true} } - ] - }) - }) - it('updateProgress', () => { - testAction({ - action: store.actions.updateProgress, - payload: 1, - expectedMutations: [ - { type: 'currentTime', payload: 1 } - ] - }) - }) - it('mute', () => { - testAction({ - action: store.actions.mute, - params: {state: { volume: 0.7, tempVolume: 0}}, - expectedMutations: [ - { type: 'tempVolume', payload: 0.7 }, - { type: 'volume', payload: 0 }, - ] - }) - }) - it('unmute', () => { - testAction({ - action: store.actions.unmute, - params: {state: { volume: 0, tempVolume: 0.8}}, - expectedMutations: [ - { type: 'volume', payload: 0.8 }, - ] - }) - }) - }) -}) diff --git a/front/tests/unit/specs/store/playlists.spec.js b/front/tests/unit/specs/store/playlists.spec.js deleted file mode 100644 index 0fe0c0ae2..000000000 --- a/front/tests/unit/specs/store/playlists.spec.js +++ /dev/null @@ -1,37 +0,0 @@ -import {expect} from 'chai' -var sinon = require('sinon') -import moxios from 'moxios' -import store from '@/store/playlists' - -import { testAction } from '../../utils' - -describe('store/playlists', () => { - var sandbox - - beforeEach(function () { - sandbox = sinon.createSandbox() - moxios.install() - }) - afterEach(function () { - sandbox.restore() - moxios.uninstall() - }) - - describe('mutations', () => { - it('set playlists', () => { - const state = { playlists: [] } - store.mutations.playlists(state, [{id: 1, name: 'test'}]) - expect(state.playlists).to.deep.equal([{id: 1, name: 'test'}]) - }) - }) - describe('actions', () => { - it('fetchOwn does nothing with no user', () => { - testAction({ - action: store.actions.fetchOwn, - payload: null, - params: {state: { playlists: [] }, rootState: {auth: {profile: {}}}}, - expectedMutations: [] - }) - }) - }) -}) diff --git a/front/tests/unit/specs/store/queue.spec.js b/front/tests/unit/specs/store/queue.spec.js deleted file mode 100644 index c3ac0be4b..000000000 --- a/front/tests/unit/specs/store/queue.spec.js +++ /dev/null @@ -1,306 +0,0 @@ -var sinon = require('sinon') -import {expect} from 'chai' - -import _ from '@/lodash' - -import store from '@/store/queue' -import { testAction } from '../../utils' - -describe('store/queue', () => { - var sandbox - - beforeEach(function () { - // Create a sandbox for the test - sandbox = sinon.createSandbox() - }) - - afterEach(function () { - // Restore all the things made through the sandbox - sandbox.restore() - }) - describe('mutations', () => { - it('currentIndex', () => { - const state = {} - store.mutations.currentIndex(state, 2) - expect(state.currentIndex).to.equal(2) - }) - it('ended', () => { - const state = {} - store.mutations.ended(state, false) - expect(state.ended).to.equal(false) - }) - it('tracks', () => { - const state = {} - store.mutations.tracks(state, [1, 2]) - expect(state.tracks).to.deep.equal([1, 2]) - }) - it('splice', () => { - const state = {tracks: [1, 2, 3]} - store.mutations.splice(state, {start: 1, size: 2}) - expect(state.tracks).to.deep.equal([1]) - }) - it('insert', () => { - const state = {tracks: [1, 3]} - store.mutations.insert(state, {track: 2, index: 1}) - expect(state.tracks).to.deep.equal([1, 2, 3]) - }) - it('reorder before', () => { - const state = {currentIndex: 3} - store.mutations.reorder(state, {oldIndex: 2, newIndex: 1}) - expect(state.currentIndex).to.equal(3) - }) - it('reorder from after to before', () => { - const state = {currentIndex: 3} - store.mutations.reorder(state, {oldIndex: 4, newIndex: 1}) - expect(state.currentIndex).to.equal(4) - }) - it('reorder after', () => { - const state = {currentIndex: 3} - store.mutations.reorder(state, {oldIndex: 4, newIndex: 5}) - expect(state.currentIndex).to.equal(3) - }) - it('reorder before to after', () => { - const state = {currentIndex: 3} - store.mutations.reorder(state, {oldIndex: 1, newIndex: 5}) - expect(state.currentIndex).to.equal(2) - }) - it('reorder current', () => { - const state = {currentIndex: 3} - store.mutations.reorder(state, {oldIndex: 3, newIndex: 1}) - expect(state.currentIndex).to.equal(1) - }) - }) - describe('getters', () => { - it('currentTrack', () => { - const state = { tracks: [1, 2, 3], currentIndex: 2 } - expect(store.getters['currentTrack'](state)).to.equal(3) - }) - it('hasNext true', () => { - const state = { tracks: [1, 2, 3], currentIndex: 1 } - expect(store.getters['hasNext'](state)).to.equal(true) - }) - it('hasNext false', () => { - const state = { tracks: [1, 2, 3], currentIndex: 2 } - expect(store.getters['hasNext'](state)).to.equal(false) - }) - }) - describe('actions', () => { - it('append at end', () => { - testAction({ - action: store.actions.append, - payload: {track: 4}, - params: {state: {tracks: [1, 2, 3]}}, - expectedMutations: [ - { type: 'insert', payload: {track: 4, index: 3} } - ] - }) - }) - it('append at index', () => { - testAction({ - action: store.actions.append, - payload: {track: 2, index: 1}, - params: {state: {tracks: [1, 3]}}, - expectedMutations: [ - { type: 'insert', payload: {track: 2, index: 1} } - ] - }) - }) - it('appendMany', () => { - const tracks = [{title: 1}, {title: 2}] - testAction({ - action: store.actions.appendMany, - payload: {tracks: tracks}, - params: {state: {tracks: []}}, - expectedActions: [ - { type: 'append', payload: {track: tracks[0], index: 0} }, - { type: 'append', payload: {track: tracks[1], index: 1} }, - ] - }) - }) - it('appendMany at index', () => { - const tracks = [{title: 1}, {title: 2}] - testAction({ - action: store.actions.appendMany, - payload: {tracks: tracks, index: 1}, - params: {state: {tracks: [1, 2]}}, - expectedActions: [ - { type: 'append', payload: {track: tracks[0], index: 1} }, - { type: 'append', payload: {track: tracks[1], index: 2} }, - ] - }) - }) - it('cleanTrack after current', () => { - testAction({ - action: store.actions.cleanTrack, - payload: 3, - params: {state: {currentIndex: 2, tracks: [1, 2, 3, 4, 5]}}, - expectedMutations: [ - { type: 'splice', payload: {start: 3, size: 1} } - ] - }) - }) - it('cleanTrack before current', () => { - testAction({ - action: store.actions.cleanTrack, - payload: 1, - params: {state: {currentIndex: 2, tracks: []}}, - expectedMutations: [ - { type: 'splice', payload: {start: 1, size: 1} }, - { type: 'currentIndex', payload: 1 } - ] - }) - }) - it('cleanTrack current', () => { - testAction({ - action: store.actions.cleanTrack, - payload: 2, - params: {state: {currentIndex: 2, tracks: []}}, - expectedMutations: [ - { type: 'splice', payload: {start: 2, size: 1} }, - { type: 'currentIndex', payload: 2 } - ], - expectedActions: [ - { type: 'player/stop', payload: null, options: {root: true} } - ] - }) - }) - it('cleanTrack current is last', () => { - testAction({ - action: store.actions.cleanTrack, - payload: 5, - params: { state: { currentIndex: 5, tracks: [1, 2, 3, 4, 5] } }, - expectedMutations: [ - { type: 'splice', payload: { start: 5, size: 1 } }, - { type: 'currentIndex', payload: 4 } - ], - expectedActions: [ - { type: 'player/stop', payload: null, options: { root: true } } - ] - }) - }) - it('previous when at beginning', () => { - testAction({ - action: store.actions.previous, - params: {state: {currentIndex: 0}}, - expectedActions: [ - { type: 'currentIndex', payload: 0 } - ] - }) - }) - it('previous after less than 3 seconds of playback', () => { - testAction({ - action: store.actions.previous, - params: {state: {currentIndex: 1}, rootState: {player: {currentTime: 1}}}, - expectedActions: [ - { type: 'currentIndex', payload: 0 } - ] - }) - }) - it('previous after more than 3 seconds of playback', () => { - testAction({ - action: store.actions.previous, - params: {state: {currentIndex: 1}, rootState: {player: {currentTime: 3}}}, - expectedActions: [ - { type: 'currentIndex', payload: 1 } - ] - }) - }) - it('next on last track when looping on queue', () => { - testAction({ - action: store.actions.next, - params: {state: {tracks: [1, 2], currentIndex: 1}, rootState: {player: {looping: 2}}}, - expectedActions: [ - { type: 'currentIndex', payload: 0 } - ] - }) - }) - it('next track when last track', () => { - testAction({ - action: store.actions.next, - params: {state: {tracks: [1, 2], currentIndex: 1}, rootState: {player: {looping: 0}}}, - expectedMutations: [ - { type: 'ended', payload: true } - ] - }) - }) - it('next track when not last track', () => { - testAction({ - action: store.actions.next, - params: {state: {tracks: [1, 2], currentIndex: 0}, rootState: {player: {looping: 0}}}, - expectedActions: [ - { type: 'currentIndex', payload: 1 } - ] - }) - }) - it('currentIndex', () => { - testAction({ - action: store.actions.currentIndex, - payload: 1, - params: {state: {tracks: [1, 2], currentIndex: 0}, rootState: {radios: {running: false}}}, - expectedMutations: [ - { type: 'ended', payload: false }, - { type: 'player/currentTime', payload: 0, options: {root: true} }, - { type: 'currentIndex', payload: 1 } - ] - }) - }) - it('currentIndex with radio and many tracks remaining', () => { - testAction({ - action: store.actions.currentIndex, - payload: 1, - params: {state: {tracks: [1, 2, 3, 4], currentIndex: 0}, rootState: {radios: {running: true}}}, - expectedMutations: [ - { type: 'ended', payload: false }, - { type: 'player/currentTime', payload: 0, options: {root: true} }, - { type: 'currentIndex', payload: 1 } - ] - }) - }) - it('currentIndex with radio and less than two tracks remaining', () => { - testAction({ - action: store.actions.currentIndex, - payload: 1, - params: {state: {tracks: [1, 2, 3], currentIndex: 0}, rootState: {radios: {running: true}}}, - expectedMutations: [ - { type: 'ended', payload: false }, - { type: 'player/currentTime', payload: 0, options: {root: true} }, - { type: 'currentIndex', payload: 1 } - ], - expectedActions: [ - { type: 'radios/populateQueue', payload: null, options: {root: true} } - ] - }) - }) - it('clean', () => { - testAction({ - action: store.actions.clean, - expectedMutations: [ - { type: 'tracks', payload: [] }, - { type: 'ended', payload: true } - ], - expectedActions: [ - { type: 'radios/stop', payload: null, options: {root: true} }, - { type: 'player/stop', payload: null, options: {root: true} }, - { type: 'currentIndex', payload: -1 } - ] - }) - }) - it('shuffle', () => { - let _shuffle = sandbox.stub(_, 'shuffle') - let tracks = ['a', 'b', 'c', 'd', 'e'] - let shuffledTracks = ['a', 'b', 'e', 'd', 'c'] - _shuffle.returns(shuffledTracks) - testAction({ - action: store.actions.shuffle, - params: {state: {currentIndex: 1, tracks: tracks}}, - expectedMutations: [ - { type: 'tracks', payload: [] } - ], - expectedActions: [ - { type: 'appendMany', payload: {tracks: shuffledTracks} }, - { type: 'currentIndex', payload: {tracks: shuffledTracks} } - ] - }) - }) - }) -}) diff --git a/front/tests/unit/specs/store/radios.spec.js b/front/tests/unit/specs/store/radios.spec.js deleted file mode 100644 index a4d348d0f..000000000 --- a/front/tests/unit/specs/store/radios.spec.js +++ /dev/null @@ -1,104 +0,0 @@ -var sinon = require('sinon') -import {expect} from 'chai' - -import moxios from 'moxios' -import store from '@/store/radios' -import { testAction } from '../../utils' - -describe('store/radios', () => { - var sandbox - - beforeEach(function () { - sandbox = sinon.createSandbox() - moxios.install() - }) - afterEach(function () { - sandbox.restore() - moxios.uninstall() - }) - - describe('mutations', () => { - it('current', () => { - const state = {} - store.mutations.current(state, 1) - expect(state.current).to.equal(1) - }) - it('running', () => { - const state = {} - store.mutations.running(state, false) - expect(state.running).to.equal(false) - }) - }) - describe('actions', () => { - it('start', () => { - moxios.stubRequest('radios/sessions/', { - status: 200, - response: {id: 2} - }) - testAction({ - action: store.actions.start, - payload: {type: 'favorites', objectId: 0, customRadioId: null}, - expectedMutations: [ - { - type: 'current', - payload: { - type: 'favorites', - objectId: 0, - customRadioId: null, - session: 2 - } - }, - { type: 'running', payload: true } - ], - expectedActions: [ - { type: 'populateQueue', payload: true } - ] - }) - }) - it('stop', () => { - return testAction({ - action: store.actions.stop, - params: {state: {}}, - expectedMutations: [ - { type: 'current', payload: null }, - { type: 'running', payload: false } - ] - }) - }) - it('populateQueue', () => { - moxios.stubRequest('radios/tracks/', { - status: 201, - response: {track: {id: 1}} - }) - return testAction({ - action: store.actions.populateQueue, - params: { - state: {running: true, current: {session: 1}}, - rootState: {player: {errorCount: 0, maxConsecutiveErrors: 5}} - - }, - expectedActions: [ - { type: 'queue/append', payload: {track: {id: 1}}, options: {root: true} } - ] - }) - }) - it('populateQueue does nothing when not running', () => { - testAction({ - action: store.actions.populateQueue, - params: {state: {running: false}}, - expectedActions: [] - }) - }) - it('populateQueue does nothing when too much errors', () => { - return testAction({ - action: store.actions.populateQueue, - payload: {test: 'track'}, - params: { - rootState: {player: {errorCount: 5, maxConsecutiveErrors: 5}}, - state: {running: true} - }, - expectedActions: [] - }) - }) - }) -}) diff --git a/front/tests/unit/specs/utils.spec.js b/front/tests/unit/specs/utils.spec.js deleted file mode 100644 index 9fc9c36b7..000000000 --- a/front/tests/unit/specs/utils.spec.js +++ /dev/null @@ -1,32 +0,0 @@ -import {expect} from 'chai' - -import {parseAPIErrors} from '@/utils' - -describe('utils', () => { - describe('parseAPIErrors', () => { - it('handles flat structure', () => { - const input = {"old_password": ["Invalid password"]} - let expected = ["Invalid password"] - let output = parseAPIErrors(input) - expect(output).to.deep.equal(expected) - }) - it('handles flat structure with multiple errors per field', () => { - const input = {"old_password": ["Invalid password", "Too short"]} - let expected = ["Invalid password", "Too short"] - let output = parseAPIErrors(input) - expect(output).to.deep.equal(expected) - }) - it('translate field name', () => { - const input = {"old_password": ["This field is required"]} - let expected = ["Old Password: This field is required"] - let output = parseAPIErrors(input) - expect(output).to.deep.equal(expected) - }) - it('handle nested fields', () => { - const input = {"summary": {"text": ["Ensure this field has no more than 5000 characters."]}} - let expected = ["Summary - Text: Ensure this field has no more than 5000 characters."] - let output = parseAPIErrors(input) - expect(output).to.deep.equal(expected) - }) - }) -}) diff --git a/front/tests/unit/specs/views/admin/library.spec.js b/front/tests/unit/specs/views/admin/library.spec.js deleted file mode 100644 index 7b6e033c9..000000000 --- a/front/tests/unit/specs/views/admin/library.spec.js +++ /dev/null @@ -1,55 +0,0 @@ -const sinon = require('sinon') -import { expect } from 'chai' -import { shallowMount, createLocalVue } from '@vue/test-utils' -import AlbumDetail from '@/views/admin/library/AlbumDetail.vue' -import GetTextPlugin from 'vue-gettext' - -import HumanDate from '@/components/common/HumanDate.vue' -import DangerousButton from '@/components/common/DangerousButton.vue' - -describe('views/admin/library', () => { - - let wrapper - let sandbox - beforeEach(() => { - sandbox = sinon.createSandbox() - }) - afterEach(() => { - sandbox.restore() - }) - describe('Album details', () => { - - it('displays default cover', async () => { - const album = { cover: null, artist: { id: null }, title: "dummy" } - const localVue = createLocalVue() - localVue.directive('title', (() => null)) - localVue.directive('dropdown', (() => null)) - localVue.use(GetTextPlugin, { translations: {} }) - // overrides axios calls - sandbox.stub(AlbumDetail.methods, "fetchData").callsFake(() => null) - sandbox.stub(AlbumDetail.methods, "fetchStats").callsFake(() => null) - wrapper = shallowMount(AlbumDetail, { - localVue, - data() { - return { - isLoading: false, - isLoadingStats: false, - object: album, - stats: [], - } - }, - mocks: { - $store: { - state: { auth: { profile: null }, ui: { lastDate: null } } - } - }, - stubs: { - 'human-date': HumanDate, - 'dangerous-button': DangerousButton - }, - computed: { labels: () => { return { statsWarning: null } } } - }) - expect(wrapper.find('img').attributes('src')).to.include("default-cover") - }) - }) -}) \ No newline at end of file diff --git a/front/tests/unit/utils.js b/front/tests/unit/utils.js deleted file mode 100644 index 642b3b509..000000000 --- a/front/tests/unit/utils.js +++ /dev/null @@ -1,77 +0,0 @@ -// helper for testing action with expected mutations -import Vue from 'vue' -import {expect} from 'chai' - - -export const render = (Component, propsData) => { - const Constructor = Vue.extend(Component) - return new Constructor({ propsData: propsData }).$mount() -} - -export const testAction = ({action, payload, params, expectedMutations, expectedActions}, done) => { - let mutationsCount = 0 - let actionsCount = 0 - - if (!expectedMutations) { - expectedMutations = [] - } - if (!expectedActions) { - expectedActions = [] - } - const isOver = () => { - return mutationsCount >= expectedMutations.length && actionsCount >= expectedActions.length - } - // mock commit - const commit = (type, payload) => { - const mutation = expectedMutations[mutationsCount] - - expect(mutation.type).to.equal(type) - if (payload) { - expect(mutation.payload).to.deep.equal(payload) - } - - mutationsCount++ - if (isOver()) { - return - } - } - // mock dispatch - const dispatch = (type, payload, options) => { - const a = expectedActions[actionsCount] - if (!a) { - throw Error(`Unexecpted action ${type}`) - } - expect(a.type).to.equal(type) - if (payload) { - expect(a.payload).to.deep.equal(payload) - } - if (a.options) { - expect(options).to.deep.equal(a.options) - } - actionsCount++ - if (isOver()) { - return - } - } - - let end = function () { - // check if no mutations should have been dispatched - if (expectedMutations.length === 0) { - expect(mutationsCount).to.equal(0) - } - if (expectedActions.length === 0) { - expect(actionsCount).to.equal(0) - } - if (isOver()) { - return - } - } - // call the action with mocked store and arguments - let promise = action({ commit, dispatch, ...params }, payload) - if (promise) { - promise.then(end) - return promise - } else { - return end() - } -} diff --git a/front/yarn.lock b/front/yarn.lock index ed5756ceb..8f8dea3dd 100644 --- a/front/yarn.lock +++ b/front/yarn.lock @@ -421,49 +421,11 @@ estree-walker "^2.0.1" picomatch "^2.2.2" -"@sinonjs/commons@^1.6.0", "@sinonjs/commons@^1.7.0", "@sinonjs/commons@^1.8.3": - version "1.8.3" - resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.3.tgz#3802ddd21a50a949b6721ddd72da36e67e7f1b2d" - integrity sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ== - dependencies: - type-detect "4.0.8" - -"@sinonjs/fake-timers@>=5", "@sinonjs/fake-timers@^9.0.0": - version "9.1.0" - resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-9.1.0.tgz#8c92c56f195e0bed4c893ba59c8e3d55831ca0df" - integrity sha512-M8vapsv9qQupMdzrVzkn5rb9jG7aUTEPAZdMtME2PuBaefksFZVE2C1g4LBRTkF/k3nRDNbDc5tp5NFC1PEYxA== - dependencies: - "@sinonjs/commons" "^1.7.0" - -"@sinonjs/samsam@^6.1.1": - version "6.1.1" - resolved "https://registry.yarnpkg.com/@sinonjs/samsam/-/samsam-6.1.1.tgz#627f7f4cbdb56e6419fa2c1a3e4751ce4f6a00b1" - integrity sha512-cZ7rKJTLiE7u7Wi/v9Hc2fs3Ucc3jrWeMgPHbbTCeVAB2S0wOBbYlkJVeNSL04i7fdhT8wIbDq1zhC/PXTD2SA== - dependencies: - "@sinonjs/commons" "^1.6.0" - lodash.get "^4.4.2" - type-detect "^4.0.8" - -"@sinonjs/text-encoding@^0.7.1": - version "0.7.1" - resolved "https://registry.yarnpkg.com/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz#8da5c6530915653f3a1f38fd5f101d8c3f8079c5" - integrity sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ== - "@types/json5@^0.0.29": version "0.0.29" resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= -"@ungap/promise-all-settled@1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44" - integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q== - -"@vitejs/plugin-vue@^2.2.2": - version "2.2.2" - resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue/-/plugin-vue-2.2.2.tgz#df5d4464ad8cb97c9fb7407a1e5a3a34f716febb" - integrity sha512-3C0s45VOwIFEDU+2ownJOpb0zD5fnjXWaHVOLID2R1mYOlAx3doNBFnNbVjaZvpke/L7IdPJXjpyYpXZToDKig== - "@vue/babel-helper-vue-jsx-merge-props@^1.2.1": version "1.2.1" resolved "https://registry.yarnpkg.com/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.2.1.tgz#31624a7a505fb14da1d58023725a4c5f270e6a81" @@ -618,20 +580,6 @@ resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.2.29.tgz#07dac7051117236431d2f737d16932aa38bbb925" integrity sha512-BjNpU8OK6Z0LVzGUppEk0CMYm/hKDnZfYdjSmPOs0N+TR1cLKJAkDwW8ASZUvaaSLEi6d3hVM7jnWnX+6yWnHw== -"@vue/test-utils@1.3.0": - version "1.3.0" - resolved "https://registry.yarnpkg.com/@vue/test-utils/-/test-utils-1.3.0.tgz#d563decdcd9c68a7bca151d4179a2bfd6d5c3e15" - integrity sha512-Xk2Xiyj2k5dFb8eYUKkcN9PzqZSppTlx7LaQWBbdA8tqh3jHr/KHX2/YLhNFc/xwDrgeLybqd+4ZCPJSGPIqeA== - dependencies: - dom-event-types "^1.0.0" - lodash "^4.17.15" - pretty "^2.0.0" - -abbrev@1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" - integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== - acorn-class-fields@^0.3.7: version "0.3.7" resolved "https://registry.yarnpkg.com/acorn-class-fields/-/acorn-class-fields-0.3.7.tgz#a35122f3cc6ad2bb33b1857e79215677fcfdd720" @@ -697,11 +645,6 @@ ajv@^6.10.0, ajv@^6.12.4: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ansi-colors@4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" - integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== - ansi-regex@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" @@ -764,11 +707,6 @@ assert-never@^1.2.1: resolved "https://registry.yarnpkg.com/assert-never/-/assert-never-1.2.1.tgz#11f0e363bf146205fb08193b5c7b90f4d1cf44fe" integrity sha512-TaTivMB6pYI1kXwrFlEhLeGfOqoDNdTxjCdwRfFFkEA30Eu+k48W34nlok2EYWJfFFzqaEmichdNM7th6M5HNw== -assertion-error@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" - integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== - at-least-node@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" @@ -840,11 +778,6 @@ braces@~3.0.2: dependencies: fill-range "^7.0.1" -browser-stdout@1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" - integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== - browserslist@^4.17.5: version "4.19.1" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.19.1.tgz#4ac0435b35ab655896c31d53018b6dd5e9e4c9a3" @@ -890,11 +823,6 @@ camelcase@^5.0.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -camelcase@^6.0.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" - integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== - caniuse-lite@^1.0.30001286: version "1.0.30001303" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001303.tgz#9b168e4f43ccfc372b86f4bc5a551d9b909c95c9" @@ -905,19 +833,6 @@ caniuse-lite@^1.0.30001297, caniuse-lite@^1.0.30001312: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001312.tgz#e11eba4b87e24d22697dae05455d5aea28550d5f" integrity sha512-Wiz1Psk2MEK0pX3rUzWaunLTZzqS2JYZFzNKqAiJGiuxIjRPLgV6+VDPOg6lQOUxmDwhTlh198JsTTi8Hzw6aQ== -chai@4.3.6: - version "4.3.6" - resolved "https://registry.yarnpkg.com/chai/-/chai-4.3.6.tgz#ffe4ba2d9fa9d6680cc0b370adae709ec9011e9c" - integrity sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q== - dependencies: - assertion-error "^1.1.0" - check-error "^1.0.2" - deep-eql "^3.0.1" - get-func-name "^2.0.0" - loupe "^2.3.1" - pathval "^1.1.1" - type-detect "^4.0.5" - chalk@^2.0.0: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" @@ -927,7 +842,7 @@ chalk@^2.0.0: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^4.0.0, chalk@^4.1.0: +chalk@^4.0.0: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -947,16 +862,6 @@ charcodes@^0.2.0: resolved "https://registry.yarnpkg.com/charcodes/-/charcodes-0.2.0.tgz#5208d327e6cc05f99eb80ffc814707572d1f14e4" integrity sha512-Y4kiDb+AM4Ecy58YkuZrrSRJBDQdQ2L+NyS1vHHFtNtUjgutcZfx3yp1dAONI/oPaPmyGfCLx5CxL+zauIMyKQ== -charenc@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667" - integrity sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc= - -check-error@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" - integrity sha1-V00xLt2Iu13YkS6Sht1sCu1KrII= - cheerio-select@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/cheerio-select/-/cheerio-select-1.5.0.tgz#faf3daeb31b17c5e1a9dabcee288aaf8aafa5823" @@ -981,7 +886,7 @@ cheerio@^1.0.0-rc.3: parse5-htmlparser2-tree-adapter "^6.0.1" tslib "^2.2.0" -chokidar@3.5.3, "chokidar@>=3.0.0 <4.0.0": +"chokidar@>=3.0.0 <4.0.0": version "3.5.3" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== @@ -1038,33 +943,11 @@ color-name@~1.1.4: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -commander@^2.19.0: - version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -condense-newlines@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/condense-newlines/-/condense-newlines-0.2.1.tgz#3de985553139475d32502c83b02f60684d24c55f" - integrity sha1-PemFVTE5R10yUCyDsC9gaE0kxV8= - dependencies: - extend-shallow "^2.0.1" - is-whitespace "^0.3.0" - kind-of "^3.0.2" - -config-chain@^1.1.12: - version "1.1.13" - resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.13.tgz#fad0795aa6a6cdaff9ed1b68e9dff94372c232f4" - integrity sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ== - dependencies: - ini "^1.3.4" - proto-list "~1.2.1" - consolidate@^0.15.1: version "0.15.1" resolved "https://registry.yarnpkg.com/consolidate/-/consolidate-0.15.1.tgz#21ab043235c71a07d45d9aad98593b0dba56bab7" @@ -1108,11 +991,6 @@ cross-spawn@^7.0.2: shebang-command "^2.0.0" which "^2.0.1" -crypt@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b" - integrity sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs= - css-select@^4.1.3: version "4.2.1" resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.2.1.tgz#9e665d6ae4c7f9d65dbe69d0316e3221fb274cdd" @@ -1144,14 +1022,7 @@ de-indent@^1.0.2: resolved "https://registry.yarnpkg.com/de-indent/-/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d" integrity sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0= -debug@4.3.3, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2: - version "4.3.3" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" - integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== - dependencies: - ms "2.1.2" - -debug@^2.2.0, debug@^2.6.9: +debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== @@ -1165,23 +1036,18 @@ debug@^3.2.7: dependencies: ms "^2.1.1" +debug@^4.1.0, debug@^4.1.1, debug@^4.3.2: + version "4.3.3" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" + integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== + dependencies: + ms "2.1.2" + decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= -decamelize@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" - integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== - -deep-eql@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df" - integrity sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw== - dependencies: - type-detect "^4.0.0" - deep-is@^0.1.3: version "0.1.4" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" @@ -1199,7 +1065,7 @@ define-properties@^1.1.3: dependencies: object-keys "^1.0.12" -diff@5.0.0, diff@^5.0.0: +diff@5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== @@ -1232,11 +1098,6 @@ doctypes@^1.1.0: resolved "https://registry.yarnpkg.com/doctypes/-/doctypes-1.1.0.tgz#ea80b106a87538774e8a3a4a5afe293de489e0a9" integrity sha1-6oCxBqh1OHdOijpKWv4pPeSJ4Kk= -dom-event-types@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/dom-event-types/-/dom-event-types-1.0.0.tgz#5830a0a29e1bf837fe50a70cd80a597232813cae" - integrity sha512-2G2Vwi2zXTHBGqXHsJ4+ak/iP0N8Ar+G8a7LiD2oup5o4sQWytwqqrZu/O6hIMV0KMID2PL69OhpshLO0n7UJQ== - dom-serializer@^1.0.1, dom-serializer@^1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.3.2.tgz#6206437d32ceefaec7161803230c7a20bc1b4d91" @@ -1286,16 +1147,6 @@ easygettext@2.17.0: "@vue/compiler-sfc" "^3.0.0" pug "^3.0.2" -editorconfig@^0.15.3: - version "0.15.3" - resolved "https://registry.yarnpkg.com/editorconfig/-/editorconfig-0.15.3.tgz#bef84c4e75fb8dcb0ce5cee8efd51c15999befc5" - integrity sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g== - dependencies: - commander "^2.19.0" - lru-cache "^4.1.5" - semver "^5.6.0" - sigmund "^1.0.1" - electron-to-chromium@^1.4.17: version "1.4.56" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.56.tgz#f660fd2c6739b341d8922fe3a441a5a2804911a1" @@ -1481,16 +1332,16 @@ escalade@^3.1.1: resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== -escape-string-regexp@4.0.0, escape-string-regexp@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + eslint-config-standard@16.0.3: version "16.0.3" resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-16.0.3.tgz#6c8761e544e96c531ff92642eeb87842b8488516" @@ -1716,13 +1567,6 @@ event-target-shim@^5.0.1: resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== -extend-shallow@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" - integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= - dependencies: - is-extendable "^0.1.0" - fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" @@ -1752,14 +1596,6 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" -find-up@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" - integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== - dependencies: - locate-path "^6.0.0" - path-exists "^4.0.0" - find-up@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" @@ -1783,11 +1619,6 @@ flat-cache@^3.0.4: flatted "^3.1.0" rimraf "^3.0.2" -flat@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" - integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== - flatted@^3.1.0: version "3.2.5" resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.5.tgz#76c8584f4fc843db64702a6bd04ab7a8bd666da3" @@ -1871,11 +1702,6 @@ get-caller-file@^2.0.1, get-caller-file@^2.0.5: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -get-func-name@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" - integrity sha1-6td0q+5y4gQJQzoGY2YCPdaIekE= - get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" @@ -1915,7 +1741,7 @@ glob-parent@~5.1.2: dependencies: is-glob "^4.0.1" -glob@7.2.0, glob@^7.1.2, glob@^7.1.3: +glob@^7.1.2, glob@^7.1.3: version "7.2.0" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== @@ -1944,11 +1770,6 @@ graceful-fs@^4.1.6, graceful-fs@^4.2.0: resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96" integrity sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ== -growl@1.10.5: - version "1.10.5" - resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" - integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== - has-bigints@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" @@ -1993,7 +1814,7 @@ hash-sum@^2.0.0: resolved "https://registry.yarnpkg.com/hash-sum/-/hash-sum-2.0.0.tgz#81d01bb5de8ea4a214ad5d6ead1b523460b0b45a" integrity sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg== -he@1.2.0, he@^1.1.0: +he@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== @@ -2069,11 +1890,6 @@ inherits@2: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -ini@^1.3.4: - version "1.3.8" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" - integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== - internal-slot@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" @@ -2105,11 +1921,6 @@ is-boolean-object@^1.1.0: call-bind "^1.0.2" has-tostringtag "^1.0.0" -is-buffer@^1.1.5, is-buffer@~1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" - integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== - is-callable@^1.1.4, is-callable@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" @@ -2137,11 +1948,6 @@ is-expression@^4.0.0: acorn "^7.1.1" object-assign "^4.1.1" -is-extendable@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= - is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" @@ -2176,11 +1982,6 @@ is-number@^7.0.0: resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== -is-plain-obj@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" - integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== - is-plain-object@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" @@ -2218,11 +2019,6 @@ is-symbol@^1.0.2, is-symbol@^1.0.3: dependencies: has-symbols "^1.0.2" -is-unicode-supported@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" - integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== - is-weakref@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" @@ -2230,16 +2026,6 @@ is-weakref@^1.0.1: dependencies: call-bind "^1.0.2" -is-whitespace@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/is-whitespace/-/is-whitespace-0.3.0.tgz#1639ecb1be036aec69a54cbb401cfbed7114ab7f" - integrity sha1-Fjnssb4DauxppUy7QBz77XEUq38= - -isarray@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" - integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= - isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" @@ -2250,16 +2036,6 @@ jquery@^3.4.0: resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.6.0.tgz#c72a09f15c1bdce142f49dbf1170bdf8adac2470" integrity sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw== -js-beautify@^1.6.12: - version "1.14.0" - resolved "https://registry.yarnpkg.com/js-beautify/-/js-beautify-1.14.0.tgz#2ce790c555d53ce1e3d7363227acf5dc69024c2d" - integrity sha512-yuck9KirNSCAwyNJbqW+BxJqJ0NLJ4PwBUzQQACl5O3qHMBXVkXb/rD0ilh/Lat/tn88zSZ+CAHOlk0DsY7GuQ== - dependencies: - config-chain "^1.1.12" - editorconfig "^0.15.3" - glob "^7.1.3" - nopt "^5.0.0" - js-logger@1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/js-logger/-/js-logger-1.6.1.tgz#8f09671b515e4a6f31dced8fdb8923432e2c60af" @@ -2275,7 +2051,7 @@ js-tokens@^4.0.0: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-yaml@4.1.0, js-yaml@^4.1.0: +js-yaml@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== @@ -2328,18 +2104,6 @@ jstransformer@1.0.0: is-promise "^2.0.0" promise "^7.0.1" -just-extend@^4.0.2: - version "4.2.1" - resolved "https://registry.yarnpkg.com/just-extend/-/just-extend-4.2.1.tgz#ef5e589afb61e5d66b24eca749409a8939a8c744" - integrity sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg== - -kind-of@^3.0.2: - version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= - dependencies: - is-buffer "^1.1.5" - levn@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" @@ -2368,18 +2132,6 @@ locate-path@^5.0.0: dependencies: p-locate "^4.1.0" -locate-path@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" - integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== - dependencies: - p-locate "^5.0.0" - -lodash.get@^4.4.2: - version "4.4.2" - resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" - integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk= - lodash.kebabcase@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz#8489b1cb0d29ff88195cceca448ff6d6cc295c36" @@ -2390,27 +2142,12 @@ lodash.merge@^4.6.2: resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== -lodash@4.17.21, lodash@^4.17.15, lodash@^4.17.21: +lodash@4.17.21, lodash@^4.17.21: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== -log-symbols@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" - integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== - dependencies: - chalk "^4.1.0" - is-unicode-supported "^0.1.0" - -loupe@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.1.tgz#a2e1192c9f452e4e85089766da10ac8288383947" - integrity sha512-EN1D3jyVmaX4tnajVlfbREU4axL647hLec1h/PXAb8CPDMJiYitcWF2UeLVNttRqaIqQs4x+mRvXf+d+TlDrCA== - dependencies: - get-func-name "^2.0.0" - -lru-cache@^4.1.2, lru-cache@^4.1.5: +lru-cache@^4.1.2: version "4.1.5" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== @@ -2425,15 +2162,6 @@ magic-string@^0.25.7: dependencies: sourcemap-codec "^1.4.4" -md5@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/md5/-/md5-2.3.0.tgz#c3da9a6aae3a30b46b7b0c349b87b110dc3bda4f" - integrity sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g== - dependencies: - charenc "0.0.2" - crypt "0.0.2" - is-buffer "~1.1.6" - merge-source-map@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/merge-source-map/-/merge-source-map-1.1.0.tgz#2fdde7e6020939f70906a68f2d7ae685e4c8c646" @@ -2441,7 +2169,7 @@ merge-source-map@^1.1.0: dependencies: source-map "^0.6.1" -minimatch@3.0.4, minimatch@^3.0.4: +minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== @@ -2453,64 +2181,11 @@ minimist@^1.2.0, minimist@^1.2.5: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== -mkdirp@~0.5.1: - version "0.5.5" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" - integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== - dependencies: - minimist "^1.2.5" - -mocha-junit-reporter@2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/mocha-junit-reporter/-/mocha-junit-reporter-2.0.2.tgz#d521689b651dc52f52044739f8ffb368be415731" - integrity sha512-vYwWq5hh3v1lG0gdQCBxwNipBfvDiAM1PHroQRNp96+2l72e9wEUTw+mzoK+O0SudgfQ7WvTQZ9Nh3qkAYAjfg== - dependencies: - debug "^2.2.0" - md5 "^2.1.0" - mkdirp "~0.5.1" - strip-ansi "^6.0.1" - xml "^1.0.0" - -mocha@9.2.1: - version "9.2.1" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-9.2.1.tgz#a1abb675aa9a8490798503af57e8782a78f1338e" - integrity sha512-T7uscqjJVS46Pq1XDXyo9Uvey9gd3huT/DD9cYBb4K2Xc/vbKRPUWK067bxDQRK0yIz6Jxk73IrnimvASzBNAQ== - dependencies: - "@ungap/promise-all-settled" "1.1.2" - ansi-colors "4.1.1" - browser-stdout "1.3.1" - chokidar "3.5.3" - debug "4.3.3" - diff "5.0.0" - escape-string-regexp "4.0.0" - find-up "5.0.0" - glob "7.2.0" - growl "1.10.5" - he "1.2.0" - js-yaml "4.1.0" - log-symbols "4.1.0" - minimatch "3.0.4" - ms "2.1.3" - nanoid "3.2.0" - serialize-javascript "6.0.0" - strip-json-comments "3.1.1" - supports-color "8.1.1" - which "2.0.2" - workerpool "6.2.0" - yargs "16.2.0" - yargs-parser "20.2.4" - yargs-unparser "2.0.0" - moment@2.29.1: version "2.29.1" resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3" integrity sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ== -moxios@0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/moxios/-/moxios-0.4.0.tgz#fc0da2c65477d725ca6b9679d58370ed0c52f53b" - integrity sha1-/A2ixlR31yXKa5Z51YNw7QxS9Ts= - ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" @@ -2521,12 +2196,12 @@ ms@2.1.2: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -ms@2.1.3, ms@^2.1.1: +ms@^2.1.1: version "2.1.3" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== -nanoid@3.2.0, nanoid@^3.1.30, nanoid@^3.2.0: +nanoid@^3.1.30, nanoid@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.2.0.tgz#62667522da6673971cca916a6d3eff3f415ff80c" integrity sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA== @@ -2536,17 +2211,6 @@ natural-compare@^1.4.0: resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= -nise@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/nise/-/nise-5.1.1.tgz#ac4237e0d785ecfcb83e20f389185975da5c31f3" - integrity sha512-yr5kW2THW1AkxVmCnKEh4nbYkJdB3I7LUkiUgOvEkOp414mc2UMaHMA7pjq1nYowhdoJZGwEKGaQVbxfpWj10A== - dependencies: - "@sinonjs/commons" "^1.8.3" - "@sinonjs/fake-timers" ">=5" - "@sinonjs/text-encoding" "^0.7.1" - just-extend "^4.0.2" - path-to-regexp "^1.7.0" - node-modules-regexp@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" @@ -2562,13 +2226,6 @@ node-releases@^2.0.2: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.2.tgz#7139fe71e2f4f11b47d4d2986aaf8c48699e0c01" integrity sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg== -nopt@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88" - integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ== - dependencies: - abbrev "1" - normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" @@ -2653,13 +2310,6 @@ p-limit@^2.2.0: dependencies: p-try "^2.0.0" -p-limit@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" - integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== - dependencies: - yocto-queue "^0.1.0" - p-locate@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" @@ -2674,13 +2324,6 @@ p-locate@^4.1.0: dependencies: p-limit "^2.2.0" -p-locate@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" - integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== - dependencies: - p-limit "^3.0.2" - p-try@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" @@ -2740,18 +2383,6 @@ path-parse@^1.0.7: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== -path-to-regexp@^1.7.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.8.0.tgz#887b3ba9d84393e87a0a0b9f4cb756198b53548a" - integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA== - dependencies: - isarray "0.0.1" - -pathval@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d" - integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== - picocolors@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-0.2.1.tgz#570670f793646851d1ba135996962abad587859f" @@ -2838,15 +2469,6 @@ prelude-ls@^1.2.1: resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.5.1.tgz#fff75fa9d519c54cf0fce328c1017d94546bc56a" integrity sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg== -pretty@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pretty/-/pretty-2.0.0.tgz#adbc7960b7bbfe289a557dc5f737619a220d06a5" - integrity sha1-rbx5YLe7/iiaVX3F9zdhmiINBqU= - dependencies: - condense-newlines "^0.2.1" - extend-shallow "^2.0.1" - js-beautify "^1.6.12" - promise@^7.0.1: version "7.3.1" resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" @@ -2854,11 +2476,6 @@ promise@^7.0.1: dependencies: asap "~2.0.3" -proto-list@~1.2.1: - version "1.2.4" - resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" - integrity sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk= - pseudomap@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" @@ -2984,13 +2601,6 @@ querystring@^0.2.1: resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.1.tgz#40d77615bb09d16902a85c3e38aa8b5ed761c2dd" integrity sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg== -randombytes@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - dependencies: - safe-buffer "^5.1.0" - rangetouch@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/rangetouch/-/rangetouch-2.0.1.tgz#c01105110fd3afca2adcb1a580692837d883cb70" @@ -3061,11 +2671,6 @@ rollup@^2.58.0, rollup@^2.59.0: optionalDependencies: fsevents "~2.3.2" -safe-buffer@^5.1.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" @@ -3092,23 +2697,11 @@ sass@1.49.8: immutable "^4.0.0" source-map-js ">=0.6.2 <2.0.0" -semver@^5.6.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - semver@^6.1.0, semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -serialize-javascript@6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" - integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== - dependencies: - randombytes "^2.1.0" - set-blocking@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" @@ -3147,23 +2740,6 @@ side-channel@^1.0.4: get-intrinsic "^1.0.2" object-inspect "^1.9.0" -sigmund@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590" - integrity sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA= - -sinon@13.0.1: - version "13.0.1" - resolved "https://registry.yarnpkg.com/sinon/-/sinon-13.0.1.tgz#2a568beca2084c48985dd98e276e065c81738e3c" - integrity sha512-8yx2wIvkBjIq/MGY1D9h1LMraYW+z1X0mb648KZnKSdvLasvDu7maa0dFaNYdTDczFgbjNw2tOmWdTk9saVfwQ== - dependencies: - "@sinonjs/commons" "^1.8.3" - "@sinonjs/fake-timers" "^9.0.0" - "@sinonjs/samsam" "^6.1.1" - diff "^5.0.0" - nise "^5.1.1" - supports-color "^7.2.0" - slash@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" @@ -3236,18 +2812,11 @@ strip-bom@^3.0.0: resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= -strip-json-comments@3.1.1, strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: +strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== -supports-color@8.1.1: - version "8.1.1" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" - integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== - dependencies: - has-flag "^4.0.0" - supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" @@ -3255,7 +2824,7 @@ supports-color@^5.3.0: dependencies: has-flag "^3.0.0" -supports-color@^7.1.0, supports-color@^7.2.0: +supports-color@^7.1.0: version "7.2.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== @@ -3326,11 +2895,6 @@ type-check@^0.4.0, type-check@~0.4.0: dependencies: prelude-ls "^1.2.1" -type-detect@4.0.8, type-detect@^4.0.0, type-detect@^4.0.5, type-detect@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" - integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== - type-fest@^0.20.2: version "0.20.2" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" @@ -3521,7 +3085,7 @@ which-module@^2.0.0: resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= -which@2.0.2, which@^2.0.1: +which@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== @@ -3543,11 +3107,6 @@ word-wrap@^1.2.3: resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== -workerpool@6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.0.tgz#827d93c9ba23ee2019c3ffaff5c27fccea289e8b" - integrity sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A== - wrap-ansi@^6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" @@ -3571,11 +3130,6 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= -xml@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/xml/-/xml-1.0.1.tgz#78ba72020029c5bc87b8a81a3cfcd74b4a2fc1e5" - integrity sha1-eLpyAgApxbyHuKgaPPzXS0ovweU= - y18n@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" @@ -3591,11 +3145,6 @@ yallist@^2.1.2: resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= -yargs-parser@20.2.4: - version "20.2.4" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" - integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== - yargs-parser@^18.1.2: version "18.1.3" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" @@ -3604,39 +3153,11 @@ yargs-parser@^18.1.2: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^20.2.2: - version "20.2.9" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" - integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== - yargs-parser@^21.0.0: version "21.0.0" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.0.0.tgz#a485d3966be4317426dd56bdb6a30131b281dc55" integrity sha512-z9kApYUOCwoeZ78rfRYYWdiU/iNL6mwwYlkkZfJoyMR1xps+NEBX5X7XmRpxkZHhXJ6+Ey00IwKxBBSW9FIjyA== -yargs-unparser@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" - integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== - dependencies: - camelcase "^6.0.0" - decamelize "^4.0.0" - flat "^5.0.2" - is-plain-obj "^2.1.0" - -yargs@16.2.0: - version "16.2.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" - integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== - dependencies: - cliui "^7.0.2" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.0" - y18n "^5.0.5" - yargs-parser "^20.2.2" - yargs@^15.3.1: version "15.4.1" resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" @@ -3666,8 +3187,3 @@ yargs@^17.2.1: string-width "^4.2.3" y18n "^5.0.5" yargs-parser "^21.0.0" - -yocto-queue@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" - integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==