mirror of
https://github.com/directus/directus.git
synced 2026-04-25 03:00:53 -04:00
Bump @vue/eslint-config-typescript from 4.0.0 to 5.0.2 (#141)
* Bump @vue/eslint-config-typescript from 4.0.0 to 5.0.2 Bumps [@vue/eslint-config-typescript](https://github.com/vuejs/eslint-config-typescript) from 4.0.0 to 5.0.2. - [Release notes](https://github.com/vuejs/eslint-config-typescript/releases) - [Commits](https://github.com/vuejs/eslint-config-typescript/commits/v5.0.2) Signed-off-by: dependabot-preview[bot] <support@dependabot.com> * Update eslintrc to match major upgrade of typescript-eslint * Fix linter warnings and tests * Fix tests for real this time Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
This commit is contained in:
committed by
GitHub
parent
be1d2cf4f8
commit
dba5329d31
19
.eslintrc.js
19
.eslintrc.js
@@ -3,20 +3,33 @@ module.exports = {
|
||||
env: {
|
||||
node: true
|
||||
},
|
||||
extends: ['eslint:recommended', 'plugin:vue/essential', '@vue/prettier', '@vue/typescript'],
|
||||
extends: [
|
||||
'plugin:vue/essential',
|
||||
'@vue/typescript/recommended',
|
||||
'@vue/prettier',
|
||||
'@vue/prettier/@typescript-eslint'
|
||||
],
|
||||
rules: {
|
||||
'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off',
|
||||
'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
|
||||
'prettier/prettier': ['error', { singleQuote: true }]
|
||||
'prettier/prettier': ['error', { singleQuote: true }],
|
||||
'@typescript-eslint/camelcase': null,
|
||||
'@typescript-eslint/no-use-before-define': null,
|
||||
'@typescript-eslint/ban-ts-ignore': null
|
||||
},
|
||||
parserOptions: {
|
||||
parser: '@typescript-eslint/parser'
|
||||
},
|
||||
overrides: [
|
||||
{
|
||||
files: ['**/*.test.{js,ts}?(x)'],
|
||||
files: ['**/*.test.{js,ts}?(x)', '**/*.story.{js,ts}?(x)'],
|
||||
env: {
|
||||
jest: true
|
||||
},
|
||||
rules: {
|
||||
'@typescript-eslint/no-explicit-any': null,
|
||||
'@typescript-eslint/no-empty-function': null,
|
||||
'@typescript-eslint/no-non-null-assertion': null
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
@@ -56,7 +56,7 @@
|
||||
"@vue/cli-plugin-vuex": "^4.2.3",
|
||||
"@vue/cli-service": "^4.1.0",
|
||||
"@vue/eslint-config-prettier": "^6.0.0",
|
||||
"@vue/eslint-config-typescript": "^4.0.0",
|
||||
"@vue/eslint-config-typescript": "^5.0.2",
|
||||
"@vue/test-utils": "^1.0.0-beta.30",
|
||||
"autoprefixer": "^9.7.4",
|
||||
"babel-loader": "^8.0.6",
|
||||
|
||||
100
src/api.test.ts
100
src/api.test.ts
@@ -1,9 +1,26 @@
|
||||
import Vue from 'vue';
|
||||
import VueCompositionAPI from '@vue/composition-api';
|
||||
import { onRequest, onResponse, onError, getRootPath } from './api';
|
||||
import { onRequest, onResponse, onError, getRootPath, Error } from './api';
|
||||
import * as auth from '@/auth';
|
||||
import { useRequestsStore } from '@/stores/requests';
|
||||
|
||||
const defaultError: Error = {
|
||||
config: {},
|
||||
isAxiosError: false,
|
||||
toJSON: () => ({}),
|
||||
name: 'error',
|
||||
message: '',
|
||||
response: {
|
||||
data: null,
|
||||
status: 200,
|
||||
statusText: 'OK',
|
||||
headers: {},
|
||||
config: {
|
||||
id: 'abc'
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
describe('API', () => {
|
||||
beforeAll(() => {
|
||||
globalThis.window = Object.create(window);
|
||||
@@ -56,80 +73,39 @@ describe('API', () => {
|
||||
const spy = jest.spyOn(store, 'endRequest');
|
||||
try {
|
||||
await onError({
|
||||
response: {
|
||||
config: {
|
||||
id: 'abc'
|
||||
}
|
||||
}
|
||||
...defaultError
|
||||
});
|
||||
} catch (error) {
|
||||
expect(error).toEqual({ response: { config: { id: 'abc' } } });
|
||||
}
|
||||
} catch {}
|
||||
|
||||
expect(spy).toHaveBeenCalledWith('abc');
|
||||
});
|
||||
|
||||
it('Passes the error on to the next catch handler on unrelated 401 errors', async () => {
|
||||
const store = useRequestsStore({});
|
||||
try {
|
||||
await onError({
|
||||
response: {
|
||||
status: 401,
|
||||
config: {
|
||||
id: 'abc'
|
||||
const error = {
|
||||
...defaultError,
|
||||
response: {
|
||||
...defaultError.response,
|
||||
status: 401,
|
||||
config: {
|
||||
id: 'abc'
|
||||
},
|
||||
data: {
|
||||
error: {
|
||||
code: -5
|
||||
}
|
||||
}
|
||||
});
|
||||
} catch (error) {
|
||||
expect(error).toEqual({ response: { status: 401, config: { id: 'abc' } } });
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
try {
|
||||
await onError({
|
||||
response: {
|
||||
status: 500,
|
||||
config: {
|
||||
id: 'abc'
|
||||
}
|
||||
}
|
||||
});
|
||||
} catch (error) {
|
||||
expect(error).toEqual({ response: { status: 500, config: { id: 'abc' } } });
|
||||
}
|
||||
|
||||
try {
|
||||
await onError({
|
||||
response: {
|
||||
status: 401,
|
||||
config: {
|
||||
id: 'abc'
|
||||
},
|
||||
data: {
|
||||
error: {
|
||||
code: 5
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
} catch (error) {
|
||||
expect(error).toEqual({
|
||||
response: {
|
||||
status: 401,
|
||||
config: { id: 'abc' },
|
||||
data: {
|
||||
error: {
|
||||
code: 5
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
expect(onError(error)).rejects.toEqual(error);
|
||||
});
|
||||
|
||||
it('Checks the auth status on 401+3 errors', async () => {
|
||||
try {
|
||||
await onError({
|
||||
...defaultError,
|
||||
response: {
|
||||
...defaultError.response,
|
||||
config: {
|
||||
id: 'abc'
|
||||
},
|
||||
@@ -151,7 +127,9 @@ describe('API', () => {
|
||||
|
||||
try {
|
||||
await onError({
|
||||
...defaultError,
|
||||
response: {
|
||||
...defaultError.response,
|
||||
config: {
|
||||
id: 'abc'
|
||||
},
|
||||
@@ -175,7 +153,9 @@ describe('API', () => {
|
||||
|
||||
try {
|
||||
await onError({
|
||||
...defaultError,
|
||||
response: {
|
||||
...defaultError.response,
|
||||
config: {
|
||||
id: 'abc'
|
||||
},
|
||||
|
||||
10
src/api.ts
10
src/api.ts
@@ -1,7 +1,6 @@
|
||||
import axios, { AxiosRequestConfig, AxiosResponse } from 'axios';
|
||||
import axios, { AxiosRequestConfig, AxiosResponse, AxiosError } from 'axios';
|
||||
import { useRequestsStore } from '@/stores/requests';
|
||||
import { LogoutReason, logout, checkAuth } from '@/auth';
|
||||
import useProjectsStore from './stores/projects';
|
||||
|
||||
const api = axios.create({
|
||||
baseURL: getRootPath()
|
||||
@@ -15,6 +14,10 @@ interface Response extends AxiosResponse {
|
||||
config: RequestConfig;
|
||||
}
|
||||
|
||||
export interface Error extends AxiosError {
|
||||
response: Response;
|
||||
}
|
||||
|
||||
export const onRequest = (config: AxiosRequestConfig) => {
|
||||
const requestsStore = useRequestsStore();
|
||||
const id = requestsStore.startRequest();
|
||||
@@ -34,7 +37,7 @@ export const onResponse = (response: AxiosResponse | Response) => {
|
||||
return response;
|
||||
};
|
||||
|
||||
export const onError = async (error: any) => {
|
||||
export const onError = async (error: Error) => {
|
||||
const requestsStore = useRequestsStore();
|
||||
const id = (error.response.config as RequestConfig).id;
|
||||
requestsStore.endRequest(id);
|
||||
@@ -47,6 +50,7 @@ export const onError = async (error: any) => {
|
||||
const status = error.response?.status;
|
||||
/* istanbul ignore next */
|
||||
const code = error.response?.data?.error?.code;
|
||||
|
||||
if (status === 401 && code === 3) {
|
||||
const loggedIn = await checkAuth();
|
||||
|
||||
|
||||
@@ -4,9 +4,7 @@ import * as hydration from '@/hydrate';
|
||||
import api from '@/api';
|
||||
import { checkAuth, login, logout, LogoutReason } from './auth';
|
||||
import { useProjectsStore } from '@/stores/projects/';
|
||||
import { useRequestsStore } from '@/stores/requests/';
|
||||
import router from '@/router';
|
||||
import { eachMonthOfInterval } from 'date-fns';
|
||||
|
||||
jest.mock('@/api');
|
||||
jest.mock('@/router');
|
||||
@@ -84,7 +82,7 @@ describe('Auth', () => {
|
||||
|
||||
describe('logout', () => {
|
||||
it('Does not do anything when there is no current project', async () => {
|
||||
const projectsStore = useProjectsStore({});
|
||||
useProjectsStore({});
|
||||
await logout();
|
||||
expect(hydration.dehydrate).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
@@ -6,7 +6,6 @@ import {
|
||||
color,
|
||||
optionsKnob as options
|
||||
} from '@storybook/addon-knobs';
|
||||
import { action } from '@storybook/addon-actions';
|
||||
import Vue from 'vue';
|
||||
import VAvatar from './v-avatar.vue';
|
||||
import VIcon from '../v-icon/';
|
||||
|
||||
@@ -5,8 +5,7 @@
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import { defineComponent, computed } from '@vue/composition-api';
|
||||
import parseCSSVar from '../../utils/parse-css-var';
|
||||
import { defineComponent } from '@vue/composition-api';
|
||||
import useSizeClass, { sizeProps } from '@/compositions/size-class';
|
||||
|
||||
export default defineComponent({
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { withKnobs, text, boolean, number, optionsKnob as options } from '@storybook/addon-knobs';
|
||||
import { withKnobs, text, boolean, number } from '@storybook/addon-knobs';
|
||||
import Vue from 'vue';
|
||||
import VBadge from './v-badge.vue';
|
||||
import VIcon from '../v-icon/';
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import { defineComponent, reactive, computed, Ref } from '@vue/composition-api';
|
||||
import { defineComponent } from '@vue/composition-api';
|
||||
|
||||
export default defineComponent({
|
||||
props: {
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
import { array, optionsKnob as options } from '@storybook/addon-knobs';
|
||||
import { action } from '@storybook/addon-actions';
|
||||
import Vue from 'vue';
|
||||
import markdown from './v-breadcrumb.readme.md';
|
||||
import VIcon from '../v-icon/';
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import { defineComponent, ref, PropType } from '@vue/composition-api';
|
||||
import { defineComponent, PropType } from '@vue/composition-api';
|
||||
|
||||
interface Breadcrumb {
|
||||
to: string;
|
||||
@@ -36,11 +36,12 @@ export default defineComponent({
|
||||
default: () => []
|
||||
}
|
||||
},
|
||||
setup(props) {
|
||||
setup() {
|
||||
return {};
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.v-breadcrumb {
|
||||
--v-breadcrumb-color: var(--foreground-color-secondary);
|
||||
|
||||
@@ -19,9 +19,8 @@
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import { defineComponent, reactive, computed, Ref, PropType } from '@vue/composition-api';
|
||||
import { defineComponent, computed, PropType } from '@vue/composition-api';
|
||||
import { Location } from 'vue-router';
|
||||
import parseCSSVar from '@/utils/parse-css-var';
|
||||
import useSizeClass, { sizeProps } from '@/compositions/size-class';
|
||||
|
||||
export default defineComponent({
|
||||
|
||||
@@ -1,11 +1,4 @@
|
||||
import {
|
||||
withKnobs,
|
||||
text,
|
||||
boolean,
|
||||
number,
|
||||
optionsKnob as options,
|
||||
color
|
||||
} from '@storybook/addon-knobs';
|
||||
import { withKnobs, color } from '@storybook/addon-knobs';
|
||||
import { action } from '@storybook/addon-actions';
|
||||
import Vue from 'vue';
|
||||
import VCheckbox from '../v-checkbox';
|
||||
|
||||
@@ -17,7 +17,6 @@
|
||||
|
||||
<script lang="ts">
|
||||
import { defineComponent, computed } from '@vue/composition-api';
|
||||
import parseCSSVar from '@/utils/parse-css-var';
|
||||
|
||||
export default defineComponent({
|
||||
model: {
|
||||
@@ -68,7 +67,7 @@ export default defineComponent({
|
||||
}
|
||||
|
||||
if (props.inputValue instanceof Array) {
|
||||
let newValue = [...props.inputValue];
|
||||
const newValue = [...props.inputValue];
|
||||
|
||||
if (isChecked.value === false) {
|
||||
newValue.push(props.value);
|
||||
|
||||
@@ -1,11 +1,4 @@
|
||||
import {
|
||||
withKnobs,
|
||||
text,
|
||||
boolean,
|
||||
number,
|
||||
color,
|
||||
optionsKnob as options
|
||||
} from '@storybook/addon-knobs';
|
||||
import { withKnobs, text, boolean, color, optionsKnob as options } from '@storybook/addon-knobs';
|
||||
import { action } from '@storybook/addon-actions';
|
||||
import Vue from 'vue';
|
||||
import VChip from './v-chip.vue';
|
||||
|
||||
@@ -21,7 +21,6 @@
|
||||
|
||||
<script lang="ts">
|
||||
import { defineComponent, ref, computed } from '@vue/composition-api';
|
||||
import parseCSSVar from '@/utils/parse-css-var';
|
||||
import useSizeClass, { sizeProps } from '@/compositions/size-class';
|
||||
|
||||
export default defineComponent({
|
||||
|
||||
@@ -11,8 +11,7 @@
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import { defineComponent, reactive, computed } from '@vue/composition-api';
|
||||
import parseCSSVar from '@/utils/parse-css-var';
|
||||
import { defineComponent, computed } from '@vue/composition-api';
|
||||
import CustomIconBox from './custom-icons/box.vue';
|
||||
import useSizeClass, { sizeProps } from '@/compositions/size-class';
|
||||
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import { withKnobs } from '@storybook/addon-knobs';
|
||||
import { action } from '@storybook/addon-actions';
|
||||
import Vue from 'vue';
|
||||
import VInput from './v-input.vue';
|
||||
import markdown from './v-input.readme.md';
|
||||
|
||||
@@ -5,20 +5,8 @@
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import Vue, { VNode } from 'vue';
|
||||
import {
|
||||
defineComponent,
|
||||
ref,
|
||||
provide,
|
||||
PropType,
|
||||
computed,
|
||||
Ref,
|
||||
watch,
|
||||
toRefs
|
||||
} from '@vue/composition-api';
|
||||
import { defineComponent, PropType, toRefs } from '@vue/composition-api';
|
||||
import { useGroupableParent } from '@/compositions/groupable';
|
||||
import arraysAreEqual from '@/utils/arrays-are-equal';
|
||||
import { notEmpty } from '@/utils/is-empty';
|
||||
|
||||
export default defineComponent({
|
||||
props: {
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import { defineComponent, ref, provide } from '@vue/composition-api';
|
||||
import { defineComponent } from '@vue/composition-api';
|
||||
import { useGroupable } from '@/compositions/groupable';
|
||||
|
||||
export default defineComponent({
|
||||
@@ -15,7 +15,7 @@ export default defineComponent({
|
||||
default: null
|
||||
}
|
||||
},
|
||||
setup(props, context) {
|
||||
setup(props) {
|
||||
const { active, toggle } = useGroupable(props.value);
|
||||
return { active, toggle };
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { mount, createLocalVue, shallowMount } from '@vue/test-utils';
|
||||
import { mount, createLocalVue } from '@vue/test-utils';
|
||||
import VueCompositionAPI from '@vue/composition-api';
|
||||
import VueRouter from 'vue-router';
|
||||
import router from '@/router';
|
||||
|
||||
@@ -1,13 +1,4 @@
|
||||
import {
|
||||
withKnobs,
|
||||
text,
|
||||
boolean,
|
||||
number,
|
||||
color,
|
||||
select,
|
||||
optionsKnob as options
|
||||
} from '@storybook/addon-knobs';
|
||||
import { action } from '@storybook/addon-actions';
|
||||
import { withKnobs, text, boolean } from '@storybook/addon-knobs';
|
||||
import Vue from 'vue';
|
||||
import VNotice from './v-notice.vue';
|
||||
import VIcon from '../v-icon/';
|
||||
|
||||
@@ -1,11 +1,4 @@
|
||||
import {
|
||||
withKnobs,
|
||||
text,
|
||||
boolean,
|
||||
number,
|
||||
optionsKnob as options,
|
||||
color
|
||||
} from '@storybook/addon-knobs';
|
||||
import { withKnobs, text, boolean, number } from '@storybook/addon-knobs';
|
||||
import { action } from '@storybook/addon-actions';
|
||||
import Vue from 'vue';
|
||||
import VOverlay from '../v-overlay';
|
||||
@@ -71,8 +64,7 @@ export const withClick = () => ({
|
||||
methods: {
|
||||
click(event: MouseEvent) {
|
||||
action('click')(event);
|
||||
const self: any = this;
|
||||
self.active = false;
|
||||
(this as any).active = false;
|
||||
}
|
||||
},
|
||||
template: `
|
||||
|
||||
@@ -7,7 +7,6 @@
|
||||
|
||||
<script lang="ts">
|
||||
import { defineComponent, computed } from '@vue/composition-api';
|
||||
import parseCSSVar from '@/utils/parse-css-var';
|
||||
|
||||
export default defineComponent({
|
||||
props: {
|
||||
|
||||
@@ -19,7 +19,6 @@
|
||||
|
||||
<script lang="ts">
|
||||
import { defineComponent, computed } from '@vue/composition-api';
|
||||
import parseCSSVar from '@/utils/parse-css-var';
|
||||
import useSizeClass, { sizeProps } from '@/compositions/size-class';
|
||||
|
||||
export default defineComponent({
|
||||
|
||||
@@ -1,11 +1,4 @@
|
||||
import {
|
||||
withKnobs,
|
||||
color,
|
||||
optionsKnob as options,
|
||||
number,
|
||||
text,
|
||||
boolean
|
||||
} from '@storybook/addon-knobs';
|
||||
import { withKnobs, color, number, boolean } from '@storybook/addon-knobs';
|
||||
|
||||
import Vue from 'vue';
|
||||
import VProgressLinear from './v-progress-linear.vue';
|
||||
|
||||
@@ -22,8 +22,7 @@
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import { defineComponent, computed } from '@vue/composition-api';
|
||||
import parseCSSVar from '@/utils/parse-css-var';
|
||||
import { defineComponent } from '@vue/composition-api';
|
||||
|
||||
export default defineComponent({
|
||||
props: {
|
||||
|
||||
@@ -1,15 +1,6 @@
|
||||
import {
|
||||
withKnobs,
|
||||
text,
|
||||
boolean,
|
||||
number,
|
||||
color,
|
||||
optionsKnob as options
|
||||
} from '@storybook/addon-knobs';
|
||||
import { action } from '@storybook/addon-actions';
|
||||
import { withKnobs, text, color } from '@storybook/addon-knobs';
|
||||
import Vue from 'vue';
|
||||
import VSheet from './v-sheet.vue';
|
||||
import VIcon from '../v-icon/';
|
||||
import markdown from './v-sheet.readme.md';
|
||||
import withPadding from '../../../.storybook/decorators/with-padding';
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import { defineComponent, computed } from '@vue/composition-api';
|
||||
import { defineComponent } from '@vue/composition-api';
|
||||
|
||||
export default defineComponent({
|
||||
props: {},
|
||||
|
||||
@@ -192,16 +192,14 @@ export const slots = () => ({
|
||||
methods: {
|
||||
onInput: action('input'),
|
||||
onChange: action('change'),
|
||||
clickMinus(event: MouseEvent) {
|
||||
const self: any = this;
|
||||
if (self.value > 5) {
|
||||
self.value = self.value - 1;
|
||||
clickMinus() {
|
||||
if ((this as any).value > 5) {
|
||||
(this as any).value = (this as any).value - 1;
|
||||
}
|
||||
},
|
||||
clickPlus() {
|
||||
const self: any = this;
|
||||
if (self.value < 15) {
|
||||
self.value = self.value + 1;
|
||||
if ((this as any).value < 15) {
|
||||
(this as any).value = (this as any).value + 1;
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -33,7 +33,6 @@
|
||||
|
||||
<script lang="ts">
|
||||
import { defineComponent, computed } from '@vue/composition-api';
|
||||
import parseCSSVar from '@/utils/parse-css-var';
|
||||
import { ChangeEvent } from 'react';
|
||||
|
||||
export default defineComponent({
|
||||
@@ -63,7 +62,7 @@ export default defineComponent({
|
||||
default: 50
|
||||
}
|
||||
},
|
||||
setup(props, { emit, listeners }) {
|
||||
setup(props, { emit }) {
|
||||
const styles = computed(() => ({
|
||||
'--_v-slider-percentage': ((props.value - props.min) / (props.max - props.min)) * 100
|
||||
}));
|
||||
|
||||
@@ -1,11 +1,4 @@
|
||||
import {
|
||||
withKnobs,
|
||||
text,
|
||||
boolean,
|
||||
number,
|
||||
optionsKnob as options,
|
||||
color
|
||||
} from '@storybook/addon-knobs';
|
||||
import { withKnobs, color } from '@storybook/addon-knobs';
|
||||
import { action } from '@storybook/addon-actions';
|
||||
import Vue from 'vue';
|
||||
import VSwitch from '../v-switch/';
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
|
||||
<script lang="ts">
|
||||
import { defineComponent, computed } from '@vue/composition-api';
|
||||
import parseCSSVar from '@/utils/parse-css-var';
|
||||
|
||||
export default defineComponent({
|
||||
model: {
|
||||
@@ -54,7 +53,7 @@ export default defineComponent({
|
||||
|
||||
function toggleInput(): void {
|
||||
if (props.inputValue instanceof Array) {
|
||||
let newValue = [...props.inputValue];
|
||||
const newValue = [...props.inputValue];
|
||||
|
||||
if (isChecked.value === false) {
|
||||
newValue.push(props.value);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import VueCompositionAPI from '@vue/composition-api';
|
||||
import { mount, createLocalVue, Wrapper, shallowMount } from '@vue/test-utils';
|
||||
import { mount, createLocalVue, Wrapper } from '@vue/test-utils';
|
||||
|
||||
const localVue = createLocalVue();
|
||||
localVue.use(VueCompositionAPI);
|
||||
|
||||
@@ -34,9 +34,9 @@
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import { defineComponent, ref, onMounted, onBeforeUnmount, PropType } from '@vue/composition-api';
|
||||
import { defineComponent, ref, PropType } from '@vue/composition-api';
|
||||
import useEventListener from '@/compositions/event-listener';
|
||||
import { Alignment, Header, Sort } from './types';
|
||||
import { Header, Sort } from './types';
|
||||
import { throttle, clone } from 'lodash';
|
||||
|
||||
export default defineComponent({
|
||||
@@ -196,7 +196,7 @@ export default defineComponent({
|
||||
}
|
||||
}
|
||||
|
||||
function onMouseUp(event: MouseEvent) {
|
||||
function onMouseUp() {
|
||||
if (dragging.value === true) {
|
||||
dragging.value = false;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import VueCompositionAPI from '@vue/composition-api';
|
||||
import { mount, createLocalVue, Wrapper, shallowMount } from '@vue/test-utils';
|
||||
import { mount, createLocalVue, Wrapper } from '@vue/test-utils';
|
||||
|
||||
const localVue = createLocalVue();
|
||||
localVue.use(VueCompositionAPI);
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
|
||||
<script lang="ts">
|
||||
import { defineComponent, PropType } from '@vue/composition-api';
|
||||
import { Header, Sort } from './types';
|
||||
import { Header } from './types';
|
||||
|
||||
export default defineComponent({
|
||||
props: {
|
||||
|
||||
@@ -10,9 +10,14 @@ export type HeaderRaw = {
|
||||
|
||||
export type Header = Required<HeaderRaw>;
|
||||
|
||||
export type Item = {
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
[key: string]: any;
|
||||
};
|
||||
|
||||
export type ItemSelectEvent = {
|
||||
value: boolean;
|
||||
item: any;
|
||||
item: Item;
|
||||
};
|
||||
|
||||
export type Sort = {
|
||||
|
||||
@@ -809,18 +809,19 @@ export const serverSort = () => ({
|
||||
},
|
||||
methods: {
|
||||
onSort(sort: Sort) {
|
||||
const self: any = this;
|
||||
self.loading = true;
|
||||
(this as any).loading = true;
|
||||
|
||||
setTimeout(() => {
|
||||
self.items = [...self.items].sort((a, b) => (a[sort.by!] > b[sort.by!] ? 1 : -1));
|
||||
(this as any).items = [...(this as any).items].sort((a, b) =>
|
||||
a[sort.by!] > b[sort.by!] ? 1 : -1
|
||||
);
|
||||
|
||||
if (sort.desc === true) {
|
||||
self.items.reverse();
|
||||
(this as any).items.reverse();
|
||||
}
|
||||
|
||||
self.sort = sort;
|
||||
self.loading = false;
|
||||
(this as any).sort = sort;
|
||||
(this as any).loading = false;
|
||||
}, 2000);
|
||||
}
|
||||
},
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import VueCompositionAPI from '@vue/composition-api';
|
||||
import { mount, createLocalVue, Wrapper, shallowMount } from '@vue/test-utils';
|
||||
import { mount, createLocalVue, Wrapper } from '@vue/test-utils';
|
||||
|
||||
const localVue = createLocalVue();
|
||||
localVue.use(VueCompositionAPI);
|
||||
|
||||
@@ -59,15 +59,13 @@
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import { VNode } from 'vue';
|
||||
import { defineComponent, computed, ref, watch, Ref, PropType } from '@vue/composition-api';
|
||||
import { Header, HeaderRaw, ItemSelectEvent, Sort } from './types';
|
||||
import { defineComponent, computed, ref, PropType } from '@vue/composition-api';
|
||||
import { Header, HeaderRaw, Item, ItemSelectEvent, Sort } from './types';
|
||||
import TableHeader from './_table-header.vue';
|
||||
import TableRow from './_table-row.vue';
|
||||
import { sortBy, clone, mapValues, forEach, pick } from 'lodash';
|
||||
const draggable = require('vuedraggable');
|
||||
|
||||
const { i18n } = require('@/lang/');
|
||||
import { sortBy, clone, forEach, pick } from 'lodash';
|
||||
import { i18n } from '@/lang/';
|
||||
import draggable from 'vuedraggable';
|
||||
|
||||
const HeaderDefaults: Header = {
|
||||
text: '',
|
||||
@@ -93,7 +91,7 @@ export default defineComponent({
|
||||
required: true
|
||||
},
|
||||
items: {
|
||||
type: Array as PropType<object[]>,
|
||||
type: Array as PropType<Item[]>,
|
||||
required: true
|
||||
},
|
||||
itemKey: {
|
||||
@@ -117,7 +115,7 @@ export default defineComponent({
|
||||
default: false
|
||||
},
|
||||
selection: {
|
||||
type: Array as PropType<any[]>,
|
||||
type: Array as PropType<Item[]>,
|
||||
default: () => []
|
||||
},
|
||||
fixedHeader: {
|
||||
@@ -141,7 +139,7 @@ export default defineComponent({
|
||||
default: 48
|
||||
}
|
||||
},
|
||||
setup(props, { slots, emit, listeners }) {
|
||||
setup(props, { emit, listeners }) {
|
||||
const _headers = computed({
|
||||
get: () => {
|
||||
return props.headers.map((header: HeaderRaw) => ({
|
||||
@@ -154,7 +152,7 @@ export default defineComponent({
|
||||
'update:headers',
|
||||
// We'll return the original headers with the updated values, so we don't stage
|
||||
// all the default values
|
||||
newHeaders.map((header, index) => {
|
||||
newHeaders.map(header => {
|
||||
const keysThatArentDefault: string[] = [];
|
||||
|
||||
forEach(header, (value, key: string) => {
|
||||
@@ -229,13 +227,13 @@ export default defineComponent({
|
||||
function onItemSelected(event: ItemSelectEvent) {
|
||||
emit('item-selected', event);
|
||||
|
||||
const selection: any[] = clone(props.selection);
|
||||
const selection: Item[] = clone(props.selection);
|
||||
|
||||
if (event.value === true) {
|
||||
selection.push(event.item);
|
||||
} else {
|
||||
const itemIndex: number = selection.findIndex(
|
||||
(item: any) => item[props.itemKey] === event.item[props.itemKey]
|
||||
(item: Item) => item[props.itemKey] === event.item[props.itemKey]
|
||||
);
|
||||
|
||||
selection.splice(itemIndex, 1);
|
||||
@@ -244,8 +242,8 @@ export default defineComponent({
|
||||
emit('select', selection);
|
||||
}
|
||||
|
||||
function getSelectedState(item: any) {
|
||||
const selectedKeys = props.selection.map((item: any) => item[props.itemKey]);
|
||||
function getSelectedState(item: Item) {
|
||||
const selectedKeys = props.selection.map((item: Item) => item[props.itemKey]);
|
||||
return selectedKeys.includes(item[props.itemKey]);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import VueCompositionAPI, { ref } from '@vue/composition-api';
|
||||
import { ref } from '@vue/composition-api';
|
||||
import useEventListener from './event-listener';
|
||||
import mountComposition from '../../.jest/mount-composition';
|
||||
|
||||
@@ -10,7 +10,7 @@ describe('Compositions / Event Listener', () => {
|
||||
map[event] = cb;
|
||||
});
|
||||
|
||||
window.removeEventListener = jest.fn((event, cb) => {
|
||||
window.removeEventListener = jest.fn(event => {
|
||||
delete map[event];
|
||||
});
|
||||
|
||||
@@ -35,7 +35,7 @@ describe('Compositions / Event Listener', () => {
|
||||
map[event] = cb;
|
||||
});
|
||||
|
||||
window.removeEventListener = jest.fn((event, cb) => {
|
||||
window.removeEventListener = jest.fn(event => {
|
||||
delete map[event];
|
||||
});
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { onMounted, onUnmounted, ref } from '@vue/composition-api';
|
||||
import formatDistance from 'date-fns/formatDistance';
|
||||
|
||||
export default function useFormatDistance(date: Date | number, autoUpdate: number = 60000) {
|
||||
export default function useFormatDistance(date: Date | number, autoUpdate = 60000) {
|
||||
let interval: number;
|
||||
|
||||
const formatOptions = {
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
import VueCompositionAPI, { watch } from '@vue/composition-api';
|
||||
import { watch } from '@vue/composition-api';
|
||||
import useWindowSize from './window-size';
|
||||
import mountComposition from '../../.jest/mount-composition';
|
||||
|
||||
describe('Compositions / Window Size', () => {
|
||||
it('Adds passed event listener onMounted', async () => {
|
||||
let testWidth: number = 0;
|
||||
let testWidth = 0;
|
||||
|
||||
const component = mountComposition(() => {
|
||||
const { width } = useWindowSize();
|
||||
@@ -30,12 +30,12 @@ describe('Compositions / Window Size', () => {
|
||||
map[event] = cb;
|
||||
});
|
||||
|
||||
window.removeEventListener = jest.fn((event, cb) => {
|
||||
window.removeEventListener = jest.fn(event => {
|
||||
delete map[event];
|
||||
});
|
||||
|
||||
const component = mountComposition(() => {
|
||||
const { width } = useWindowSize();
|
||||
useWindowSize();
|
||||
});
|
||||
|
||||
expect(map.resize).toBeTruthy();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { onMounted, onUnmounted, ref, onBeforeMount, onBeforeUnmount } from '@vue/composition-api';
|
||||
import { onMounted, onUnmounted, ref, onBeforeMount } from '@vue/composition-api';
|
||||
import { throttle } from 'lodash';
|
||||
|
||||
type WindowSizeOptions = {
|
||||
|
||||
@@ -1,11 +1,3 @@
|
||||
import {
|
||||
withKnobs,
|
||||
text,
|
||||
boolean,
|
||||
number,
|
||||
color,
|
||||
optionsKnob as options
|
||||
} from '@storybook/addon-knobs';
|
||||
import Vue from 'vue';
|
||||
import VButton from '../../components/v-button';
|
||||
import VIcon from '../../components/v-icon';
|
||||
@@ -17,8 +9,7 @@ Vue.component('v-icon', VIcon);
|
||||
|
||||
export default {
|
||||
title: 'Directives / Tooltip',
|
||||
component: VButton,
|
||||
decorators: [withKnobs, withPadding],
|
||||
decorators: [withPadding],
|
||||
parameters: {
|
||||
notes: markdown
|
||||
}
|
||||
|
||||
@@ -92,7 +92,7 @@ export async function setLanguage(lang: Language): Promise<boolean> {
|
||||
}
|
||||
|
||||
i18n.locale = lang;
|
||||
document.querySelector('html')!.setAttribute('lang', lang);
|
||||
(document.querySelector('html') as HTMLElement).setAttribute('lang', lang);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -9,8 +9,7 @@
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import { defineComponent, computed } from '@vue/composition-api';
|
||||
import VueI18n from 'vue-i18n';
|
||||
import { defineComponent } from '@vue/composition-api';
|
||||
import useNavigation from '../compositions/use-navigation';
|
||||
|
||||
export default defineComponent({
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import { defineComponent, computed } from '@vue/composition-api';
|
||||
import { defineComponent } from '@vue/composition-api';
|
||||
import CollectionsNavigation from '../components/collections-navigation.vue';
|
||||
import { i18n } from '@/lang';
|
||||
import useNavigation, { NavItem } from '../compositions/use-navigation';
|
||||
|
||||
@@ -2,7 +2,7 @@ import Vue from 'vue';
|
||||
import VueCompositionAPI from '@vue/composition-api';
|
||||
import { Route } from 'vue-router';
|
||||
import * as hydration from '@/hydrate';
|
||||
import router, {
|
||||
import {
|
||||
onBeforeEach,
|
||||
onBeforeEnterProjectChooser,
|
||||
replaceRoutes,
|
||||
|
||||
@@ -15,7 +15,6 @@
|
||||
|
||||
<script lang="ts">
|
||||
import { defineComponent, ref } from '@vue/composition-api';
|
||||
import api from '@/api';
|
||||
import { useProjectsStore } from '@/stores/projects';
|
||||
import router from '@/router';
|
||||
import { login } from '@/auth';
|
||||
|
||||
7
src/shims.d.ts
vendored
7
src/shims.d.ts
vendored
@@ -9,6 +9,11 @@ declare module '*.svg' {
|
||||
}
|
||||
|
||||
declare module '*.md' {
|
||||
const value: any;
|
||||
const value: string;
|
||||
export default value;
|
||||
}
|
||||
|
||||
declare module 'vuedraggable' {
|
||||
import Vue from 'vue';
|
||||
export default Vue;
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@ import { Collection, CollectionRaw } from './types';
|
||||
import useProjectsStore from '@/stores/projects';
|
||||
import i18n from '@/lang/';
|
||||
import { notEmpty } from '@/utils/is-empty';
|
||||
import VueI18n, { LocaleMessages } from 'vue-i18n';
|
||||
import VueI18n from 'vue-i18n';
|
||||
import formatTitle from '@directus/format-title';
|
||||
|
||||
export const useCollectionsStore = createStore({
|
||||
|
||||
@@ -76,9 +76,9 @@ describe('Stores / Projects', () => {
|
||||
|
||||
it('Returns true if the project exists', async () => {
|
||||
const projectsStore = useProjectsStore({});
|
||||
const spy = jest
|
||||
.spyOn(api, 'get')
|
||||
.mockImplementation(() => Promise.resolve({ data: { data: {} } }));
|
||||
jest.spyOn(api, 'get').mockImplementation(() =>
|
||||
Promise.resolve({ data: { data: {} } })
|
||||
);
|
||||
const result = await projectsStore.setCurrentProject('my-project');
|
||||
expect(result).toBe(true);
|
||||
});
|
||||
|
||||
@@ -2,11 +2,16 @@ import { createStore } from 'pinia';
|
||||
import { Projects, ProjectWithKey, ProjectError } from './types';
|
||||
import api from '@/api';
|
||||
|
||||
type LoadingError = null | {
|
||||
status: number;
|
||||
error: string;
|
||||
};
|
||||
|
||||
export const useProjectsStore = createStore({
|
||||
id: 'projects',
|
||||
state: () => ({
|
||||
needsInstall: false,
|
||||
error: null as any,
|
||||
error: null as LoadingError,
|
||||
projects: [] as Projects,
|
||||
currentProjectKey: null as string | null
|
||||
}),
|
||||
@@ -47,7 +52,7 @@ export const useProjectsStore = createStore({
|
||||
try {
|
||||
const projectsResponse = await api.get('/server/projects');
|
||||
const projectKeys: string[] = projectsResponse.data.data;
|
||||
let projects: Projects = [];
|
||||
const projects: Projects = [];
|
||||
|
||||
for (let index = 0; index < projectKeys.length; index++) {
|
||||
try {
|
||||
|
||||
@@ -8,9 +8,8 @@ export default function arraysAreEqual(
|
||||
a1: readonly (string | number)[],
|
||||
a2: readonly (string | number)[]
|
||||
) {
|
||||
let superSet: {
|
||||
[key: string]: any;
|
||||
[key: number]: any;
|
||||
const superSet: {
|
||||
[key: string]: number;
|
||||
} = {};
|
||||
|
||||
for (let i = 0; i < a1.length; i++) {
|
||||
@@ -26,7 +25,7 @@ export default function arraysAreEqual(
|
||||
superSet[e] = 2;
|
||||
}
|
||||
|
||||
for (let e in superSet) {
|
||||
for (const e in superSet) {
|
||||
if (superSet[e] === 1) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ import Vue, { Component } from 'vue';
|
||||
|
||||
function registerComponent(id: string, component: Component): void;
|
||||
function registerComponent(id: string, component: Parameters<typeof Vue.component>[1]): void;
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
function registerComponent(id: string, component: any) {
|
||||
Vue.component(id, component);
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import { defineComponent, ref, watch, toRefs } from '@vue/composition-api';
|
||||
import { defineComponent, ref, watch } from '@vue/composition-api';
|
||||
|
||||
export default defineComponent({
|
||||
props: {
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import { defineComponent, computed } from '@vue/composition-api';
|
||||
import { defineComponent } from '@vue/composition-api';
|
||||
import ModuleBarLogo from './_module-bar-logo.vue';
|
||||
import { useProjectsStore } from '@/stores/projects';
|
||||
import { modules } from '@/modules/';
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import { defineComponent, PropType, computed, ref, Ref, inject } from '@vue/composition-api';
|
||||
import { defineComponent, ref, inject } from '@vue/composition-api';
|
||||
import { useGroupable } from '@/compositions/groupable';
|
||||
|
||||
export default defineComponent({
|
||||
@@ -29,7 +29,7 @@ export default defineComponent({
|
||||
required: true
|
||||
}
|
||||
},
|
||||
setup(props, { emit }) {
|
||||
setup(props) {
|
||||
const { active, toggle } = useGroupable(props.title);
|
||||
const drawerOpen = inject('drawer-open', ref(false));
|
||||
return { active, toggle, drawerOpen };
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { shallowMount, createLocalVue, Wrapper } from '@vue/test-utils';
|
||||
import { shallowMount, createLocalVue } from '@vue/test-utils';
|
||||
import VueCompositionAPI from '@vue/composition-api';
|
||||
import PrivateView from './private-view.vue';
|
||||
import VOverlay from '@/components/v-overlay';
|
||||
|
||||
@@ -51,10 +51,9 @@
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import { defineComponent, ref, computed, watch, provide } from '@vue/composition-api';
|
||||
import { defineComponent, ref, computed, provide } from '@vue/composition-api';
|
||||
import useWindowSize from '@/compositions/window-size';
|
||||
import ModuleBar from './_module-bar.vue';
|
||||
import api from '@/api';
|
||||
import DrawerDetailGroup from './_drawer-detail-group.vue';
|
||||
|
||||
// Breakpoints:
|
||||
|
||||
@@ -9,7 +9,6 @@
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import { version } from '../../../package.json';
|
||||
import { defineComponent } from '@vue/composition-api';
|
||||
|
||||
export default defineComponent({
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { withKnobs, boolean } from '@storybook/addon-knobs';
|
||||
import { withKnobs } from '@storybook/addon-knobs';
|
||||
import Vue from 'vue';
|
||||
import PublicView from './public-view.vue';
|
||||
import markdown from './public-view.readme.md';
|
||||
|
||||
@@ -51,7 +51,7 @@ const mockProject: ProjectWithKey = {
|
||||
};
|
||||
|
||||
describe('Views / Public', () => {
|
||||
let store = useProjectsStore({});
|
||||
const store = useProjectsStore({});
|
||||
let component: Wrapper<Vue>;
|
||||
|
||||
beforeEach(() => {
|
||||
|
||||
63
yarn.lock
63
yarn.lock
@@ -1859,17 +1859,6 @@
|
||||
dependencies:
|
||||
"@types/yargs-parser" "*"
|
||||
|
||||
"@typescript-eslint/eslint-plugin@^1.1.0":
|
||||
version "1.13.0"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-1.13.0.tgz#22fed9b16ddfeb402fd7bcde56307820f6ebc49f"
|
||||
integrity sha512-WQHCozMnuNADiqMtsNzp96FNox5sOVpU8Xt4meaT4em8lOG1SrOv92/mUbEHQVh90sldKSfcOc/I0FOb/14G1g==
|
||||
dependencies:
|
||||
"@typescript-eslint/experimental-utils" "1.13.0"
|
||||
eslint-utils "^1.3.1"
|
||||
functional-red-black-tree "^1.0.1"
|
||||
regexpp "^2.0.1"
|
||||
tsutils "^3.7.0"
|
||||
|
||||
"@typescript-eslint/eslint-plugin@^2.22.0":
|
||||
version "2.22.0"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.22.0.tgz#218ce6d4aa0244c6a40baba39ca1e021b26bb017"
|
||||
@@ -1881,15 +1870,6 @@
|
||||
regexpp "^3.0.0"
|
||||
tsutils "^3.17.1"
|
||||
|
||||
"@typescript-eslint/experimental-utils@1.13.0":
|
||||
version "1.13.0"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-1.13.0.tgz#b08c60d780c0067de2fb44b04b432f540138301e"
|
||||
integrity sha512-zmpS6SyqG4ZF64ffaJ6uah6tWWWgZ8m+c54XXgwFtUv0jNz8aJAVx8chMCvnk7yl6xwn8d+d96+tWp7fXzTuDg==
|
||||
dependencies:
|
||||
"@types/json-schema" "^7.0.3"
|
||||
"@typescript-eslint/typescript-estree" "1.13.0"
|
||||
eslint-scope "^4.0.0"
|
||||
|
||||
"@typescript-eslint/experimental-utils@2.22.0":
|
||||
version "2.22.0"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.22.0.tgz#4d00c91fbaaa68e56e7869be284999a265707f85"
|
||||
@@ -1899,16 +1879,6 @@
|
||||
"@typescript-eslint/typescript-estree" "2.22.0"
|
||||
eslint-scope "^5.0.0"
|
||||
|
||||
"@typescript-eslint/parser@^1.1.0":
|
||||
version "1.13.0"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-1.13.0.tgz#61ac7811ea52791c47dc9fd4dd4a184fae9ac355"
|
||||
integrity sha512-ITMBs52PCPgLb2nGPoeT4iU3HdQZHcPaZVw+7CsFagRJHUhyeTgorEwHXhFf3e7Evzi8oujKNpHc8TONth8AdQ==
|
||||
dependencies:
|
||||
"@types/eslint-visitor-keys" "^1.0.0"
|
||||
"@typescript-eslint/experimental-utils" "1.13.0"
|
||||
"@typescript-eslint/typescript-estree" "1.13.0"
|
||||
eslint-visitor-keys "^1.0.0"
|
||||
|
||||
"@typescript-eslint/parser@^2.22.0":
|
||||
version "2.22.0"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.22.0.tgz#8eeb6cb6de873f655e64153397d4790898e149d0"
|
||||
@@ -1919,14 +1889,6 @@
|
||||
"@typescript-eslint/typescript-estree" "2.22.0"
|
||||
eslint-visitor-keys "^1.1.0"
|
||||
|
||||
"@typescript-eslint/typescript-estree@1.13.0":
|
||||
version "1.13.0"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-1.13.0.tgz#8140f17d0f60c03619798f1d628b8434913dc32e"
|
||||
integrity sha512-b5rCmd2e6DCC6tCTN9GSUAuxdYwCM/k/2wdjHGrIRGPSJotWMCe/dGpi66u42bhuh8q3QBzqM4TMA1GUUCJvdw==
|
||||
dependencies:
|
||||
lodash.unescape "4.0.1"
|
||||
semver "5.5.0"
|
||||
|
||||
"@typescript-eslint/typescript-estree@2.22.0", "@typescript-eslint/typescript-estree@^2.22.0":
|
||||
version "2.22.0"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.22.0.tgz#a16ed45876abf743e1f5857e2f4a1c3199fd219e"
|
||||
@@ -2209,13 +2171,12 @@
|
||||
dependencies:
|
||||
eslint-config-prettier "^6.0.0"
|
||||
|
||||
"@vue/eslint-config-typescript@^4.0.0":
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@vue/eslint-config-typescript/-/eslint-config-typescript-4.0.0.tgz#a202983598a4a826460cbb8ee43826875b0f6673"
|
||||
integrity sha512-uSMAMgw4xDgVdZQhpbtJRo8nMV4oOy3Ht8olfOo7xvYFYLMF2JZ1tDRKd9/NSusxA72O2Vma+HzmyzDHg9evcQ==
|
||||
"@vue/eslint-config-typescript@^5.0.2":
|
||||
version "5.0.2"
|
||||
resolved "https://registry.yarnpkg.com/@vue/eslint-config-typescript/-/eslint-config-typescript-5.0.2.tgz#c2f3328e70d55d10aeb826f209405397960548c7"
|
||||
integrity sha512-GEZOHKOnelgQf5npA+6VNuhJZu9xEJaics3SYUyRjaSay+2SCpEINHhEpt6fXoNy/aIFt8CkDlt9CaEb+QPIcg==
|
||||
dependencies:
|
||||
"@typescript-eslint/eslint-plugin" "^1.1.0"
|
||||
"@typescript-eslint/parser" "^1.1.0"
|
||||
vue-eslint-parser "^7.0.0"
|
||||
|
||||
"@vue/preload-webpack-plugin@^1.1.0":
|
||||
version "1.1.1"
|
||||
@@ -5734,7 +5695,7 @@ eslint-plugin-vue@^6.2.1:
|
||||
semver "^5.6.0"
|
||||
vue-eslint-parser "^7.0.0"
|
||||
|
||||
eslint-scope@^4.0.0, eslint-scope@^4.0.3:
|
||||
eslint-scope@^4.0.3:
|
||||
version "4.0.3"
|
||||
resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848"
|
||||
integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==
|
||||
@@ -9118,11 +9079,6 @@ lodash.transform@^4.6.0:
|
||||
resolved "https://registry.yarnpkg.com/lodash.transform/-/lodash.transform-4.6.0.tgz#12306422f63324aed8483d3f38332b5f670547a0"
|
||||
integrity sha1-EjBkIvYzJK7YSD0/ODMrX2cFR6A=
|
||||
|
||||
lodash.unescape@4.0.1:
|
||||
version "4.0.1"
|
||||
resolved "https://registry.yarnpkg.com/lodash.unescape/-/lodash.unescape-4.0.1.tgz#bf2249886ce514cda112fae9218cdc065211fc9c"
|
||||
integrity sha1-vyJJiGzlFM2hEvrpIYzcBlIR/Jw=
|
||||
|
||||
lodash.uniq@^4.5.0:
|
||||
version "4.5.0"
|
||||
resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
|
||||
@@ -12553,11 +12509,6 @@ semver-diff@^3.1.1:
|
||||
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
|
||||
integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
|
||||
|
||||
semver@5.5.0:
|
||||
version "5.5.0"
|
||||
resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab"
|
||||
integrity sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==
|
||||
|
||||
semver@7.0.0:
|
||||
version "7.0.0"
|
||||
resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e"
|
||||
@@ -14060,7 +14011,7 @@ tsutils@^2.29.0:
|
||||
dependencies:
|
||||
tslib "^1.8.1"
|
||||
|
||||
tsutils@^3.17.1, tsutils@^3.7.0:
|
||||
tsutils@^3.17.1:
|
||||
version "3.17.1"
|
||||
resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759"
|
||||
integrity sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==
|
||||
|
||||
Reference in New Issue
Block a user