diff --git a/.eslintignore b/.eslintignore
index af896782b3..bf77e667ca 100644
--- a/.eslintignore
+++ b/.eslintignore
@@ -11,3 +11,4 @@ vue-playground
packages/vue
.expo/
packages/reactivecore/coverage/
+__snapshots__
diff --git a/packages/playground b/packages/playground
index 36ffa357df..d6c1d55f5e 160000
--- a/packages/playground
+++ b/packages/playground
@@ -1 +1 @@
-Subproject commit 36ffa357df5bc5daf374c982bffdc3ea8db80d9f
+Subproject commit d6c1d55f5e2ffb2b8b5c98a9ead8433b85d12deb
diff --git a/packages/vue/.gitignore b/packages/vue/.gitignore
index 30bc249f77..01f3acb2b1 100644
--- a/packages/vue/.gitignore
+++ b/packages/vue/.gitignore
@@ -1,6 +1,7 @@
.DS_Store
node_modules
/dist
+/coverage
# local env files
.env.local
diff --git a/packages/vue/babel.config.js b/packages/vue/babel.config.js
new file mode 100644
index 0000000000..9fa4dfe402
--- /dev/null
+++ b/packages/vue/babel.config.js
@@ -0,0 +1 @@
+module.exports = { presets: ['@babel/preset-env', '@vue/babel-preset-jsx'] };
diff --git a/packages/vue/jest.config.js b/packages/vue/jest.config.js
new file mode 100644
index 0000000000..e6767d0c43
--- /dev/null
+++ b/packages/vue/jest.config.js
@@ -0,0 +1,17 @@
+module.exports = {
+ // preset: '@vue/cli-plugin-unit-jest',
+ // transform: {
+ // '^.+\\.(js|jsx)$': 'babel-jest',
+ // },
+ verbose: true,
+ collectCoverage: false,
+ testURL: 'http://localhost/',
+ testEnvironment: 'jest-environment-jsdom-fifteen',
+ // snapshotSerializers: ['./serialize.js'],
+ // snapshotSerializers: ['dfs'],
+ // snapshotSerializers: [
+ // '@emotion/jest/serializer' /* if needed other snapshotSerializers should go here */,
+ // ],
+ snapshotSerializers: ['jest-serializer-vue', '@emotion/jest/serializer'],
+ testMatch: ['**/*.test.[jt]s?(x)'],
+};
diff --git a/packages/vue/package.json b/packages/vue/package.json
index 02f69754f8..acb77d611b 100644
--- a/packages/vue/package.json
+++ b/packages/vue/package.json
@@ -24,6 +24,7 @@
"start": "nps",
"pretest": "nps build",
"test": "nps test",
+ "clear-jest-cache": "jest --clearCache",
"precommit": "lint-staged",
"prepare": "npm start validate",
"version-upgrade": "nps upgrade-vue -c ../../package-scripts.js",
@@ -61,11 +62,16 @@
"@babel/plugin-syntax-jsx": "^7.2.0",
"@babel/preset-env": "^7.5.5",
"@babel/preset-stage-2": "^7.0.0",
+ "@emotion/jest": "^11.9.0",
"@vue/babel-preset-jsx": "^1.1.0",
+ "@vue/cli-plugin-unit-jest": "^4.5.15",
+ "@vue/test-utils": "^1.3.0",
+ "eslint": "^4.12.0",
"eslint-config-airbnb-base": "^13.1.0",
"eslint-config-prettier": "^3.1.0",
"eslint-plugin-vue": "^4.7.1",
- "eslint": "^4.12.0",
+ "jest-serializer-vue": "^2.0.2",
+ "jest-vue-emotion": "^1.0.0",
"nps": "^5.9.3",
"nps-utils": "^1.7.0",
"rollup": "^1.20.3",
diff --git a/packages/vue/src/components/basic/ComponentWrapper.jsx b/packages/vue/src/components/basic/ComponentWrapper.jsx
index 3b7a191c8b..334f6c50d1 100644
--- a/packages/vue/src/components/basic/ComponentWrapper.jsx
+++ b/packages/vue/src/components/basic/ComponentWrapper.jsx
@@ -11,6 +11,7 @@ const {
setQueryListener,
setComponentProps,
updateComponentProps,
+ mockDataForTesting,
} = Actions;
const { pushToAndClause, checkPropChange, checkSomePropChange } = helper;
@@ -48,6 +49,13 @@ const ComponentWrapper = (
this.componentProps = parsedProps;
this.componentId = this.componentProps.componentId;
this.react = this.componentProps.react;
+
+ if (this.componentProps.mockData) {
+ this.mockDataForTesting(
+ this.componentProps.componentId,
+ this.componentProps.mockData,
+ );
+ }
},
beforeMount() {
let components = [];
@@ -93,7 +101,7 @@ const ComponentWrapper = (
}
},
mounted() {
- if (this.internalComponent) {
+ if (this.internalComponent && this.componentProps.mode !== 'test') {
// Watch component after rendering the component to avoid the un-necessary calls
this.setReact(this.componentProps);
}
@@ -163,6 +171,7 @@ const mapDispatchToProps = {
watchComponent,
setComponentProps,
updateComponentProps,
+ mockDataForTesting,
};
export default (component, options = {}) =>
connect(mapStateToProps, mapDispatchToProps)(ComponentWrapper(component, options));
diff --git a/packages/vue/src/components/list/MultiDropdownList.jsx b/packages/vue/src/components/list/MultiDropdownList.jsx
index 2dfda898fb..d7a15fa8e9 100644
--- a/packages/vue/src/components/list/MultiDropdownList.jsx
+++ b/packages/vue/src/components/list/MultiDropdownList.jsx
@@ -80,6 +80,7 @@ const MultiDropdownList = {
nestedField: types.string,
index: VueTypes.string,
searchPlaceholder: VueTypes.string.def('Type here to search...'),
+ isOpen: VueTypes.bool.def(false),
},
created() {
if (!this.enableAppbase && this.$props.index) {
@@ -88,8 +89,8 @@ const MultiDropdownList = {
);
}
const props = this.$props;
- this.modifiedOptions =
- this.options && this.options[props.dataField]
+ this.modifiedOptions
+ = this.options && this.options[props.dataField]
? this.options[props.dataField].buckets
: [];
// Set custom and default queries in store
@@ -247,14 +248,15 @@ const MultiDropdownList = {
searchPlaceholder={this.$props.searchPlaceholder}
transformData={this.$props.transformData}
footer={
- showLoadMore &&
- !isLastBucket && (
+ showLoadMore
+ && !isLastBucket && (
{loadMoreLabel}
)
}
customLabelRenderer={renderLabelCalc}
+ open={this.$props.isOpen}
/>
);
@@ -370,7 +372,6 @@ const MultiDropdownList = {
const customQueryOptions = getOptionsForCustomQuery(customQueryCalc);
this.setQueryOptions(props.componentId, customQueryOptions, false);
}
-
this.updateQuery({
componentId: props.componentId,
query,
@@ -386,9 +387,9 @@ const MultiDropdownList = {
const queryOptions = getQueryOptions(props);
return props.showLoadMore
? getCompositeAggsQuery({
- query: queryOptions,
- props,
- after,
+ query: queryOptions,
+ props,
+ after,
})
: getAggsQuery(queryOptions, props);
},
@@ -531,9 +532,9 @@ MultiDropdownList.generateQueryOptions = (props, after) => {
const queryOptions = getQueryOptions(props);
return props.showLoadMore
? getCompositeAggsQuery({
- query: queryOptions,
- props,
- after,
+ query: queryOptions,
+ props,
+ after,
})
: getAggsQuery(queryOptions, props);
};
@@ -547,9 +548,9 @@ const mapStateToProps = (state, props) => ({
rawData: state.rawData[props.componentId],
isLoading: state.isLoading[props.componentId],
selectedValue:
- (state.selectedValues[props.componentId] &&
- state.selectedValues[props.componentId].value) ||
- null,
+ (state.selectedValues[props.componentId]
+ && state.selectedValues[props.componentId].value)
+ || null,
themePreset: state.config.themePreset,
error: state.error[props.componentId],
componentProps: state.props[props.componentId],
@@ -563,7 +564,7 @@ const mapDispatchtoProps = {
setDefaultQuery,
};
-const ListConnected = ComponentWrapper(
+export const ListConnected = ComponentWrapper(
connect(mapStateToProps, mapDispatchtoProps)(MultiDropdownList),
{
componentType: componentTypes.multiDropdownList,
diff --git a/packages/vue/src/components/list/MultiDropdownList.test.jsx b/packages/vue/src/components/list/MultiDropdownList.test.jsx
new file mode 100644
index 0000000000..10c1a9d667
--- /dev/null
+++ b/packages/vue/src/components/list/MultiDropdownList.test.jsx
@@ -0,0 +1,219 @@
+import { mount } from '@vue/test-utils';
+import { ListConnected as MultiDropdownList } from './MultiDropdownList.jsx';
+import ReactiveBase from '../ReactiveBase/index.jsx';
+
+const MOCK_AGGREGATIONS_DATA = {
+ 'authors.keyword': {
+ buckets: [
+ {
+ key: 'J. K. Rowling',
+ doc_count: 10,
+ },
+ {
+ key: 'Nora Roberts',
+ doc_count: 7,
+ },
+ ],
+ },
+};
+
+describe('MultiDropdownList', () => {
+ it('should render no results message', () => {
+ const wrapper = mount({
+ name: 'TestComponent',
+ render() {
+ return (
+
+ 'No authors found'}
+ mockData={{
+ 'authors.keyword': {
+ buckets: [],
+ },
+ }}
+ isOpen={true}
+ />
+
+ );
+ },
+ });
+
+ expect(wrapper.element).toMatchSnapshot();
+ });
+
+ it('should render list of items', () => {
+ const wrapper = mount({
+ name: 'TestComponent',
+ render() {
+ return (
+
+ 'No authors found'}
+ mockData={{
+ aggregations: MOCK_AGGREGATIONS_DATA,
+ }}
+ isOpen={true}
+ />
+
+ );
+ },
+ });
+
+ expect(wrapper.element).toMatchSnapshot();
+ });
+
+ it('should render search/count when showSearch/showCount are true', () => {
+ const wrapper = mount({
+ name: 'TestComponent',
+ render() {
+ return (
+
+ 'No authors found'}
+ mockData={{
+ aggregations: MOCK_AGGREGATIONS_DATA,
+ }}
+ showSearch
+ showCount
+ isOpen={true}
+ />
+
+ );
+ },
+ });
+
+ expect(wrapper.element).toMatchSnapshot();
+ });
+
+ it('should not render search/count when showSearch/showCount are set to false', () => {
+ const wrapper = mount({
+ name: 'TestComponent',
+ render() {
+ return (
+
+ 'No authors found'}
+ mockData={{
+ aggregations: MOCK_AGGREGATIONS_DATA,
+ }}
+ showSearch={false}
+ showCount={false}
+ isOpen={true}
+ />
+
+ );
+ },
+ });
+
+ expect(wrapper.element).toMatchSnapshot();
+ });
+
+ it('should use render prop to render the list', () => {
+ const wrapper = mount({
+ name: 'TestComponent',
+ render() {
+ return (
+
+ 'No authors found'}
+ mockData={{
+ aggregations: MOCK_AGGREGATIONS_DATA,
+ }}
+ render={({ data, handleChange }) => (
+
+
+ {/* eslint-disable camelcase */}
+ {data.map(({ doc_count, key }) => (
+ handleChange(key)}
+ >
+ {key} --- {doc_count}
+
+ ))}
+
+
+ )}
+ isOpen={true}
+ />
+
+ );
+ },
+ });
+
+ expect(wrapper.element).toMatchSnapshot();
+ });
+
+ it('should use renderItem to render the list item', () => {
+ const wrapper = mount({
+ name: 'TestComponent',
+ render() {
+ return (
+
+ 'No authors found'}
+ mockData={{
+ aggregations: MOCK_AGGREGATIONS_DATA,
+ }}
+ renderItem={({ label, count }) => (
+
+ {label}
+
+ {count}
+
+
+ )}
+ isOpen={true}
+ />
+
+ );
+ },
+ });
+
+ expect(wrapper.element).toMatchSnapshot();
+ });
+
+ it('should select default value', () => {
+ const wrapper = mount({
+ name: 'TestComponent',
+ render() {
+ return (
+
+ 'No authors found'}
+ mockData={{
+ aggregations: MOCK_AGGREGATIONS_DATA,
+ }}
+ defaultValue={['Nora Roberts']}
+ isOpen={true}
+ />
+
+ );
+ },
+ });
+
+ expect(wrapper.element).toMatchSnapshot();
+ });
+});
diff --git a/packages/vue/src/components/list/MultiList.jsx b/packages/vue/src/components/list/MultiList.jsx
index b7e65ef139..2b7f37539e 100644
--- a/packages/vue/src/components/list/MultiList.jsx
+++ b/packages/vue/src/components/list/MultiList.jsx
@@ -83,8 +83,8 @@ const MultiList = {
);
}
const props = this.$props;
- this.modifiedOptions =
- this.options && this.options[props.dataField]
+ this.modifiedOptions
+ = this.options && this.options[props.dataField]
? this.options[props.dataField].buckets
: [];
// Set custom and default queries in store
@@ -234,59 +234,59 @@ const MultiList = {
) : null}
- {!this.hasCustomRenderer &&
- filteredItemsToRender.length === 0 &&
- !this.isLoading
+ {!this.hasCustomRenderer
+ && filteredItemsToRender.length === 0
+ && !this.isLoading
? this.renderNoResult()
: filteredItemsToRender.map((item) => (
-
+
+
-
-
- {renderItemCalc ? (
- renderItemCalc({
- label: item.key,
- count: item.doc_count,
- isChecked: !!this.$data.currentValue[item.key],
- })
- ) : (
-
- {item.key}
- {this.$props.showCount && (
-
+ {renderItemCalc ? (
+ renderItemCalc({
+ label: item.key,
+ count: item.doc_count,
+ isChecked: !!this.$data.currentValue[item.key],
+ })
+ ) : (
+
+ {item.key}
+ {this.$props.showCount && (
+
(
- {item.doc_count})
-
- )}
-
- )}
-
-
+ {item.doc_count})
+
+ )}
+
+ )}
+
+
))}
)}
@@ -300,9 +300,9 @@ const MultiList = {
let { currentValue } = this.$data;
let finalValues = null;
if (
- selectAllLabel &&
- ((Array.isArray(value) && value.includes(selectAllLabel)) ||
- (typeof value === 'string' && value === selectAllLabel))
+ selectAllLabel
+ && ((Array.isArray(value) && value.includes(selectAllLabel))
+ || (typeof value === 'string' && value === selectAllLabel))
) {
if (currentValue[selectAllLabel]) {
currentValue = {};
@@ -491,8 +491,8 @@ const MultiList = {
},
renderNoResult() {
- const renderNoResults =
- this.$scopedSlots.renderNoResults || this.$props.renderNoResults;
+ const renderNoResults
+ = this.$scopedSlots.renderNoResults || this.$props.renderNoResults;
return (
{isFunction(renderNoResults) ? renderNoResults() : renderNoResults}
@@ -603,9 +603,9 @@ const mapStateToProps = (state, props) => ({
rawData: state.rawData[props.componentId],
isLoading: state.isLoading[props.componentId],
selectedValue:
- (state.selectedValues[props.componentId] &&
- state.selectedValues[props.componentId].value) ||
- null,
+ (state.selectedValues[props.componentId]
+ && state.selectedValues[props.componentId].value)
+ || null,
themePreset: state.config.themePreset,
error: state.error[props.componentId],
componentProps: state.props[props.componentId],
@@ -621,10 +621,13 @@ const mapDispatchtoProps = {
MultiList.hasInternalComponent = () => true;
-const ListConnected = ComponentWrapper(connect(mapStateToProps, mapDispatchtoProps)(MultiList), {
- componentType: componentTypes.multiList,
- internalComponent: MultiList.hasInternalComponent(),
-});
+export const ListConnected = ComponentWrapper(
+ connect(mapStateToProps, mapDispatchtoProps)(MultiList),
+ {
+ componentType: componentTypes.multiList,
+ internalComponent: MultiList.hasInternalComponent(),
+ },
+);
MultiList.install = function (Vue) {
Vue.component(MultiList.name, ListConnected);
diff --git a/packages/vue/src/components/list/MultiList.test.jsx b/packages/vue/src/components/list/MultiList.test.jsx
new file mode 100644
index 0000000000..e98e50a13e
--- /dev/null
+++ b/packages/vue/src/components/list/MultiList.test.jsx
@@ -0,0 +1,214 @@
+import { mount } from '@vue/test-utils';
+import { ListConnected as MultiList } from './MultiList.jsx';
+import ReactiveBase from '../ReactiveBase/index.jsx';
+
+const MOCK_AGGREGATIONS_DATA = {
+ 'authors.keyword': {
+ buckets: [
+ {
+ key: 'J. K. Rowling',
+ doc_count: 10,
+ },
+ {
+ key: 'Nora Roberts',
+ doc_count: 7,
+ },
+ ],
+ },
+};
+
+describe('MultiList', () => {
+ it('should render no results message', () => {
+ const wrapper = mount({
+ name: 'TestComponent',
+ render() {
+ return (
+
+ 'No authors found'}
+ mockData={{
+ 'authors.keyword': {
+ buckets: [],
+ },
+ }}
+ />
+
+ );
+ },
+ });
+
+ expect(wrapper.element).toMatchSnapshot();
+ });
+
+ it('should render list of items', () => {
+ const wrapper = mount({
+ name: 'TestComponent',
+ render() {
+ return (
+
+ 'No authors found'}
+ mockData={{
+ aggregations: MOCK_AGGREGATIONS_DATA,
+ }}
+ />
+
+ );
+ },
+ });
+
+ expect(wrapper.element).toMatchSnapshot();
+ });
+
+ it('should render search/count/checkbox when showSearch/showCount/showCheckbox are true', () => {
+ const wrapper = mount({
+ name: 'TestComponent',
+ render() {
+ return (
+
+ 'No authors found'}
+ mockData={{
+ aggregations: MOCK_AGGREGATIONS_DATA,
+ }}
+ showSearch
+ showCount
+ showCheckbox
+ />
+
+ );
+ },
+ });
+
+ expect(wrapper.element).toMatchSnapshot();
+ });
+
+ it('should not render search/count/checkbox when showSearch/showCount/showCheckbox are set to false', () => {
+ const wrapper = mount({
+ name: 'TestComponent',
+ render() {
+ return (
+
+ 'No authors found'}
+ mockData={{
+ aggregations: MOCK_AGGREGATIONS_DATA,
+ }}
+ showSearch={false}
+ showCount={false}
+ showCheckbox={false}
+ />
+
+ );
+ },
+ });
+
+ expect(wrapper.element).toMatchSnapshot();
+ });
+
+ it('should use render prop to render the list', () => {
+ const wrapper = mount({
+ name: 'TestComponent',
+ render() {
+ return (
+
+ 'No authors found'}
+ mockData={{
+ aggregations: MOCK_AGGREGATIONS_DATA,
+ }}
+ render={({ data, handleChange }) => (
+
+
+ {/* eslint-disable camelcase */}
+ {data.map(({ doc_count, key }) => (
+ handleChange(key)}
+ >
+ {key} --- {doc_count}
+
+ ))}
+
+
+ )}
+ />
+
+ );
+ },
+ });
+
+ expect(wrapper.element).toMatchSnapshot();
+ });
+
+ it('should use renderItem to render the list item', () => {
+ const wrapper = mount({
+ name: 'TestComponent',
+ render() {
+ return (
+
+ 'No authors found'}
+ mockData={{
+ aggregations: MOCK_AGGREGATIONS_DATA,
+ }}
+ renderItem={({ label, count }) => (
+
+ {label}
+
+ {count}
+
+
+ )}
+ />
+
+ );
+ },
+ });
+
+ expect(wrapper.element).toMatchSnapshot();
+ });
+
+ it('should select default value', () => {
+ const wrapper = mount({
+ name: 'TestComponent',
+ render() {
+ return (
+
+ 'No authors found'}
+ mockData={{
+ aggregations: MOCK_AGGREGATIONS_DATA,
+ }}
+ defaultValue={['Nora Roberts']}
+ />
+
+ );
+ },
+ });
+
+ expect(wrapper.element).toMatchSnapshot();
+ });
+});
diff --git a/packages/vue/src/components/list/SingleDropdownList.jsx b/packages/vue/src/components/list/SingleDropdownList.jsx
index 1b469756c6..5684c1123b 100644
--- a/packages/vue/src/components/list/SingleDropdownList.jsx
+++ b/packages/vue/src/components/list/SingleDropdownList.jsx
@@ -78,6 +78,7 @@ const SingleDropdownList = {
nestedField: types.string,
index: VueTypes.string,
searchPlaceholder: VueTypes.string.def('Type here to search...'),
+ isOpen: VueTypes.bool.def(false),
},
created() {
if (!this.enableAppbase && this.$props.index) {
@@ -86,8 +87,8 @@ const SingleDropdownList = {
);
}
const props = this.$props;
- this.modifiedOptions =
- this.options && this.options[props.dataField]
+ this.modifiedOptions
+ = this.options && this.options[props.dataField]
? this.options[props.dataField].buckets
: [];
// Set custom and default queries in store
@@ -237,14 +238,15 @@ const SingleDropdownList = {
searchPlaceholder={this.$props.searchPlaceholder}
transformData={this.$props.transformData}
footer={
- showLoadMore &&
- !isLastBucket && (
+ showLoadMore
+ && !isLastBucket && (
{loadMoreLabel}
)
}
customLabelRenderer={renderLabelCalc}
+ open={this.$props.isOpen}
/>
);
@@ -320,9 +322,9 @@ const SingleDropdownList = {
const queryOptions = getQueryOptions(props);
return props.showLoadMore
? getCompositeAggsQuery({
- query: queryOptions,
- props,
- after,
+ query: queryOptions,
+ props,
+ after,
})
: getAggsQuery(queryOptions, props);
},
@@ -419,9 +421,9 @@ SingleDropdownList.generateQueryOptions = (props, after) => {
const queryOptions = getQueryOptions(props);
return props.showLoadMore
? getCompositeAggsQuery({
- query: queryOptions,
- props,
- after,
+ query: queryOptions,
+ props,
+ after,
})
: getAggsQuery(queryOptions, props);
};
@@ -436,9 +438,9 @@ const mapStateToProps = (state, props) => ({
rawData: state.rawData[props.componentId],
isLoading: state.isLoading[props.componentId],
selectedValue:
- (state.selectedValues[props.componentId] &&
- state.selectedValues[props.componentId].value) ||
- '',
+ (state.selectedValues[props.componentId]
+ && state.selectedValues[props.componentId].value)
+ || '',
themePreset: state.config.themePreset,
error: state.error[props.componentId],
componentProps: state.props[props.componentId],
@@ -452,7 +454,7 @@ const mapDispatchtoProps = {
setDefaultQuery,
};
-const ListConnected = ComponentWrapper(
+export const ListConnected = ComponentWrapper(
connect(mapStateToProps, mapDispatchtoProps)(SingleDropdownList),
{
componentType: componentTypes.singleDropdownList,
diff --git a/packages/vue/src/components/list/SingleDropdownList.test.jsx b/packages/vue/src/components/list/SingleDropdownList.test.jsx
new file mode 100644
index 0000000000..a1a7ee6629
--- /dev/null
+++ b/packages/vue/src/components/list/SingleDropdownList.test.jsx
@@ -0,0 +1,219 @@
+import { mount } from '@vue/test-utils';
+import { ListConnected as SingleDropdownList } from './SingleDropdownList.jsx';
+import ReactiveBase from '../ReactiveBase/index.jsx';
+
+const MOCK_AGGREGATIONS_DATA = {
+ 'authors.keyword': {
+ buckets: [
+ {
+ key: 'J. K. Rowling',
+ doc_count: 10,
+ },
+ {
+ key: 'Nora Roberts',
+ doc_count: 7,
+ },
+ ],
+ },
+};
+
+describe('SingleDropdownList', () => {
+ it('should render no results message', () => {
+ const wrapper = mount({
+ name: 'TestComponent',
+ render() {
+ return (
+
+ 'No authors found'}
+ mockData={{
+ 'authors.keyword': {
+ buckets: [],
+ },
+ }}
+ isOpen={true}
+ />
+
+ );
+ },
+ });
+
+ expect(wrapper.element).toMatchSnapshot();
+ });
+
+ it('should render list of items', () => {
+ const wrapper = mount({
+ name: 'TestComponent',
+ render() {
+ return (
+
+ 'No authors found'}
+ mockData={{
+ aggregations: MOCK_AGGREGATIONS_DATA,
+ }}
+ isOpen={true}
+ />
+
+ );
+ },
+ });
+
+ expect(wrapper.element).toMatchSnapshot();
+ });
+
+ it('should render search/count when showSearch/showCount are true', () => {
+ const wrapper = mount({
+ name: 'TestComponent',
+ render() {
+ return (
+
+ 'No authors found'}
+ mockData={{
+ aggregations: MOCK_AGGREGATIONS_DATA,
+ }}
+ showSearch
+ showCount
+ isOpen={true}
+ />
+
+ );
+ },
+ });
+
+ expect(wrapper.element).toMatchSnapshot();
+ });
+
+ it('should not render search/count when showSearch/showCount are set to false', () => {
+ const wrapper = mount({
+ name: 'TestComponent',
+ render() {
+ return (
+
+ 'No authors found'}
+ mockData={{
+ aggregations: MOCK_AGGREGATIONS_DATA,
+ }}
+ showSearch={false}
+ showCount={false}
+ isOpen={true}
+ />
+
+ );
+ },
+ });
+
+ expect(wrapper.element).toMatchSnapshot();
+ });
+
+ it('should use render prop to render the list', () => {
+ const wrapper = mount({
+ name: 'TestComponent',
+ render() {
+ return (
+
+ 'No authors found'}
+ mockData={{
+ aggregations: MOCK_AGGREGATIONS_DATA,
+ }}
+ render={({ data, handleChange }) => (
+
+
+ {/* eslint-disable camelcase */}
+ {data.map(({ doc_count, key }) => (
+ handleChange(key)}
+ >
+ {key} --- {doc_count}
+
+ ))}
+
+
+ )}
+ isOpen={true}
+ />
+
+ );
+ },
+ });
+
+ expect(wrapper.element).toMatchSnapshot();
+ });
+
+ it('should use renderItem to render the list item', () => {
+ const wrapper = mount({
+ name: 'TestComponent',
+ render() {
+ return (
+
+ 'No authors found'}
+ mockData={{
+ aggregations: MOCK_AGGREGATIONS_DATA,
+ }}
+ renderItem={({ label, count }) => (
+
+ {label}
+
+ {count}
+
+
+ )}
+ isOpen={true}
+ />
+
+ );
+ },
+ });
+
+ expect(wrapper.element).toMatchSnapshot();
+ });
+
+ it('should select default value', () => {
+ const wrapper = mount({
+ name: 'TestComponent',
+ render() {
+ return (
+
+ 'No authors found'}
+ mockData={{
+ aggregations: MOCK_AGGREGATIONS_DATA,
+ }}
+ defaultValue='Nora Roberts'
+ isOpen={true}
+ />
+
+ );
+ },
+ });
+
+ expect(wrapper.element).toMatchSnapshot();
+ });
+});
diff --git a/packages/vue/src/components/list/SingleList.jsx b/packages/vue/src/components/list/SingleList.jsx
index dc64d6838e..66ba9563b0 100644
--- a/packages/vue/src/components/list/SingleList.jsx
+++ b/packages/vue/src/components/list/SingleList.jsx
@@ -81,8 +81,8 @@ const SingleList = {
);
}
const props = this.$props;
- this.modifiedOptions =
- this.options && this.options[props.dataField]
+ this.modifiedOptions
+ = this.options && this.options[props.dataField]
? this.options[props.dataField].buckets
: [];
// Set custom and default queries in store
@@ -218,66 +218,66 @@ const SingleList = {
) : null}
- {!this.hasCustomRenderer &&
- filteredItemsToRender.length === 0 &&
- !this.isLoading
+ {!this.hasCustomRenderer
+ && filteredItemsToRender.length === 0
+ && !this.isLoading
? this.renderNoResult()
: filteredItemsToRender.map((item) => (
-
+
+
-
-
- {renderItemCalc ? (
- renderItemCalc({
- label: item.key,
- count: item.doc_count,
- isChecked:
+ {renderItemCalc ? (
+ renderItemCalc({
+ label: item.key,
+ count: item.doc_count,
+ isChecked:
this.currentValue === String(item.key),
- })
- ) : (
-
- {item.key}
- {this.$props.showCount && (
-
+ })
+ ) : (
+
+ {item.key}
+ {this.$props.showCount && (
+
(
- {item.doc_count})
-
- )}
-
- )}
-
-
+ {item.doc_count})
+
+ )}
+
+ )}
+
+
))}
)}
@@ -430,8 +430,8 @@ const SingleList = {
},
renderNoResult() {
- const renderNoResults =
- this.$scopedSlots.renderNoResults || this.$props.renderNoResults;
+ const renderNoResults
+ = this.$scopedSlots.renderNoResults || this.$props.renderNoResults;
return (
{isFunction(renderNoResults) ? renderNoResults() : renderNoResults}
@@ -502,9 +502,9 @@ const mapStateToProps = (state, props) => ({
rawData: state.rawData[props.componentId],
isLoading: state.isLoading[props.componentId],
selectedValue:
- (state.selectedValues[props.componentId] &&
- state.selectedValues[props.componentId].value) ||
- '',
+ (state.selectedValues[props.componentId]
+ && state.selectedValues[props.componentId].value)
+ || '',
themePreset: state.config.themePreset,
error: state.error[props.componentId],
componentProps: state.props[props.componentId],
@@ -518,10 +518,13 @@ const mapDispatchtoProps = {
setDefaultQuery,
};
-const ListConnected = ComponentWrapper(connect(mapStateToProps, mapDispatchtoProps)(SingleList), {
- componentType: componentTypes.singleList,
- internalComponent: SingleList.hasInternalComponent(),
-});
+export const ListConnected = ComponentWrapper(
+ connect(mapStateToProps, mapDispatchtoProps)(SingleList),
+ {
+ componentType: componentTypes.singleList,
+ internalComponent: SingleList.hasInternalComponent(),
+ },
+);
SingleList.install = function (Vue) {
Vue.component(SingleList.name, ListConnected);
diff --git a/packages/vue/src/components/list/SingleList.test.jsx b/packages/vue/src/components/list/SingleList.test.jsx
new file mode 100644
index 0000000000..858c8b8121
--- /dev/null
+++ b/packages/vue/src/components/list/SingleList.test.jsx
@@ -0,0 +1,209 @@
+import { mount } from '@vue/test-utils';
+import { ListConnected as SingleList } from './SingleList.jsx';
+import ReactiveBase from '../ReactiveBase/index.jsx';
+
+const MOCK_AGGREGATIONS_DATA = {
+ 'authors.keyword': {
+ buckets: [
+ {
+ key: 'J. K. Rowling',
+ doc_count: 10,
+ },
+ {
+ key: 'Nora Roberts',
+ doc_count: 7,
+ },
+ ],
+ },
+};
+
+describe('SingleList', () => {
+ it('should render no results message', () => {
+ const wrapper = mount({
+ name: 'TestComponent',
+ render() {
+ return (
+
+ 'No authors found'}
+ />
+
+ );
+ },
+ });
+
+ expect(wrapper.element).toMatchSnapshot();
+ });
+
+ it('should render list of items', () => {
+ const wrapper = mount({
+ name: 'TestComponent',
+ render() {
+ return (
+
+ 'No authors found'}
+ mockData={{
+ aggregations: MOCK_AGGREGATIONS_DATA,
+ }}
+ />
+
+ );
+ },
+ });
+
+ expect(wrapper.element).toMatchSnapshot();
+ });
+
+ it('should render search/count/radio when showSearch/showCount/showRadio are true', () => {
+ const wrapper = mount({
+ name: 'TestComponent',
+ render() {
+ return (
+
+ 'No authors found'}
+ mockData={{
+ aggregations: MOCK_AGGREGATIONS_DATA,
+ }}
+ showSearch
+ showCount
+ showRadio
+ />
+
+ );
+ },
+ });
+
+ expect(wrapper.element).toMatchSnapshot();
+ });
+
+ it('should not render search/count/radio when showSearch/showCount/showRadio are set to false', () => {
+ const wrapper = mount({
+ name: 'TestComponent',
+ render() {
+ return (
+
+ 'No authors found'}
+ mockData={{
+ aggregations: MOCK_AGGREGATIONS_DATA,
+ }}
+ showSearch={false}
+ showCount={false}
+ showRadio={false}
+ />
+
+ );
+ },
+ });
+
+ expect(wrapper.element).toMatchSnapshot();
+ });
+
+ it('should use render prop to render the list', () => {
+ const wrapper = mount({
+ name: 'TestComponent',
+ render() {
+ return (
+
+ 'No authors found'}
+ mockData={{
+ aggregations: MOCK_AGGREGATIONS_DATA,
+ }}
+ render={({ data, handleChange }) => (
+
+
+ {/* eslint-disable camelcase */}
+ {data.map(({ doc_count, key }) => (
+ handleChange(key)}
+ >
+ {key} --- {doc_count}
+
+ ))}
+
+
+ )}
+ />
+
+ );
+ },
+ });
+
+ expect(wrapper.element).toMatchSnapshot();
+ });
+
+ it('should use renderItem to render the list item', () => {
+ const wrapper = mount({
+ name: 'TestComponent',
+ render() {
+ return (
+
+ 'No authors found'}
+ mockData={{
+ aggregations: MOCK_AGGREGATIONS_DATA,
+ }}
+ renderItem={({ label, count }) => (
+
+ {label}
+
+ {count}
+
+
+ )}
+ />
+
+ );
+ },
+ });
+
+ expect(wrapper.element).toMatchSnapshot();
+ });
+
+ it('should select default value', () => {
+ const wrapper = mount({
+ name: 'TestComponent',
+ render() {
+ return (
+
+ 'No authors found'}
+ mockData={{
+ aggregations: MOCK_AGGREGATIONS_DATA,
+ }}
+ defaultValue="Nora Roberts"
+ />
+
+ );
+ },
+ });
+
+ expect(wrapper.element).toMatchSnapshot();
+ });
+});
diff --git a/packages/vue/src/components/list/__snapshots__/MultiDropdownList.test.jsx.snap b/packages/vue/src/components/list/__snapshots__/MultiDropdownList.test.jsx.snap
new file mode 100644
index 0000000000..32c098ce53
--- /dev/null
+++ b/packages/vue/src/components/list/__snapshots__/MultiDropdownList.test.jsx.snap
@@ -0,0 +1,399 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`MultiDropdownList should not render search/count when showSearch/showCount are set to false 1`] = `
+
+
+
+
+
+
+ Select values
+
+
+
+
+
+
+
+ J. K. Rowling
+
+
+
+
+
+
+ Nora Roberts
+
+
+
+
+
+
+
+
+`;
+
+exports[`MultiDropdownList should render list of items 1`] = `
+
+
+
+
+
+
+ Select values
+
+
+
+
+
+
+
+
+`;
+
+exports[`MultiDropdownList should render no results message 1`] = `
+
+`;
+
+exports[`MultiDropdownList should render search/count when showSearch/showCount are true 1`] = `
+
+
+
+
+
+
+ Select values
+
+
+
+
+
+
+
+
+`;
+
+exports[`MultiDropdownList should select default value 1`] = `
+
+
+
+
+
+
+ Nora Roberts
+
+
+
+
+
+
+
+
+`;
+
+exports[`MultiDropdownList should use render prop to render the list 1`] = `
+
+
+
+
+
+
+ Select values
+
+
+
+
+
+
+ J. K. Rowling --- 10
+
+
+ Nora Roberts --- 7
+
+
+
+
+
+
+
+`;
+
+exports[`MultiDropdownList should use renderItem to render the list item 1`] = `
+
+
+
+
+
+
+ Select values
+
+
+
+
+
+
+
+
+`;
diff --git a/packages/vue/src/components/list/__snapshots__/MultiList.test.jsx.snap b/packages/vue/src/components/list/__snapshots__/MultiList.test.jsx.snap
new file mode 100644
index 0000000000..2e921e09a2
--- /dev/null
+++ b/packages/vue/src/components/list/__snapshots__/MultiList.test.jsx.snap
@@ -0,0 +1,409 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`MultiList should not render search/count/checkbox when showSearch/showCount/showCheckbox are set to false 1`] = `
+
+`;
+
+exports[`MultiList should render list of items 1`] = `
+
+`;
+
+exports[`MultiList should render no results message 1`] = `
+
+`;
+
+exports[`MultiList should render search/count/checkbox when showSearch/showCount/showCheckbox are true 1`] = `
+
+`;
+
+exports[`MultiList should select default value 1`] = `
+
+`;
+
+exports[`MultiList should use render prop to render the list 1`] = `
+
+
+
+
+
+
+ J. K. Rowling --- 10
+
+
+ Nora Roberts --- 7
+
+
+
+
+
+`;
+
+exports[`MultiList should use renderItem to render the list item 1`] = `
+
+`;
diff --git a/packages/vue/src/components/list/__snapshots__/SingleDropdownList.test.jsx.snap b/packages/vue/src/components/list/__snapshots__/SingleDropdownList.test.jsx.snap
new file mode 100644
index 0000000000..fa90d0d3c6
--- /dev/null
+++ b/packages/vue/src/components/list/__snapshots__/SingleDropdownList.test.jsx.snap
@@ -0,0 +1,396 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`SingleDropdownList should not render search/count when showSearch/showCount are set to false 1`] = `
+
+
+
+
+
+
+ Select a value
+
+
+
+
+
+
+
+ J. K. Rowling
+
+
+
+
+
+
+ Nora Roberts
+
+
+
+
+
+
+
+
+`;
+
+exports[`SingleDropdownList should render list of items 1`] = `
+
+
+
+
+
+
+ Select a value
+
+
+
+
+
+
+
+
+`;
+
+exports[`SingleDropdownList should render no results message 1`] = `
+
+`;
+
+exports[`SingleDropdownList should render search/count when showSearch/showCount are true 1`] = `
+
+
+
+
+
+
+ Select a value
+
+
+
+
+
+
+
+
+`;
+
+exports[`SingleDropdownList should select default value 1`] = `
+
+
+
+
+
+
+ Nora Roberts
+
+
+
+
+
+
+
+
+`;
+
+exports[`SingleDropdownList should use render prop to render the list 1`] = `
+
+
+
+
+
+
+ Select a value
+
+
+
+
+
+
+ J. K. Rowling --- 10
+
+
+ Nora Roberts --- 7
+
+
+
+
+
+
+
+`;
+
+exports[`SingleDropdownList should use renderItem to render the list item 1`] = `
+
+
+
+
+
+
+ Select a value
+
+
+
+
+
+
+
+
+`;
diff --git a/packages/vue/src/components/list/__snapshots__/SingleList.test.jsx.snap b/packages/vue/src/components/list/__snapshots__/SingleList.test.jsx.snap
new file mode 100644
index 0000000000..c747d23a40
--- /dev/null
+++ b/packages/vue/src/components/list/__snapshots__/SingleList.test.jsx.snap
@@ -0,0 +1,394 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`SingleList should not render search/count/radio when showSearch/showCount/showRadio are set to false 1`] = `
+
+`;
+
+exports[`SingleList should render list of items 1`] = `
+
+`;
+
+exports[`SingleList should render no results message 1`] = `
+
+`;
+
+exports[`SingleList should render search/count/radio when showSearch/showCount/showRadio are true 1`] = `
+
+`;
+
+exports[`SingleList should select default value 1`] = `
+
+`;
+
+exports[`SingleList should use render prop to render the list 1`] = `
+
+
+
+
+
+
+ J. K. Rowling --- 10
+
+
+ Nora Roberts --- 7
+
+
+
+
+
+`;
+
+exports[`SingleList should use renderItem to render the list item 1`] = `
+
+`;
diff --git a/packages/vue/src/components/range/DynamicRangeSlider.jsx b/packages/vue/src/components/range/DynamicRangeSlider.jsx
index 896960abf9..341f4ff4d2 100644
--- a/packages/vue/src/components/range/DynamicRangeSlider.jsx
+++ b/packages/vue/src/components/range/DynamicRangeSlider.jsx
@@ -19,6 +19,7 @@ const {
setComponentProps,
setCustomQuery,
updateComponentProps,
+ mockDataForTesting,
} = Actions;
const {
@@ -55,6 +56,8 @@ const DynamicRangeSlider = {
sliderOptions: VueTypes.object.def({}),
nestedField: types.string,
index: VueTypes.string,
+ mode: VueTypes.string,
+ mockData: VueTypes.object,
value: types.range,
},
@@ -89,7 +92,9 @@ const DynamicRangeSlider = {
updateCustomQuery(this.componentId, this.setCustomQuery, this.$props, this.currentValue);
},
mounted() {
- this.setReact();
+ if (this.$props.mode !== 'test') {
+ this.setReact();
+ }
},
beforeMount() {
let components = [];
@@ -107,9 +112,19 @@ const DynamicRangeSlider = {
} else if (value) {
this.handleChange(DynamicRangeSlider.parseValue(value, this.$props));
}
-
- // get range before executing other queries
- this.updateRangeQueryOptions();
+ if (this.$props.mockData) {
+ this.mockDataForTesting(
+ this.internalRangeComponent,
+ this.$props.mockData[this.internalRangeComponent],
+ );
+ this.setDefaultValue({
+ start: this.$props.mockData[this.internalRangeComponent].aggregations.min.value,
+ end: this.$props.mockData[this.internalRangeComponent].aggregations.max.value,
+ });
+ } else {
+ // get range before executing other queries
+ this.updateRangeQueryOptions();
+ }
}
},
@@ -251,6 +266,15 @@ const DynamicRangeSlider = {
componentType: componentTypes.dynamicRangeSlider,
});
},
+ // the method is added to support snapshot testing
+ // component doesn't render the slider in test environment
+ // hence the change
+ renderSlider(sliderComponent) {
+ if (this.$props.mode === 'test') {
+ return sliderComponent();
+ }
+ return {sliderComponent()} ;
+ },
},
computed: {
@@ -329,7 +353,7 @@ const DynamicRangeSlider = {
{this.$props.title}
)}
-
+ {this.renderSlider(() => (
{this.labels.start}
{this.labels.end}
@@ -368,7 +392,7 @@ const DynamicRangeSlider = {
) : null}
-
+ ))}
);
},
@@ -420,26 +444,26 @@ const mapStateToProps = (state, props) => {
let range = state.aggregations[`${props.componentId}__range__internal`];
if (props.nestedField) {
- options =
- options &&
- componentId[props.dataField][props.nestedField] &&
- componentId[props.dataField][props.nestedField].buckets
+ options
+ = options
+ && componentId[props.dataField][props.nestedField]
+ && componentId[props.dataField][props.nestedField].buckets
? componentId[props.dataField][props.nestedField].buckets
: [];
- range =
- range && internalRange[props.nestedField].min
+ range
+ = range && internalRange[props.nestedField].min
? {
- start: internalRange[props.nestedField].min.value,
- end: internalRange[props.nestedField].max.value,
+ start: internalRange[props.nestedField].min.value,
+ end: internalRange[props.nestedField].max.value,
}
: null;
} else {
- options =
- options && componentId[props.dataField].buckets
+ options
+ = options && componentId[props.dataField].buckets
? componentId[props.dataField].buckets
: [];
- range =
- range && internalRange.min
+ range
+ = range && internalRange.min
? { start: internalRange.min.value, end: internalRange.max.value }
: null;
}
@@ -465,9 +489,10 @@ const mapDispatchtoProps = {
setComponentProps,
setCustomQuery,
updateComponentProps,
+ mockDataForTesting,
};
-const RangeConnected = connect(mapStateToProps, mapDispatchtoProps)(DynamicRangeSlider);
+export const RangeConnected = connect(mapStateToProps, mapDispatchtoProps)(DynamicRangeSlider);
DynamicRangeSlider.install = function (Vue) {
Vue.component(DynamicRangeSlider.name, RangeConnected);
diff --git a/packages/vue/src/components/range/DynamicRangeSlider.test.jsx b/packages/vue/src/components/range/DynamicRangeSlider.test.jsx
new file mode 100644
index 0000000000..abfc7bd2cc
--- /dev/null
+++ b/packages/vue/src/components/range/DynamicRangeSlider.test.jsx
@@ -0,0 +1,161 @@
+import { mount } from '@vue/test-utils';
+import Vue from 'vue';
+import { RangeConnected as DynamicRangeSlider } from './DynamicRangeSlider.jsx';
+import ReactiveBase from '../ReactiveBase/index.jsx';
+
+Vue.component('vue-slider-component', require('vue-slider-component'));
+
+const MOCK_RANGE_DATA = {
+ min: {
+ value: 1,
+ },
+ max: {
+ value: 3455,
+ },
+};
+
+describe('DynamicRangeSlider', () => {
+ it('should render range with slider', () => {
+ const wrapper = mount({
+ name: 'TestComponent',
+ render() {
+ return (
+
+
+
+ );
+ },
+ });
+
+ expect(wrapper.element).toMatchSnapshot();
+ });
+
+ it('should render title', () => {
+ const wrapper = mount({
+ name: 'TestComponent',
+ render() {
+ return (
+
+
+
+ );
+ },
+ });
+
+ expect(wrapper.element).toMatchSnapshot();
+ });
+
+ it('should render range labels', () => {
+ const wrapper = mount({
+ name: 'TestComponent',
+ render() {
+ return (
+
+ ({
+ start,
+ end,
+ })}
+ />
+
+ );
+ },
+ });
+
+ expect(wrapper.element).toMatchSnapshot();
+ });
+
+ it('should select default value', () => {
+ const wrapper = mount({
+ name: 'TestComponent',
+ render() {
+ return (
+
+ ({
+ start: 30,
+ end: 2300,
+ })}
+ rangeLabels={() => ({
+ start: 30,
+ end: 2300,
+ })}
+ />
+
+ );
+ },
+ });
+
+ expect(wrapper.element).toMatchSnapshot();
+ });
+
+ it('should not display tooltip when sliderOptions has tooltip set to false', () => {
+ const wrapper = mount({
+ name: 'TestComponent',
+ render() {
+ return (
+
+ ({
+ start: 30,
+ end: 2300,
+ })}
+ rangeLabels={() => ({
+ start: 30,
+ end: 2300,
+ })}
+ sliderOptions={{
+ tooltip: false,
+ }}
+ />
+
+ );
+ },
+ });
+
+ expect(wrapper.element).toMatchSnapshot();
+ });
+});
diff --git a/packages/vue/src/components/range/MultiRange.jsx b/packages/vue/src/components/range/MultiRange.jsx
index c312ccd70b..4c5d80f799 100644
--- a/packages/vue/src/components/range/MultiRange.jsx
+++ b/packages/vue/src/components/range/MultiRange.jsx
@@ -177,9 +177,9 @@ const MultiRange = {
)}
{this.$props.data.map((item) => {
- const selected =
- !!this.$data.currentValue &&
- this.$data.currentValue.label === item.label;
+ const selected
+ = !!this.$data.currentValue
+ && this.$data.currentValue.label === item.label;
return (
{
const mapStateToProps = (state, props) => ({
selectedValue:
- (state.selectedValues[props.componentId] &&
- state.selectedValues[props.componentId].value) ||
- null,
+ (state.selectedValues[props.componentId]
+ && state.selectedValues[props.componentId].value)
+ || null,
componentProps: state.props[props.componentId],
enableAppbase: state.config.enableAppbase,
});
diff --git a/packages/vue/src/components/range/RangeInput.jsx b/packages/vue/src/components/range/RangeInput.jsx
index 35cc234524..77b12a5fe3 100644
--- a/packages/vue/src/components/range/RangeInput.jsx
+++ b/packages/vue/src/components/range/RangeInput.jsx
@@ -199,7 +199,7 @@ const RangeInput = {
componentId={componentId}
value={{
start: this.currentValue.start,
- end: this.currentValue.end
+ end: this.currentValue.end,
}}
range={range}
dataField={dataField}
@@ -218,6 +218,7 @@ const RangeInput = {
nestedField={nestedField}
on-change={this.handleOnChange}
on-value-change={this.handleValueChange}
+ mode={this.$attrs.mode}
/>
@@ -232,17 +233,14 @@ const RangeInput = {
min={this.$props.range ? this.$props.range.start : 0}
class={getClassName(innerClass, 'input') || ''}
alert={!this.isStartValid}
- {
- ...{
+ value={this.currentValue.start}
+ {...{
domProps: {
- value: this.currentValue.start
- }
- }
- }
+ value: this.currentValue.start,
+ },
+ }}
/>
- {!this.isStartValid && (
- Input range is invalid
- )}
+ {!this.isStartValid && Input range is invalid }
-
@@ -259,13 +257,12 @@ const RangeInput = {
max={this.$props.range ? this.$props.range.end : 10}
class={getClassName(innerClass, 'input') || ''}
alert={!this.isEndValid}
- {
- ...{
+ value={this.currentValue.end}
+ {...{
domProps: {
- value: this.currentValue.end
- }
- }
- }
+ value: this.currentValue.end,
+ },
+ }}
/>
{!this.isEndValid && Input range is invalid }
@@ -279,7 +276,7 @@ const mapStateToProps = (state) => ({
themePreset: state.config.themePreset,
});
-const RangeConnected = ComponentWrapper(connect(mapStateToProps, {})(RangeInput), {
+export const RangeConnected = ComponentWrapper(connect(mapStateToProps, {})(RangeInput), {
componentType: componentTypes.rangeInput,
});
diff --git a/packages/vue/src/components/range/RangeInput.test.jsx b/packages/vue/src/components/range/RangeInput.test.jsx
new file mode 100644
index 0000000000..0cd3418dac
--- /dev/null
+++ b/packages/vue/src/components/range/RangeInput.test.jsx
@@ -0,0 +1,113 @@
+import { mount } from '@vue/test-utils';
+import Vue from 'vue';
+import { RangeConnected as RangeInput } from './RangeInput.jsx';
+import ReactiveBase from '../ReactiveBase/index.jsx';
+
+Vue.component('vue-slider-component', require('vue-slider-component'));
+
+describe('RangeInput', () => {
+ it('should render range with slider', () => {
+ const wrapper = mount({
+ name: 'TestComponent',
+ render() {
+ return (
+
+
+
+ );
+ },
+ });
+
+ expect(wrapper.element).toMatchSnapshot();
+ });
+
+ it('should render title', () => {
+ const wrapper = mount({
+ name: 'TestComponent',
+ render() {
+ return (
+
+
+
+ );
+ },
+ });
+
+ expect(wrapper.element).toMatchSnapshot();
+ });
+
+ it('should render range labels', () => {
+ const wrapper = mount({
+ name: 'TestComponent',
+ render() {
+ return (
+
+
+
+ );
+ },
+ });
+
+ expect(wrapper.element).toMatchSnapshot();
+ });
+
+ it('should select default value', () => {
+ const wrapper = mount({
+ name: 'TestComponent',
+ render() {
+ return (
+
+
+
+ );
+ },
+ });
+
+ expect(wrapper.element).toMatchSnapshot();
+ });
+});
diff --git a/packages/vue/src/components/range/RangeSlider.jsx b/packages/vue/src/components/range/RangeSlider.jsx
index 6cd85b9b08..5727c68f36 100644
--- a/packages/vue/src/components/range/RangeSlider.jsx
+++ b/packages/vue/src/components/range/RangeSlider.jsx
@@ -121,6 +121,15 @@ const RangeSlider = {
componentType: componentTypes.rangeSlider,
});
},
+ // the method is added to support snapshot testing
+ // component doesn't render the slider in test environment
+ // hence the change
+ renderSlider(sliderComponent) {
+ if (this.$attrs.mode === 'test') {
+ return sliderComponent();
+ }
+ return {sliderComponent()} ;
+ },
},
watch: {
defaultValue(newVal) {
@@ -185,8 +194,8 @@ const RangeSlider = {
{this.$props.title}
)}
- {this.$props.range ? (
-
+ {this.$props.range
+ ? this.renderSlider(() => (
{this.$props.rangeLabels.start}
@@ -213,7 +222,7 @@ const RangeSlider = {
{this.$props.rangeLabels.end}
@@ -221,8 +230,8 @@ const RangeSlider = {
)}
-
- ) : null}
+ ))
+ : null}
);
},
diff --git a/packages/vue/src/components/range/RangeSlider.test.jsx b/packages/vue/src/components/range/RangeSlider.test.jsx
new file mode 100644
index 0000000000..cec0725b7c
--- /dev/null
+++ b/packages/vue/src/components/range/RangeSlider.test.jsx
@@ -0,0 +1,143 @@
+import { mount } from '@vue/test-utils';
+import Vue from 'vue';
+import { RangeConnected as RangeSlider } from './RangeSlider.jsx';
+import ReactiveBase from '../ReactiveBase/index.jsx';
+
+Vue.component('vue-slider-component', require('vue-slider-component'));
+
+describe('RangeSlider', () => {
+ it('should render range with slider', () => {
+ const wrapper = mount({
+ name: 'TestComponent',
+ render() {
+ return (
+
+
+
+ );
+ },
+ });
+
+ expect(wrapper.element).toMatchSnapshot();
+ });
+
+ it('should render title', () => {
+ const wrapper = mount({
+ name: 'TestComponent',
+ render() {
+ return (
+
+
+
+ );
+ },
+ });
+
+ expect(wrapper.element).toMatchSnapshot();
+ });
+
+ it('should render range labels', () => {
+ const wrapper = mount({
+ name: 'TestComponent',
+ render() {
+ return (
+
+
+
+ );
+ },
+ });
+
+ expect(wrapper.element).toMatchSnapshot();
+ });
+
+ it('should select default value', () => {
+ const wrapper = mount({
+ name: 'TestComponent',
+ render() {
+ return (
+
+
+
+ );
+ },
+ });
+
+ expect(wrapper.element).toMatchSnapshot();
+ });
+
+ it('should not display tooltip when sliderOptions has tooltip set to false', () => {
+ const wrapper = mount({
+ name: 'TestComponent',
+ render() {
+ return (
+
+
+
+ );
+ },
+ });
+
+ expect(wrapper.element).toMatchSnapshot();
+ });
+});
diff --git a/packages/vue/src/components/range/SingleRange.jsx b/packages/vue/src/components/range/SingleRange.jsx
index 39ae55c818..1fcd42e33d 100644
--- a/packages/vue/src/components/range/SingleRange.jsx
+++ b/packages/vue/src/components/range/SingleRange.jsx
@@ -91,9 +91,9 @@ const SingleRange = {
)}
{this.$props.data.map((item) => {
- const selected =
- !!this.$data.currentValue &&
- this.$data.currentValue.label === item.label;
+ const selected
+ = !!this.$data.currentValue
+ && this.$data.currentValue.label === item.label;
return (
{
const mapStateToProps = (state, props) => ({
selectedValue:
- (state.selectedValues[props.componentId] &&
- state.selectedValues[props.componentId].value) ||
- null,
+ (state.selectedValues[props.componentId]
+ && state.selectedValues[props.componentId].value)
+ || null,
componentProps: state.props[props.componentId],
enableAppbase: state.config.enableAppbase,
});
diff --git a/packages/vue/src/components/range/__snapshots__/DynamicRangeSlider.test.jsx.snap b/packages/vue/src/components/range/__snapshots__/DynamicRangeSlider.test.jsx.snap
new file mode 100644
index 0000000000..a29748f4d5
--- /dev/null
+++ b/packages/vue/src/components/range/__snapshots__/DynamicRangeSlider.test.jsx.snap
@@ -0,0 +1,469 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`DynamicRangeSlider should not display tooltip when sliderOptions has tooltip set to false 1`] = `
+
+
+
+
+
+
+ 30
+
+
+ 2300
+
+
+
+
+
+`;
+
+exports[`DynamicRangeSlider should render range labels 1`] = `
+
+
+
+
+
+
+ 1
+
+
+ 3455
+
+
+
+
+
+`;
+
+exports[`DynamicRangeSlider should render range with slider 1`] = `
+
+`;
+
+exports[`DynamicRangeSlider should render title 1`] = `
+
+`;
+
+exports[`DynamicRangeSlider should select default value 1`] = `
+
+
+
+
+
+
+ 30
+
+
+ 2300
+
+
+
+
+
+`;
diff --git a/packages/vue/src/components/range/__snapshots__/RangeInput.test.jsx.snap b/packages/vue/src/components/range/__snapshots__/RangeInput.test.jsx.snap
new file mode 100644
index 0000000000..132a46580b
--- /dev/null
+++ b/packages/vue/src/components/range/__snapshots__/RangeInput.test.jsx.snap
@@ -0,0 +1,554 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`RangeInput should render range labels 1`] = `
+
+
+
+
+
+
+
+ 2,000
+
+
+ 50,000
+
+
+
+
+
+
+
+`;
+
+exports[`RangeInput should render range with slider 1`] = `
+
+`;
+
+exports[`RangeInput should render title 1`] = `
+
+`;
+
+exports[`RangeInput should select default value 1`] = `
+
+
+
+
+
+
+
+ 3K
+
+
+ 5.5K
+
+
+
+
+
+
+
+`;
diff --git a/packages/vue/src/components/range/__snapshots__/RangeSlider.test.jsx.snap b/packages/vue/src/components/range/__snapshots__/RangeSlider.test.jsx.snap
new file mode 100644
index 0000000000..4b8316e860
--- /dev/null
+++ b/packages/vue/src/components/range/__snapshots__/RangeSlider.test.jsx.snap
@@ -0,0 +1,474 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`RangeSlider should not display tooltip when sliderOptions has tooltip set to false 1`] = `
+
+
+
+
+
+
+ 3K
+
+
+ 5.5K
+
+
+
+
+
+`;
+
+exports[`RangeSlider should render range labels 1`] = `
+
+
+
+
+
+
+ 30K
+
+
+ 50K
+
+
+
+
+
+`;
+
+exports[`RangeSlider should render range with slider 1`] = `
+
+`;
+
+exports[`RangeSlider should render title 1`] = `
+
+`;
+
+exports[`RangeSlider should select default value 1`] = `
+
+
+
+
+
+
+ 3K
+
+
+ 5.5K
+
+
+
+
+
+`;
diff --git a/packages/vue/src/components/result/ReactiveList.test.jsx b/packages/vue/src/components/result/ReactiveList.test.jsx
new file mode 100644
index 0000000000..83b5c3097f
--- /dev/null
+++ b/packages/vue/src/components/result/ReactiveList.test.jsx
@@ -0,0 +1,552 @@
+import { mount } from '@vue/test-utils';
+import Vue from 'vue';
+import { RLConnected as ReactiveList } from './ReactiveList.jsx';
+import ReactiveBase from '../ReactiveBase/index.jsx';
+import ResultCard from './ResultCard.jsx';
+
+const MOCK_HITS_DATA = [
+ {
+ _index: 'good-books-ds',
+ _type: '_doc',
+ _id: '1jftXXEBdEU4aeo6Gdqs',
+ _score: 1,
+ _source: {
+ image: 'https://images.gr-assets.com/books/1455618673l/15997.jpg',
+ average_rating_rounded: 4,
+ books_count: 819,
+ original_title: 'Paradise Lost',
+ image_medium: 'https://images.gr-assets.com/books/1455618673m/15997.jpg',
+ isbn: '140424393',
+ average_rating: 3.8,
+ original_publication_year: 1667,
+ title: 'Paradise Lost',
+ language_code: 'eng',
+ id: 984,
+ ratings_count: 96316,
+ original_series: '',
+ authors: 'John Milton, John Leonard',
+ },
+ },
+ {
+ _index: 'good-books-ds',
+ _type: '_doc',
+ _id: '1zftXXEBdEU4aeo6Gdqs',
+ _score: 1,
+ _source: {
+ image: 'https://s.gr-assets.com/assets/nophoto/book/111x148-bcc042a9c91a29c1d680899eff700a03.png',
+ average_rating_rounded: 4,
+ books_count: 35,
+ original_title: 'Antigone',
+ image_medium:
+ 'https://s.gr-assets.com/assets/nophoto/book/111x148-bcc042a9c91a29c1d680899eff700a03.png',
+ isbn: '041330860X',
+ average_rating: 3.8,
+ original_publication_year: 1944,
+ title: 'Antigone',
+ language_code: '',
+ id: 9839,
+ ratings_count: 10449,
+ original_series: '',
+ authors: 'Jean Anouilh',
+ },
+ },
+ {
+ _index: 'good-books-ds',
+ _type: '_doc',
+ _id: '2DftXXEBdEU4aeo6Gdqs',
+ _score: 1,
+ _source: {
+ image: 'https://s.gr-assets.com/assets/nophoto/book/111x148-bcc042a9c91a29c1d680899eff700a03.png',
+ average_rating_rounded: 4,
+ books_count: 5,
+ original_title:
+ 'The Chronicles of Narnia - The Lion, the Witch, and the Wardrobe Official Illustrated Movie Companion',
+ image_medium:
+ 'https://s.gr-assets.com/assets/nophoto/book/111x148-bcc042a9c91a29c1d680899eff700a03.png',
+ isbn: '60827874',
+ average_rating: 4.48,
+ original_publication_year: 2005,
+ title: 'The Chronicles of Narnia - The Lion, the Witch, and the Wardrobe Official Illustrated Movie Companion',
+ language_code: 'en-US',
+ id: 9838,
+ ratings_count: 7328,
+ original_series: '',
+ authors: 'Perry Moore, Andrew Adamson, C.S. Lewis',
+ },
+ },
+ {
+ _index: 'good-books-ds',
+ _type: '_doc',
+ _id: '2TftXXEBdEU4aeo6Gdqs',
+ _score: 1,
+ _source: {
+ image: 'https://images.gr-assets.com/books/1373059909l/18079719.jpg',
+ average_rating_rounded: 4,
+ books_count: 24,
+ original_title: 'Grasshopper Jungle',
+ image_medium: 'https://images.gr-assets.com/books/1373059909m/18079719.jpg',
+ isbn: '525426035',
+ average_rating: 3.66,
+ original_publication_year: 2014,
+ title: 'Grasshopper Jungle',
+ language_code: 'eng',
+ id: 9837,
+ ratings_count: 11890,
+ original_series: '',
+ authors: 'Andrew Smith',
+ },
+ },
+ {
+ _index: 'good-books-ds',
+ _type: '_doc',
+ _id: '2jftXXEBdEU4aeo6Gdqs',
+ _score: 1,
+ _source: {
+ image: 'https://images.gr-assets.com/books/1367533032l/72855.jpg',
+ average_rating_rounded: 4,
+ books_count: 21,
+ original_title: 'Lake in the Clouds',
+ image_medium: 'https://images.gr-assets.com/books/1367533032m/72855.jpg',
+ isbn: '553582798',
+ average_rating: 4.31,
+ original_publication_year: 2002,
+ title: 'Lake in the Clouds (Wilderness, #3)',
+ language_code: 'eng',
+ id: 9835,
+ ratings_count: 9223,
+ original_series: 'Wilderness',
+ authors: 'Sara Donati',
+ },
+ },
+];
+
+const ListItem = {
+ name: 'ListItem',
+ props: {
+ item: Object,
+ },
+ render() {
+ const data = this.$props.item;
+ return (
+
+
+
+
+ {data.original_title}
+
+
+
+
+ by {data.authors}
+
+
+
+ {
+ Array(data.average_rating_rounded)
+ .fill('x')
+ // eslint-disable-next-line
+ .map((_, index) => (
+ // eslint-disable-next-line
+
+ ⭐
+
+ )) // eslint-disable-line
+ }
+
+
+ ({data.average_rating} avg)
+
+
+
+
Pub {data.original_publication_year}
+
+
+
+ );
+ },
+};
+
+const BooksCard = {
+ name: 'BooksCard',
+ props: {
+ item: Object,
+ },
+ render() {
+ const { item } = this.$props;
+ return (
+
+
+
+
+
+
+
+
+
+ by {item.authors}
+
+
+
+ {Array(item.average_rating_rounded)
+ .fill('x')
+ .map((_, index) => (
+ // eslint-disable-next-line
+
+ ))}
+
+ ({item.average_rating} avg)
+
+
+
Pub {item.original_publication_year}
+
+
+
+ );
+ },
+};
+
+describe('ReactiveList', () => {
+ it('should render items in a list layout', () => {
+ const wrapper = mount({
+ name: 'TestComponent',
+ render() {
+ return (
+
+ }
+ mockData={{ hits: MOCK_HITS_DATA }}
+ />
+
+ );
+ },
+ });
+
+ expect(wrapper.element).toMatchSnapshot();
+ });
+
+ it('should render items in a card layout', () => {
+ const wrapper = mount({
+ name: 'TestComponent',
+ render() {
+ return (
+
+ (
+
+ {props.data.map((item) => (
+
+ ))}
+
+ )}
+ mockData={{ hits: MOCK_HITS_DATA }}
+ />
+
+ );
+ },
+ });
+
+ expect(wrapper.element).toMatchSnapshot();
+ });
+
+ it('should render no results message', () => {
+ const wrapper = mount({
+ name: 'TestComponent',
+ render() {
+ return (
+
+ (
+
+ {props.data.map((item) => (
+
+ ))}
+
+ )}
+ mockData={{ hits: [] }}
+ renderNoResults="Test: No results rendered!"
+ />
+
+ );
+ },
+ });
+
+ expect(wrapper.element).toMatchSnapshot();
+ });
+
+ it('should render pagination when set to true', () => {
+ const wrapper = mount({
+ name: 'TestComponent',
+ render() {
+ return (
+
+ (
+
+ {props.data.map((item) => (
+
+ ))}
+
+ )}
+ mockData={{ hits: MOCK_HITS_DATA, total: 9418 }}
+ pagination={true}
+ />
+
+ );
+ },
+ });
+
+ expect(wrapper.element).toMatchSnapshot();
+ });
+
+ it('should render pagination at top', () => {
+ const wrapper = mount({
+ name: 'TestComponent',
+ render() {
+ return (
+
+ (
+
+ {props.data.map((item) => (
+
+ ))}
+
+ )}
+ mockData={{ hits: MOCK_HITS_DATA, total: 9418 }}
+ pagination={true}
+ paginationAt="top"
+ />
+
+ );
+ },
+ });
+
+ expect(wrapper.element).toMatchSnapshot();
+ });
+
+ it('should render pagination at bottom', () => {
+ const wrapper = mount({
+ name: 'TestComponent',
+ render() {
+ return (
+
+ (
+
+ {props.data.map((item) => (
+
+ ))}
+
+ )}
+ mockData={{ hits: MOCK_HITS_DATA, total: 9418 }}
+ pagination={true}
+ paginationAt="bottom"
+ />
+
+ );
+ },
+ });
+
+ expect(wrapper.element).toMatchSnapshot();
+ });
+
+ it('should render pagination at both ends', () => {
+ const wrapper = mount({
+ name: 'TestComponent',
+ render() {
+ return (
+
+ (
+
+ {props.data.map((item) => (
+
+ ))}
+
+ )}
+ mockData={{ hits: MOCK_HITS_DATA, total: 9418 }}
+ pagination={true}
+ paginationAt="both"
+ />
+
+ );
+ },
+ });
+
+ expect(wrapper.element).toMatchSnapshot();
+ });
+
+ it('should render items as defined in renderItem', () => {
+ const wrapper = mount({
+ name: 'TestComponent',
+ render() {
+ return (
+
+ }
+ mockData={{ hits: MOCK_HITS_DATA }}
+ />
+
+ );
+ },
+ });
+
+ expect(wrapper.element).toMatchSnapshot();
+ });
+
+ it('should display result stats when showResultStats is set to true', () => {
+ const wrapper = mount({
+ name: 'TestComponent',
+ render() {
+ return (
+
+ }
+ mockData={{ hits: MOCK_HITS_DATA, total: 9418 }}
+ showResultStats={true}
+ />
+
+ );
+ },
+ });
+
+ expect(wrapper.element).toMatchSnapshot();
+ });
+
+ it('should display result stats when showResultStats is set to false', () => {
+ const wrapper = mount({
+ name: 'TestComponent',
+ render() {
+ return (
+
+ }
+ mockData={{ hits: MOCK_HITS_DATA, total: 9418 }}
+ showResultStats={false}
+ />
+
+ );
+ },
+ });
+
+ expect(wrapper.element).toMatchSnapshot();
+ });
+
+ it('should render custom result stats message', () => {
+ const wrapper = mount({
+ name: 'TestComponent',
+ render() {
+ return (
+
+ }
+ mockData={{ hits: MOCK_HITS_DATA, total: 9418, time: 2.5 }}
+ showResultStats={true}
+ renderResultStats={({ numberOfResults, time, displayedResults }) =>
+ `Custom: Showing ${displayedResults} of total ${numberOfResults} in ${time} ms`
+ }
+ />
+
+ );
+ },
+ });
+
+ expect(wrapper.element).toMatchSnapshot();
+ });
+});
diff --git a/packages/vue/src/components/result/__snapshots__/ReactiveList.test.jsx.snap b/packages/vue/src/components/result/__snapshots__/ReactiveList.test.jsx.snap
new file mode 100644
index 0000000000..c32f973446
--- /dev/null
+++ b/packages/vue/src/components/result/__snapshots__/ReactiveList.test.jsx.snap
@@ -0,0 +1,3900 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`ReactiveList should display result stats when showResultStats is set to false 1`] = `
+
+
+
+
+
+
+
+
+ Paradise Lost
+
+
+
+
+ by
+
+ John Milton, John Leonard
+
+
+
+
+
+ ⭐
+
+
+ ⭐
+
+
+ ⭐
+
+
+ ⭐
+
+
+
+ (3.8 avg)
+
+
+
+
+ Pub 1667
+
+
+
+
+
+
+
+
+ Antigone
+
+
+
+
+ by
+
+ Jean Anouilh
+
+
+
+
+
+ ⭐
+
+
+ ⭐
+
+
+ ⭐
+
+
+ ⭐
+
+
+
+ (3.8 avg)
+
+
+
+
+ Pub 1944
+
+
+
+
+
+
+
+
+ The Chronicles of Narnia - The Lion, the Witch, and the Wardrobe Official Illustrated Movie Companion
+
+
+
+
+ by
+
+ Perry Moore, Andrew Adamson, C.S. Lewis
+
+
+
+
+
+ ⭐
+
+
+ ⭐
+
+
+ ⭐
+
+
+ ⭐
+
+
+
+ (4.48 avg)
+
+
+
+
+ Pub 2005
+
+
+
+
+
+
+
+
+ Grasshopper Jungle
+
+
+
+
+ by
+
+ Andrew Smith
+
+
+
+
+
+ ⭐
+
+
+ ⭐
+
+
+ ⭐
+
+
+ ⭐
+
+
+
+ (3.66 avg)
+
+
+
+
+ Pub 2014
+
+
+
+
+
+
+
+
+ Lake in the Clouds
+
+
+
+
+ by
+
+ Sara Donati
+
+
+
+
+
+ ⭐
+
+
+ ⭐
+
+
+ ⭐
+
+
+ ⭐
+
+
+
+ (4.31 avg)
+
+
+
+
+ Pub 2002
+
+
+
+
+
+
+
+`;
+
+exports[`ReactiveList should display result stats when showResultStats is set to true 1`] = `
+
+
+
+
+ 9418 results found in 0ms
+
+
+
+
+
+
+
+ Paradise Lost
+
+
+
+
+ by
+
+ John Milton, John Leonard
+
+
+
+
+
+ ⭐
+
+
+ ⭐
+
+
+ ⭐
+
+
+ ⭐
+
+
+
+ (3.8 avg)
+
+
+
+
+ Pub 1667
+
+
+
+
+
+
+
+
+ Antigone
+
+
+
+
+ by
+
+ Jean Anouilh
+
+
+
+
+
+ ⭐
+
+
+ ⭐
+
+
+ ⭐
+
+
+ ⭐
+
+
+
+ (3.8 avg)
+
+
+
+
+ Pub 1944
+
+
+
+
+
+
+
+
+ The Chronicles of Narnia - The Lion, the Witch, and the Wardrobe Official Illustrated Movie Companion
+
+
+
+
+ by
+
+ Perry Moore, Andrew Adamson, C.S. Lewis
+
+
+
+
+
+ ⭐
+
+
+ ⭐
+
+
+ ⭐
+
+
+ ⭐
+
+
+
+ (4.48 avg)
+
+
+
+
+ Pub 2005
+
+
+
+
+
+
+
+
+ Grasshopper Jungle
+
+
+
+
+ by
+
+ Andrew Smith
+
+
+
+
+
+ ⭐
+
+
+ ⭐
+
+
+ ⭐
+
+
+ ⭐
+
+
+
+ (3.66 avg)
+
+
+
+
+ Pub 2014
+
+
+
+
+
+
+
+
+ Lake in the Clouds
+
+
+
+
+ by
+
+ Sara Donati
+
+
+
+
+
+ ⭐
+
+
+ ⭐
+
+
+ ⭐
+
+
+ ⭐
+
+
+
+ (4.31 avg)
+
+
+
+
+ Pub 2002
+
+
+
+
+
+
+
+`;
+
+exports[`ReactiveList should render custom result stats message 1`] = `
+
+
+
+ Custom: Showing 5 of total 9418 in 2.5 ms
+
+
+
+
+
+
+ Paradise Lost
+
+
+
+
+ by
+
+ John Milton, John Leonard
+
+
+
+
+
+ ⭐
+
+
+ ⭐
+
+
+ ⭐
+
+
+ ⭐
+
+
+
+ (3.8 avg)
+
+
+
+
+ Pub 1667
+
+
+
+
+
+
+
+
+ Antigone
+
+
+
+
+ by
+
+ Jean Anouilh
+
+
+
+
+
+ ⭐
+
+
+ ⭐
+
+
+ ⭐
+
+
+ ⭐
+
+
+
+ (3.8 avg)
+
+
+
+
+ Pub 1944
+
+
+
+
+
+
+
+
+ The Chronicles of Narnia - The Lion, the Witch, and the Wardrobe Official Illustrated Movie Companion
+
+
+
+
+ by
+
+ Perry Moore, Andrew Adamson, C.S. Lewis
+
+
+
+
+
+ ⭐
+
+
+ ⭐
+
+
+ ⭐
+
+
+ ⭐
+
+
+
+ (4.48 avg)
+
+
+
+
+ Pub 2005
+
+
+
+
+
+
+
+
+ Grasshopper Jungle
+
+
+
+
+ by
+
+ Andrew Smith
+
+
+
+
+
+ ⭐
+
+
+ ⭐
+
+
+ ⭐
+
+
+ ⭐
+
+
+
+ (3.66 avg)
+
+
+
+
+ Pub 2014
+
+
+
+
+
+
+
+
+ Lake in the Clouds
+
+
+
+
+ by
+
+ Sara Donati
+
+
+
+
+
+ ⭐
+
+
+ ⭐
+
+
+ ⭐
+
+
+ ⭐
+
+
+
+ (4.31 avg)
+
+
+
+
+ Pub 2002
+
+
+
+
+
+
+
+`;
+
+exports[`ReactiveList should render items as defined in renderItem 1`] = `
+
+
+
+
+
+
+
+
+ Paradise Lost
+
+
+
+
+ by
+
+ John Milton, John Leonard
+
+
+
+
+
+ ⭐
+
+
+ ⭐
+
+
+ ⭐
+
+
+ ⭐
+
+
+
+ (3.8 avg)
+
+
+
+
+ Pub 1667
+
+
+
+
+
+
+
+
+ Antigone
+
+
+
+
+ by
+
+ Jean Anouilh
+
+
+
+
+
+ ⭐
+
+
+ ⭐
+
+
+ ⭐
+
+
+ ⭐
+
+
+
+ (3.8 avg)
+
+
+
+
+ Pub 1944
+
+
+
+
+
+
+
+
+ The Chronicles of Narnia - The Lion, the Witch, and the Wardrobe Official Illustrated Movie Companion
+
+
+
+
+ by
+
+ Perry Moore, Andrew Adamson, C.S. Lewis
+
+
+
+
+
+ ⭐
+
+
+ ⭐
+
+
+ ⭐
+
+
+ ⭐
+
+
+
+ (4.48 avg)
+
+
+
+
+ Pub 2005
+
+
+
+
+
+
+
+
+ Grasshopper Jungle
+
+
+
+
+ by
+
+ Andrew Smith
+
+
+
+
+
+ ⭐
+
+
+ ⭐
+
+
+ ⭐
+
+
+ ⭐
+
+
+
+ (3.66 avg)
+
+
+
+
+ Pub 2014
+
+
+
+
+
+
+
+
+ Lake in the Clouds
+
+
+
+
+ by
+
+ Sara Donati
+
+
+
+
+
+ ⭐
+
+
+ ⭐
+
+
+ ⭐
+
+
+ ⭐
+
+
+
+ (4.31 avg)
+
+
+
+
+ Pub 2002
+
+
+
+
+
+
+
+`;
+
+exports[`ReactiveList should render items in a card layout 1`] = `
+
+`;
+
+exports[`ReactiveList should render items in a list layout 1`] = `
+
+
+
+
+
+
+
+
+ Paradise Lost
+
+
+
+
+ by
+
+ John Milton, John Leonard
+
+
+
+
+
+ ⭐
+
+
+ ⭐
+
+
+ ⭐
+
+
+ ⭐
+
+
+
+ (3.8 avg)
+
+
+
+
+ Pub 1667
+
+
+
+
+
+
+
+
+ Antigone
+
+
+
+
+ by
+
+ Jean Anouilh
+
+
+
+
+
+ ⭐
+
+
+ ⭐
+
+
+ ⭐
+
+
+ ⭐
+
+
+
+ (3.8 avg)
+
+
+
+
+ Pub 1944
+
+
+
+
+
+
+
+
+ The Chronicles of Narnia - The Lion, the Witch, and the Wardrobe Official Illustrated Movie Companion
+
+
+
+
+ by
+
+ Perry Moore, Andrew Adamson, C.S. Lewis
+
+
+
+
+
+ ⭐
+
+
+ ⭐
+
+
+ ⭐
+
+
+ ⭐
+
+
+
+ (4.48 avg)
+
+
+
+
+ Pub 2005
+
+
+
+
+
+
+
+
+ Grasshopper Jungle
+
+
+
+
+ by
+
+ Andrew Smith
+
+
+
+
+
+ ⭐
+
+
+ ⭐
+
+
+ ⭐
+
+
+ ⭐
+
+
+
+ (3.66 avg)
+
+
+
+
+ Pub 2014
+
+
+
+
+
+
+
+
+ Lake in the Clouds
+
+
+
+
+ by
+
+ Sara Donati
+
+
+
+
+
+ ⭐
+
+
+ ⭐
+
+
+ ⭐
+
+
+ ⭐
+
+
+
+ (4.31 avg)
+
+
+
+
+ Pub 2002
+
+
+
+
+
+
+
+`;
+
+exports[`ReactiveList should render no results message 1`] = `
+
+
+
+
+ Test: No results rendered!
+
+
+
+
+`;
+
+exports[`ReactiveList should render pagination at both ends 1`] = `
+
+
+
+
+ 9418 results found in 0ms
+
+
+
+
+
+
+
+`;
+
+exports[`ReactiveList should render pagination at bottom 1`] = `
+
+
+
+
+ 9418 results found in 0ms
+
+
+
+
+
+
+`;
+
+exports[`ReactiveList should render pagination at top 1`] = `
+
+
+
+
+ 9418 results found in 0ms
+
+
+
+
+
+
+`;
+
+exports[`ReactiveList should render pagination when set to true 1`] = `
+
+
+
+
+ 9418 results found in 0ms
+
+
+
+
+
+
+`;
diff --git a/packages/vue/src/components/shared/DropDown.jsx b/packages/vue/src/components/shared/DropDown.jsx
index 0a084392e7..7a459de706 100644
--- a/packages/vue/src/components/shared/DropDown.jsx
+++ b/packages/vue/src/components/shared/DropDown.jsx
@@ -16,7 +16,7 @@ const { getClassName } = helper;
const Dropdown = {
data() {
this.__state = {
- isOpen: false,
+ isOpen: this.$props.open,
searchTerm: '',
};
return this.__state;
@@ -49,6 +49,7 @@ const Dropdown = {
showSearch: VueTypes.bool,
showClear: VueTypes.bool,
searchPlaceholder: VueTypes.string.def('Type here to search...'),
+ open: VueTypes.bool.def(false),
},
render() {
diff --git a/packages/vue/src/utils/index.js b/packages/vue/src/utils/index.js
index 6de528e44c..59d3be9b4e 100644
--- a/packages/vue/src/utils/index.js
+++ b/packages/vue/src/utils/index.js
@@ -60,7 +60,9 @@ export function parseValueArray(objectValues, currentValue) {
* @param _ref
*/
export const getComponent = (data = {}, _ref = {}) => {
- const { render } = _ref.$scopedSlots || _ref.$props;
+ const { render: renderScope } = _ref.$scopedSlots || {};
+ const { render: renderProp } = _ref.$props || {};
+ const render = renderScope || renderProp;
if (render) return render(data);
return null;
};
@@ -69,8 +71,9 @@ export const getComponent = (data = {}, _ref = {}) => {
* @returns {Boolean}
*/
export const hasCustomRenderer = (_ref = {}) => {
- const { render } = _ref.$scopedSlots || _ref.$props;
- return Boolean(render);
+ const { render: renderScope } = _ref.$scopedSlots || {};
+ const { render: renderProp } = _ref.$props || {};
+ return Boolean(renderScope || renderProp);
};
export const getValidPropsKeys = (props = {}) =>
diff --git a/yarn.lock b/yarn.lock
index 97327bd9cd..53e7103e9f 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -208,7 +208,7 @@
semver "^5.4.1"
source-map "^0.5.0"
-"@babel/core@^7.0.0", "@babel/core@^7.1.0", "@babel/core@^7.1.6", "@babel/core@^7.11.0", "@babel/core@^7.14.0", "@babel/core@^7.14.6", "@babel/core@^7.15.5", "@babel/core@^7.4.5", "@babel/core@^7.7.5", "@babel/core@^7.9.0":
+"@babel/core@^7.0.0", "@babel/core@^7.1.0", "@babel/core@^7.1.6", "@babel/core@^7.11.0", "@babel/core@^7.14.0", "@babel/core@^7.15.5", "@babel/core@^7.4.5", "@babel/core@^7.9.0":
version "7.17.8"
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.8.tgz#3dac27c190ebc3a4381110d46c80e77efe172e1a"
integrity sha512-OdQDV/7cRBtJHLSOBqqbYNkOcydOgnX59TZx4puf41fzcVtN3e/4yqY8lMQsK+5X2lJtAdmA+6OHqsj1hBJ4IQ==
@@ -229,6 +229,27 @@
json5 "^2.1.2"
semver "^6.3.0"
+"@babel/core@^7.14.6", "@babel/core@^7.7.5":
+ version "7.16.12"
+ resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.16.12.tgz#5edc53c1b71e54881315923ae2aedea2522bb784"
+ integrity sha512-dK5PtG1uiN2ikk++5OzSYsitZKny4wOCD0nrO4TqnW4BVBTQ2NGS3NgilvT/TEyxTST7LNyWV/T4tXDoD3fOgg==
+ dependencies:
+ "@babel/code-frame" "^7.16.7"
+ "@babel/generator" "^7.16.8"
+ "@babel/helper-compilation-targets" "^7.16.7"
+ "@babel/helper-module-transforms" "^7.16.7"
+ "@babel/helpers" "^7.16.7"
+ "@babel/parser" "^7.16.12"
+ "@babel/template" "^7.16.7"
+ "@babel/traverse" "^7.16.10"
+ "@babel/types" "^7.16.8"
+ convert-source-map "^1.7.0"
+ debug "^4.1.0"
+ gensync "^1.0.0-beta.2"
+ json5 "^2.1.2"
+ semver "^6.3.0"
+ source-map "^0.5.0"
+
"@babel/eslint-parser@^7.15.4":
version "7.17.0"
resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.17.0.tgz#eabb24ad9f0afa80e5849f8240d0e5facc2d90d6"
@@ -297,12 +318,12 @@
"@babel/helper-split-export-declaration" "^7.16.7"
"@babel/helper-create-regexp-features-plugin@^7.16.7":
- version "7.17.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.0.tgz#1dcc7d40ba0c6b6b25618997c5dbfd310f186fe1"
- integrity sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA==
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.7.tgz#0cb82b9bac358eb73bfbd73985a776bfa6b14d48"
+ integrity sha512-fk5A6ymfp+O5+p2yCkXAu5Kyj6v0xh0RBeNcAkYUMDvvAAoxvSKXn+Jb37t/yWFiQVDFK1ELpUTD8/aLhCPu+g==
dependencies:
"@babel/helper-annotate-as-pure" "^7.16.7"
- regexpu-core "^5.0.1"
+ regexpu-core "^4.7.1"
"@babel/helper-define-map@^7.4.0":
version "7.16.7"
@@ -380,11 +401,11 @@
"@babel/types" "^7.16.7"
"@babel/helper-member-expression-to-functions@^7.16.7":
- version "7.17.7"
- resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz#a34013b57d8542a8c4ff8ba3f747c02452a4d8c4"
- integrity sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.7.tgz#42b9ca4b2b200123c3b7e726b0ae5153924905b0"
+ integrity sha512-VtJ/65tYiU/6AbMTDwyoXGPKHgTsfRarivm+YbB5uAzKUyuPjgZSgAFeG87FCigc7KNHu2Pegh1XIT3lXjvz3Q==
dependencies:
- "@babel/types" "^7.17.0"
+ "@babel/types" "^7.16.7"
"@babel/helper-module-imports@7.0.0-beta.32":
version "7.0.0-beta.32"
@@ -447,6 +468,13 @@
"@babel/traverse" "^7.16.7"
"@babel/types" "^7.16.7"
+"@babel/helper-simple-access@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz#d656654b9ea08dbb9659b69d61063ccd343ff0f7"
+ integrity sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g==
+ dependencies:
+ "@babel/types" "^7.16.7"
+
"@babel/helper-simple-access@^7.17.7":
version "7.17.7"
resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz#aaa473de92b7987c6dfa7ce9a7d9674724823367"
@@ -495,6 +523,15 @@
"@babel/traverse" "^7.16.8"
"@babel/types" "^7.16.8"
+"@babel/helpers@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.16.7.tgz#7e3504d708d50344112767c3542fc5e357fffefc"
+ integrity sha512-9ZDoqtfY7AuEOt3cxchfii6C7GDyyMBffktR5B2jvWv8u2+efwvpnVKXMWzNehqy68tKgAfSwfdw/lWpthS2bw==
+ dependencies:
+ "@babel/template" "^7.16.7"
+ "@babel/traverse" "^7.16.7"
+ "@babel/types" "^7.16.7"
+
"@babel/helpers@^7.17.8", "@babel/helpers@^7.4.3":
version "7.17.8"
resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.17.8.tgz#288450be8c6ac7e4e44df37bcc53d345e07bc106"
@@ -527,6 +564,11 @@
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.8.tgz#2817fb9d885dd8132ea0f8eb615a6388cca1c240"
integrity sha512-BoHhDJrJXqcg+ZL16Xv39H9n+AqJ4pcDrQBGZN+wHxIysrLZ3/ECwCBUch/1zUNhnsXULcONU3Ei5Hmkfk6kiQ==
+"@babel/parser@^7.16.10", "@babel/parser@^7.16.12":
+ version "7.16.12"
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.16.12.tgz#9474794f9a650cf5e2f892444227f98e28cdf8b6"
+ integrity sha512-VfaV15po8RiZssrkPweyvbGVSe4x2y+aciFCgn0n0/SJMR22cwofRV1mtnJQYcSB1wUTaA/X1LnA3es66MCO5A==
+
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.16.7":
version "7.16.7"
resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz#4eda6d6c2a0aa79c70fa7b6da67763dfe2141050"
@@ -576,11 +618,11 @@
"@babel/helper-plugin-utils" "^7.16.7"
"@babel/plugin-proposal-class-static-block@^7.16.7":
- version "7.17.6"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.17.6.tgz#164e8fd25f0d80fa48c5a4d1438a6629325ad83c"
- integrity sha512-X/tididvL2zbs7jZCeeRJ8167U/+Ac135AM6jCAx6gYXDUviZV5Ku9UDvWS2NCuWlFjIRXklYhwo6HhAC7ETnA==
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.7.tgz#712357570b612106ef5426d13dc433ce0f200c2a"
+ integrity sha512-dgqJJrcZoG/4CkMopzhPJjGxsIe9A8RlkQLnL/Vhhx8AA9ZuaRwGSlscSh42hazc7WSrya/IK7mTeoF0DP9tEw==
dependencies:
- "@babel/helper-create-class-features-plugin" "^7.17.6"
+ "@babel/helper-create-class-features-plugin" "^7.16.7"
"@babel/helper-plugin-utils" "^7.16.7"
"@babel/plugin-syntax-class-static-block" "^7.14.5"
@@ -1036,6 +1078,16 @@
"@babel/helper-simple-access" "^7.17.7"
babel-plugin-dynamic-import-node "^2.3.3"
+"@babel/plugin-transform-modules-commonjs@^7.9.6":
+ version "7.16.8"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.8.tgz#cdee19aae887b16b9d331009aa9a219af7c86afe"
+ integrity sha512-oflKPvsLT2+uKQopesJt3ApiaIS2HW+hzHFcwRNtyDGieAeC/dIHZX8buJQ2J2X1rxGPy4eRcUijm3qcSPjYcA==
+ dependencies:
+ "@babel/helper-module-transforms" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/helper-simple-access" "^7.16.7"
+ babel-plugin-dynamic-import-node "^2.3.3"
+
"@babel/plugin-transform-modules-systemjs@^7.16.7", "@babel/plugin-transform-modules-systemjs@^7.3.4", "@babel/plugin-transform-modules-systemjs@^7.4.0":
version "7.17.8"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.17.8.tgz#81fd834024fae14ea78fbe34168b042f38703859"
@@ -1106,13 +1158,20 @@
"@babel/helper-annotate-as-pure" "^7.0.0"
"@babel/helper-plugin-utils" "^7.0.0"
-"@babel/plugin-transform-react-constant-elements@^7.0.0", "@babel/plugin-transform-react-constant-elements@^7.2.0", "@babel/plugin-transform-react-constant-elements@^7.6.3":
+"@babel/plugin-transform-react-constant-elements@^7.0.0":
version "7.17.6"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.17.6.tgz#6cc273c2f612a6a50cb657e63ee1303e5e68d10a"
integrity sha512-OBv9VkyyKtsHZiHLoSfCn+h6yU7YKX8nrs32xUmOa1SRSk+t03FosB6fBZ0Yz4BpD1WV7l73Nsad+2Tz7APpqw==
dependencies:
"@babel/helper-plugin-utils" "^7.16.7"
+"@babel/plugin-transform-react-constant-elements@^7.2.0", "@babel/plugin-transform-react-constant-elements@^7.6.3":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.16.7.tgz#19e9e4c2df2f6c3e6b3aea11778297d81db8df62"
+ integrity sha512-lF+cfsyTgwWkcw715J88JhMYJ5GpysYNLhLP1PkvkhTRN7B3e74R/1KsDxFxhRpSn0UUD3IWM4GvdBR2PEbbQQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+
"@babel/plugin-transform-react-display-name@7.2.0":
version "7.2.0"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.2.0.tgz#ebfaed87834ce8dc4279609a4f0c324c156e3eb0"
@@ -1607,7 +1666,7 @@
invariant "^2.2.0"
lodash "^4.2.0"
-"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.1.6", "@babel/traverse@^7.13.0", "@babel/traverse@^7.15.4", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8", "@babel/traverse@^7.17.3", "@babel/traverse@^7.4.3", "@babel/traverse@^7.7.0", "@babel/traverse@^7.7.4":
+"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.13.0", "@babel/traverse@^7.15.4", "@babel/traverse@^7.17.3", "@babel/traverse@^7.4.3", "@babel/traverse@^7.7.0", "@babel/traverse@^7.7.4":
version "7.17.3"
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.3.tgz#0ae0f15b27d9a92ba1f2263358ea7c4e7db47b57"
integrity sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==
@@ -1623,6 +1682,22 @@
debug "^4.1.0"
globals "^11.1.0"
+"@babel/traverse@^7.1.6", "@babel/traverse@^7.16.10", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8":
+ version "7.16.10"
+ resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.16.10.tgz#448f940defbe95b5a8029975b051f75993e8239f"
+ integrity sha512-yzuaYXoRJBGMlBhsMJoUW7G1UmSb/eXr/JHYM/MsOJgavJibLwASijW7oXBdw3NQ6T0bW7Ty5P/VarOs9cHmqw==
+ dependencies:
+ "@babel/code-frame" "^7.16.7"
+ "@babel/generator" "^7.16.8"
+ "@babel/helper-environment-visitor" "^7.16.7"
+ "@babel/helper-function-name" "^7.16.7"
+ "@babel/helper-hoist-variables" "^7.16.7"
+ "@babel/helper-split-export-declaration" "^7.16.7"
+ "@babel/parser" "^7.16.10"
+ "@babel/types" "^7.16.8"
+ debug "^4.1.0"
+ globals "^11.1.0"
+
"@babel/types@7.0.0-beta.32":
version "7.0.0-beta.32"
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.0.0-beta.32.tgz#c317d0ecc89297b80bbcb2f50608e31f6452a5ff"
@@ -1641,7 +1716,7 @@
lodash "^4.2.0"
to-fast-properties "^2.0.0"
-"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.15.4", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.2.0", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.4.4", "@babel/types@^7.7.0":
+"@babel/types@^7.0.0", "@babel/types@^7.15.4", "@babel/types@^7.16.0", "@babel/types@^7.17.0", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.4.4", "@babel/types@^7.7.0":
version "7.17.0"
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.17.0.tgz#a826e368bccb6b3d84acd76acad5c0d87342390b"
integrity sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==
@@ -1649,6 +1724,14 @@
"@babel/helper-validator-identifier" "^7.16.7"
to-fast-properties "^2.0.0"
+"@babel/types@^7.0.0-beta.49", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.2.0":
+ version "7.16.8"
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.16.8.tgz#0ba5da91dd71e0a4e7781a30f22770831062e3c1"
+ integrity sha512-smN2DQc5s4M7fntyjGtyIPbRJv6wW4rU/94fmYJ7PKQuZkC0qGMHXJbg6sNGt12JmVr4k5YaptI/XtiLJBnmIg==
+ dependencies:
+ "@babel/helper-validator-identifier" "^7.16.7"
+ to-fast-properties "^2.0.0"
+
"@base2/pretty-print-object@1.0.1":
version "1.0.1"
resolved "https://registry.yarnpkg.com/@base2/pretty-print-object/-/pretty-print-object-1.0.1.tgz#371ba8be66d556812dc7fb169ebc3c08378f69d4"
@@ -1901,6 +1984,17 @@
specificity "^0.4.1"
stylis "4.0.13"
+"@emotion/jest@^11.9.0":
+ version "11.9.0"
+ resolved "https://registry.yarnpkg.com/@emotion/jest/-/jest-11.9.0.tgz#3ab2494d1b4ac63f4b61a2bb14db36d96f7ecd58"
+ integrity sha512-DgmKVpciuv2tyZiRKe7uU3Rs0djpJExTRmcjxjSPAI6zuxmpbWZMDcjazdNnAD3e8HPWG2KZy3svumFw6N283g==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+ "@emotion/css-prettifier" "^1.0.1"
+ chalk "^4.1.0"
+ specificity "^0.4.1"
+ stylis "4.0.13"
+
"@emotion/memoize@0.7.4":
version "0.7.4"
resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.4.tgz#19bf0f5af19149111c40d98bb0cf82119f5d9eeb"
@@ -2381,7 +2475,7 @@
slash "^2.0.0"
strip-ansi "^5.0.0"
-"@jest/environment@^24.9.0":
+"@jest/environment@^24.3.0", "@jest/environment@^24.9.0":
version "24.9.0"
resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-24.9.0.tgz#21e3afa2d65c0586cbd6cbefe208bafade44ab18"
integrity sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ==
@@ -2391,7 +2485,7 @@
"@jest/types" "^24.9.0"
jest-mock "^24.9.0"
-"@jest/fake-timers@^24.9.0":
+"@jest/fake-timers@^24.3.0", "@jest/fake-timers@^24.9.0":
version "24.9.0"
resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-24.9.0.tgz#ba3e6bf0eecd09a636049896434d306636540c93"
integrity sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A==
@@ -2477,7 +2571,7 @@
source-map "^0.6.1"
write-file-atomic "2.4.1"
-"@jest/types@^24.7.0", "@jest/types@^24.9.0":
+"@jest/types@^24.3.0", "@jest/types@^24.7.0", "@jest/types@^24.9.0":
version "24.9.0"
resolved "https://registry.yarnpkg.com/@jest/types/-/types-24.9.0.tgz#63cb26cb7500d069e5a389441a7c6ab5e909fc59"
integrity sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==
@@ -5143,6 +5237,13 @@
dependencies:
"@types/jest-diff" "*"
+"@types/jest@^24.0.19":
+ version "24.9.1"
+ resolved "https://registry.yarnpkg.com/@types/jest/-/jest-24.9.1.tgz#02baf9573c78f1b9974a5f36778b366aa77bd534"
+ integrity sha512-Fb38HkXSVA4L8fGKEZ6le5bB8r6MRWlOCZbVuWZcmOMSCd2wCYOwN1ibj8daIoV9naq7aaOZjrLCoCMptKU/4Q==
+ dependencies:
+ jest-diff "^24.3.0"
+
"@types/json-schema@*", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.7", "@types/json-schema@^7.0.8":
version "7.0.10"
resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.10.tgz#9b05b7896166cd00e9cbd59864853abf65d9ac23"
@@ -5382,6 +5483,16 @@
resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e"
integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==
+"@types/strip-bom@^3.0.0":
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/@types/strip-bom/-/strip-bom-3.0.0.tgz#14a8ec3956c2e81edb7520790aecf21c290aebd2"
+ integrity sha1-FKjsOVbC6B7bdSB5CuzyHCkK69I=
+
+"@types/strip-json-comments@0.0.30":
+ version "0.0.30"
+ resolved "https://registry.yarnpkg.com/@types/strip-json-comments/-/strip-json-comments-0.0.30.tgz#9aa30c04db212a9a0649d6ae6fd50accc40748a1"
+ integrity sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ==
+
"@types/tapable@^1", "@types/tapable@^1.0.5":
version "1.0.8"
resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.8.tgz#b94a4391c85666c7b73299fd3ad79d4faa435310"
@@ -5782,6 +5893,27 @@
dependencies:
"@vue/cli-shared-utils" "^4.5.17"
+"@vue/cli-plugin-unit-jest@^4.5.15":
+ version "4.5.15"
+ resolved "https://registry.yarnpkg.com/@vue/cli-plugin-unit-jest/-/cli-plugin-unit-jest-4.5.15.tgz#7be914ca1507ca344487eb377ed925c9db0b772a"
+ integrity sha512-oE3RDMerb21P6ALg70Zh2zU+RYYjoe09/7ZXYUj03uTb2obqUbcINpFfeVwM0B/J6H1YmqWJpnNBxWURhrqQHg==
+ dependencies:
+ "@babel/core" "^7.11.0"
+ "@babel/plugin-transform-modules-commonjs" "^7.9.6"
+ "@types/jest" "^24.0.19"
+ "@vue/cli-shared-utils" "^4.5.15"
+ babel-core "^7.0.0-bridge.0"
+ babel-jest "^24.9.0"
+ babel-plugin-transform-es2015-modules-commonjs "^6.26.2"
+ deepmerge "^4.2.2"
+ jest "^24.9.0"
+ jest-environment-jsdom-fifteen "^1.0.2"
+ jest-serializer-vue "^2.0.2"
+ jest-transform-stub "^2.0.0"
+ jest-watch-typeahead "^0.4.2"
+ ts-jest "^24.2.0"
+ vue-jest "^3.0.5"
+
"@vue/cli-plugin-vuex@^4.3.1":
version "4.5.17"
resolved "https://registry.yarnpkg.com/@vue/cli-plugin-vuex/-/cli-plugin-vuex-4.5.17.tgz#eb6f597c775f3c847bf5a638ad65a0d03c11dcbf"
@@ -5925,7 +6057,7 @@
semver "^6.0.0"
string.prototype.padstart "^3.0.0"
-"@vue/cli-shared-utils@^4.3.1", "@vue/cli-shared-utils@^4.5.17":
+"@vue/cli-shared-utils@^4.3.1", "@vue/cli-shared-utils@^4.5.15", "@vue/cli-shared-utils@^4.5.17":
version "4.5.17"
resolved "https://registry.yarnpkg.com/@vue/cli-shared-utils/-/cli-shared-utils-4.5.17.tgz#bb4aac8b816036cf5c0adf3af3cc1cb9c425501e"
integrity sha512-VoFNdxvTW4vZu3ne+j1Mf7mU99J2SAoRVn9XPrsouTUUJablglM8DASk7Ixhsh6ymyL/W9EADQFR6Pgj8Ujjuw==
@@ -5964,6 +6096,15 @@
resolved "https://registry.yarnpkg.com/@vue/preload-webpack-plugin/-/preload-webpack-plugin-1.1.2.tgz#ceb924b4ecb3b9c43871c7a429a02f8423e621ab"
integrity sha512-LIZMuJk38pk9U9Ur4YzHjlIyMuxPlACdBIHH9/nGYVTsaGKOSnSuELiE8vS9wa+dJpIYspYUOqk+L1Q4pgHQHQ==
+"@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"
+
"@vue/web-component-wrapper@^1.2.0":
version "1.3.0"
resolved "https://registry.yarnpkg.com/@vue/web-component-wrapper/-/web-component-wrapper-1.3.0.tgz#b6b40a7625429d2bd7c2281ddba601ed05dc7f1a"
@@ -6477,7 +6618,7 @@ acorn-globals@^3.1.0:
dependencies:
acorn "^4.0.4"
-acorn-globals@^4.1.0, acorn-globals@^4.3.0:
+acorn-globals@^4.1.0, acorn-globals@^4.3.0, acorn-globals@^4.3.2:
version "4.3.4"
resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.4.tgz#9fa1926addc11c97308c4e66d7add0d40c3272e7"
integrity sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==
@@ -7528,6 +7669,11 @@ babel-core@^6.0.0, babel-core@^6.24.1, babel-core@^6.26.0, babel-core@^6.26.3:
slash "^1.0.0"
source-map "^0.5.7"
+babel-core@^7.0.0-bridge.0:
+ version "7.0.0-bridge.0"
+ resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-7.0.0-bridge.0.tgz#95a492ddd90f9b4e9a4a1da14eb335b87b634ece"
+ integrity sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==
+
babel-eslint@10.0.1:
version "10.0.1"
resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.0.1.tgz#919681dc099614cd7d31d45c8908695092a1faed"
@@ -8346,12 +8492,12 @@ babel-plugin-polyfill-corejs2@^0.3.0:
semver "^6.1.1"
babel-plugin-polyfill-corejs3@^0.5.0:
- version "0.5.2"
- resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz#aabe4b2fa04a6e038b688c5e55d44e78cd3a5f72"
- integrity sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==
+ version "0.5.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.1.tgz#d66183bf10976ea677f4149a7fcc4d8df43d4060"
+ integrity sha512-TihqEe4sQcb/QcPJvxe94/9RZuLQuF1+To4WqQcRvc+3J3gLCPIPgDKzGLG6zmQLfH3nn25heRuDNkS2KR4I8A==
dependencies:
"@babel/helper-define-polyfill-provider" "^0.3.1"
- core-js-compat "^3.21.0"
+ core-js-compat "^3.20.0"
babel-plugin-polyfill-regenerator@^0.3.0:
version "0.3.1"
@@ -8624,7 +8770,7 @@ babel-plugin-transform-es2015-modules-amd@^6.22.0, babel-plugin-transform-es2015
babel-runtime "^6.22.0"
babel-template "^6.24.1"
-babel-plugin-transform-es2015-modules-commonjs@^6.23.0, babel-plugin-transform-es2015-modules-commonjs@^6.24.1, babel-plugin-transform-es2015-modules-commonjs@^6.5.0:
+babel-plugin-transform-es2015-modules-commonjs@^6.23.0, babel-plugin-transform-es2015-modules-commonjs@^6.24.1, babel-plugin-transform-es2015-modules-commonjs@^6.26.0, babel-plugin-transform-es2015-modules-commonjs@^6.26.2, babel-plugin-transform-es2015-modules-commonjs@^6.5.0:
version "6.26.2"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz#58a793863a9e7ca870bdc5a881117ffac27db6f3"
integrity sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==
@@ -9863,6 +10009,13 @@ browserslist@^4.0.0, browserslist@^4.1.1, browserslist@^4.11.1, browserslist@^4.
node-releases "^2.0.2"
picocolors "^1.0.0"
+bs-logger@0.x:
+ version "0.2.6"
+ resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8"
+ integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==
+ dependencies:
+ fast-json-stable-stringify "2.x"
+
bser@1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/bser/-/bser-1.0.2.tgz#381116970b2a6deea5646dd15dd7278444b56169"
@@ -9910,7 +10063,7 @@ buffer-fill@^1.0.0:
resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c"
integrity sha1-+PeLdniYiO858gXNY39o5wISKyw=
-buffer-from@^1.0.0:
+buffer-from@1.x, buffer-from@^1.0.0:
version "1.1.2"
resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5"
integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==
@@ -10850,16 +11003,16 @@ clone-response@^1.0.2:
dependencies:
mimic-response "^1.0.0"
+clone@2.x, clone@^2.1.1:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f"
+ integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=
+
clone@^1.0.2:
version "1.0.4"
resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e"
integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4=
-clone@^2.1.1:
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f"
- integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=
-
clone@~0.1.9:
version "0.1.19"
resolved "https://registry.yarnpkg.com/clone/-/clone-0.1.19.tgz#613fb68639b26a494ac53253e15b1a6bd88ada85"
@@ -11174,6 +11327,23 @@ concurrently@^3.4.0, concurrently@^3.5.1:
supports-color "^3.2.3"
tree-kill "^1.1.0"
+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"
+
configstore@^3.0.0:
version "3.1.5"
resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.1.5.tgz#e9af331fadc14dabd544d3e7e76dc446a09a530f"
@@ -11379,7 +11549,7 @@ core-js-compat@3.9.0:
browserslist "^4.16.3"
semver "7.0.0"
-core-js-compat@^3.0.0, core-js-compat@^3.12.1, core-js-compat@^3.20.2, core-js-compat@^3.21.0, core-js-compat@^3.6.5:
+core-js-compat@^3.0.0, core-js-compat@^3.12.1, core-js-compat@^3.20.2, core-js-compat@^3.6.5:
version "3.21.1"
resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.21.1.tgz#cac369f67c8d134ff8f9bd1623e3bc2c42068c82"
integrity sha512-gbgX5AUvMb8gwxC7FLVWYT7Kkgu/y7+h/h1X43yJkNqhlK2fuYyQimqvKGNZFAY6CKii/GFKJ2cp/1/42TN36g==
@@ -11387,6 +11557,14 @@ core-js-compat@^3.0.0, core-js-compat@^3.12.1, core-js-compat@^3.20.2, core-js-c
browserslist "^4.19.1"
semver "7.0.0"
+core-js-compat@^3.20.0:
+ version "3.20.3"
+ resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.20.3.tgz#d71f85f94eb5e4bea3407412e549daa083d23bd6"
+ integrity sha512-c8M5h0IkNZ+I92QhIpuSijOxGAcj3lgpsWdkCqmUTZNwidujF4r3pi6x1DCN+Vcs5qTS2XWWMfWSuCqyupX8gw==
+ dependencies:
+ browserslist "^4.19.1"
+ semver "7.0.0"
+
core-js-pure@^3.0.1, core-js-pure@^3.20.2:
version "3.21.1"
resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.21.1.tgz#8c4d1e78839f5f46208de7230cebfb72bc3bdb51"
@@ -12046,7 +12224,7 @@ css.escape@^1.5.1:
resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb"
integrity sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s=
-css@2.2.4:
+css@2.2.4, css@^2.1.0:
version "2.2.4"
resolved "https://registry.yarnpkg.com/css/-/css-2.2.4.tgz#c646755c73971f2bba6a601e2cf2fd71b1298929"
integrity sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==
@@ -12246,11 +12424,16 @@ csso@~2.3.1:
clap "^1.0.9"
source-map "^0.5.3"
-cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0", cssom@^0.3.4:
+cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0", cssom@^0.3.4, cssom@~0.3.6:
version "0.3.8"
resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a"
integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==
+cssom@^0.4.1:
+ version "0.4.4"
+ resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10"
+ integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==
+
"cssstyle@>= 0.2.37 < 0.3.0":
version "0.2.37"
resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-0.2.37.tgz#541097234cb2513c83ceed3acddc27ff27987d54"
@@ -12265,6 +12448,13 @@ cssstyle@^1.0.0, cssstyle@^1.1.1:
dependencies:
cssom "0.3.x"
+cssstyle@^2.0.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852"
+ integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==
+ dependencies:
+ cssom "~0.3.6"
+
csstype@^2.2.0, csstype@^2.5.2, csstype@^2.5.7:
version "2.6.20"
resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.20.tgz#9229c65ea0b260cf4d3d997cb06288e36a8d6dda"
@@ -12358,6 +12548,14 @@ de-indent@^1.0.2:
resolved "https://registry.yarnpkg.com/de-indent/-/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d"
integrity sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=
+deasync@^0.1.15:
+ version "0.1.24"
+ resolved "https://registry.yarnpkg.com/deasync/-/deasync-0.1.24.tgz#6ecc9c6ff9eba64a4f4572ae3c4db77fed09268a"
+ integrity sha512-i98vg42xNfRZCymummMAN0rIcQ1gZFinSe3btvPIvy6JFTaeHcumeKybRo2HTv86nasfmT0nEgAn2ggLZhOCVA==
+ dependencies:
+ bindings "^1.5.0"
+ node-addon-api "^1.7.1"
+
debug@2, debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.6, debug@^2.6.8, debug@^2.6.9:
version "2.6.9"
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
@@ -12871,6 +13069,11 @@ dom-converter@^0.2.0:
dependencies:
utila "~0.4"
+dom-event-types@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/dom-event-types/-/dom-event-types-1.1.0.tgz#120c1f92ddea7758db1ccee0a100a33c39f4701b"
+ integrity sha512-jNCX+uNJ3v38BKvPbpki6j5ItVlnSqVV6vDWGS6rExzCMjsc39frLjm1n91o6YaKK6AZl0wLloItW6C6mr61BQ==
+
dom-helpers@^3.4.0:
version "3.4.0"
resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-3.4.0.tgz#e9b369700f959f62ecde5a6babde4bccd9169af8"
@@ -13096,6 +13299,16 @@ ecc-jsbn@~0.1.1:
jsbn "~0.1.0"
safer-buffer "^2.1.0"
+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"
+
ee-first@1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
@@ -13561,7 +13774,7 @@ escape-string-regexp@^4.0.0:
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
-escodegen@^1.11.0, escodegen@^1.6.1, escodegen@^1.9.1:
+escodegen@^1.11.0, escodegen@^1.11.1, escodegen@^1.6.1, escodegen@^1.9.1:
version "1.14.3"
resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503"
integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==
@@ -13687,7 +13900,7 @@ eslint-loader@^2.1.2, eslint-loader@^2.2.1:
object-hash "^1.1.4"
rimraf "^2.6.1"
-eslint-module-utils@^2.1.1, eslint-module-utils@^2.3.0, eslint-module-utils@^2.7.2:
+eslint-module-utils@^2.1.1, eslint-module-utils@^2.3.0:
version "2.7.3"
resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz#ad7e3a10552fdd0642e1e55292781bd6e34876ee"
integrity sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==
@@ -13695,6 +13908,14 @@ eslint-module-utils@^2.1.1, eslint-module-utils@^2.3.0, eslint-module-utils@^2.7
debug "^3.2.7"
find-up "^2.1.0"
+eslint-module-utils@^2.7.2:
+ version "2.7.2"
+ resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.2.tgz#1d0aa455dcf41052339b63cada8ab5fd57577129"
+ integrity sha512-zquepFnWCY2ISMFwD/DqzaM++H+7PDzOpUvotJWm/y1BAFt5R4oeULgdrTejKqLkz7MA/tgstsUMNYc7wNdTrg==
+ dependencies:
+ debug "^3.2.7"
+ find-up "^2.1.0"
+
eslint-plugin-babel@^4.1.2:
version "4.1.2"
resolved "https://registry.yarnpkg.com/eslint-plugin-babel/-/eslint-plugin-babel-4.1.2.tgz#79202a0e35757dd92780919b2336f1fa2fe53c1e"
@@ -15052,6 +15273,13 @@ extract-files@9.0.0:
resolved "https://registry.yarnpkg.com/extract-files/-/extract-files-9.0.0.tgz#8a7744f2437f81f5ed3250ed9f1550de902fe54a"
integrity sha512-CvdFfHkC95B4bBBk36hcEmvdR2awOdhhVUYH6S/zrVj3477zven/fJMYg7121h4T1xHZC+tetUpubpAhxwI7hQ==
+extract-from-css@^0.4.4:
+ version "0.4.4"
+ resolved "https://registry.yarnpkg.com/extract-from-css/-/extract-from-css-0.4.4.tgz#1ea7df2e7c7c6eb9922fa08e8adaea486f6f8f92"
+ integrity sha1-HqffLnx8brmSL6COitrqSG9vj5I=
+ dependencies:
+ css "^2.1.0"
+
extract-text-webpack-plugin@3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/extract-text-webpack-plugin/-/extract-text-webpack-plugin-3.0.2.tgz#5f043eaa02f9750a9258b78c0a6e0dc1408fb2f7"
@@ -15130,7 +15358,7 @@ fast-glob@^3.1.1, fast-glob@^3.2.9:
merge2 "^1.3.0"
micromatch "^4.0.4"
-fast-json-stable-stringify@^2.0.0:
+fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
@@ -19333,6 +19561,11 @@ 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=
+
is-window@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/is-window/-/is-window-1.0.2.tgz#2c896ca53db97de45d3c33133a65d8c9f563480d"
@@ -19687,7 +19920,7 @@ jest-cli@^22.4.4:
which "^1.2.12"
yargs "^10.0.3"
-jest-cli@^24.7.1:
+jest-cli@^24.7.1, jest-cli@^24.9.0:
version "24.9.0"
resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-24.9.0.tgz#ad2de62d07472d419c6abc301fc432b98b10d2af"
integrity sha512-+VLRKyitT3BWoMeSUIHRxV/2g8y9gw91Jh5z2UmXZzkZKpbC08CSehVxgHUwTpy+HwGcns/tqafQDJW7imYvGg==
@@ -19792,7 +20025,7 @@ jest-diff@^22.4.0, jest-diff@^22.4.3:
jest-get-type "^22.4.3"
pretty-format "^22.4.3"
-jest-diff@^24.9.0:
+jest-diff@^24.3.0, jest-diff@^24.9.0:
version "24.9.0"
resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-24.9.0.tgz#931b7d0d5778a1baf7452cb816e325e3724055da"
integrity sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ==
@@ -19837,6 +20070,18 @@ jest-each@^24.9.0:
jest-util "^24.9.0"
pretty-format "^24.9.0"
+jest-environment-jsdom-fifteen@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/jest-environment-jsdom-fifteen/-/jest-environment-jsdom-fifteen-1.0.2.tgz#49a0af55e0d32737a6114a1575dd714702ad63b0"
+ integrity sha512-nfrnAfwklE1872LIB31HcjM65cWTh1wzvMSp10IYtPJjLDUbTTvDpajZgIxUnhRmzGvogdHDayCIlerLK0OBBg==
+ dependencies:
+ "@jest/environment" "^24.3.0"
+ "@jest/fake-timers" "^24.3.0"
+ "@jest/types" "^24.3.0"
+ jest-mock "^24.0.0"
+ jest-util "^24.0.0"
+ jsdom "^15.2.1"
+
jest-environment-jsdom-fourteen@0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/jest-environment-jsdom-fourteen/-/jest-environment-jsdom-fourteen-0.1.0.tgz#aad6393a9d4b565b69a609109bf469f62bf18ccc"
@@ -20112,7 +20357,7 @@ jest-mock@^22.4.3:
resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-22.4.3.tgz#f63ba2f07a1511772cdc7979733397df770aabc7"
integrity sha512-+4R6mH5M1G4NK16CKg9N1DtCaFmuxhcIqF4lQK/Q1CIotqMs/XBemfpDPeVZBFow6iyUNu6EBT9ugdNOTT5o5Q==
-jest-mock@^24.5.0, jest-mock@^24.9.0:
+jest-mock@^24.0.0, jest-mock@^24.5.0, jest-mock@^24.9.0:
version "24.9.0"
resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-24.9.0.tgz#c22835541ee379b908673ad51087a2185c13f1c6"
integrity sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w==
@@ -20324,6 +20569,13 @@ jest-runtime@^24.9.0:
strip-bom "^3.0.0"
yargs "^13.3.0"
+jest-serializer-vue@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/jest-serializer-vue/-/jest-serializer-vue-2.0.2.tgz#b238ef286357ec6b480421bd47145050987d59b3"
+ integrity sha1-sjjvKGNX7GtIBCG9RxRQUJh9WbM=
+ dependencies:
+ pretty "2.0.0"
+
jest-serializer@^22.4.3:
version "22.4.3"
resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-22.4.3.tgz#a679b81a7f111e4766235f4f0c46d230ee0f7436"
@@ -20377,6 +20629,11 @@ jest-snapshot@^24.9.0:
pretty-format "^24.9.0"
semver "^6.2.0"
+jest-transform-stub@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/jest-transform-stub/-/jest-transform-stub-2.0.0.tgz#19018b0851f7568972147a5d60074b55f0225a7d"
+ integrity sha512-lspHaCRx/mBbnm3h4uMMS3R5aZzMwyNpNIJLXj4cEsV0mIUtS4IjYJLSoyjRCtnxb6RIGJ4NL2quZzfIeNhbkg==
+
jest-util@^20.0.3:
version "20.0.3"
resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-20.0.3.tgz#0c07f7d80d82f4e5a67c6f8b9c3fe7f65cfd32ad"
@@ -20403,7 +20660,7 @@ jest-util@^22.4.1, jest-util@^22.4.3:
mkdirp "^0.5.1"
source-map "^0.6.0"
-jest-util@^24.5.0, jest-util@^24.9.0:
+jest-util@^24.0.0, jest-util@^24.5.0, jest-util@^24.9.0:
version "24.9.0"
resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-24.9.0.tgz#7396814e48536d2e85a37de3e4c431d7cb140162"
integrity sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg==
@@ -20454,6 +20711,13 @@ jest-validate@^24.9.0:
leven "^3.1.0"
pretty-format "^24.9.0"
+jest-vue-emotion@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/jest-vue-emotion/-/jest-vue-emotion-1.0.0.tgz#3e234239fa21408e66263ea3c2435b479750e04d"
+ integrity sha512-t3szzvZbMVRvEpHA9rf96XIlsRksDc/6dZFe7YoIDHX4yRqZDwFconrzdlcIKr93kCAuMR7BRLz3sVoesW0Pug==
+ dependencies:
+ prettier "^1.16.3"
+
jest-watch-typeahead@0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/jest-watch-typeahead/-/jest-watch-typeahead-0.3.0.tgz#f56d9ee17ea71ecbf8253fed213df3185a1584c9"
@@ -20466,6 +20730,19 @@ jest-watch-typeahead@0.3.0:
string-length "^2.0.0"
strip-ansi "^5.0.0"
+jest-watch-typeahead@^0.4.2:
+ version "0.4.2"
+ resolved "https://registry.yarnpkg.com/jest-watch-typeahead/-/jest-watch-typeahead-0.4.2.tgz#e5be959698a7fa2302229a5082c488c3c8780a4a"
+ integrity sha512-f7VpLebTdaXs81rg/oj4Vg/ObZy2QtGzAmGLNsqUS5G5KtSN68tFcIsbvNODfNyQxU78g7D8x77o3bgfBTR+2Q==
+ dependencies:
+ ansi-escapes "^4.2.1"
+ chalk "^2.4.1"
+ jest-regex-util "^24.9.0"
+ jest-watcher "^24.3.0"
+ slash "^3.0.0"
+ string-length "^3.1.0"
+ strip-ansi "^5.0.0"
+
jest-watcher@^24.3.0, jest-watcher@^24.9.0:
version "24.9.0"
resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-24.9.0.tgz#4b56e5d1ceff005f5b88e528dc9afc8dd4ed2b3b"
@@ -20543,6 +20820,14 @@ jest@^22.4.2:
import-local "^1.0.0"
jest-cli "^22.4.4"
+jest@^24.9.0:
+ version "24.9.0"
+ resolved "https://registry.yarnpkg.com/jest/-/jest-24.9.0.tgz#987d290c05a08b52c56188c1002e368edb007171"
+ integrity sha512-YvkBL1Zm7d2B1+h5fHEOdyjCG+sGMz4f8D86/0HiqJ6MB4MnDc8FgP5vdWsGnemOQro7lnYo8UakZ3+5A0jxGw==
+ dependencies:
+ import-local "^2.0.0"
+ jest-cli "^24.9.0"
+
jetifier@^1.6.2:
version "1.6.8"
resolved "https://registry.yarnpkg.com/jetifier/-/jetifier-1.6.8.tgz#e88068697875cbda98c32472902c4d3756247798"
@@ -20595,6 +20880,16 @@ js-base64@^2.1.9, js-base64@^2.4.3:
resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.6.4.tgz#f4e686c5de1ea1f867dbcad3d46d969428df98c4"
integrity sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==
+js-beautify@^1.6.12, js-beautify@^1.6.14:
+ 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-levenshtein@^1.1.3:
version "1.1.6"
resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.6.tgz#c6cee58eb3550372df8deb85fad5ce66ce01d59d"
@@ -20717,6 +21012,38 @@ jsdom@^14.0.0:
ws "^6.1.2"
xml-name-validator "^3.0.0"
+jsdom@^15.2.1:
+ version "15.2.1"
+ resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-15.2.1.tgz#d2feb1aef7183f86be521b8c6833ff5296d07ec5"
+ integrity sha512-fAl1W0/7T2G5vURSyxBzrJ1LSdQn6Tr5UX/xD4PXDx/PDgwygedfW6El/KIj3xJ7FU61TTYnc/l/B7P49Eqt6g==
+ dependencies:
+ abab "^2.0.0"
+ acorn "^7.1.0"
+ acorn-globals "^4.3.2"
+ array-equal "^1.0.0"
+ cssom "^0.4.1"
+ cssstyle "^2.0.0"
+ data-urls "^1.1.0"
+ domexception "^1.0.1"
+ escodegen "^1.11.1"
+ html-encoding-sniffer "^1.0.2"
+ nwsapi "^2.2.0"
+ parse5 "5.1.0"
+ pn "^1.1.0"
+ request "^2.88.0"
+ request-promise-native "^1.0.7"
+ saxes "^3.1.9"
+ symbol-tree "^3.2.2"
+ tough-cookie "^3.0.1"
+ w3c-hr-time "^1.0.1"
+ w3c-xmlserializer "^1.1.2"
+ webidl-conversions "^4.0.2"
+ whatwg-encoding "^1.0.5"
+ whatwg-mimetype "^2.3.0"
+ whatwg-url "^7.0.0"
+ ws "^7.0.0"
+ xml-name-validator "^3.0.0"
+
jsdom@^9.12.0:
version "9.12.0"
resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-9.12.0.tgz#e8c546fffcb06c00d4833ca84410fed7f8a097d4"
@@ -20836,6 +21163,13 @@ json3@^3.3.2:
resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81"
integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==
+json5@2.x:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3"
+ integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==
+ dependencies:
+ minimist "^1.2.5"
+
json5@^0.5.0, json5@^0.5.1:
version "0.5.1"
resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821"
@@ -21569,7 +21903,7 @@ lodash.maxby@^4.6.0:
resolved "https://registry.yarnpkg.com/lodash.maxby/-/lodash.maxby-4.6.0.tgz#082240068f3c7a227aa00a8380e4f38cf0786e3d"
integrity sha1-CCJABo88eiJ6oAqDgOTzjPB4bj0=
-lodash.memoize@^4.1.2:
+lodash.memoize@4.x, lodash.memoize@^4.1.2:
version "4.1.2"
resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe"
integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=
@@ -21778,7 +22112,7 @@ lru-cache@4.0.0:
pseudomap "^1.0.1"
yallist "^2.0.0"
-lru-cache@^4.0.0, lru-cache@^4.0.1, lru-cache@^4.1.1, lru-cache@^4.1.2:
+lru-cache@^4.0.0, lru-cache@^4.0.1, lru-cache@^4.1.1, lru-cache@^4.1.2, lru-cache@^4.1.5:
version "4.1.5"
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd"
integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==
@@ -21848,7 +22182,7 @@ make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0:
dependencies:
semver "^6.0.0"
-make-error@^1, make-error@^1.1.1, make-error@^1.3.4:
+make-error@1.x, make-error@^1, make-error@^1.1.1, make-error@^1.3.4:
version "1.3.6"
resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2"
integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==
@@ -23199,6 +23533,13 @@ mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3:
resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113"
integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==
+mkdirp@0.x:
+ 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"
+
"mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.4, mkdirp@^0.5.5, mkdirp@~0.5.0, mkdirp@~0.5.1:
version "0.5.6"
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6"
@@ -23536,6 +23877,11 @@ node-abi@^3.3.0:
dependencies:
semver "^7.3.5"
+node-addon-api@^1.7.1:
+ version "1.7.2"
+ resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-1.7.2.tgz#3df30b95720b53c24e59948b49532b662444f54d"
+ integrity sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==
+
node-addon-api@^3.2.1:
version "3.2.1"
resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.2.1.tgz#81325e0a2117789c0128dab65e7e38f07ceba161"
@@ -23554,6 +23900,14 @@ node-archiver@^0.3.0:
fstream "^1.0.10"
tar "^2.2.1"
+node-cache@^4.1.1:
+ version "4.2.1"
+ resolved "https://registry.yarnpkg.com/node-cache/-/node-cache-4.2.1.tgz#efd8474dee4edec4138cdded580f5516500f7334"
+ integrity sha512-BOb67bWg2dTyax5kdef5WfU3X8xu4wPg+zHzkvls0Q/QpYycIFRLEEIdAx9Wma43DxG6Qzn4illdZoYseKWa4A==
+ dependencies:
+ clone "2.x"
+ lodash "^4.17.15"
+
node-dir@^0.1.10:
version "0.1.17"
resolved "https://registry.yarnpkg.com/node-dir/-/node-dir-0.1.17.tgz#5f5665d93351335caabef8f1c554516cf5f1e4e5"
@@ -23998,7 +24352,7 @@ nuxt@^2.0.0, nuxt@^2.15.7:
resolved "https://registry.yarnpkg.com/nwmatcher/-/nwmatcher-1.4.4.tgz#2285631f34a95f0d0395cd900c96ed39b58f346e"
integrity sha512-3iuY4N5dhgMpCUrOVnuAdGrgxVqV2cJpM+XNccjR2DKOB1RUP0aA+wGXEiNziG/UKboFyGBIoKOaNlJxx8bciQ==
-nwsapi@^2.0.7, nwsapi@^2.1.3:
+nwsapi@^2.0.7, nwsapi@^2.1.3, nwsapi@^2.2.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7"
integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==
@@ -26413,7 +26767,7 @@ postcss-selector-parser@^5.0.0-rc.3, postcss-selector-parser@^5.0.0-rc.4:
indexes-of "^1.0.1"
uniq "^1.0.1"
-postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.9:
+postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.9:
version "6.0.9"
resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.9.tgz#ee71c3b9ff63d9cd130838876c13a2ec1a992b2f"
integrity sha512-UO3SgnZOVTwu4kyLR22UQ1xZh086RyNZppb7lLAKBFK8a32ttG5i87Y/P3+2bRSjZNyJ1B7hfFNo273tKe9YxQ==
@@ -26421,6 +26775,14 @@ postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2, postcss-selector
cssesc "^3.0.0"
util-deprecate "^1.0.2"
+postcss-selector-parser@^6.0.4:
+ version "6.0.8"
+ resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.8.tgz#f023ed7a9ea736cd7ef70342996e8e78645a7914"
+ integrity sha512-D5PG53d209Z1Uhcc0qAZ5U3t5HagH3cxu+WLZ22jt3gLUpXM4eXXfiO14jiDWST3NNooX/E8wISfOhZ9eIjGTQ==
+ dependencies:
+ cssesc "^3.0.0"
+ util-deprecate "^1.0.2"
+
postcss-svgo@^2.1.1:
version "2.1.6"
resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-2.1.6.tgz#b6df18aa613b666e133f08adb5219c2684ac108d"
@@ -26651,7 +27013,7 @@ preserve@^0.2.0:
resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b"
integrity sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=
-prettier@^1.12.1:
+prettier@^1.12.1, prettier@^1.16.3:
version "1.19.1"
resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb"
integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==
@@ -26742,6 +27104,15 @@ pretty-time@^1.1.0:
resolved "https://registry.yarnpkg.com/pretty-time/-/pretty-time-1.1.0.tgz#ffb7429afabb8535c346a34e41873adf3d74dd0e"
integrity sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA==
+pretty@2.0.0, 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"
+
print-message@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/print-message/-/print-message-2.1.0.tgz#b5588ed08b0e1bf77ac7bcb5cb78004afaf9a891"
@@ -26754,11 +27125,16 @@ prism-themes@^1.1.0:
resolved "https://registry.yarnpkg.com/prism-themes/-/prism-themes-1.9.0.tgz#19c034f3205f1e28d75d89728e54ccd745f7e3dd"
integrity sha512-tX2AYsehKDw1EORwBps+WhBFKc2kxfoFpQAjxBndbZKr4fRmMkv47XN0BghC/K1qwodB1otbe4oF23vUTFDokw==
-prismjs@1.27.0, prismjs@^1.16.0, prismjs@^1.8.4:
+prismjs@1.27.0:
version "1.27.0"
resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.27.0.tgz#bb6ee3138a0b438a3653dd4d6ce0cc6510a45057"
integrity sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA==
+prismjs@^1.16.0, prismjs@^1.8.4:
+ version "1.26.0"
+ resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.26.0.tgz#16881b594828bb6b45296083a8cbab46b0accd47"
+ integrity sha512-HUoH9C5Z3jKkl3UunCyiD5jwk0+Hz0fIgQ2nbwU2Oo/ceuTAQAg+pPVnfdt2TJWRVLcxKh9iuoYDUSc8clb5UQ==
+
prismjs@~1.17.0:
version "1.17.1"
resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.17.1.tgz#e669fcbd4cdd873c35102881c33b14d0d68519be"
@@ -26903,6 +27279,11 @@ property-information@^5.0.0, property-information@^5.3.0:
dependencies:
xtend "^4.0.0"
+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=
+
protocols@^1.1.0, protocols@^1.4.0:
version "1.4.8"
resolved "https://registry.yarnpkg.com/protocols/-/protocols-1.4.8.tgz#48eea2d8f58d9644a4a32caae5d5db290a075ce8"
@@ -28914,10 +29295,10 @@ refractor@^2.4.1:
parse-entities "^1.1.2"
prismjs "~1.17.0"
-regenerate-unicode-properties@^10.0.1:
- version "10.0.1"
- resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz#7f442732aa7934a3740c779bb9b3340dccc1fb56"
- integrity sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==
+regenerate-unicode-properties@^9.0.0:
+ version "9.0.0"
+ resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz#54d09c7115e1f53dc2314a974b32c1c344efe326"
+ integrity sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==
dependencies:
regenerate "^1.4.2"
@@ -29004,15 +29385,15 @@ regexpu-core@^2.0.0:
regjsgen "^0.2.0"
regjsparser "^0.1.4"
-regexpu-core@^5.0.1:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.0.1.tgz#c531122a7840de743dcf9c83e923b5560323ced3"
- integrity sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw==
+regexpu-core@^4.7.1:
+ version "4.8.0"
+ resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.8.0.tgz#e5605ba361b67b1718478501327502f4479a98f0"
+ integrity sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==
dependencies:
regenerate "^1.4.2"
- regenerate-unicode-properties "^10.0.1"
- regjsgen "^0.6.0"
- regjsparser "^0.8.2"
+ regenerate-unicode-properties "^9.0.0"
+ regjsgen "^0.5.2"
+ regjsparser "^0.7.0"
unicode-match-property-ecmascript "^2.0.0"
unicode-match-property-value-ecmascript "^2.0.0"
@@ -29050,10 +29431,10 @@ regjsgen@^0.2.0:
resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7"
integrity sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=
-regjsgen@^0.6.0:
- version "0.6.0"
- resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.6.0.tgz#83414c5354afd7d6627b16af5f10f41c4e71808d"
- integrity sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==
+regjsgen@^0.5.2:
+ version "0.5.2"
+ resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733"
+ integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==
regjsparser@^0.1.4:
version "0.1.5"
@@ -29062,10 +29443,10 @@ regjsparser@^0.1.4:
dependencies:
jsesc "~0.5.0"
-regjsparser@^0.8.2:
- version "0.8.4"
- resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.8.4.tgz#8a14285ffcc5de78c5b95d62bbf413b6bc132d5f"
- integrity sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==
+regjsparser@^0.7.0:
+ version "0.7.0"
+ resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.7.0.tgz#a6b667b54c885e18b52554cb4960ef71187e9968"
+ integrity sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==
dependencies:
jsesc "~0.5.0"
@@ -29336,7 +29717,7 @@ resolve@1.6.0:
dependencies:
path-parse "^1.0.5"
-resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.11.0, resolve@^1.11.1, resolve@^1.12.0, resolve@^1.14.2, resolve@^1.2.0, resolve@^1.20.0, resolve@^1.3.2, resolve@^1.4.0, resolve@^1.5.0, resolve@^1.8.1, resolve@^1.9.0:
+resolve@1.x, resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.11.0, resolve@^1.11.1, resolve@^1.12.0, resolve@^1.14.2, resolve@^1.2.0, resolve@^1.20.0, resolve@^1.3.2, resolve@^1.4.0, resolve@^1.5.0, resolve@^1.8.1, resolve@^1.9.0:
version "1.22.0"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198"
integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==
@@ -29908,7 +30289,7 @@ semver-diff@^3.1.1:
dependencies:
semver "^6.3.0"
-"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.1:
+"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.1:
version "5.7.1"
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
@@ -30220,6 +30601,11 @@ 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=
+
signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.5, signal-exit@^3.0.6, signal-exit@^3.0.7:
version "3.0.7"
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9"
@@ -30997,6 +31383,14 @@ string-length@^2.0.0:
astral-regex "^1.0.0"
strip-ansi "^4.0.0"
+string-length@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/string-length/-/string-length-3.1.0.tgz#107ef8c23456e187a8abd4a61162ff4ac6e25837"
+ integrity sha512-Ttp5YvkGm5v9Ijagtaz1BnN+k9ObpvS0eIBblPMp2YWL8FBmi9qblQ9fexc2k/CXFgrTIteU3jAw3payCnwSTA==
+ dependencies:
+ astral-regex "^1.0.0"
+ strip-ansi "^5.2.0"
+
string-natural-compare@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/string-natural-compare/-/string-natural-compare-3.0.1.tgz#7a42d58474454963759e8e8b7ae63d71c1e7fdf4"
@@ -31232,7 +31626,7 @@ strip-indent@^3.0.0:
dependencies:
min-indent "^1.0.0"
-strip-json-comments@^2.0.1, strip-json-comments@~2.0.1:
+strip-json-comments@^2.0.0, strip-json-comments@^2.0.1, strip-json-comments@~2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo=
@@ -32179,6 +32573,15 @@ tough-cookie@^2.3.2, tough-cookie@^2.3.3, tough-cookie@^2.3.4, tough-cookie@^2.5
psl "^1.1.28"
punycode "^2.1.1"
+tough-cookie@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-3.0.1.tgz#9df4f57e739c26930a018184887f4adb7dca73b2"
+ integrity sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==
+ dependencies:
+ ip-regex "^2.1.0"
+ psl "^1.1.28"
+ punycode "^2.1.1"
+
tr46@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09"
@@ -32260,6 +32663,22 @@ ts-dedent@^1.1.0:
resolved "https://registry.yarnpkg.com/ts-dedent/-/ts-dedent-1.2.0.tgz#6aa2229d837159bb6d635b6b233002423b91e0b0"
integrity sha512-6zSJp23uQI+Txyz5LlXMXAHpUhY4Hi0oluXny0OgIR7g/Cromq4vDBnhtbBdyIV34g0pgwxUvnvg+jLJe4c1NA==
+ts-jest@^24.2.0:
+ version "24.3.0"
+ resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-24.3.0.tgz#b97814e3eab359ea840a1ac112deae68aa440869"
+ integrity sha512-Hb94C/+QRIgjVZlJyiWwouYUF+siNJHJHknyspaOcZ+OQAIdFG/UrdQVXw/0B8Z3No34xkUXZJpOTy9alOWdVQ==
+ dependencies:
+ bs-logger "0.x"
+ buffer-from "1.x"
+ fast-json-stable-stringify "2.x"
+ json5 "2.x"
+ lodash.memoize "4.x"
+ make-error "1.x"
+ mkdirp "0.x"
+ resolve "1.x"
+ semver "^5.5"
+ yargs-parser "10.x"
+
ts-node@^9:
version "9.1.1"
resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-9.1.1.tgz#51a9a450a3e959401bda5f004a72d54b936d376d"
@@ -32292,6 +32711,16 @@ tsconfig-paths@^3.12.0:
minimist "^1.2.6"
strip-bom "^3.0.0"
+tsconfig@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/tsconfig/-/tsconfig-7.0.0.tgz#84538875a4dc216e5c4a5432b3a4dec3d54e91b7"
+ integrity sha512-vZXmzPrL+EmC4T/4rVlT2jNVMWCi/O4DIiSj3UHg1OE5kCKbk4mfrXc6dZksLgRM/TZlKnousKH9bbTazUWRRw==
+ dependencies:
+ "@types/strip-bom" "^3.0.0"
+ "@types/strip-json-comments" "0.0.30"
+ strip-bom "^3.0.0"
+ strip-json-comments "^2.0.0"
+
tslib@^1.10.0, tslib@^1.8.0, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3:
version "1.14.1"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
@@ -33292,6 +33721,23 @@ vue-hot-reload-api@^2.3.0:
resolved "https://registry.yarnpkg.com/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz#532955cc1eb208a3d990b3a9f9a70574657e08f2"
integrity sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==
+vue-jest@^3.0.5:
+ version "3.0.7"
+ resolved "https://registry.yarnpkg.com/vue-jest/-/vue-jest-3.0.7.tgz#a6d29758a5cb4d750f5d1242212be39be4296a33"
+ integrity sha512-PIOxFM+wsBMry26ZpfBvUQ/DGH2hvp5khDQ1n51g3bN0TwFwTy4J85XVfxTRMukqHji/GnAoGUnlZ5Ao73K62w==
+ dependencies:
+ babel-plugin-transform-es2015-modules-commonjs "^6.26.0"
+ chalk "^2.1.0"
+ deasync "^0.1.15"
+ extract-from-css "^0.4.4"
+ find-babel-config "^1.1.0"
+ js-beautify "^1.6.14"
+ node-cache "^4.1.1"
+ object-assign "^4.1.1"
+ source-map "^0.5.6"
+ tsconfig "^7.0.0"
+ vue-template-es2015-compiler "^1.6.0"
+
vue-loader@15.9.7:
version "15.9.7"
resolved "https://registry.yarnpkg.com/vue-loader/-/vue-loader-15.9.7.tgz#15b05775c3e0c38407679393c2ce6df673b01044"
@@ -33376,7 +33822,7 @@ vue-template-compiler@^2.5.17, vue-template-compiler@^2.6.10, vue-template-compi
de-indent "^1.0.2"
he "^1.1.0"
-vue-template-es2015-compiler@^1.9.0:
+vue-template-es2015-compiler@^1.6.0, vue-template-es2015-compiler@^1.9.0:
version "1.9.1"
resolved "https://registry.yarnpkg.com/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz#1ee3bc9a16ecbf5118be334bb15f9c46f82f5825"
integrity sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==
@@ -34431,7 +34877,7 @@ ws@^5.2.0:
dependencies:
async-limiter "~1.0.0"
-"ws@^5.2.0 || ^6.0.0 || ^7.0.0", ws@^7, ws@^7.3.1:
+"ws@^5.2.0 || ^6.0.0 || ^7.0.0", ws@^7, ws@^7.0.0, ws@^7.3.1:
version "7.5.7"
resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.7.tgz#9e0ac77ee50af70d58326ecff7e85eb3fa375e67"
integrity sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==
@@ -34654,7 +35100,7 @@ yaml@^1.10.0, yaml@^1.10.2, yaml@^1.7.2, yaml@^1.8.3:
resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b"
integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==
-yargs-parser@^10.0.0, yargs-parser@^10.1.0:
+yargs-parser@10.x, yargs-parser@^10.0.0, yargs-parser@^10.1.0:
version "10.1.0"
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-10.1.0.tgz#7202265b89f7e9e9f2e5765e0fe735a905edbaa8"
integrity sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==