commit 22b4b85f1daf22286ab74079ee77c8eadc4be23a
parent 6e8503581806d42fe3e92023d7d6d12d185b7347
Author: Matthew Horan <matt@matthoran.com>
Date: Fri, 25 Sep 2020 20:44:45 -0400
Add ESLint and Prettier and address some issues
Diffstat:
19 files changed, 830 insertions(+), 295 deletions(-)
diff --git a/.eslintignore b/.eslintignore
@@ -0,0 +1 @@
+node_modules
diff --git a/.eslintrc b/.eslintrc
@@ -0,0 +1,11 @@
+{
+ "root": true,
+ "parser": "@typescript-eslint/parser",
+ "plugins": ["@typescript-eslint", "prettier"],
+ "extends": [
+ "eslint:recommended",
+ "plugin:@typescript-eslint/eslint-recommended",
+ "plugin:@typescript-eslint/recommended",
+ "prettier"
+ ]
+}
diff --git a/.prettierrc b/.prettierrc
@@ -0,0 +1,6 @@
+{
+ "semi": true,
+ "trailingComma": "none",
+ "singleQuote": true,
+ "printWidth": 80
+}
diff --git a/package.json b/package.json
@@ -5,7 +5,8 @@
"scripts": {
"start": "expo start",
"eject": "expo eject",
- "test": "jest"
+ "test": "jest",
+ "lint": "eslint . --ext .ts --ext .tsx"
},
"dependencies": {
"@types/lodash": "^4.14.106",
@@ -28,11 +29,16 @@
"@types/jest": "^25.2.1",
"@types/react": "~16.9.35",
"@types/react-native": "~0.63.2",
+ "@typescript-eslint/eslint-plugin": "^4.2.0",
+ "@typescript-eslint/parser": "^4.2.0",
"babel-jest": "^25.3.0",
"babel-preset-expo": "^8.3.0",
+ "eslint": "^7.9.0",
+ "eslint-config-prettier": "^6.12.0",
+ "eslint-plugin-prettier": "^3.1.4",
"jest": "^25.3.0",
"jest-expo": "^39.0.0",
- "prettier": "^1.11.1",
+ "prettier": "^2.1.2",
"react-test-renderer": "~16.9.0",
"ts-jest": "^25.3.1",
"tslib": "^1.9.0",
diff --git a/src/lib/helpers/date-formatter.ts b/src/lib/helpers/date-formatter.ts
@@ -1,4 +1,4 @@
-import { format } from "date-fns";
+import { format } from 'date-fns';
-export const formatDate = (date: string | number | Date) =>
- format(date, "ddd HH:mm:ss");
+export const formatDate = (date: string | number | Date): string =>
+ format(date, 'ddd HH:mm:ss');
diff --git a/src/lib/helpers/push-notifications.ts b/src/lib/helpers/push-notifications.ts
@@ -2,7 +2,7 @@ import Constants from 'expo-constants';
import * as Notifications from 'expo-notifications';
import * as Permissions from 'expo-permissions';
-export const registerForPushNotificationsAsync = async () => {
+export const registerForPushNotificationsAsync = async (): Promise<void> => {
const { status: existingStatus } = await Permissions.getAsync(
Permissions.NOTIFICATIONS
);
@@ -14,12 +14,16 @@ export const registerForPushNotificationsAsync = async () => {
// install, so this will only ask on iOS
await Permissions.askAsync(Permissions.NOTIFICATIONS);
}
-}
+};
-export const getPushNotificationStatusAsync = async () => {
+export const getPushNotificationStatusAsync = async (): Promise<
+ string | undefined
+> => {
let token;
if (Constants.isDevice) {
- const { status: existingStatus } = await Permissions.getAsync(Permissions.NOTIFICATIONS);
+ const { status: existingStatus } = await Permissions.getAsync(
+ Permissions.NOTIFICATIONS
+ );
let finalStatus = existingStatus;
if (existingStatus !== 'granted') {
const { status } = await Permissions.askAsync(Permissions.NOTIFICATIONS);
@@ -32,4 +36,4 @@ export const getPushNotificationStatusAsync = async () => {
}
return token;
-}
+};
diff --git a/src/lib/helpers/url-formatter.ts b/src/lib/helpers/url-formatter.ts
@@ -1,10 +1,12 @@
-export const formatUrl = (type, text) => {
+export const formatUrl = (type: string, text: string): string => {
switch (type) {
- case "url":
+ case 'url':
+ return text;
+ case 'email':
+ return 'mailto:' + text;
+ case 'phone':
+ return 'tel:' + text;
+ default:
return text;
- case "email":
- return "mailto:" + text;
- case "phone":
- return "tel:" + text;
}
};
diff --git a/src/lib/weechat/action_transformer.ts b/src/lib/weechat/action_transformer.ts
@@ -1,4 +1,4 @@
-import { StoreState } from "../../store";
+import { StoreState } from '../../store';
export type WeechatReduxAction = {
type: string;
@@ -11,41 +11,40 @@ type MapFn<A, B> = (a: A) => A | B;
const reduceToObjectByKey = <T, U>(
array: T[],
keyFn: KeyFn<T>,
- mapFn: MapFn<T, U> = a => a
-): object =>
- array.reduce((acc, elem) => ({ ...acc, [keyFn(elem)]: mapFn(elem) }), {});
+ mapFn: MapFn<T, U> = (a) => a
+) => array.reduce((acc, elem) => ({ ...acc, [keyFn(elem)]: mapFn(elem) }), {});
export const transformToReduxAction = (data: WeechatResponse<any>) => {
switch (data.id) {
// Weechat internal events starts with "_"
- case "_nicklist_diff": {
+ case '_nicklist_diff': {
const object = data.objects[0] as WeechatObject<WeechatNicklist[]>;
const nicklistDiffs = object.content;
- const nick = nicklistDiffs.filter(diff => diff.group === 0)[0];
+ const nick = nicklistDiffs.filter((diff) => diff.group === 0)[0];
if (nick) {
const bufferId = nick.pointers[0];
const payload = nick;
switch (String.fromCharCode(nick._diff)) {
- case "+": {
+ case '+': {
return {
- type: "NICK_ADDED",
+ type: 'NICK_ADDED',
bufferId,
payload
};
}
- case "-": {
+ case '-': {
return {
- type: "NICK_REMOVED",
+ type: 'NICK_REMOVED',
bufferId,
payload
};
}
- case "*": {
+ case '*': {
return {
- type: "NICK_UPDATED",
+ type: 'NICK_UPDATED',
bufferId,
payload
};
@@ -55,7 +54,7 @@ export const transformToReduxAction = (data: WeechatResponse<any>) => {
return null;
}
- case "_buffer_line_added": {
+ case '_buffer_line_added': {
const object = data.objects[0] as WeechatObject<WeechatLine[]>;
const line = object.content[0];
@@ -63,80 +62,80 @@ export const transformToReduxAction = (data: WeechatResponse<any>) => {
const state: StoreState = getState();
dispatch({
- type: "BUFFER_LINE_ADDED",
+ type: 'BUFFER_LINE_ADDED',
bufferId: line.buffer,
currentBufferId: state.app.currentBufferId,
payload: line
});
};
}
- case "_buffer_closing": {
+ case '_buffer_closing': {
const object = data.objects[0] as WeechatObject<WeechatBuffer[]>;
const buffer = object.content[0];
return {
- type: "BUFFER_CLOSED",
+ type: 'BUFFER_CLOSED',
bufferId: buffer.pointers[0]
};
}
- case "_buffer_opened": {
+ case '_buffer_opened': {
const object = data.objects[0] as WeechatObject<WeechatBuffer[]>;
const buffer = object.content[0];
buffer.id = buffer.pointers[0];
return {
- type: "BUFFER_OPENED",
+ type: 'BUFFER_OPENED',
payload: buffer,
bufferId: buffer.id
};
}
- case "_buffer_renamed": {
+ case '_buffer_renamed': {
const object = data.objects[0] as WeechatObject<WeechatBuffer[]>;
const buffer = object.content[0];
buffer.id = buffer.pointers[0];
return {
- type: "BUFFER_RENAMED",
+ type: 'BUFFER_RENAMED',
payload: buffer,
bufferId: buffer.id
};
}
- case "_buffer_localvar_removed": {
+ case '_buffer_localvar_removed': {
const object = data.objects[0] as WeechatObject<WeechatBuffer[]>;
const buffer = object.content[0];
buffer.id = buffer.pointers[0];
return {
- type: "BUFFER_LOCALVAR_REMOVE",
+ type: 'BUFFER_LOCALVAR_REMOVE',
payload: buffer,
bufferId: buffer.id
};
}
- case "_buffer_title_changed":
- case "_buffer_localvar_added": {
+ case '_buffer_title_changed':
+ case '_buffer_localvar_added': {
const object = data.objects[0] as WeechatObject<WeechatBuffer[]>;
const buffer = object.content[0];
buffer.id = buffer.pointers[0];
return {
- type: "BUFFER_LOCALVAR_UPDATE",
+ type: 'BUFFER_LOCALVAR_UPDATE',
payload: buffer,
bufferId: buffer.id
};
}
- case "hotlist": {
+ case 'hotlist': {
const object = data.objects[0] as WeechatObject<WeechatHotlist[]>;
return (dispatch, getState) => {
const state: StoreState = getState();
dispatch({
- type: "FETCH_HOTLISTS",
+ type: 'FETCH_HOTLISTS',
payload: reduceToObjectByKey(
object.content,
- hotlist => hotlist.buffer,
- h => {
- const [unknown, message, privmsg, highlight] = h.count;
+ (hotlist) => hotlist.buffer,
+ (h) => {
+ const [, message, privmsg, highlight] = h.count;
const sum = message + privmsg + highlight;
return { ...h, message, privmsg, highlight, sum };
}
@@ -145,48 +144,48 @@ export const transformToReduxAction = (data: WeechatResponse<any>) => {
});
};
}
- case "nicklist": {
+ case 'nicklist': {
const object = data.objects[0] as WeechatObject<WeechatNicklist[]>;
const nicklistDiffs = object.content;
- const nicks = nicklistDiffs.filter(diff => diff.group === 0);
+ const nicks = nicklistDiffs.filter((diff) => diff.group === 0);
return {
- type: "FETCH_NICKLIST",
+ type: 'FETCH_NICKLIST',
bufferId: object.content[0].pointers[0],
payload: nicks
};
}
- case "buffers": {
+ case 'buffers': {
const object = data.objects[0] as WeechatObject<WeechatBuffer[]>;
return {
- type: "FETCH_BUFFERS",
+ type: 'FETCH_BUFFERS',
payload: reduceToObjectByKey(
object.content,
- buffer => buffer.pointers[0],
- buf => ({ ...buf, id: buf.pointers[0] })
+ (buffer) => buffer.pointers[0],
+ (buf) => ({ ...buf, id: buf.pointers[0] })
)
};
}
- case "version": {
+ case 'version': {
const infolist = data.objects[0] as WeechatObject<WeechatInfoList>;
return {
- type: "FETCH_VERSION",
+ type: 'FETCH_VERSION',
payload: infolist.content.value
};
}
- case "lines": {
+ case 'lines': {
const object = data.objects[0] as WeechatObject<WeechatLine[]>;
return {
- type: "FETCH_LINES",
+ type: 'FETCH_LINES',
bufferId: object.content[0].buffer,
payload: object.content
};
}
default:
- console.log("unhandled event!", data.id, data);
+ console.log('unhandled event!', data.id, data);
return undefined;
}
};
diff --git a/src/lib/weechat/connection.ts b/src/lib/weechat/connection.ts
@@ -1,5 +1,5 @@
-import { WeeChatProtocol } from "./parser";
-import { transformToReduxAction } from "./action_transformer";
+import { WeeChatProtocol } from './parser';
+import { transformToReduxAction } from './action_transformer';
const protocol = new WeeChatProtocol();
@@ -10,8 +10,8 @@ export default class WeechatConnection {
ssl: boolean;
compressed: boolean;
websocket: WebSocket;
- onSuccess: (conn: WeechatConnection) => any;
- onError: (reconnect: boolean) => any;
+ onSuccess: (conn: WeechatConnection) => void;
+ onError: (reconnect: boolean) => void;
connected: boolean;
reconnect: boolean;
@@ -23,11 +23,11 @@ export default class WeechatConnection {
connect(
host: string,
- password: string = "",
+ password = '',
ssl: boolean,
- onSuccess: (conn: WeechatConnection) => any,
- onError: (reconnect: boolean) => any
- ) {
+ onSuccess: (conn: WeechatConnection) => void,
+ onError: (reconnect: boolean) => void
+ ): void {
this.hostname = host;
this.password = password;
this.ssl = ssl;
@@ -37,40 +37,40 @@ export default class WeechatConnection {
this.openSocket();
}
- openSocket() {
+ openSocket(): void {
this.websocket = new WebSocket(
- `${this.ssl ? "wss" : "ws"}://${this.hostname}/weechat`
+ `${this.ssl ? 'wss' : 'ws'}://${this.hostname}/weechat`
);
this.websocket.onopen = () => this.onopen();
- this.websocket.onmessage = event => this.onmessage(event);
- this.websocket.onerror = event => this.handleError(event);
+ this.websocket.onmessage = (event) => this.onmessage(event);
+ this.websocket.onerror = (event) => this.handleError(event);
this.websocket.onclose = () => this.close();
}
- onopen() {
+ onopen(): void {
this.send(
`init password=${this.password},compression=${
- this.compressed ? "zlib" : "off"
+ this.compressed ? 'zlib' : 'off'
}\n`
);
- this.send("(version) info version");
+ this.send('(version) info version');
this.connected = true;
this.onSuccess(this);
}
- handleError(event) {
+ handleError(event: Event): void {
console.log(event);
this.reconnect = this.connected;
this.onError(this.reconnect);
}
- close() {
+ close(): void {
this.connected = false;
- this.send("quit");
+ this.send('quit');
this.websocket.close();
this.dispatch({
- type: "DISCONNECT"
+ type: 'DISCONNECT'
});
if (this.reconnect) {
@@ -79,10 +79,10 @@ export default class WeechatConnection {
}
}
- onmessage(event) {
+ onmessage(event: WebSocketMessageEvent): void {
const parsed = protocol.parse(event.data) as WeechatResponse<any>;
- console.log("Parsed data:", parsed);
+ console.log('Parsed data:', parsed);
try {
const action = transformToReduxAction(parsed);
if (action) {
@@ -93,8 +93,8 @@ export default class WeechatConnection {
}
}
- send(data) {
- console.log("Sending data:", data);
- this.websocket.send(data + "\n");
+ send(data: string): void {
+ console.log('Sending data:', data);
+ this.websocket.send(data + '\n');
}
}
diff --git a/src/lib/weechat/types.ts b/src/lib/weechat/types.d.ts
diff --git a/src/usecase/Root.tsx b/src/usecase/Root.tsx
@@ -1,57 +1,56 @@
-import * as React from "react";
-import { StatusBar } from "react-native";
-import { Provider } from "react-redux";
-import { PersistGate } from "redux-persist/integration/react";
+import * as React from 'react';
+import { StatusBar } from 'react-native';
+import { Provider } from 'react-redux';
+import { PersistGate } from 'redux-persist/integration/react';
-import WeechatConnection from "../lib/weechat/connection";
-import { store, persistor } from "../store";
+import WeechatConnection from '../lib/weechat/connection';
+import { store, persistor } from '../store';
-import App from "./App";
-import ConnectionGate from "./ConnectionGate";
-import { getPushNotificationStatusAsync } from "../lib/helpers/push-notifications"
+import App from './App';
+import ConnectionGate from './ConnectionGate';
+import { getPushNotificationStatusAsync } from '../lib/helpers/push-notifications';
interface State {
connecting: boolean;
}
-export default class WeechatNative extends React.Component<{}, State> {
+export default class WeechatNative extends React.Component<null, State> {
state: State = {
connecting: false
};
connection: WeechatConnection;
- constructor(props) {
+ constructor(props: null) {
super(props);
this.connection = new WeechatConnection(store.dispatch);
}
- setNotificationToken = async () => {
- let token = await getPushNotificationStatusAsync();
- if (token)
- this.sendMessageToBuffer("core.weechat", "/weechatrn " + token);
- }
+ setNotificationToken = async (): Promise<void> => {
+ const token = await getPushNotificationStatusAsync();
+ if (token) this.sendMessageToBuffer('core.weechat', '/weechatrn ' + token);
+ };
- onConnectionSuccess = connection => {
+ onConnectionSuccess = (connection: WeechatConnection): void => {
this.setState({ connecting: false });
- connection.send("(hotlist) hdata hotlist:gui_hotlist(*)");
+ connection.send('(hotlist) hdata hotlist:gui_hotlist(*)');
connection.send(
- "(buffers) hdata buffer:gui_buffers(*) local_variables,notify,number,full_name,short_name,title,hidden,type"
+ '(buffers) hdata buffer:gui_buffers(*) local_variables,notify,number,full_name,short_name,title,hidden,type'
);
// connection.send("(nicklist) nicklist");
- connection.send("sync");
+ connection.send('sync');
this.setNotificationToken();
};
- onConnectionError = reconnect => {
+ onConnectionError = (reconnect: boolean): void => {
this.setState({ connecting: reconnect });
};
- disconnect = () => {
+ disconnect = (): void => {
this.connection.close();
};
- onConnect = (hostname: string, password: string, ssl: boolean) => {
+ onConnect = (hostname: string, password: string, ssl: boolean): void => {
this.setState({ connecting: true });
this.connection.connect(
hostname,
@@ -62,7 +61,7 @@ export default class WeechatNative extends React.Component<{}, State> {
);
};
- fetchBufferInfo = (bufferId: string, numLines: number = 50) => {
+ fetchBufferInfo = (bufferId: string, numLines = 50): void => {
if (this.connection) {
this.connection.send(
`(lines) hdata buffer:0x${bufferId}/own_lines/last_line(-${numLines})/data`
@@ -70,18 +69,21 @@ export default class WeechatNative extends React.Component<{}, State> {
this.connection.send(`(nicklist) nicklist 0x${bufferId}`);
}
};
- sendMessageToBuffer = (fullBufferName: string, message: string) => {
+
+ sendMessageToBuffer = (fullBufferName: string, message: string): void => {
this.connection &&
this.connection.send(`(input) input ${fullBufferName} ${message}`);
};
- clearHotlistForBuffer = (fullBufferName: string) => {
- this.sendMessageToBuffer(fullBufferName, "/buffer set hotlist -1");
+
+ clearHotlistForBuffer = (fullBufferName: string): void => {
+ this.sendMessageToBuffer(fullBufferName, '/buffer set hotlist -1');
this.sendMessageToBuffer(
fullBufferName,
- "/input set_unread_current_buffer"
+ '/input set_unread_current_buffer'
);
};
- render() {
+
+ render(): JSX.Element {
const { connecting } = this.state;
return (
diff --git a/src/usecase/buffers/ui/Buffer.tsx b/src/usecase/buffers/ui/Buffer.tsx
@@ -1,22 +1,17 @@
-import * as React from "react";
-import {
- StyleSheet,
- FlatList,
- ListRenderItem
-} from "react-native";
-import * as _ from "lodash";
+import * as React from 'react';
+import { FlatList, ListRenderItem } from 'react-native';
+import * as _ from 'lodash';
-import BufferLine from "./BufferLine";
+import BufferLine from './BufferLine';
interface Props {
lines: WeechatLine[];
- onLongPress: () => any;
+ onLongPress: () => void;
parseArgs: any;
bufferId: string;
}
-const keyExtractor = (line: WeechatLine, index: number) =>
- _.last(line.pointers);
+const keyExtractor = (line: WeechatLine) => _.last(line.pointers);
export default class Buffer extends React.PureComponent<Props> {
renderBuffer: ListRenderItem<WeechatLine> = ({ item }) => {
@@ -26,11 +21,12 @@ export default class Buffer extends React.PureComponent<Props> {
<BufferLine line={item} onLongPress={onLongPress} parseArgs={parseArgs} />
);
};
- render() {
- const { lines, onLongPress, parseArgs } = this.props;
+
+ render(): JSX.Element {
+ const { lines } = this.props;
return (
<FlatList
- data={lines.filter(line => line.displayed !== 0)}
+ data={lines.filter((line) => line.displayed !== 0)}
inverted
keyboardDismissMode="interactive"
keyExtractor={keyExtractor}
@@ -39,23 +35,3 @@ export default class Buffer extends React.PureComponent<Props> {
);
}
}
-
-const styles = StyleSheet.create({
- topbar: {
- height: 20,
- backgroundColor: "#001"
- },
- bottomBox: {
- height: 40,
- paddingHorizontal: 10,
- justifyContent: "center",
- backgroundColor: "#aaa"
- },
- inputBox: {
- height: 25,
- paddingHorizontal: 5,
- justifyContent: "center",
- borderColor: "gray",
- backgroundColor: "#fff"
- }
-});
diff --git a/src/usecase/buffers/ui/BufferContainer.tsx b/src/usecase/buffers/ui/BufferContainer.tsx
@@ -1,27 +1,25 @@
-import * as React from "react";
+import * as React from 'react';
import {
StyleSheet,
Linking,
ActionSheetIOS,
KeyboardAvoidingView,
- TextInput,
Image,
View,
Text,
TouchableOpacity,
LayoutAnimation
-} from "react-native";
+} from 'react-native';
-import { connect } from "react-redux";
-import * as _ from "lodash";
-import ParsedText from "react-native-parsed-text";
+import { connect } from 'react-redux';
+import ParsedText from 'react-native-parsed-text';
-import Buffer from "./Buffer";
-import { getParseArgs } from "../../../lib/helpers/parse-text-args";
-import { formatUrl } from "../../../lib/helpers/url-formatter";
-import { renderWeechatFormat } from "../../../lib/weechat/color-formatter";
-import { StoreState } from "../../../store";
-import UndoTextInput from "./UndoTextInput";
+import Buffer from './Buffer';
+import { getParseArgs } from '../../../lib/helpers/parse-text-args';
+import { formatUrl } from '../../../lib/helpers/url-formatter';
+import { renderWeechatFormat } from '../../../lib/weechat/color-formatter';
+import { StoreState } from '../../../store';
+import UndoTextInput from './UndoTextInput';
interface Props {
buffer: WeechatBuffer | null;
@@ -35,13 +33,13 @@ interface Props {
interface State {
showTabButton: boolean;
textValue: string;
- selection: {start: number, end: number};
+ selection: { start: number; end: number };
}
class BufferContainer extends React.Component<Props, State> {
state = {
showTabButton: false,
- textValue: "",
+ textValue: '',
selection: {
start: 0,
end: 0
@@ -87,7 +85,7 @@ class BufferContainer extends React.Component<Props, State> {
handleOnPress(type, text) {
console.log(type, text);
- if (type === "channel") {
+ if (type === 'channel') {
// this.props.dispatch(changeCurrentBuffer(text));
} else {
Linking.openURL(formatUrl(type, text));
@@ -96,15 +94,15 @@ class BufferContainer extends React.Component<Props, State> {
handleChangeText = (textValue: string) => {
this.tabCompleteInProgress = false;
- this.setState({textValue});
+ this.setState({ textValue });
};
handleSubmit = () => {
const { textValue } = this.state;
- textValue.split("\n").forEach((line) => {
+ textValue.split('\n').forEach((line) => {
this.props.sendMessage(line);
});
- this.handleChangeText("");
+ this.handleChangeText('');
};
tabCompleteNick = () => {
@@ -114,16 +112,16 @@ class BufferContainer extends React.Component<Props, State> {
if (!this.tabCompleteInProgress) {
this.tabCompleteWordEnd = selection.start;
- this.tabCompleteWordStart = textValue.lastIndexOf(' ',
- this.tabCompleteWordEnd - 1) + 1;
+ this.tabCompleteWordStart =
+ textValue.lastIndexOf(' ', this.tabCompleteWordEnd - 1) + 1;
- if (this.tabCompleteWordStart == this.tabCompleteWordEnd)
- return;
+ if (this.tabCompleteWordStart == this.tabCompleteWordEnd) return;
- const prefix = textValue.substring(this.tabCompleteWordStart,
- this.tabCompleteWordEnd).toLowerCase();
+ const prefix = textValue
+ .substring(this.tabCompleteWordStart, this.tabCompleteWordEnd)
+ .toLowerCase();
- this.tabCompleteMatches = nicklist.filter(nick =>
+ this.tabCompleteMatches = nicklist.filter((nick) =>
nick.name.toLowerCase().startsWith(prefix)
);
if (this.tabCompleteMatches.length == 0) {
@@ -132,32 +130,36 @@ class BufferContainer extends React.Component<Props, State> {
this.tabCompleteIndex = 0;
} else {
- this.tabCompleteIndex = (this.tabCompleteIndex + 1) %
- this.tabCompleteMatches.length;
+ this.tabCompleteIndex =
+ (this.tabCompleteIndex + 1) % this.tabCompleteMatches.length;
}
let nick = this.tabCompleteMatches[this.tabCompleteIndex].name;
if (this.tabCompleteWordStart == 0) {
- nick += ": ";
+ nick += ': ';
}
this.setState({
- textValue: textValue.substring(0, this.tabCompleteWordStart) +
- nick + textValue.substring(this.tabCompleteWordEnd)
+ textValue:
+ textValue.substring(0, this.tabCompleteWordStart) +
+ nick +
+ textValue.substring(this.tabCompleteWordEnd)
});
this.tabCompleteWordEnd = this.tabCompleteWordStart + nick.length;
this.tabCompleteInProgress = true;
};
handleSelectionChange = ({ nativeEvent: { selection } }) => {
- this.setState({ selection })
- }
+ this.setState({ selection });
+ };
- onLongPress = () => {};
+ onLongPress = () => {
+ // not implemented
+ };
render() {
const { bufferId, buffer, showTopic, lines } = this.props;
- const { textValue, showTabButton, selection } = this.state;
+ const { textValue, showTabButton } = this.state;
if (!bufferId) {
return <View style={styles.container} />;
@@ -195,10 +197,10 @@ class BufferContainer extends React.Component<Props, State> {
/>
{showTabButton && (
<TouchableOpacity
- style={{ alignItems: "center", width: 40 }}
+ style={{ alignItems: 'center', width: 40 }}
onPress={this.tabCompleteNick}
>
- <Image source={require("../../icons/long-arrow-right.png")} />
+ <Image source={require('../../icons/long-arrow-right.png')} />
</TouchableOpacity>
)}
</View>
@@ -216,17 +218,17 @@ const styles = StyleSheet.create({
topbar: {
height: 20,
paddingHorizontal: 5,
- backgroundColor: "#001"
+ backgroundColor: '#001'
},
link: {
- textDecorationLine: "underline"
+ textDecorationLine: 'underline'
},
text: {
- color: "#eee"
+ color: '#eee'
},
container: {
flex: 1,
- backgroundColor: "#222"
+ backgroundColor: '#222'
},
main: {
paddingVertical: 20
@@ -234,17 +236,17 @@ const styles = StyleSheet.create({
bottomBox: {
paddingHorizontal: 10,
paddingVertical: 7.5,
- flexDirection: "row",
- alignItems: "center",
- justifyContent: "space-between",
- backgroundColor: "#333"
+ flexDirection: 'row',
+ alignItems: 'center',
+ justifyContent: 'space-between',
+ backgroundColor: '#333'
},
inputBox: {
maxHeight: 60.5,
padding: 5,
- justifyContent: "center",
- borderColor: "gray",
- backgroundColor: "#fff",
+ justifyContent: 'center',
+ borderColor: 'gray',
+ backgroundColor: '#fff',
flex: 1
}
});
diff --git a/src/usecase/buffers/ui/BufferLine.tsx b/src/usecase/buffers/ui/BufferLine.tsx
@@ -1,15 +1,15 @@
-import * as React from "react";
+import * as React from 'react';
-import Default from "./themes/Default";
+import Default from './themes/Default';
interface Props {
line: WeechatLine;
- onLongPress: (any) => any;
+ onLongPress: (line: WeechatLine) => void;
parseArgs: any;
}
export default class BufferLine extends React.PureComponent<Props> {
- render() {
+ render(): JSX.Element {
const { line, onLongPress, parseArgs } = this.props;
return (
diff --git a/src/usecase/buffers/ui/BufferList.tsx b/src/usecase/buffers/ui/BufferList.tsx
@@ -1,20 +1,15 @@
-import * as React from "react";
-import { connect } from "react-redux";
-import {
- StyleSheet,
- FlatList,
- View,
- ListRenderItem
-} from "react-native";
-import BufferListItem from "./BufferListItem";
-import { StoreState } from "../../../store";
-import { getHotlistForBufferId } from "../../../store/selectors";
+import * as React from 'react';
+import { connect } from 'react-redux';
+import { StyleSheet, FlatList, View, ListRenderItem } from 'react-native';
+import BufferListItem from './BufferListItem';
+import { StoreState } from '../../../store';
+import { getHotlistForBufferId } from '../../../store/selectors';
import { HotListState } from '../../../store/hotlists';
interface Props {
buffers: WeechatBuffer[];
currentBufferId: string | null;
- onSelectBuffer: (b: WeechatBuffer) => any;
+ onSelectBuffer: (b: WeechatBuffer) => void;
hotlists: HotListState;
filterBuffers: boolean;
}
@@ -39,13 +34,15 @@ class BufferList extends React.Component<Props> {
const { filterBuffers, hotlists } = this.props;
if (filterBuffers) {
- return buffer.local_variables.type != "server" &&
- buffer.local_variables.type != null ||
- hotlists[buffer.id] && hotlists[buffer.id].sum != 0;
+ return (
+ (buffer.local_variables.type != 'server' &&
+ buffer.local_variables.type != null) ||
+ (hotlists[buffer.id] && hotlists[buffer.id].sum != 0)
+ );
} else {
return true;
}
- }
+ };
render() {
const { buffers } = this.props;
@@ -72,7 +69,7 @@ export default connect((state: StoreState) => ({
const styles = StyleSheet.create({
container: {
flex: 1,
- backgroundColor: "#121212"
+ backgroundColor: '#121212'
},
topbar: {
height: 30
diff --git a/src/usecase/buffers/ui/BufferListItem.tsx b/src/usecase/buffers/ui/BufferListItem.tsx
@@ -1,48 +1,49 @@
-import * as React from "react";
+import * as React from 'react';
import {
StyleSheet,
Text,
+ TextStyle,
TouchableHighlight,
View
-} from "react-native";
+} from 'react-native';
interface Props {
buffer: WeechatBuffer;
hotlist: Hotlist;
currentBufferId: string;
- onSelectBuffer: (b: WeechatBuffer) => any;
+ onSelectBuffer: (b: WeechatBuffer) => void;
}
export default class BufferListItem extends React.Component<Props> {
- getBufferViewStyleFromProps = () => {
- const { currentBufferId, buffer, hotlist} = this.props;
+ getBufferViewStyleFromProps = (): TextStyle => {
+ const { currentBufferId, buffer, hotlist } = this.props;
if (currentBufferId === buffer.id) {
- return { backgroundColor: "#f2777a" };
+ return { backgroundColor: '#f2777a' };
} else if (hotlist.highlight > 0) {
- return { backgroundColor: "#ffcf7f" };
+ return { backgroundColor: '#ffcf7f' };
} else if (hotlist.sum > 0) {
- return { backgroundColor: "#3b4252" };
+ return { backgroundColor: '#3b4252' };
} else {
return null;
}
};
- getBufferTextStyleFromProps = () => {
- const { currentBufferId, buffer, hotlist} = this.props;
+ getBufferTextStyleFromProps = (): TextStyle => {
+ const { currentBufferId, buffer, hotlist } = this.props;
if (currentBufferId === buffer.id) {
- return { color: "#fff" };
+ return { color: '#fff' };
} else if (hotlist.highlight > 0) {
- return { color: "#000" };
+ return { color: '#000' };
} else if (hotlist.sum > 0) {
- return { color: "#ebcb8b" };
+ return { color: '#ebcb8b' };
} else {
return null;
}
};
- render() {
+ render(): JSX.Element {
const { buffer, hotlist, onSelectBuffer } = this.props;
return (
@@ -70,23 +71,23 @@ export default class BufferListItem extends React.Component<Props> {
</TouchableHighlight>
);
}
-};
+}
const styles = StyleSheet.create({
listItem: {
flex: 1,
height: 40,
paddingHorizontal: 20,
- justifyContent: "center"
+ justifyContent: 'center'
},
listItemText: {
- color: "#eee",
- fontFamily: "Thonburi",
- fontWeight: "bold",
+ color: '#eee',
+ fontFamily: 'Thonburi',
+ fontWeight: 'bold',
fontSize: 15
},
row: {
- flexDirection: "row"
+ flexDirection: 'row'
},
bufferName: {
flex: 1
diff --git a/src/usecase/buffers/ui/themes/Default.tsx b/src/usecase/buffers/ui/themes/Default.tsx
@@ -1,25 +1,18 @@
-import * as React from "react";
-import {
- StyleSheet,
- Text,
- TouchableHighlight,
- View,
-} from "react-native";
+import * as React from 'react';
+import { StyleSheet, Text, TouchableHighlight, View } from 'react-native';
-import ParsedText from "react-native-parsed-text";
-import {
- renderWeechatFormat,
-} from "../../../../lib/weechat/color-formatter";
-import { formatDate } from "../../../../lib/helpers/date-formatter";
+import ParsedText from 'react-native-parsed-text';
+import { renderWeechatFormat } from '../../../../lib/weechat/color-formatter';
+import { formatDate } from '../../../../lib/helpers/date-formatter';
interface Props {
line: WeechatLine;
- onLongPress: (any) => any;
+ onLongPress: (WeechatLine) => void;
parseArgs: any;
}
export default class BufferLine extends React.Component<Props> {
- render() {
+ render(): JSX.Element {
const { line, onLongPress, parseArgs } = this.props;
return (
<TouchableHighlight onLongPress={() => onLongPress(line)}>
@@ -30,22 +23,20 @@ export default class BufferLine extends React.Component<Props> {
{renderWeechatFormat(line.prefix).map((props, index) => {
const { style, ...rest } = props;
return (
- <Text {...rest} key={index}
- style={ line.highlight ? styles.highlight : style }
+ <Text
+ {...rest}
+ key={index}
+ style={line.highlight ? styles.highlight : style}
/>
- )
+ );
})}
</Text>
</View>
- <Text
- style={[styles.text, styles.meta]}
- >
+ <Text style={[styles.text, styles.meta]}>
{formatDate(line.date)}
</Text>
</View>
- <View
- style={[styles.messageContainer]}
- >
+ <View style={[styles.messageContainer]}>
<Text style={styles.text}>
{renderWeechatFormat(line.message).map((props, index) => (
<ParsedText {...props} key={index} parse={parseArgs} />
@@ -60,13 +51,13 @@ export default class BufferLine extends React.Component<Props> {
const styles = StyleSheet.create({
container: {
- backgroundColor: "#2e3440",
+ backgroundColor: '#2e3440',
paddingTop: 4,
paddingBottom: 8,
paddingHorizontal: 7
},
metaContainer: {
- flexDirection: "row",
+ flexDirection: 'row',
paddingBottom: 2
},
userContainer: {
@@ -77,15 +68,15 @@ const styles = StyleSheet.create({
paddingHorizontal: 5
},
text: {
- fontFamily: "Menlo",
- color: "#eee",
+ fontFamily: 'Menlo',
+ color: '#eee',
fontSize: 12
},
meta: {
fontSize: 10
},
highlight: {
- backgroundColor: "magenta",
- color: "yellow"
+ backgroundColor: 'magenta',
+ color: 'yellow'
}
});
diff --git a/src/usecase/login/LoginForm.tsx b/src/usecase/login/LoginForm.tsx
@@ -1,4 +1,4 @@
-import * as React from "react";
+import * as React from 'react';
import {
View,
SafeAreaView,
@@ -9,9 +9,9 @@ import {
Switch,
StatusBar,
TouchableOpacity
-} from "react-native";
-import { connect } from "react-redux";
-import { StoreState } from "../../store";
+} from 'react-native';
+import { connect } from 'react-redux';
+import { StoreState } from '../../store';
interface Props {
onConnect: (hostname: string, password: string, ssl: boolean) => void;
@@ -39,7 +39,7 @@ class LoginForm extends React.Component<Props, State> {
onPress = () => {
this.props.dispatch({
- type: "SET_CONNECTION_INFO",
+ type: 'SET_CONNECTION_INFO',
hostname: this.state.hostname,
password: this.state.password,
ssl: this.state.ssl,
@@ -66,7 +66,7 @@ class LoginForm extends React.Component<Props, State> {
};
render() {
- const { children, connecting } = this.props;
+ const { connecting } = this.props;
const { hostname, password, ssl, filterBuffers } = this.state;
return (
@@ -95,7 +95,7 @@ class LoginForm extends React.Component<Props, State> {
value={password}
/>
<View
- style={{ flexDirection: "row", justifyContent: "space-between" }}
+ style={{ flexDirection: 'row', justifyContent: 'space-between' }}
>
<Text style={styles.text}>SSL</Text>
<Switch
@@ -105,7 +105,7 @@ class LoginForm extends React.Component<Props, State> {
/>
</View>
<View
- style={{ flexDirection: "row", justifyContent: "space-between" }}
+ style={{ flexDirection: 'row', justifyContent: 'space-between' }}
>
<Text style={styles.text}>Hide server buffers</Text>
<Switch
@@ -142,18 +142,18 @@ export default connect((state: StoreState) => ({
const styles = StyleSheet.create({
container: {
- backgroundColor: "#f8f8f8",
+ backgroundColor: '#f8f8f8',
flex: 1,
padding: 20
},
header: {
- textAlign: "center",
- color: "#4157af",
+ textAlign: 'center',
+ color: '#4157af',
fontSize: 20
},
text: {
padding: 10,
- color: "#4157af",
+ color: '#4157af',
fontSize: 18
},
input: {
@@ -161,26 +161,26 @@ const styles = StyleSheet.create({
padding: 10,
borderBottomWidth: 2,
fontSize: 18,
- borderColor: "#4157af",
- color: "#4157af"
+ borderColor: '#4157af',
+ color: '#4157af'
},
centeredButton: {
- flexDirection: "row",
- justifyContent: "center"
+ flexDirection: 'row',
+ justifyContent: 'center'
},
button: {
borderWidth: 2,
- borderColor: "#4157af",
+ borderColor: '#4157af',
width: 200,
- backgroundColor: "#f8f8f8",
+ backgroundColor: '#f8f8f8',
paddingHorizontal: 20,
paddingVertical: 10,
borderRadius: 20
},
buttonText: {
- textAlign: "center",
- color: "#4157af",
- fontWeight: "400",
+ textAlign: 'center',
+ color: '#4157af',
+ fontWeight: '400',
fontSize: 18
}
});
diff --git a/yarn.lock b/yarn.lock
@@ -1121,6 +1121,22 @@
exec-sh "^0.3.2"
minimist "^1.2.0"
+"@eslint/eslintrc@^0.1.3":
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.1.3.tgz#7d1a2b2358552cc04834c0979bd4275362e37085"
+ integrity sha512-4YVwPkANLeNtRjMekzux1ci8hIaH5eGKktGqR0d3LWsKNn5B2X/1Z6Trxy7jQXl9EBGE6Yj02O+t09FMeRllaA==
+ dependencies:
+ ajv "^6.12.4"
+ debug "^4.1.1"
+ espree "^7.3.0"
+ globals "^12.1.0"
+ ignore "^4.0.6"
+ import-fresh "^3.2.1"
+ js-yaml "^3.13.1"
+ lodash "^4.17.19"
+ minimatch "^3.0.4"
+ strip-json-comments "^3.1.1"
+
"@expo/babel-preset-cli@0.2.17":
version "0.2.17"
resolved "https://registry.yarnpkg.com/@expo/babel-preset-cli/-/babel-preset-cli-0.2.17.tgz#308ce8a8519e10e3756eb7b5d550bcda99b24159"
@@ -1966,6 +1982,27 @@
"@babel/runtime" "^7.7.2"
core-js "^3.4.1"
+"@nodelib/fs.scandir@2.1.3":
+ version "2.1.3"
+ resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz#3a582bdb53804c6ba6d146579c46e52130cf4a3b"
+ integrity sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw==
+ dependencies:
+ "@nodelib/fs.stat" "2.0.3"
+ run-parallel "^1.1.9"
+
+"@nodelib/fs.stat@2.0.3", "@nodelib/fs.stat@^2.0.2":
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz#34dc5f4cabbc720f4e60f75a747e7ecd6c175bd3"
+ integrity sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==
+
+"@nodelib/fs.walk@^1.2.3":
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz#011b9202a70a6366e436ca5c065844528ab04976"
+ integrity sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ==
+ dependencies:
+ "@nodelib/fs.scandir" "2.1.3"
+ fastq "^1.6.0"
+
"@react-native-community/cli-debugger-ui@^4.9.0":
version "4.9.0"
resolved "https://registry.yarnpkg.com/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-4.9.0.tgz#4177764ba69243c97aa26829d59d9501acb2bd71"
@@ -2206,6 +2243,11 @@
jest-diff "^25.2.1"
pretty-format "^25.2.1"
+"@types/json-schema@^7.0.3":
+ version "7.0.6"
+ resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.6.tgz#f4c7ec43e81b319a9815115031709f26987891f0"
+ integrity sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw==
+
"@types/lodash@^4.14.106":
version "4.14.149"
resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.149.tgz#1342d63d948c6062838fbf961012f74d4e638440"
@@ -2278,6 +2320,76 @@
dependencies:
"@types/yargs-parser" "*"
+"@typescript-eslint/eslint-plugin@^4.2.0":
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.2.0.tgz#a3d5c11b377b7e18f3cd9c4e87d465fe9432669b"
+ integrity sha512-zBNRkzvLSwo6y5TG0DVcmshZIYBHKtmzD4N+LYnfTFpzc4bc79o8jNRSb728WV7A4Cegbs+MV5IRAj8BKBgOVQ==
+ dependencies:
+ "@typescript-eslint/experimental-utils" "4.2.0"
+ "@typescript-eslint/scope-manager" "4.2.0"
+ debug "^4.1.1"
+ functional-red-black-tree "^1.0.1"
+ regexpp "^3.0.0"
+ semver "^7.3.2"
+ tsutils "^3.17.1"
+
+"@typescript-eslint/experimental-utils@4.2.0":
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.2.0.tgz#3d0b5cd4aa61f5eb7aa1e873dea0db1410b062d2"
+ integrity sha512-5BBj6BjgHEndBaQQpUVzRIPERz03LBc0MCQkHwUaH044FJFL08SwWv/sQftk7gf0ShZ2xZysz0LTwCwNt4Xu3w==
+ dependencies:
+ "@types/json-schema" "^7.0.3"
+ "@typescript-eslint/scope-manager" "4.2.0"
+ "@typescript-eslint/types" "4.2.0"
+ "@typescript-eslint/typescript-estree" "4.2.0"
+ eslint-scope "^5.0.0"
+ eslint-utils "^2.0.0"
+
+"@typescript-eslint/parser@^4.2.0":
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.2.0.tgz#1879ef400abd73d972e20f14c3522e5b343d1d1b"
+ integrity sha512-54jJ6MwkOtowpE48C0QJF9iTz2/NZxfKVJzv1ha5imigzHbNSLN9yvbxFFH1KdlRPQrlR8qxqyOvLHHxd397VA==
+ dependencies:
+ "@typescript-eslint/scope-manager" "4.2.0"
+ "@typescript-eslint/types" "4.2.0"
+ "@typescript-eslint/typescript-estree" "4.2.0"
+ debug "^4.1.1"
+
+"@typescript-eslint/scope-manager@4.2.0":
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.2.0.tgz#d10e6854a65e175b22a28265d372a97c8cce4bfc"
+ integrity sha512-Tb402cxxObSxWIVT+PnBp5ruT2V/36yj6gG4C9AjkgRlZpxrLAzWDk3neen6ToMBGeGdxtnfFLoJRUecGz9mYQ==
+ dependencies:
+ "@typescript-eslint/types" "4.2.0"
+ "@typescript-eslint/visitor-keys" "4.2.0"
+
+"@typescript-eslint/types@4.2.0":
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.2.0.tgz#6f6b094329e72040f173123832397c7c0b910fc8"
+ integrity sha512-xkv5nIsxfI/Di9eVwN+G9reWl7Me9R5jpzmZUch58uQ7g0/hHVuGUbbn4NcxcM5y/R4wuJIIEPKPDb5l4Fdmwg==
+
+"@typescript-eslint/typescript-estree@4.2.0":
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.2.0.tgz#9d746240991c305bf225ad5e96cbf57e7fea0551"
+ integrity sha512-iWDLCB7z4MGkLipduF6EOotdHNtgxuNKnYD54nMS/oitFnsk4S3S/TE/UYXQTra550lHtlv9eGmp+dvN9pUDtA==
+ dependencies:
+ "@typescript-eslint/types" "4.2.0"
+ "@typescript-eslint/visitor-keys" "4.2.0"
+ debug "^4.1.1"
+ globby "^11.0.1"
+ is-glob "^4.0.1"
+ lodash "^4.17.15"
+ semver "^7.3.2"
+ tsutils "^3.17.1"
+
+"@typescript-eslint/visitor-keys@4.2.0":
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.2.0.tgz#ae13838e3a260b63ae51021ecaf1d0cdea8dbba5"
+ integrity sha512-WIf4BNOlFOH2W+YqGWa6YKLcK/EB3gEj2apCrqLw6mme1RzBy0jtJ9ewJgnrZDB640zfnv8L+/gwGH5sYp/rGw==
+ dependencies:
+ "@typescript-eslint/types" "4.2.0"
+ eslint-visitor-keys "^2.0.0"
+
"@unimodules/core@~5.5.0":
version "5.5.0"
resolved "https://registry.yarnpkg.com/@unimodules/core/-/core-5.5.0.tgz#580aaa4887641c1af85e0ab9f8987a5d4424595c"
@@ -2326,6 +2438,11 @@ acorn-globals@^4.3.2:
acorn "^6.0.1"
acorn-walk "^6.0.1"
+acorn-jsx@^5.2.0:
+ version "5.3.1"
+ resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b"
+ integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==
+
acorn-walk@^6.0.1:
version "6.2.0"
resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c"
@@ -2341,6 +2458,21 @@ acorn@^7.1.0:
resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.1.tgz#e35668de0b402f359de515c5482a1ab9f89a69bf"
integrity sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==
+acorn@^7.4.0:
+ version "7.4.0"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.0.tgz#e1ad486e6c54501634c6c397c5c121daa383607c"
+ integrity sha512-+G7P8jJmCHr+S+cLfQxygbWhXy+8YTVGzAkpEbcLo2mLoL7tij/VG41QSHACSf5QgYRhMZYHuNc6drJaO0Da+w==
+
+ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.4:
+ version "6.12.5"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.5.tgz#19b0e8bae8f476e5ba666300387775fb1a00a4da"
+ integrity sha512-lRF8RORchjpKG50/WFf8xmg7sgCLFiYNNnqdKflk63whMQcWR5ngGjiSXkL9bjxy6B2npOK2HSMN49jEBMSkag==
+ dependencies:
+ fast-deep-equal "^3.1.1"
+ fast-json-stable-stringify "^2.0.0"
+ json-schema-traverse "^0.4.1"
+ uri-js "^4.2.2"
+
ajv@^6.5.5:
version "6.12.0"
resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.0.tgz#06d60b96d87b8454a5adaba86e7854da629db4b7"
@@ -2363,6 +2495,11 @@ ansi-colors@^1.0.1:
dependencies:
ansi-wrap "^0.1.0"
+ansi-colors@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348"
+ integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==
+
ansi-cyan@^0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/ansi-cyan/-/ansi-cyan-0.1.1.tgz#538ae528af8982f28ae30d86f2f17456d2609873"
@@ -2531,6 +2668,11 @@ array-slice@^0.2.3:
resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-0.2.3.tgz#dd3cfb80ed7973a75117cdac69b0b99ec86186f5"
integrity sha1-3Tz7gO15c6dRF82sabC5nshhhvU=
+array-union@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d"
+ integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==
+
array-unique@^0.3.2:
version "0.3.2"
resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
@@ -3321,6 +3463,15 @@ cross-spawn@^7.0.0:
shebang-command "^2.0.0"
which "^2.0.1"
+cross-spawn@^7.0.2:
+ version "7.0.3"
+ resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
+ integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
+ dependencies:
+ path-key "^3.1.0"
+ shebang-command "^2.0.0"
+ which "^2.0.1"
+
crypto-random-string@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e"
@@ -3386,6 +3537,13 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3:
dependencies:
ms "2.0.0"
+debug@^4.0.1:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-4.2.0.tgz#7f150f93920e94c58f5574c2fd01a3110effe7f1"
+ integrity sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==
+ dependencies:
+ ms "2.1.2"
+
debug@^4.1.0, debug@^4.1.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791"
@@ -3423,7 +3581,7 @@ deep-equal@^2.0.3:
which-collection "^1.0.1"
which-typed-array "^1.1.2"
-deep-is@~0.1.3:
+deep-is@^0.1.3, deep-is@~0.1.3:
version "0.1.3"
resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=
@@ -3504,6 +3662,20 @@ diff-sequences@^25.2.6:
resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-25.2.6.tgz#5f467c00edd35352b7bca46d7927d60e687a76dd"
integrity sha512-Hq8o7+6GaZeoFjtpgvRBUknSXNeJiCx7V9Fr94ZMljNiCr9n9L8H8aJqgWOQiDDGdyn29fRNcDdRVJ5fdyihfg==
+dir-glob@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f"
+ integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==
+ dependencies:
+ path-type "^4.0.0"
+
+doctrine@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961"
+ integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==
+ dependencies:
+ esutils "^2.0.2"
+
dom-walk@^0.1.0:
version "0.1.2"
resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84"
@@ -3563,6 +3735,13 @@ end-of-stream@^1.1.0:
dependencies:
once "^1.4.0"
+enquirer@^2.3.5:
+ version "2.3.6"
+ resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d"
+ integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==
+ dependencies:
+ ansi-colors "^4.1.1"
+
envinfo@^7.7.2:
version "7.7.3"
resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.7.3.tgz#4b2d8622e3e7366afb8091b23ed95569ea0208cc"
@@ -3679,16 +3858,126 @@ escodegen@^1.11.1:
optionalDependencies:
source-map "~0.6.1"
+eslint-config-prettier@^6.12.0:
+ version "6.12.0"
+ resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.12.0.tgz#9eb2bccff727db1c52104f0b49e87ea46605a0d2"
+ integrity sha512-9jWPlFlgNwRUYVoujvWTQ1aMO8o6648r+K7qU7K5Jmkbyqav1fuEZC0COYpGBxyiAJb65Ra9hrmFx19xRGwXWw==
+ dependencies:
+ get-stdin "^6.0.0"
+
+eslint-plugin-prettier@^3.1.4:
+ version "3.1.4"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.4.tgz#168ab43154e2ea57db992a2cd097c828171f75c2"
+ integrity sha512-jZDa8z76klRqo+TdGDTFJSavwbnWK2ZpqGKNZ+VvweMW516pDUMmQ2koXvxEE4JhzNvTv+radye/bWGBmA6jmg==
+ dependencies:
+ prettier-linter-helpers "^1.0.0"
+
+eslint-scope@^5.0.0, eslint-scope@^5.1.0:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c"
+ integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==
+ dependencies:
+ esrecurse "^4.3.0"
+ estraverse "^4.1.1"
+
+eslint-utils@^2.0.0, eslint-utils@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27"
+ integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==
+ dependencies:
+ eslint-visitor-keys "^1.1.0"
+
+eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e"
+ integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==
+
+eslint-visitor-keys@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8"
+ integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==
+
+eslint@^7.9.0:
+ version "7.9.0"
+ resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.9.0.tgz#522aeccc5c3a19017cf0cb46ebfd660a79acf337"
+ integrity sha512-V6QyhX21+uXp4T+3nrNfI3hQNBDa/P8ga7LoQOenwrlEFXrEnUEE+ok1dMtaS3b6rmLXhT1TkTIsG75HMLbknA==
+ dependencies:
+ "@babel/code-frame" "^7.0.0"
+ "@eslint/eslintrc" "^0.1.3"
+ ajv "^6.10.0"
+ chalk "^4.0.0"
+ cross-spawn "^7.0.2"
+ debug "^4.0.1"
+ doctrine "^3.0.0"
+ enquirer "^2.3.5"
+ eslint-scope "^5.1.0"
+ eslint-utils "^2.1.0"
+ eslint-visitor-keys "^1.3.0"
+ espree "^7.3.0"
+ esquery "^1.2.0"
+ esutils "^2.0.2"
+ file-entry-cache "^5.0.1"
+ functional-red-black-tree "^1.0.1"
+ glob-parent "^5.0.0"
+ globals "^12.1.0"
+ ignore "^4.0.6"
+ import-fresh "^3.0.0"
+ imurmurhash "^0.1.4"
+ is-glob "^4.0.0"
+ js-yaml "^3.13.1"
+ json-stable-stringify-without-jsonify "^1.0.1"
+ levn "^0.4.1"
+ lodash "^4.17.19"
+ minimatch "^3.0.4"
+ natural-compare "^1.4.0"
+ optionator "^0.9.1"
+ progress "^2.0.0"
+ regexpp "^3.1.0"
+ semver "^7.2.1"
+ strip-ansi "^6.0.0"
+ strip-json-comments "^3.1.0"
+ table "^5.2.3"
+ text-table "^0.2.0"
+ v8-compile-cache "^2.0.3"
+
+espree@^7.3.0:
+ version "7.3.0"
+ resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.0.tgz#dc30437cf67947cf576121ebd780f15eeac72348"
+ integrity sha512-dksIWsvKCixn1yrEXO8UosNSxaDoSYpq9reEjZSbHLpT5hpaCAKTLBwq0RHtLrIr+c0ByiYzWT8KTMRzoRCNlw==
+ dependencies:
+ acorn "^7.4.0"
+ acorn-jsx "^5.2.0"
+ eslint-visitor-keys "^1.3.0"
+
esprima@^4.0.0, esprima@^4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
-estraverse@^4.2.0:
+esquery@^1.2.0:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.3.1.tgz#b78b5828aa8e214e29fb74c4d5b752e1c033da57"
+ integrity sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==
+ dependencies:
+ estraverse "^5.1.0"
+
+esrecurse@^4.3.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921"
+ integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==
+ dependencies:
+ estraverse "^5.2.0"
+
+estraverse@^4.1.1, estraverse@^4.2.0:
version "4.3.0"
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d"
integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==
+estraverse@^5.1.0, estraverse@^5.2.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880"
+ integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==
+
esutils@^2.0.2:
version "2.0.3"
resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
@@ -4010,16 +4299,40 @@ fast-deep-equal@^3.1.1:
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4"
integrity sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==
+fast-diff@^1.1.2:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03"
+ integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==
+
+fast-glob@^3.1.1:
+ version "3.2.4"
+ resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.4.tgz#d20aefbf99579383e7f3cc66529158c9b98554d3"
+ integrity sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ==
+ dependencies:
+ "@nodelib/fs.stat" "^2.0.2"
+ "@nodelib/fs.walk" "^1.2.3"
+ glob-parent "^5.1.0"
+ merge2 "^1.3.0"
+ micromatch "^4.0.2"
+ picomatch "^2.2.1"
+
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==
-fast-levenshtein@~2.0.6:
+fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6:
version "2.0.6"
resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=
+fastq@^1.6.0:
+ version "1.8.0"
+ resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.8.0.tgz#550e1f9f59bbc65fe185cb6a9b4d95357107f481"
+ integrity sha512-SMIZoZdLh/fgofivvIkmknUXyPnvxRE3DhtZ5Me3Mrsk5gyPL42F0xr51TdRXskBxHfMp+07bcYzfsYEsSQA9Q==
+ dependencies:
+ reusify "^1.0.4"
+
fb-watchman@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85"
@@ -4089,6 +4402,13 @@ figures@^2.0.0:
dependencies:
escape-string-regexp "^1.0.5"
+file-entry-cache@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c"
+ integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==
+ dependencies:
+ flat-cache "^2.0.1"
+
file-type@^9.0.0:
version "9.0.0"
resolved "https://registry.yarnpkg.com/file-type/-/file-type-9.0.0.tgz#a68d5ad07f486414dfb2c8866f73161946714a18"
@@ -4168,6 +4488,20 @@ find-up@^4.0.0, find-up@^4.1.0:
locate-path "^5.0.0"
path-exists "^4.0.0"
+flat-cache@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0"
+ integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==
+ dependencies:
+ flatted "^2.0.0"
+ rimraf "2.6.3"
+ write "1.0.3"
+
+flatted@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138"
+ integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==
+
fontfaceobserver@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/fontfaceobserver/-/fontfaceobserver-2.1.0.tgz#e2705d293e2c585a6531c2a722905657317a2991"
@@ -4270,6 +4604,11 @@ function-bind@^1.1.1:
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
+functional-red-black-tree@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327"
+ integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=
+
gensync@^1.0.0-beta.1:
version "1.0.0-beta.1"
resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269"
@@ -4280,6 +4619,11 @@ get-caller-file@^2.0.1:
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
+get-stdin@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b"
+ integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==
+
get-stream@^4.0.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5"
@@ -4311,6 +4655,13 @@ getpass@^0.1.1:
dependencies:
assert-plus "^1.0.0"
+glob-parent@^5.0.0, glob-parent@^5.1.0:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229"
+ integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==
+ dependencies:
+ is-glob "^4.0.1"
+
glob@7.1.6, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4:
version "7.1.6"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6"
@@ -4336,6 +4687,25 @@ globals@^11.1.0:
resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
+globals@^12.1.0:
+ version "12.4.0"
+ resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8"
+ integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==
+ dependencies:
+ type-fest "^0.8.1"
+
+globby@^11.0.1:
+ version "11.0.1"
+ resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.1.tgz#9a2bf107a068f3ffeabc49ad702c79ede8cfd357"
+ integrity sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ==
+ dependencies:
+ array-union "^2.1.0"
+ dir-glob "^3.0.1"
+ fast-glob "^3.1.1"
+ ignore "^5.1.4"
+ merge2 "^1.3.0"
+ slash "^3.0.0"
+
graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0, graceful-fs@^4.2.3:
version "4.2.3"
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423"
@@ -4490,6 +4860,16 @@ ieee754@^1.1.4:
resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84"
integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==
+ignore@^4.0.6:
+ version "4.0.6"
+ resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc"
+ integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==
+
+ignore@^5.1.4:
+ version "5.1.8"
+ resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57"
+ integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==
+
image-size@^0.6.0:
version "0.6.3"
resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.6.3.tgz#e7e5c65bb534bd7cdcedd6cb5166272a85f75fb2"
@@ -4508,6 +4888,14 @@ import-fresh@^2.0.0:
caller-path "^2.0.0"
resolve-from "^3.0.0"
+import-fresh@^3.0.0, import-fresh@^3.2.1:
+ version "3.2.1"
+ resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66"
+ integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==
+ dependencies:
+ parent-module "^1.0.0"
+ resolve-from "^4.0.0"
+
import-local@^3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.0.2.tgz#a8cfd0431d1de4a2199703d003e3e62364fa6db6"
@@ -4686,6 +5074,11 @@ is-extendable@^1.0.1:
dependencies:
is-plain-object "^2.0.4"
+is-extglob@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
+ integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
+
is-fullwidth-code-point@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
@@ -4706,6 +5099,13 @@ is-generator-fn@^2.0.0:
resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118"
integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==
+is-glob@^4.0.0, is-glob@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc"
+ integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==
+ dependencies:
+ is-extglob "^2.1.1"
+
is-map@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.1.tgz#520dafc4307bb8ebc33b813de5ce7c9400d644a1"
@@ -5840,6 +6240,11 @@ json-schema@0.2.3:
resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=
+json-stable-stringify-without-jsonify@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
+ integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=
+
json-stable-stringify@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af"
@@ -5962,6 +6367,14 @@ levenary@^1.1.1:
dependencies:
leven "^3.1.0"
+levn@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade"
+ integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==
+ dependencies:
+ prelude-ls "^1.2.1"
+ type-check "~0.4.0"
+
levn@~0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee"
@@ -6133,6 +6546,11 @@ merge-stream@^2.0.0:
resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==
+merge2@^1.3.0:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
+ integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
+
metro-babel-register@0.58.0:
version "0.58.0"
resolved "https://registry.yarnpkg.com/metro-babel-register/-/metro-babel-register-0.58.0.tgz#5c44786d49a044048df56cf476a2263491d4f53a"
@@ -6580,7 +6998,7 @@ ms@2.1.1:
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a"
integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==
-ms@^2.1.1:
+ms@2.1.2, ms@^2.1.1:
version "2.1.2"
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
@@ -6855,6 +7273,18 @@ optionator@^0.8.1:
type-check "~0.3.2"
word-wrap "~1.2.3"
+optionator@^0.9.1:
+ version "0.9.1"
+ resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499"
+ integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==
+ dependencies:
+ deep-is "^0.1.3"
+ fast-levenshtein "^2.0.6"
+ levn "^0.4.1"
+ prelude-ls "^1.2.1"
+ type-check "^0.4.0"
+ word-wrap "^1.2.3"
+
options@>=0.0.5:
version "0.0.6"
resolved "https://registry.yarnpkg.com/options/-/options-0.0.6.tgz#ec22d312806bb53e731773e7cdaefcf1c643128f"
@@ -6942,6 +7372,13 @@ pako@^1.0.5:
resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf"
integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==
+parent-module@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2"
+ integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==
+ dependencies:
+ callsites "^3.0.0"
+
parse-bmfont-ascii@^1.0.3:
version "1.0.6"
resolved "https://registry.yarnpkg.com/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz#11ac3c3ff58f7c2020ab22769079108d4dfa0285"
@@ -7045,6 +7482,11 @@ path-parse@^1.0.6:
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c"
integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==
+path-type@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
+ integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
+
performance-now@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
@@ -7055,7 +7497,7 @@ phin@^2.9.1:
resolved "https://registry.yarnpkg.com/phin/-/phin-2.9.3.tgz#f9b6ac10a035636fb65dfc576aaaa17b8743125c"
integrity sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA==
-picomatch@^2.0.4, picomatch@^2.0.5:
+picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1:
version "2.2.2"
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad"
integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==
@@ -7145,15 +7587,27 @@ pouchdb-collections@^1.0.1:
resolved "https://registry.yarnpkg.com/pouchdb-collections/-/pouchdb-collections-1.0.1.tgz#fe63a17da977611abef7cb8026cb1a9553fd8359"
integrity sha1-/mOhfal3YRq+98uAJssalVP9g1k=
+prelude-ls@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
+ integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==
+
prelude-ls@~1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=
-prettier@^1.11.1:
- version "1.19.1"
- resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb"
- integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==
+prettier-linter-helpers@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b"
+ integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==
+ dependencies:
+ fast-diff "^1.1.2"
+
+prettier@^2.1.2:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.1.2.tgz#3050700dae2e4c8b67c4c3f666cdb8af405e1ce5"
+ integrity sha512-16c7K+x4qVlJg9rEbXl7HEGmQyZlG4R9AgP+oHKRMsMsuk8s+ATStlf1NpDqyBI1HpVyfjLOeMhH2LvuNvV5Vg==
pretty-format@^23.6.0:
version "23.6.0"
@@ -7208,6 +7662,11 @@ process@~0.5.1:
resolved "https://registry.yarnpkg.com/process/-/process-0.5.2.tgz#1638d8a8e34c2f440a91db95ab9aeb677fc185cf"
integrity sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8=
+progress@^2.0.0:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
+ integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==
+
promise@^7.1.1:
version "7.3.1"
resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf"
@@ -7496,6 +7955,11 @@ regexp.prototype.flags@^1.3.0:
define-properties "^1.1.3"
es-abstract "^1.17.0-next.1"
+regexpp@^3.0.0, regexpp@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2"
+ integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==
+
regexpu-core@^4.7.0:
version "4.7.0"
resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.0.tgz#fcbf458c50431b0bb7b45d6967b8192d91f3d938"
@@ -7609,6 +8073,11 @@ resolve-from@^3.0.0:
resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748"
integrity sha1-six699nWiBvItuZTM17rywoYh0g=
+resolve-from@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
+ integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
+
resolve-from@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69"
@@ -7651,6 +8120,18 @@ ret@~0.1.10:
resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc"
integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==
+reusify@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
+ integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
+
+rimraf@2.6.3:
+ version "2.6.3"
+ resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab"
+ integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==
+ dependencies:
+ glob "^7.1.3"
+
rimraf@^2.5.4:
version "2.7.1"
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec"
@@ -7682,6 +8163,11 @@ run-async@^2.2.0:
dependencies:
is-promise "^2.1.0"
+run-parallel@^1.1.9:
+ version "1.1.9"
+ resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.9.tgz#c9dd3a7cf9f4b2c4b6244e173a6ed866e61dd679"
+ integrity sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q==
+
rx-lite-aggregates@^4.0.8:
version "4.0.8"
resolved "https://registry.yarnpkg.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be"
@@ -7794,7 +8280,7 @@ semver@7.0.0:
resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e"
integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==
-semver@^7.1.3:
+semver@^7.1.3, semver@^7.2.1, semver@^7.3.2:
version "7.3.2"
resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938"
integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==
@@ -7946,7 +8432,7 @@ slash@^3.0.0:
resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634"
integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==
-slice-ansi@^2.0.0:
+slice-ansi@^2.0.0, slice-ansi@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636"
integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==
@@ -8233,6 +8719,11 @@ strip-final-newline@^2.0.0:
resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad"
integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==
+strip-json-comments@^3.1.0, strip-json-comments@^3.1.1:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
+ integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
+
sudo-prompt@^9.0.0:
version "9.1.1"
resolved "https://registry.yarnpkg.com/sudo-prompt/-/sudo-prompt-9.1.1.tgz#73853d729770392caec029e2470db9c221754db0"
@@ -8282,6 +8773,16 @@ symbol-tree@^3.2.2:
resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2"
integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==
+table@^5.2.3:
+ version "5.4.6"
+ resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e"
+ integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==
+ dependencies:
+ ajv "^6.10.2"
+ lodash "^4.17.14"
+ slice-ansi "^2.1.0"
+ string-width "^3.0.0"
+
temp-dir@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d"
@@ -8321,6 +8822,11 @@ test-exclude@^6.0.0:
glob "^7.1.4"
minimatch "^3.0.4"
+text-table@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
+ integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=
+
throat@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a"
@@ -8459,11 +8965,23 @@ ts-jest@^25.3.1:
semver "6.x"
yargs-parser "18.x"
+tslib@^1.8.1:
+ version "1.13.0"
+ resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043"
+ integrity sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==
+
tslib@^1.9.0:
version "1.11.1"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.11.1.tgz#eb15d128827fbee2841549e171f45ed338ac7e35"
integrity sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==
+tsutils@^3.17.1:
+ version "3.17.1"
+ resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759"
+ integrity sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==
+ dependencies:
+ tslib "^1.8.1"
+
tunnel-agent@^0.6.0:
version "0.6.0"
resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
@@ -8476,6 +8994,13 @@ tweetnacl@^0.14.3, tweetnacl@~0.14.0:
resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=
+type-check@^0.4.0, type-check@~0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1"
+ integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==
+ dependencies:
+ prelude-ls "^1.2.1"
+
type-check@~0.3.2:
version "0.3.2"
resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72"
@@ -8725,6 +9250,11 @@ uuid@^7.0.3:
resolved "https://registry.yarnpkg.com/uuid/-/uuid-7.0.3.tgz#c5c9f2c8cf25dc0a372c4df1441c41f5bd0c680b"
integrity sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==
+v8-compile-cache@^2.0.3:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz#54bc3cdd43317bca91e35dcaf305b1a7237de745"
+ integrity sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ==
+
v8-to-istanbul@^4.0.1:
version "4.1.3"
resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-4.1.3.tgz#22fe35709a64955f49a08a7c7c959f6520ad6f20"
@@ -8883,7 +9413,7 @@ which@^2.0.1, which@^2.0.2:
dependencies:
isexe "^2.0.0"
-word-wrap@~1.2.3:
+word-wrap@^1.2.3, word-wrap@~1.2.3:
version "1.2.3"
resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c"
integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==
@@ -8944,6 +9474,13 @@ write-file-atomic@^3.0.0:
signal-exit "^3.0.2"
typedarray-to-buffer "^3.1.5"
+write@1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3"
+ integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==
+ dependencies:
+ mkdirp "^0.5.1"
+
ws@^1.1.0, ws@^1.1.5:
version "1.1.5"
resolved "https://registry.yarnpkg.com/ws/-/ws-1.1.5.tgz#cbd9e6e75e09fc5d2c90015f21f0c40875e0dd51"