diff --git a/package.json b/package.json index 5f47cb8..c7f1cfc 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,7 @@ "css-doodle": "^0.12.0", "lodash": "^4.17.21", "mousetrap": "^1.6.5", + "nody-greeter-types": "^1.0.7", "nouislider": "^14.6.3", "parallax-js": "^3.1.0", "vue": "^2.6.12", @@ -27,8 +28,8 @@ "@types/lodash": "^4.14.178", "@types/mousetrap": "^1.6.9", "@types/node": "14.10.0", - "@typescript-eslint/eslint-plugin": "^2.33.0", - "@typescript-eslint/parser": "^2.33.0", + "@typescript-eslint/eslint-plugin": "3.3.0", + "@typescript-eslint/parser": "3.10.1", "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1", "@vue/cli-plugin-babel": "~4.5.0", "@vue/cli-plugin-eslint": "~4.5.0", diff --git a/src/assets/images/themes/agida/index.png b/src/assets/images/themes/agida/index.png new file mode 100644 index 0000000..7c7b708 Binary files /dev/null and b/src/assets/images/themes/agida/index.png differ diff --git a/src/components/base/BackgroundImage.tsx b/src/components/base/BackgroundImage.tsx index 12d222f..625c8d0 100644 --- a/src/components/base/BackgroundImage.tsx +++ b/src/components/base/BackgroundImage.tsx @@ -3,8 +3,9 @@ import { CreateElement } from 'vue/types/umd' import { AppModule } from '@/store/app' import { PageModule } from '@/store/page' +import { AppTheme } from '@/models/app' -const components: { [k: string]: any } = {} +const components: { [k: string]: Vue } = {} const requireComponent = require.context( '@/components/themes', true, /\.(vue|tsx)$/ @@ -24,18 +25,18 @@ requireComponent.keys().forEach(fileName => { @Component({ components }) export default class BackgroundImage extends Vue { - get theme() { + get theme(): AppTheme { return AppModule.activeTheme } - get isOpenLogin() { + get isOpenLogin(): boolean { return PageModule.isOpenBlock('login') } - render(h: CreateElement) { + render(h: CreateElement): JSX.Element { const body = h(components[this.theme.component ?? 'random']) - return
+ return
{ body }
diff --git a/src/components/themes/agida/index.tsx b/src/components/themes/agida/index.tsx index af52dc3..f1bb0fd 100644 --- a/src/components/themes/agida/index.tsx +++ b/src/components/themes/agida/index.tsx @@ -1,8 +1,7 @@ import { Component, Vue } from 'vue-property-decorator' import { AppModule } from '@/store/app' -import { waveInit } from './lib' -import { Debounce } from '@/utils/helper' import { Wavery } from './lib/wave' +import { Debounce } from '@/utils/helper' import { changeHsl, hexToRgb, rgbToHsl } from '@/utils/color' export const OPACITY_ARR = [0.265, 0.4, 0.53, 1] @@ -11,10 +10,9 @@ export const bottomColors = ['#9C1EFF', '#8518E9', '#6F12D3', '#590ABD'] export const MAX_WAVES = 4 @Component -export default class DestructionTheme extends Vue { +export default class AgidaTheme extends Vue { iconWidth = 667 iconHeight = 684 - test = 1 wave = { height: 300, @@ -24,7 +22,7 @@ export default class DestructionTheme extends Vue { variance: 1, animation: { steps: 2, - time: 40000 + time: 4000 } } @@ -33,44 +31,142 @@ export default class DestructionTheme extends Vue { height: window.innerHeight } - get topColor() { - return '#03C79C' + get topColor(): string { + return AppModule.getThemeInput('top-color')?.value as string || '#00CC99' } - get bottomColor() { - return '#9C1EFF' + get bottomColor(): string { + return AppModule.getThemeInput('bottom-color')?.value as string || '#6600FF' } - get topColors() { - return this.generateArrayColors(this.topColor) + get animationSpeed(): number { + return AppModule.getThemeInput('animation-speed')?.value as number || 40 } - get bottomColors() { - return this.generateArrayColors(this.bottomColor) + get topColors(): string[] { + const initHSL = rgbToHsl(hexToRgb(this.topColor)) + const second = changeHsl(initHSL, 10, -3, -5) + const third = changeHsl(initHSL, 25, -3, -10) + const fourth = changeHsl(initHSL, 33, -3, -20) + + return [initHSL, second, third, fourth] } - generateArrayColors(color: string) { - const initHSL = rgbToHsl(hexToRgb(color)) - const second = changeHsl(initHSL, 17, 3, -5) - const third = changeHsl(initHSL, 26, 3, -8) - const thourd = changeHsl(initHSL, 35, 3, -12) + get bottomColors(): string[] { + const initHSL = rgbToHsl(hexToRgb(this.bottomColor)) + const second = changeHsl(initHSL, 10, -3, 5) + const third = changeHsl(initHSL, 25, -3, 10) + const fourth = changeHsl(initHSL, 33, -3, 20) - return [initHSL, second, third, thourd] + return [initHSL, second, third, fourth] } - get animationSpeed() { - return AppModule.getThemeInput('animation-speed')?.value as number || 40 + get bottomActiveColor(): string { + return this.bottomColor // this.bottomColors[3] + } + + get knifeSVG(): JSX.Element { + return + + + + } + + get agidaSVG(): JSX.Element { + return + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + } + + get yinYangSVG(): JSX.Element { + return + + + + } + + get activeFragment() { + return this.knifeSVG } - get width() { + get width(): number { return this.screen.width } - get height() { + get height(): number { return this.screen.height } - get viewBox() { + get viewBox(): string { return `0 0 ${this.width} ${this.height}` } @@ -102,10 +198,11 @@ export default class DestructionTheme extends Vue { generateWave(type: 'bottom' | 'top') { const wavery = new Wavery(this.wave) const waveSvg = wavery.generateSvg() + console.log('GENERATE WAVE') const { height, width, xmlns, paths } = waveSvg.svg const isTop = type === 'top' - const colorsArray = isTop ? topColors : bottomColors + const colorsArray = isTop ? this.topColors : this.bottomColors const angle = Math.atan(window.innerHeight / window.innerWidth) * (180 / Math.PI) * 1.1 return - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + {this.activeFragment} - + - - - - - - + + + + + + diff --git a/src/components/themes/agida/lib/wave.ts b/src/components/themes/agida/lib/wave.ts index 956dfee..54dac00 100644 --- a/src/components/themes/agida/lib/wave.ts +++ b/src/components/themes/agida/lib/wave.ts @@ -170,8 +170,6 @@ export class Wavery { return this.generateKeyframe(percent, isBound ? path.d : path.animatedPath[index - 1]) }) - console.log({ animationList }) - return `.path-${index}{ animation:pathAnim-${index} ${this.animation.time}ms; animation-timing-function: ${this.animation.timingFunction}; diff --git a/src/locales/en.json b/src/locales/en.json index 509f72d..cd50eb7 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -2,6 +2,7 @@ "input": { "time": "Time", "color": "Select color", + "bottom-color": "Bottom color", "color-active": "Select active color", "color-second": "Select second color", "slider-amount": "Choice slider amount", diff --git a/src/locales/ru.json b/src/locales/ru.json index 0c8c8e1..d0f0ae9 100644 --- a/src/locales/ru.json +++ b/src/locales/ru.json @@ -2,6 +2,7 @@ "input": { "time": "Время", "color": "Выбрать цвет", + "bottom-color": "Выбрать нижний цвет", "color-active": "Выбрать активный цвет", "color-second": "Выбрать второстепенный цвет", "slider-amount": "Choice slider amount", diff --git a/src/models/app.ts b/src/models/app.ts index f93bd28..deffeb1 100644 --- a/src/models/app.ts +++ b/src/models/app.ts @@ -25,7 +25,7 @@ export interface AppThemeSnapshot { values: Record; } -export type AppInputTheme = AppInputThemeGeneral | AppInputThemeSlider | AppInputThemeSlider | AppInputButton +export type AppInputTheme = AppInputThemeGeneral | AppInputThemeSlider | AppInputButton export type AppInputThemeType = 'color' | 'slider' | 'checkbox' | 'palette' | 'button' export type AppInputThemeValue = string | boolean | string[] | number diff --git a/src/models/lightdm.ts b/src/models/lightdm.ts index e232d69..62d89c0 100644 --- a/src/models/lightdm.ts +++ b/src/models/lightdm.ts @@ -1,4 +1,4 @@ -/* eslint-disable @typescript-eslint/camelcase */ +/* eslint-disable camelcase */ export interface ExpandedWindow { lightdm: Lightdm; authentication_complete(): void; diff --git a/src/plugins/components.ts b/src/plugins/components.ts index 86b3029..d01b617 100644 --- a/src/plugins/components.ts +++ b/src/plugins/components.ts @@ -3,20 +3,3 @@ import Vue from 'vue' import AppIcon from '@/components/app/AppIcon.vue' Vue.component('AppIcon', AppIcon) - -// import upperFirst from 'lodash/upperFirst' -// import camelCase from 'lodash/camelCase' - -// const requireComponent = require.context( -// '@/components/app', true, /\.vue$/ -// ) - -// requireComponent.keys().forEach(fileName => { -// const componentConfig = requireComponent(fileName) - -// const componentName = upperFirst( -// camelCase(fileName.replace(/^\.\//, '').replace(/\.\w+$/, '')) -// ) - -// Vue.component(`${componentName}`, componentConfig.default || componentConfig) -// }) diff --git a/src/utils/color.ts b/src/utils/color.ts index 24172ac..ef6de49 100644 --- a/src/utils/color.ts +++ b/src/utils/color.ts @@ -1,9 +1,9 @@ -export type ColorArray = [number, number, number] - -export interface IConvertOptions { - view?: 'array' | 'string' +export interface ConvertOptions { + view?: 'array' | 'string'; } +export type ColorArray = [number, number, number]; + export const hexToRgb = (color: string): ColorArray => { const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(color) return result ? [ @@ -15,28 +15,27 @@ export const hexToRgb = (color: string): ColorArray => { export const fromBracketsToNumber = (color: string): ColorArray => { const colors = color.slice(color.indexOf('(') + 1).replace(')', '').split(',') - - return colors.slice(0, 3).map(parseInt) as ColorArray + return colors.slice(0, 3).map((color) => parseInt(color)) as ColorArray } export const changeHsl = (hsl: string, hAdd: number, sAdd: number, lAdd: number): string => { - let hslMass = fromBracketsToNumber(hsl) + const hslMass = fromBracketsToNumber(hsl) return `hsl(${hslMass[0] + hAdd}, ${hslMass[1] + sAdd}%, ${hslMass[2] + lAdd}%)` } -export function rgbToHsl (colorRGB: ColorArray): string -export function rgbToHsl (colorRGB: ColorArray, convertOptions?: IConvertOptions): string | ColorArray { +export function rgbToHsl(colorRGB: ColorArray): string +export function rgbToHsl(colorRGB: ColorArray, convertOptions?: ConvertOptions): string | ColorArray { let [r, g, b] = colorRGB const { view } = convertOptions || {} const isArray = view === 'array' r /= 255 g /= 255 b /= 255 - let [max, min] = [Math.max(r, g, b), Math.min(r, g, b)] + const [max, min] = [Math.max(r, g, b), Math.min(r, g, b)] let h = 0 let s = 0 - let l = (max + min) / 2 + const l = (max + min) / 2 const finalArray = (): ColorArray => [Math.round(h), Math.round(s * 100), Math.round(l * 100)] const formatString = (hsl: ColorArray) => `hsl(${hsl[0]}, ${hsl[1]}%, ${hsl[2]}%)` @@ -45,7 +44,7 @@ export function rgbToHsl (colorRGB: ColorArray, convertOptions?: IConvertOptions return isArray ? finalArray() : formatString(finalArray()) } - let d = (max - min) + const d = (max - min) s = l >= 0.5 ? d / (2 - (max + min)) : d / (max + min) switch (max) { case r: h = ((g - b) / d + 0) * 60; break @@ -55,26 +54,3 @@ export function rgbToHsl (colorRGB: ColorArray, convertOptions?: IConvertOptions return isArray ? finalArray() : formatString(finalArray()) } - -function getPrettyDate(timestamp: number): string; -function getPrettyDate(day: string, month: string, year: string): string; -function getPrettyDate(date: Date): string; - -// Может принимать от 1 до 3 параметров разных типов, в зависимости от перегрузок -function getPrettyDate(arg1: unknown, arg2?: unknown, arg3?: unknown) { - let prettyDate: string = ''; - - if(typeof arg1 === 'number') { - const date = new Date(arg1); - const day = date.getDate(); - const month = date.getMonth() + 1; - const year = date.getFullYear(); - - prettyDate = `${day}/${month}/${year}` - } - - return prettyDate; -} - -const timeStamp = new Date().getTime(); -getPrettyDate(timeStamp); \ No newline at end of file diff --git a/src/utils/constant.ts b/src/utils/constant.ts index 22b3065..058c3bc 100644 --- a/src/utils/constant.ts +++ b/src/utils/constant.ts @@ -1,4 +1,4 @@ -import { AppTheme } from '@/models/app' +import { AppTheme, AppInputThemeGeneral } from '@/models/app' import { pxratio, hueSlider, @@ -6,7 +6,8 @@ import { setActiveColor, brightnessSlider, buildInputSlider, - buildInvertCheckbox + buildInvertCheckbox, + buildInputColor } from './helper' const background = '#22233D' @@ -30,6 +31,14 @@ export const defaultTheme: AppTheme = { ] } +const colorInput: AppInputThemeGeneral = { + name: 'top-color', + type: 'color', + label: 'input.color-active', + value: '#00CC99', + options: { class: 'w-50' } +} + export const AppThemes: AppTheme[] = [ { name: 'Agida', @@ -37,7 +46,22 @@ export const AppThemes: AppTheme[] = [ color: { active: '#04ded4', background: '#19102e' - } + }, + settings: [ + colorInput, + { + name: 'bottom-color', + type: 'color', + label: 'input.color-active', + value: '#6600FF', + options: { class: 'w-50' } + } + // buildInputColor({ + // name: 'bottom-color', + // value: '#6600FF', + // options: { class: 'w-50' } + // }) + ] }, defaultTheme, { diff --git a/src/utils/gl.ts b/src/utils/gl.ts index d24c426..e326bc6 100644 --- a/src/utils/gl.ts +++ b/src/utils/gl.ts @@ -51,7 +51,7 @@ export default class GL { time = 0 startTime = Date.now() - renderHook: null | Function = null + renderHook: null | (() => void) = null renderOptions: GLRenderOptions = {} constructor( diff --git a/src/utils/helper.ts b/src/utils/helper.ts index a69543e..04c86f6 100644 --- a/src/utils/helper.ts +++ b/src/utils/helper.ts @@ -139,7 +139,7 @@ export const systemActionsObject = systemActions.reduce((acc, action) => { } }, {} as Record void>) -export function preventDefault(event: Event, callback?: Function) { +export function preventDefault(event: Event, callback?: () => void): void { event.preventDefault() callback && callback() } @@ -152,7 +152,7 @@ export function focusInputPassword() { } } -export function stopPropagation(event: Event, callback?: Function) { +export function stopPropagation(event: Event, callback?: () => void): void { event.stopPropagation() callback && callback() } @@ -214,6 +214,20 @@ export function buildInputSlider({ } } +export function buildInputColor({ + name = 'active-color', + value = '#00CC99', + ...options +} = {}): AppInputThemeGeneral { + return { + name, + value, + label: `input.${name}`, + type: 'color', + ...options + } +} + export const pxratio = () => buildInputSlider({ name: 'pxratio', icon: 'pxratio', min: 0.01, max: 1, value: 0.8 }) export const hueSlider = () => buildInputSlider({ name: 'hue', min: 1, max: 360, step: 1, value: 0 }) export const brightnessSlider = () => buildInputSlider({ name: 'brightness', min: 0, max: 1, step: 0.01, value: 1 }) diff --git a/src/utils/lightdm.ts b/src/utils/lightdm.ts index 2bec550..3cdf911 100644 --- a/src/utils/lightdm.ts +++ b/src/utils/lightdm.ts @@ -1,11 +1,11 @@ -/* eslint-disable @typescript-eslint/camelcase */ +/* eslint-disable camelcase */ import { appWindow } from '@/models/lightdm' const DEBUG_PASSWORD = 'password' const lightdmDebug = appWindow.lightdm === undefined let password: string -let completeCallback: undefined | Function +let completeCallback: undefined | (() => void) if (lightdmDebug) { appWindow.lightdm = { diff --git a/yarn.lock b/yarn.lock index 0ab63fd..5648333 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1053,7 +1053,12 @@ dependencies: "@types/node" "*" -"@types/json-schema@^7.0.3", "@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5": +"@types/json-schema@^7.0.3": + version "7.0.11" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" + integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== + +"@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5": version "7.0.9" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d" integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ== @@ -1185,40 +1190,72 @@ anymatch "^3.0.0" source-map "^0.6.0" -"@typescript-eslint/eslint-plugin@^2.33.0": - version "2.34.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.34.0.tgz#6f8ce8a46c7dea4a6f1d171d2bb8fbae6dac2be9" - integrity sha512-4zY3Z88rEE99+CNvTbXSyovv2z9PNOVffTWD2W8QF5s2prBQtwN2zadqERcrHpcR7O/+KMI3fcTAmUUhK/iQcQ== +"@typescript-eslint/eslint-plugin@3.3.0": + version "3.3.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-3.3.0.tgz#89518e5c5209a349bde161c3489b0ec187ae5d37" + integrity sha512-Ybx/wU75Tazz6nU2d7nN6ll0B98odoiYLXwcuwS5WSttGzK46t0n7TPRQ4ozwcTv82UY6TQoIvI+sJfTzqK9dQ== dependencies: - "@typescript-eslint/experimental-utils" "2.34.0" + "@typescript-eslint/experimental-utils" "3.3.0" functional-red-black-tree "^1.0.1" regexpp "^3.0.0" + semver "^7.3.2" tsutils "^3.17.1" -"@typescript-eslint/experimental-utils@2.34.0": - version "2.34.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.34.0.tgz#d3524b644cdb40eebceca67f8cf3e4cc9c8f980f" - integrity sha512-eS6FTkq+wuMJ+sgtuNTtcqavWXqsflWcfBnlYhg/nS4aZ1leewkXGbvBhaapn1q6qf4M71bsR1tez5JTRMuqwA== +"@typescript-eslint/experimental-utils@3.10.1": + version "3.10.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-3.10.1.tgz#e179ffc81a80ebcae2ea04e0332f8b251345a686" + integrity sha512-DewqIgscDzmAfd5nOGe4zm6Bl7PKtMG2Ad0KG8CUZAHlXfAKTF9Ol5PXhiMh39yRL2ChRH1cuuUGOcVyyrhQIw== + dependencies: + "@types/json-schema" "^7.0.3" + "@typescript-eslint/types" "3.10.1" + "@typescript-eslint/typescript-estree" "3.10.1" + eslint-scope "^5.0.0" + eslint-utils "^2.0.0" + +"@typescript-eslint/experimental-utils@3.3.0": + version "3.3.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-3.3.0.tgz#d72a946e056a83d4edf97f3411cceb639b0b8c87" + integrity sha512-d4pGIAbu/tYsrPrdHCQ5xfadJGvlkUxbeBB56nO/VGmEDi/sKmfa5fGty5t5veL1OyJBrUmSiRn1R1qfVDydrg== dependencies: "@types/json-schema" "^7.0.3" - "@typescript-eslint/typescript-estree" "2.34.0" + "@typescript-eslint/typescript-estree" "3.3.0" eslint-scope "^5.0.0" eslint-utils "^2.0.0" -"@typescript-eslint/parser@^2.33.0": - version "2.34.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.34.0.tgz#50252630ca319685420e9a39ca05fe185a256bc8" - integrity sha512-03ilO0ucSD0EPTw2X4PntSIRFtDPWjrVq7C3/Z3VQHRC7+13YB55rcJI3Jt+YgeHbjUdJPcPa7b23rXCBokuyA== +"@typescript-eslint/parser@3.10.1": + version "3.10.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-3.10.1.tgz#1883858e83e8b442627e1ac6f408925211155467" + integrity sha512-Ug1RcWcrJP02hmtaXVS3axPPTTPnZjupqhgj+NnZ6BCkwSImWk/283347+x9wN+lqOdK9Eo3vsyiyDHgsmiEJw== dependencies: "@types/eslint-visitor-keys" "^1.0.0" - "@typescript-eslint/experimental-utils" "2.34.0" - "@typescript-eslint/typescript-estree" "2.34.0" + "@typescript-eslint/experimental-utils" "3.10.1" + "@typescript-eslint/types" "3.10.1" + "@typescript-eslint/typescript-estree" "3.10.1" eslint-visitor-keys "^1.1.0" -"@typescript-eslint/typescript-estree@2.34.0": - version "2.34.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.34.0.tgz#14aeb6353b39ef0732cc7f1b8285294937cf37d5" - integrity sha512-OMAr+nJWKdlVM9LOqCqh3pQQPwxHAN7Du8DR6dmwCrAmxtiXQnhHJ6tBNtf+cggqfo51SG/FCwnKhXCIM7hnVg== +"@typescript-eslint/types@3.10.1": + version "3.10.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-3.10.1.tgz#1d7463fa7c32d8a23ab508a803ca2fe26e758727" + integrity sha512-+3+FCUJIahE9q0lDi1WleYzjCwJs5hIsbugIgnbB+dSCYUxl8L6PwmsyOPFZde2hc1DlTo/xnkOgiTLSyAbHiQ== + +"@typescript-eslint/typescript-estree@3.10.1": + version "3.10.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-3.10.1.tgz#fd0061cc38add4fad45136d654408569f365b853" + integrity sha512-QbcXOuq6WYvnB3XPsZpIwztBoquEYLXh2MtwVU+kO8jgYCiv4G5xrSP/1wg4tkvrEE+esZVquIPX/dxPlePk1w== + dependencies: + "@typescript-eslint/types" "3.10.1" + "@typescript-eslint/visitor-keys" "3.10.1" + debug "^4.1.1" + glob "^7.1.6" + is-glob "^4.0.1" + lodash "^4.17.15" + semver "^7.3.2" + tsutils "^3.17.1" + +"@typescript-eslint/typescript-estree@3.3.0": + version "3.3.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-3.3.0.tgz#841ffed25c29b0049ebffb4c2071268a34558a2a" + integrity sha512-3SqxylENltEvJsjjMSDCUx/edZNSC7wAqifUU1Ywp//0OWEZwMZJfecJud9XxJ/40rAKEbJMKBOQzeOjrLJFzQ== dependencies: debug "^4.1.1" eslint-visitor-keys "^1.1.0" @@ -1228,6 +1265,13 @@ semver "^7.3.2" tsutils "^3.17.1" +"@typescript-eslint/visitor-keys@3.10.1": + version "3.10.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-3.10.1.tgz#cd4274773e3eb63b2e870ac602274487ecd1e931" + integrity sha512-9JgC82AaQeglebjZMgYR5wgmfUdUc+EitGUUMW8u2nDckaeimzW+VsoLV6FoimPv2id3VQzfjwBxEMVz08ameQ== + dependencies: + eslint-visitor-keys "^1.1.0" + "@vue/babel-helper-vue-jsx-merge-props@^1.2.1": version "1.2.1" resolved "https://registry.yarnpkg.com/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.2.1.tgz#31624a7a505fb14da1d58023725a4c5f270e6a81" @@ -7000,6 +7044,11 @@ node-releases@^2.0.1: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.1.tgz#3d1d395f204f1f2f29a54358b9fb678765ad2fc5" integrity sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA== +nody-greeter-types@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/nody-greeter-types/-/nody-greeter-types-1.0.7.tgz#30564af4b5fe0b60c5055f9ac997ebe29cd94d89" + integrity sha512-eaNGLWktHdcuPBhHg/um6R3W+EGRfy8VoEswh18RuV4OM80w/6k1NHPoUVLjF7+Wew4LpfNcnSpuWJlkWY6nXA== + normalize-package-data@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8"