chore: upgrade prettier and fix linting errors
This commit is contained in:
@@ -60,10 +60,8 @@ export const saveCharts = () => async (dispatch: Dispatch<any>, getState: () =>
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export const addChart = (chartParameters: ChartParameters) => async (
|
export const addChart =
|
||||||
dispatch: Dispatch<any>,
|
(chartParameters: ChartParameters) => async (dispatch: Dispatch<any>, getState: () => AppState) => {
|
||||||
getState: () => AppState
|
|
||||||
) => {
|
|
||||||
const chartExists = Boolean(
|
const chartExists = Boolean(
|
||||||
getState()
|
getState()
|
||||||
.charts.get('charts')
|
.charts.get('charts')
|
||||||
@@ -80,12 +78,10 @@ export const addChart = (chartParameters: ChartParameters) => async (
|
|||||||
})
|
})
|
||||||
dispatch(saveCharts())
|
dispatch(saveCharts())
|
||||||
dispatch(showNotification('Added to chart panel'))
|
dispatch(showNotification('Added to chart panel'))
|
||||||
}
|
}
|
||||||
|
|
||||||
export const updateChart = (chartParameters: ChartParameters) => async (
|
export const updateChart =
|
||||||
dispatch: Dispatch<any>,
|
(chartParameters: ChartParameters) => async (dispatch: Dispatch<any>, getState: () => AppState) => {
|
||||||
getState: () => AppState
|
|
||||||
) => {
|
|
||||||
dispatch({
|
dispatch({
|
||||||
type: ActionTypes.CHARTS_UPDATE,
|
type: ActionTypes.CHARTS_UPDATE,
|
||||||
topic: chartParameters.topic,
|
topic: chartParameters.topic,
|
||||||
@@ -93,30 +89,26 @@ export const updateChart = (chartParameters: ChartParameters) => async (
|
|||||||
parameters: chartParameters,
|
parameters: chartParameters,
|
||||||
})
|
})
|
||||||
dispatch(saveCharts())
|
dispatch(saveCharts())
|
||||||
}
|
}
|
||||||
|
|
||||||
export const removeChart = (chartParameters: ChartParameters) => async (
|
export const removeChart =
|
||||||
dispatch: Dispatch<any>,
|
(chartParameters: ChartParameters) => async (dispatch: Dispatch<any>, getState: () => AppState) => {
|
||||||
getState: () => AppState
|
|
||||||
) => {
|
|
||||||
dispatch({
|
dispatch({
|
||||||
chart: chartParameters,
|
chart: chartParameters,
|
||||||
type: ActionTypes.CHARTS_REMOVE,
|
type: ActionTypes.CHARTS_REMOVE,
|
||||||
})
|
})
|
||||||
dispatch(saveCharts())
|
dispatch(saveCharts())
|
||||||
}
|
}
|
||||||
|
|
||||||
export const moveChartUp = (parameters: { topic: string; dotPath?: string }) => async (
|
export const moveChartUp =
|
||||||
dispatch: Dispatch<any>,
|
(parameters: { topic: string; dotPath?: string }) => async (dispatch: Dispatch<any>, getState: () => AppState) => {
|
||||||
getState: () => AppState
|
|
||||||
) => {
|
|
||||||
dispatch({
|
dispatch({
|
||||||
topic: parameters.topic,
|
topic: parameters.topic,
|
||||||
dotPath: parameters.dotPath,
|
dotPath: parameters.dotPath,
|
||||||
type: ActionTypes.CHARTS_MOVE_UP,
|
type: ActionTypes.CHARTS_MOVE_UP,
|
||||||
})
|
})
|
||||||
dispatch(saveCharts())
|
dispatch(saveCharts())
|
||||||
}
|
}
|
||||||
|
|
||||||
export const setCharts = (charts: Array<ChartParameters>): Action => {
|
export const setCharts = (charts: Array<ChartParameters>): Action => {
|
||||||
return {
|
return {
|
||||||
|
|||||||
@@ -11,10 +11,8 @@ import { showError } from './Global'
|
|||||||
import { TopicViewModel } from '../model/TopicViewModel'
|
import { TopicViewModel } from '../model/TopicViewModel'
|
||||||
import { addMqttConnectionEvent, makeConnectionStateEvent, removeConnection, rendererEvents } from '../../../events'
|
import { addMqttConnectionEvent, makeConnectionStateEvent, removeConnection, rendererEvents } from '../../../events'
|
||||||
|
|
||||||
export const connect = (options: MqttOptions, connectionId: string) => (
|
export const connect =
|
||||||
dispatch: Dispatch<any>,
|
(options: MqttOptions, connectionId: string) => (dispatch: Dispatch<any>, getState: () => AppState) => {
|
||||||
getState: () => AppState
|
|
||||||
) => {
|
|
||||||
dispatch(connecting(connectionId))
|
dispatch(connecting(connectionId))
|
||||||
rendererEvents.emit(addMqttConnectionEvent, { options, id: connectionId })
|
rendererEvents.emit(addMqttConnectionEvent, { options, id: connectionId })
|
||||||
const event = makeConnectionStateEvent(connectionId)
|
const event = makeConnectionStateEvent(connectionId)
|
||||||
@@ -35,7 +33,7 @@ export const connect = (options: MqttOptions, connectionId: string) => (
|
|||||||
}
|
}
|
||||||
dispatch(updateHealth(dataSourceState))
|
dispatch(updateHealth(dataSourceState))
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
const updateHealth = (dataSourceState: DataSourceState) => (dispatch: Dispatch<any>, getState: () => AppState) => {
|
const updateHealth = (dataSourceState: DataSourceState) => (dispatch: Dispatch<any>, getState: () => AppState) => {
|
||||||
let state
|
let state
|
||||||
|
|||||||
@@ -51,10 +51,8 @@ export const loadConnectionSettings = () => async (dispatch: Dispatch<any>, getS
|
|||||||
}
|
}
|
||||||
|
|
||||||
export type CertificateTypes = 'selfSignedCertificate' | 'clientCertificate' | 'clientKey'
|
export type CertificateTypes = 'selfSignedCertificate' | 'clientCertificate' | 'clientKey'
|
||||||
export const selectCertificate = (type: CertificateTypes, connectionId: string) => async (
|
export const selectCertificate =
|
||||||
dispatch: Dispatch<any>,
|
(type: CertificateTypes, connectionId: string) => async (dispatch: Dispatch<any>, getState: () => AppState) => {
|
||||||
getState: () => AppState
|
|
||||||
) => {
|
|
||||||
try {
|
try {
|
||||||
const certificate = await openCertificate()
|
const certificate = await openCertificate()
|
||||||
dispatch(
|
dispatch(
|
||||||
@@ -65,7 +63,7 @@ export const selectCertificate = (type: CertificateTypes, connectionId: string)
|
|||||||
} catch (error) {
|
} catch (error) {
|
||||||
dispatch(showError(error))
|
dispatch(showError(error))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async function openCertificate(): Promise<CertificateParameters> {
|
async function openCertificate(): Promise<CertificateParameters> {
|
||||||
const rejectReasons = {
|
const rejectReasons = {
|
||||||
|
|||||||
@@ -43,12 +43,14 @@ export const storeSettings = () => async (dispatch: Dispatch<any>, getState: ()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export const setAutoExpandLimit = (autoExpandLimit: number = 0) => (dispatch: Dispatch<any>) => {
|
export const setAutoExpandLimit =
|
||||||
|
(autoExpandLimit: number = 0) =>
|
||||||
|
(dispatch: Dispatch<any>) => {
|
||||||
dispatch({
|
dispatch({
|
||||||
autoExpandLimit,
|
autoExpandLimit,
|
||||||
type: ActionTypes.SETTINGS_SET_AUTO_EXPAND_LIMIT,
|
type: ActionTypes.SETTINGS_SET_AUTO_EXPAND_LIMIT,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
export const setTimeLocale = (timeLocale: string) => (dispatch: Dispatch<any>) => {
|
export const setTimeLocale = (timeLocale: string) => (dispatch: Dispatch<any>) => {
|
||||||
dispatch({
|
dispatch({
|
||||||
@@ -81,13 +83,15 @@ export const toggleHighlightTopicUpdates = () => (dispatch: Dispatch<any>) => {
|
|||||||
dispatch(storeSettings())
|
dispatch(storeSettings())
|
||||||
}
|
}
|
||||||
|
|
||||||
export const setTopicOrder = (topicOrder: TopicOrder = TopicOrder.none) => (dispatch: Dispatch<any>) => {
|
export const setTopicOrder =
|
||||||
|
(topicOrder: TopicOrder = TopicOrder.none) =>
|
||||||
|
(dispatch: Dispatch<any>) => {
|
||||||
dispatch({
|
dispatch({
|
||||||
topicOrder,
|
topicOrder,
|
||||||
type: ActionTypes.SETTINGS_SET_TOPIC_ORDER,
|
type: ActionTypes.SETTINGS_SET_TOPIC_ORDER,
|
||||||
})
|
})
|
||||||
dispatch(storeSettings())
|
dispatch(storeSettings())
|
||||||
}
|
}
|
||||||
|
|
||||||
export const filterTopics = (filterStr: string) => (dispatch: Dispatch<any>, getState: () => AppState) => {
|
export const filterTopics = (filterStr: string) => (dispatch: Dispatch<any>, getState: () => AppState) => {
|
||||||
const { tree } = getState().connection
|
const { tree } = getState().connection
|
||||||
|
|||||||
@@ -12,12 +12,10 @@ export { clearTopic } from './clearTopic'
|
|||||||
|
|
||||||
export { moveSelectionUpOrDownwards, moveInward, moveOutward } from './visibleTreeTraversal'
|
export { moveSelectionUpOrDownwards, moveInward, moveOutward } from './visibleTreeTraversal'
|
||||||
|
|
||||||
export const selectTopic = (topic: q.TreeNode<TopicViewModel>) => (
|
export const selectTopic =
|
||||||
dispatch: Dispatch<any>,
|
(topic: q.TreeNode<TopicViewModel>) => (dispatch: Dispatch<any>, getState: () => AppState) => {
|
||||||
getState: () => AppState
|
|
||||||
) => {
|
|
||||||
debouncedSelectTopic(topic, dispatch, getState)
|
debouncedSelectTopic(topic, dispatch, getState)
|
||||||
}
|
}
|
||||||
|
|
||||||
const debouncedSelectTopic = debounce(
|
const debouncedSelectTopic = debounce(
|
||||||
(topic: q.TreeNode<TopicViewModel>, dispatch: Dispatch<any>, getState: () => AppState) => {
|
(topic: q.TreeNode<TopicViewModel>, dispatch: Dispatch<any>, getState: () => AppState) => {
|
||||||
@@ -74,25 +72,26 @@ function destroyUnreferencedTree(state: AppState) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export const resetStore = () => (dispatch: Dispatch<any>, getState: () => AppState): AnyAction => {
|
export const resetStore =
|
||||||
|
() =>
|
||||||
|
(dispatch: Dispatch<any>, getState: () => AppState): AnyAction => {
|
||||||
destroyUnreferencedTree(getState())
|
destroyUnreferencedTree(getState())
|
||||||
|
|
||||||
return dispatch({
|
return dispatch({
|
||||||
type: ActionTypes.TREE_RESET_STORE,
|
type: ActionTypes.TREE_RESET_STORE,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
export const showTree = (tree: q.Tree<TopicViewModel> | undefined) => (
|
export const showTree =
|
||||||
dispatch: Dispatch<any>,
|
(tree: q.Tree<TopicViewModel> | undefined) =>
|
||||||
getState: () => AppState
|
(dispatch: Dispatch<any>, getState: () => AppState): AnyAction => {
|
||||||
): AnyAction => {
|
|
||||||
destroyUnreferencedTree(getState())
|
destroyUnreferencedTree(getState())
|
||||||
|
|
||||||
return dispatch({
|
return dispatch({
|
||||||
tree,
|
tree,
|
||||||
type: ActionTypes.TREE_SHOW_TREE,
|
type: ActionTypes.TREE_SHOW_TREE,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
export const togglePause = (tree?: q.Tree<TopicViewModel>) => (dispatch: Dispatch<any>, getState: () => AppState) => {
|
export const togglePause = (tree?: q.Tree<TopicViewModel>) => (dispatch: Dispatch<any>, getState: () => AppState) => {
|
||||||
const paused = getState().tree.get('paused')
|
const paused = getState().tree.get('paused')
|
||||||
|
|||||||
@@ -5,10 +5,8 @@ import { makePublishEvent, rendererEvents } from '../../../events'
|
|||||||
import { moveSelectionUpOrDownwards } from './visibleTreeTraversal'
|
import { moveSelectionUpOrDownwards } from './visibleTreeTraversal'
|
||||||
import { globalActions } from '.'
|
import { globalActions } from '.'
|
||||||
|
|
||||||
export const clearTopic = (topic: q.TreeNode<any>, recursive: boolean) => async (
|
export const clearTopic =
|
||||||
dispatch: Dispatch<any>,
|
(topic: q.TreeNode<any>, recursive: boolean) => async (dispatch: Dispatch<any>, getState: () => AppState) => {
|
||||||
getState: () => AppState
|
|
||||||
) => {
|
|
||||||
const topicsForPurging = recursive ? [topic, ...topic.childTopics()] : [topic]
|
const topicsForPurging = recursive ? [topic, ...topic.childTopics()] : [topic]
|
||||||
|
|
||||||
if (recursive) {
|
if (recursive) {
|
||||||
@@ -53,4 +51,4 @@ export const clearTopic = (topic: q.TreeNode<any>, recursive: boolean) => async
|
|||||||
// Rate limit deletion
|
// Rate limit deletion
|
||||||
setTimeout(() => rendererEvents.emit(publishEvent, mqttMessage), 20 * idx)
|
setTimeout(() => rendererEvents.emit(publishEvent, mqttMessage), 20 * idx)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,10 +6,9 @@ import { SettingsState } from '../reducers/Settings'
|
|||||||
import { sortedNodes } from '../sortedNodes'
|
import { sortedNodes } from '../sortedNodes'
|
||||||
import { TopicViewModel } from '../model/TopicViewModel'
|
import { TopicViewModel } from '../model/TopicViewModel'
|
||||||
|
|
||||||
export const moveSelectionUpOrDownwards = (direction: 'next' | 'previous') => (
|
export const moveSelectionUpOrDownwards =
|
||||||
dispatch: Dispatch<any>,
|
(direction: 'next' | 'previous') =>
|
||||||
getState: () => AppState
|
(dispatch: Dispatch<any>, getState: () => AppState): any => {
|
||||||
): any => {
|
|
||||||
const state = getState()
|
const state = getState()
|
||||||
const selected = state.tree.get('selectedTopic')
|
const selected = state.tree.get('selectedTopic')
|
||||||
const tree = state.tree.get('tree')
|
const tree = state.tree.get('tree')
|
||||||
@@ -24,9 +23,11 @@ export const moveSelectionUpOrDownwards = (direction: 'next' | 'previous') => (
|
|||||||
if (nextTreeNode && nextTreeNode.viewModel) {
|
if (nextTreeNode && nextTreeNode.viewModel) {
|
||||||
dispatch(selectTopic(nextTreeNode))
|
dispatch(selectTopic(nextTreeNode))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export const moveInward = () => (dispatch: Dispatch<any>, getState: () => AppState): any => {
|
export const moveInward =
|
||||||
|
() =>
|
||||||
|
(dispatch: Dispatch<any>, getState: () => AppState): any => {
|
||||||
const state = getState()
|
const state = getState()
|
||||||
const selected = state.tree.get('selectedTopic')
|
const selected = state.tree.get('selectedTopic')
|
||||||
if (!selected || !selected.viewModel) {
|
if (!selected || !selected.viewModel) {
|
||||||
@@ -38,9 +39,11 @@ export const moveInward = () => (dispatch: Dispatch<any>, getState: () => AppSta
|
|||||||
} else {
|
} else {
|
||||||
dispatch(moveSelectionUpOrDownwards('next'))
|
dispatch(moveSelectionUpOrDownwards('next'))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export const moveOutward = () => (dispatch: Dispatch<any>, getState: () => AppState): any => {
|
export const moveOutward =
|
||||||
|
() =>
|
||||||
|
(dispatch: Dispatch<any>, getState: () => AppState): any => {
|
||||||
const state = getState()
|
const state = getState()
|
||||||
const selected = state.tree.get('selectedTopic')
|
const selected = state.tree.get('selectedTopic')
|
||||||
if (!selected || !selected.viewModel) {
|
if (!selected || !selected.viewModel) {
|
||||||
@@ -52,7 +55,7 @@ export const moveOutward = () => (dispatch: Dispatch<any>, getState: () => AppSt
|
|||||||
} else {
|
} else {
|
||||||
dispatch(moveSelectionUpOrDownwards('previous'))
|
dispatch(moveSelectionUpOrDownwards('previous'))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function isTreeNodeVisible(treeNode: q.TreeNode<any>) {
|
function isTreeNodeVisible(treeNode: q.TreeNode<any>) {
|
||||||
return Boolean(treeNode.viewModel)
|
return Boolean(treeNode.viewModel)
|
||||||
|
|||||||
@@ -12,8 +12,7 @@ import { ConfirmationRequest } from '../reducers/Global'
|
|||||||
import { connect } from 'react-redux'
|
import { connect } from 'react-redux'
|
||||||
import { globalActions, settingsActions } from '../actions'
|
import { globalActions, settingsActions } from '../actions'
|
||||||
import { Theme, withStyles } from '@material-ui/core/styles'
|
import { Theme, withStyles } from '@material-ui/core/styles'
|
||||||
|
;(window as any).global = window
|
||||||
(window as any).global = window
|
|
||||||
|
|
||||||
const Settings = React.lazy(() => import('./SettingsDrawer/Settings'))
|
const Settings = React.lazy(() => import('./SettingsDrawer/Settings'))
|
||||||
const ContentView = React.lazy(() => import('./Layout/ContentView'))
|
const ContentView = React.lazy(() => import('./Layout/ContentView'))
|
||||||
@@ -68,7 +67,7 @@ class App extends React.PureComponent<Props, {}> {
|
|||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
|
||||||
const anyProps: any = {};
|
const anyProps: any = {}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className={centerContent}>
|
<div className={centerContent}>
|
||||||
|
|||||||
@@ -43,10 +43,10 @@ class Demo extends React.Component<{ classes: any }, State> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public componentDidMount() {
|
public componentDidMount() {
|
||||||
; (window as any).demo.enableMouse = () => {
|
;(window as any).demo.enableMouse = () => {
|
||||||
this.setState({ enabled: true })
|
this.setState({ enabled: true })
|
||||||
}
|
}
|
||||||
; (window as any).demo.moveMouse = (x: number, y: number, animationTime: number) => {
|
;(window as any).demo.moveMouse = (x: number, y: number, animationTime: number) => {
|
||||||
const stepSizeX = Math.abs(this.state.position.x - x) / (animationTime / this.frameInterval)
|
const stepSizeX = Math.abs(this.state.position.x - x) / (animationTime / this.frameInterval)
|
||||||
const stepSizeY = Math.abs(this.state.position.y - y) / (animationTime / this.frameInterval)
|
const stepSizeY = Math.abs(this.state.position.y - y) / (animationTime / this.frameInterval)
|
||||||
this.setState({ stepSizeX, stepSizeY, enabled: true, target: { x, y } })
|
this.setState({ stepSizeX, stepSizeY, enabled: true, target: { x, y } })
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ function writeHeapdump(path?: string) {
|
|||||||
return path
|
return path
|
||||||
}
|
}
|
||||||
|
|
||||||
; (window as any).demo = {
|
;(window as any).demo = {
|
||||||
writeHeapdump,
|
writeHeapdump,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -8,10 +8,10 @@ import { settingsActions } from '../../actions'
|
|||||||
import { withStyles } from '@material-ui/styles'
|
import { withStyles } from '@material-ui/styles'
|
||||||
|
|
||||||
function importAll(r: any) {
|
function importAll(r: any) {
|
||||||
r.keys().forEach(r);
|
r.keys().forEach(r)
|
||||||
}
|
}
|
||||||
// @ts-expect-error -- webpack require
|
// @ts-expect-error -- webpack require
|
||||||
importAll(require.context('moment/locale', true, /\.js$/));
|
importAll(require.context('moment/locale', true, /\.js$/))
|
||||||
|
|
||||||
const moment = require('moment')
|
const moment = require('moment')
|
||||||
|
|
||||||
|
|||||||
@@ -43,9 +43,9 @@ class CodeDiff extends React.PureComponent<Props, State> {
|
|||||||
private plottableLiteralsIndexedWithLineNumbers() {
|
private plottableLiteralsIndexedWithLineNumbers() {
|
||||||
const allLiterals = this.isValidJson(this.props.current) ? literalsMappedByLines(this.props.current) || [] : []
|
const allLiterals = this.isValidJson(this.props.current) ? literalsMappedByLines(this.props.current) || [] : []
|
||||||
|
|
||||||
return allLiterals.map((l: JsonPropertyLocation) => (isPlottable(l.value) ? l : undefined)) as Array<
|
return allLiterals.map((l: JsonPropertyLocation) =>
|
||||||
JsonPropertyLocation
|
isPlottable(l.value) ? l : undefined
|
||||||
>
|
) as Array<JsonPropertyLocation>
|
||||||
}
|
}
|
||||||
|
|
||||||
private renderStyledCodeLines(changes: Array<Diff.Change>) {
|
private renderStyledCodeLines(changes: Array<Diff.Change>) {
|
||||||
|
|||||||
@@ -83,10 +83,12 @@ class ValueRenderer extends React.Component<Props, State> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public render() {
|
public render() {
|
||||||
return <div style={{ padding: '0px 0px 8px 0px', width: '100%' }}>
|
return (
|
||||||
{this.props.message?.payload?.decoder === Decoder.SPARKPLUG && "Decoded SparkplugB"}
|
<div style={{ padding: '0px 0px 8px 0px', width: '100%' }}>
|
||||||
|
{this.props.message?.payload?.decoder === Decoder.SPARKPLUG && 'Decoded SparkplugB'}
|
||||||
{this.renderValue()}
|
{this.renderValue()}
|
||||||
</div>
|
</div>
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
public renderValue() {
|
public renderValue() {
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ function nodeDotPathToHistory(startTime: number | undefined, history: q.MessageH
|
|||||||
let json: any = {}
|
let json: any = {}
|
||||||
try {
|
try {
|
||||||
json = message.payload ? JSON.parse(Base64Message.toUnicodeString(message.payload)) : {}
|
json = message.payload ? JSON.parse(Base64Message.toUnicodeString(message.payload)) : {}
|
||||||
} catch (ignore) { }
|
} catch (ignore) {}
|
||||||
|
|
||||||
const value = dotProp.get(json, dotPath)
|
const value = dotProp.get(json, dotPath)
|
||||||
|
|
||||||
|
|||||||
@@ -91,7 +91,8 @@ class TreeComponent extends React.PureComponent<Props, State> {
|
|||||||
const updateInterval = Math.max(expectedRenderTime * 7, 300)
|
const updateInterval = Math.max(expectedRenderTime * 7, 300)
|
||||||
const timeUntilNextUpdate = updateInterval - (performance.now() - this.renderTime)
|
const timeUntilNextUpdate = updateInterval - (performance.now() - this.renderTime)
|
||||||
|
|
||||||
this.updateTimer = setTimeout(() => {
|
this.updateTimer = setTimeout(
|
||||||
|
() => {
|
||||||
window.requestIdleCallback(
|
window.requestIdleCallback(
|
||||||
() => {
|
() => {
|
||||||
this.updateTimer && clearTimeout(this.updateTimer)
|
this.updateTimer && clearTimeout(this.updateTimer)
|
||||||
@@ -107,7 +108,9 @@ class TreeComponent extends React.PureComponent<Props, State> {
|
|||||||
},
|
},
|
||||||
{ timeout: 500 }
|
{ timeout: 500 }
|
||||||
)
|
)
|
||||||
}, Math.max(0, timeUntilNextUpdate))
|
},
|
||||||
|
Math.max(0, timeUntilNextUpdate)
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
public componentWillUpdate() {
|
public componentWillUpdate() {
|
||||||
|
|||||||
@@ -55,8 +55,8 @@ class UpdateNotifier extends React.PureComponent<Props, State> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private async checkForUpdates() {
|
private async checkForUpdates() {
|
||||||
const ownVersion = await rendererRpc.call(getAppVersion, undefined, 10000);
|
const ownVersion = await rendererRpc.call(getAppVersion, undefined, 10000)
|
||||||
const releases = await this.fetchReleases();
|
const releases = await this.fetchReleases()
|
||||||
const newerVersions = releases
|
const newerVersions = releases
|
||||||
.filter(release => this.allowPrereleaseIfOwnVersionIsBeta(release, ownVersion))
|
.filter(release => this.allowPrereleaseIfOwnVersionIsBeta(release, ownVersion))
|
||||||
.filter(release => compareVersions(release.tag_name, ownVersion) > 0)
|
.filter(release => compareVersions(release.tag_name, ownVersion) > 0)
|
||||||
|
|||||||
@@ -45,9 +45,11 @@ const initialStateFactory = Record<TreeStateModel>({
|
|||||||
filter: undefined,
|
filter: undefined,
|
||||||
})
|
})
|
||||||
|
|
||||||
const setPaused = (pause: boolean) => (state: TreeState, action: ShowTree): TreeState => {
|
const setPaused =
|
||||||
|
(pause: boolean) =>
|
||||||
|
(state: TreeState, action: ShowTree): TreeState => {
|
||||||
return state.set('paused', pause)
|
return state.set('paused', pause)
|
||||||
}
|
}
|
||||||
|
|
||||||
const actions: {
|
const actions: {
|
||||||
[s: string]: (state: TreeState, action: ReduxAction) => TreeState
|
[s: string]: (state: TreeState, action: ReduxAction) => TreeState
|
||||||
|
|||||||
@@ -1,10 +1,6 @@
|
|||||||
import { rendererRpc } from '../../../events'
|
import { rendererRpc } from '../../../events'
|
||||||
|
|
||||||
import {
|
import { storageStoreEvent, storageLoadEvent, storageClearEvent } from '../../../events/StorageEvents'
|
||||||
storageStoreEvent,
|
|
||||||
storageLoadEvent,
|
|
||||||
storageClearEvent,
|
|
||||||
} from '../../../events/StorageEvents'
|
|
||||||
|
|
||||||
export interface StorageIdentifier<Model> {
|
export interface StorageIdentifier<Model> {
|
||||||
id: string
|
id: string
|
||||||
@@ -25,9 +21,13 @@ class RemoteStorage implements PersistentStorage {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public async load<Model>(identifier: StorageIdentifier<Model>): Promise<Model | undefined> {
|
public async load<Model>(identifier: StorageIdentifier<Model>): Promise<Model | undefined> {
|
||||||
const result = await rendererRpc.call(storageLoadEvent, {
|
const result = await rendererRpc.call(
|
||||||
|
storageLoadEvent,
|
||||||
|
{
|
||||||
store: identifier.id,
|
store: identifier.id,
|
||||||
}, 10000)
|
},
|
||||||
|
10000
|
||||||
|
)
|
||||||
|
|
||||||
return (result as any).data
|
return (result as any).data
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
export const selectTextWithCtrlA = (options?: { targetSelector: string }) => (
|
export const selectTextWithCtrlA =
|
||||||
e: React.KeyboardEvent<HTMLDivElement>
|
(options?: { targetSelector: string }) => (e: React.KeyboardEvent<HTMLDivElement>) => {
|
||||||
) => {
|
|
||||||
const isCtrlA = (e.metaKey || e.ctrlKey) && e.key === 'a'
|
const isCtrlA = (e.metaKey || e.ctrlKey) && e.key === 'a'
|
||||||
|
|
||||||
if (isCtrlA && window.getSelection) {
|
if (isCtrlA && window.getSelection) {
|
||||||
@@ -21,4 +20,4 @@ export const selectTextWithCtrlA = (options?: { targetSelector: string }) => (
|
|||||||
selection.addRange(range)
|
selection.addRange(range)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,11 +3,7 @@ import * as fs from 'fs-extra'
|
|||||||
import * as lowdb from 'lowdb'
|
import * as lowdb from 'lowdb'
|
||||||
import * as path from 'path'
|
import * as path from 'path'
|
||||||
import { backendRpc } from '../../events'
|
import { backendRpc } from '../../events'
|
||||||
import {
|
import { storageClearEvent, storageLoadEvent, storageStoreEvent } from '../../events/StorageEvents'
|
||||||
storageClearEvent,
|
|
||||||
storageLoadEvent,
|
|
||||||
storageStoreEvent,
|
|
||||||
} from '../../events/StorageEvents'
|
|
||||||
|
|
||||||
export default class ConfigStorage {
|
export default class ConfigStorage {
|
||||||
private file: string
|
private file: string
|
||||||
|
|||||||
@@ -47,7 +47,6 @@ export class MqttSource implements DataSource<MqttOptions> {
|
|||||||
throw error
|
throw error
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const client = mqttConnect(url.toString(), {
|
const client = mqttConnect(url.toString(), {
|
||||||
resubscribe: false,
|
resubscribe: false,
|
||||||
rejectUnauthorized: options.certValidation,
|
rejectUnauthorized: options.certValidation,
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
export enum Decoder {
|
export enum Decoder {
|
||||||
NONE,
|
NONE,
|
||||||
SPARKPLUG
|
SPARKPLUG,
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ export class Tree<ViewModel extends Destroyable> extends TreeNode<ViewModel> {
|
|||||||
if (!this.paused && this.applyChangesHasCompleted) {
|
if (!this.paused && this.applyChangesHasCompleted) {
|
||||||
this.applyChangesHasCompleted = false
|
this.applyChangesHasCompleted = false
|
||||||
if ((window as any).requestIdleCallback) {
|
if ((window as any).requestIdleCallback) {
|
||||||
; (window as any).requestIdleCallback(() => this.applyUnmergedChanges(), { timeout: 500 })
|
;(window as any).requestIdleCallback(() => this.applyUnmergedChanges(), { timeout: 500 })
|
||||||
} else {
|
} else {
|
||||||
this.applyUnmergedChanges()
|
this.applyUnmergedChanges()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
import { readFileSync } from 'fs'
|
import { readFileSync } from 'fs'
|
||||||
import * as protobuf from 'protobufjs'
|
import * as protobuf from 'protobufjs'
|
||||||
import { Base64Message } from './Base64Message';
|
import { Base64Message } from './Base64Message'
|
||||||
import { Decoder } from './Decoder';
|
import { Decoder } from './Decoder'
|
||||||
|
|
||||||
const buffer = readFileSync(require.resolve('../../../../res/sparkplug_b.proto'));
|
const buffer = readFileSync(require.resolve('../../../../res/sparkplug_b.proto'))
|
||||||
const root = protobuf.parse(buffer.toString()).root
|
const root = protobuf.parse(buffer.toString()).root
|
||||||
export let SparkplugPayload = root.lookupType('com.cirruslink.sparkplug.protobuf.Payload')
|
export let SparkplugPayload = root.lookupType('com.cirruslink.sparkplug.protobuf.Payload')
|
||||||
|
|
||||||
@@ -11,14 +11,12 @@ export const SparkplugDecoder = {
|
|||||||
decode(input: Buffer): Base64Message | undefined {
|
decode(input: Buffer): Base64Message | undefined {
|
||||||
try {
|
try {
|
||||||
let message = Base64Message.fromString(
|
let message = Base64Message.fromString(
|
||||||
JSON.stringify(
|
JSON.stringify(SparkplugPayload.toObject(SparkplugPayload.decode(new Uint8Array(input))))
|
||||||
SparkplugPayload.toObject(SparkplugPayload.decode(new Uint8Array(input)))
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
message.decoder = Decoder.SPARKPLUG
|
message.decoder = Decoder.SPARKPLUG
|
||||||
return message
|
return message
|
||||||
} catch {
|
} catch {
|
||||||
// ignore
|
// ignore
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
export interface CallbackStore {
|
export interface CallbackStore {
|
||||||
wrappedCallback: any;
|
wrappedCallback: any
|
||||||
callback: any;
|
callback: any
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import { Event } from '../Events';
|
import { Event } from '../Events'
|
||||||
|
|
||||||
export interface EventBusInterface {
|
export interface EventBusInterface {
|
||||||
subscribe<MessageType>(event: Event<MessageType>, callback: (msg: MessageType) => void): void;
|
subscribe<MessageType>(event: Event<MessageType>, callback: (msg: MessageType) => void): void
|
||||||
unsubscribeAll<MessageType>(event: Event<MessageType>): void;
|
unsubscribeAll<MessageType>(event: Event<MessageType>): void
|
||||||
emit<MessageType>(event: Event<MessageType>, msg: MessageType): void;
|
emit<MessageType>(event: Event<MessageType>, msg: MessageType): void
|
||||||
unsubscribe<MessageType>(event: Event<MessageType>, callback: any): void;
|
unsubscribe<MessageType>(event: Event<MessageType>, callback: any): void
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,34 +1,34 @@
|
|||||||
import { IpcMain } from 'electron';
|
import { IpcMain } from 'electron'
|
||||||
import { Event } from '../Events';
|
import { Event } from '../Events'
|
||||||
import { EventBusInterface } from "./EventBusInterface";
|
import { EventBusInterface } from './EventBusInterface'
|
||||||
|
|
||||||
export class IpcMainEventBus implements EventBusInterface {
|
export class IpcMainEventBus implements EventBusInterface {
|
||||||
private ipc: IpcMain;
|
private ipc: IpcMain
|
||||||
private client: any;
|
private client: any
|
||||||
constructor(ipc: IpcMain) {
|
constructor(ipc: IpcMain) {
|
||||||
this.ipc = ipc;
|
this.ipc = ipc
|
||||||
}
|
}
|
||||||
|
|
||||||
public subscribe<MessageType>(subscribeEvent: Event<MessageType>, callback: (msg: MessageType) => void) {
|
public subscribe<MessageType>(subscribeEvent: Event<MessageType>, callback: (msg: MessageType) => void) {
|
||||||
console.log('subscribing', subscribeEvent.topic);
|
console.log('subscribing', subscribeEvent.topic)
|
||||||
this.ipc.on(subscribeEvent.topic, (event: any, arg: any) => {
|
this.ipc.on(subscribeEvent.topic, (event: any, arg: any) => {
|
||||||
this.client = event.sender;
|
this.client = event.sender
|
||||||
callback(arg);
|
callback(arg)
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
public unsubscribeAll<MessageType>(event: Event<MessageType>) {
|
public unsubscribeAll<MessageType>(event: Event<MessageType>) {
|
||||||
console.log('unsubscribeAll', event.topic);
|
console.log('unsubscribeAll', event.topic)
|
||||||
this.ipc.removeAllListeners(event.topic);
|
this.ipc.removeAllListeners(event.topic)
|
||||||
}
|
}
|
||||||
|
|
||||||
public unsubscribe<MessageType>(event: Event<MessageType>, callback: any) {
|
public unsubscribe<MessageType>(event: Event<MessageType>, callback: any) {
|
||||||
throw new Error('Not implemented'); // Todo: implement
|
throw new Error('Not implemented') // Todo: implement
|
||||||
}
|
}
|
||||||
|
|
||||||
public emit<MessageType>(event: Event<MessageType>, msg: MessageType) {
|
public emit<MessageType>(event: Event<MessageType>, msg: MessageType) {
|
||||||
if (!this.client.isDestroyed()) {
|
if (!this.client.isDestroyed()) {
|
||||||
this.client.send(event.topic, msg);
|
this.client.send(event.topic, msg)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { CallbackStore } from "./CallbackStore"
|
import { CallbackStore } from './CallbackStore'
|
||||||
import { EventBusInterface } from "./EventBusInterface"
|
import { EventBusInterface } from './EventBusInterface'
|
||||||
import { Event } from '../Events'
|
import { Event } from '../Events'
|
||||||
import { IpcRenderer } from 'electron'
|
import { IpcRenderer } from 'electron'
|
||||||
|
|
||||||
@@ -15,7 +15,7 @@ export class IpcRendererEventBus implements EventBusInterface {
|
|||||||
const wrappedCallback = (_: any, arg: any) => {
|
const wrappedCallback = (_: any, arg: any) => {
|
||||||
callback(arg)
|
callback(arg)
|
||||||
}
|
}
|
||||||
console.log("subscribing", event.topic)
|
console.log('subscribing', event.topic)
|
||||||
this.ipc.on(event.topic, wrappedCallback)
|
this.ipc.on(event.topic, wrappedCallback)
|
||||||
this.callbacks.push({
|
this.callbacks.push({
|
||||||
callback,
|
callback,
|
||||||
|
|||||||
@@ -1,53 +1,60 @@
|
|||||||
import { Event } from '../Events';
|
import { Event } from '../Events'
|
||||||
import { EventBusInterface } from './EventBusInterface'
|
import { EventBusInterface } from './EventBusInterface'
|
||||||
import { v4 } from 'uuid';
|
import { v4 } from 'uuid'
|
||||||
|
|
||||||
export type RpcEvent<RequstType, ResponseType> = {
|
export type RpcEvent<RequstType, ResponseType> = {
|
||||||
topic: string;
|
topic: string
|
||||||
};
|
}
|
||||||
|
|
||||||
export class Rpc {
|
export class Rpc {
|
||||||
constructor(private participant: EventBusInterface) { }
|
constructor(private participant: EventBusInterface) {}
|
||||||
|
|
||||||
async call<RpcRequest, RpcResponse>(event: RpcEvent<RpcRequest, RpcResponse>, request: RpcRequest, timeout: number = 0): Promise<RpcResponse> {
|
async call<RpcRequest, RpcResponse>(
|
||||||
|
event: RpcEvent<RpcRequest, RpcResponse>,
|
||||||
|
request: RpcRequest,
|
||||||
|
timeout: number = 0
|
||||||
|
): Promise<RpcResponse> {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
let id = v4();
|
let id = v4()
|
||||||
|
|
||||||
let responseEvent: Event<any> = { topic: `${event.topic}/response/${id}` };
|
let responseEvent: Event<any> = { topic: `${event.topic}/response/${id}` }
|
||||||
let requestEvent: Event<any> = { topic: `${event.topic}/request` };
|
let requestEvent: Event<any> = { topic: `${event.topic}/request` }
|
||||||
let callback = (result: { id: string; payload: RpcResponse; error: unknown }) => {
|
let callback = (result: { id: string; payload: RpcResponse; error: unknown }) => {
|
||||||
this.participant.unsubscribe(responseEvent as any, callback);
|
this.participant.unsubscribe(responseEvent as any, callback)
|
||||||
if (result.error) {
|
if (result.error) {
|
||||||
reject(result.error)
|
reject(result.error)
|
||||||
} else {
|
} else {
|
||||||
resolve(result.payload);
|
resolve(result.payload)
|
||||||
}
|
}
|
||||||
console.log("received", result)
|
console.log('received', result)
|
||||||
};
|
}
|
||||||
this.participant.subscribe(responseEvent, callback);
|
this.participant.subscribe(responseEvent, callback)
|
||||||
this.participant.emit(requestEvent, { id, payload: request });
|
this.participant.emit(requestEvent, { id, payload: request })
|
||||||
|
|
||||||
if (timeout > 0) {
|
if (timeout > 0) {
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
reject(new Error(`Did not respond to ${event.topic} within ${timeout}ms`))
|
reject(new Error(`Did not respond to ${event.topic} within ${timeout}ms`))
|
||||||
this.participant.unsubscribe(responseEvent as any, callback);
|
this.participant.unsubscribe(responseEvent as any, callback)
|
||||||
}, 10000)
|
}, 10000)
|
||||||
}
|
}
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
async on<RpcRequest, RpcResponse>(event: RpcEvent<RpcRequest, RpcResponse>, handler: (request: RpcRequest) => Promise<RpcResponse>) {
|
async on<RpcRequest, RpcResponse>(
|
||||||
this.participant.subscribe<RpcRequest>({ topic: `${event.topic}/request` } as RpcEvent<any, any>, async (request) => {
|
event: RpcEvent<RpcRequest, RpcResponse>,
|
||||||
let payload;
|
handler: (request: RpcRequest) => Promise<RpcResponse>
|
||||||
let error;
|
) {
|
||||||
|
this.participant.subscribe<RpcRequest>({ topic: `${event.topic}/request` } as RpcEvent<any, any>, async request => {
|
||||||
|
let payload
|
||||||
|
let error
|
||||||
try {
|
try {
|
||||||
payload = await handler((request as any).payload);
|
payload = await handler((request as any).payload)
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
error = e
|
error = e
|
||||||
}
|
}
|
||||||
const id = (request as any).id
|
const id = (request as any).id
|
||||||
console.log(`${event.topic}/response/${id}`, payload, error)
|
console.log(`${event.topic}/response/${id}`, payload, error)
|
||||||
this.participant.emit({ topic: `${event.topic}/response/${id}` }, { id, payload, error });
|
this.participant.emit({ topic: `${event.topic}/response/${id}` }, { id, payload, error })
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { Base64Message } from '../backend/src/Model/Base64Message'
|
import { Base64Message } from '../backend/src/Model/Base64Message'
|
||||||
import { DataSourceState, MqttOptions } from '../backend/src/DataSource'
|
import { DataSourceState, MqttOptions } from '../backend/src/DataSource'
|
||||||
import { UpdateInfo } from 'builder-util-runtime'
|
import { UpdateInfo } from 'builder-util-runtime'
|
||||||
import { RpcEvent } from './EventSystem/Rpc';
|
import { RpcEvent } from './EventSystem/Rpc'
|
||||||
|
|
||||||
export type Event<MessageType> = {
|
export type Event<MessageType> = {
|
||||||
topic: string
|
topic: string
|
||||||
@@ -52,5 +52,5 @@ export function makeConnectionMessageEvent(connectionId: string): Event<MqttMess
|
|||||||
}
|
}
|
||||||
|
|
||||||
export const getAppVersion: RpcEvent<void, string> = {
|
export const getAppVersion: RpcEvent<void, string> = {
|
||||||
topic: `getAppVersion`
|
topic: `getAppVersion`,
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import { OpenDialogOptions, OpenDialogReturnValue } from 'electron';
|
import { OpenDialogOptions, OpenDialogReturnValue } from 'electron'
|
||||||
import { RpcEvent } from './EventSystem/Rpc';
|
import { RpcEvent } from './EventSystem/Rpc'
|
||||||
|
|
||||||
export function makeOpenDialogRpc(): RpcEvent<OpenDialogOptions, OpenDialogReturnValue> {
|
export function makeOpenDialogRpc(): RpcEvent<OpenDialogOptions, OpenDialogReturnValue> {
|
||||||
return {
|
return {
|
||||||
topic: `openDialog`
|
topic: `openDialog`,
|
||||||
};
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,6 +17,7 @@
|
|||||||
"dev:electron": "tsc && electron . --development",
|
"dev:electron": "tsc && electron . --development",
|
||||||
"lint": "npm-run-all --parallel lint:prettier lint:tslint lint:spellcheck",
|
"lint": "npm-run-all --parallel lint:prettier lint:tslint lint:spellcheck",
|
||||||
"lint:prettier": "prettier --check \"**/*.ts{x,}\"",
|
"lint:prettier": "prettier --check \"**/*.ts{x,}\"",
|
||||||
|
"lint:prettier:fix": "prettier --write \"**/*.ts{x,}\"",
|
||||||
"lint:tslint": "tslint -p ./",
|
"lint:tslint": "tslint -p ./",
|
||||||
"lint:spellcheck": "cspell -e ./build -e \"node_modules\" \"**/*.ts{x,}\"",
|
"lint:spellcheck": "cspell -e ./build -e \"node_modules\" \"**/*.ts{x,}\"",
|
||||||
"build": "tsc && cd app && yarn run build && cd ..",
|
"build": "tsc && cd app && yarn run build && cd ..",
|
||||||
@@ -93,11 +94,15 @@
|
|||||||
"mustache": "4",
|
"mustache": "4",
|
||||||
"npm-run-all": "^4.1.5",
|
"npm-run-all": "^4.1.5",
|
||||||
"nyc": "15",
|
"nyc": "15",
|
||||||
"prettier": "2",
|
"prettier": "^3.2.5",
|
||||||
"redux-thunk": "^2.3.0",
|
"redux-thunk": "^2.3.0",
|
||||||
"source-map-support": "^0.5.9",
|
"source-map-support": "^0.5.9",
|
||||||
"spectron": "19",
|
"spectron": "19",
|
||||||
"ts-node": "^10.5.0",
|
"ts-node": "^10.5.0",
|
||||||
|
"tslint": "^6.1.3",
|
||||||
|
"tslint-config-airbnb": "^5.11.2",
|
||||||
|
"tslint-react": "^5.0.0",
|
||||||
|
"tslint-react-recommended": "^1.0.15",
|
||||||
"typescript": "^4.5.5",
|
"typescript": "^4.5.5",
|
||||||
"webdriverio": "7.16"
|
"webdriverio": "7.16"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ registerCrashReporter()
|
|||||||
|
|
||||||
app.commandLine.appendSwitch('--no-sandbox')
|
app.commandLine.appendSwitch('--no-sandbox')
|
||||||
app.whenReady().then(() => {
|
app.whenReady().then(() => {
|
||||||
backendRpc.on(makeOpenDialogRpc(), async (request) => {
|
backendRpc.on(makeOpenDialogRpc(), async request => {
|
||||||
return dialog.showOpenDialog(BrowserWindow.getFocusedWindow() ?? BrowserWindow.getAllWindows()[0], request)
|
return dialog.showOpenDialog(BrowserWindow.getFocusedWindow() ?? BrowserWindow.getAllWindows()[0], request)
|
||||||
})
|
})
|
||||||
backendRpc.on(getAppVersion, async () => app.getVersion())
|
backendRpc.on(getAppVersion, async () => app.getVersion())
|
||||||
|
|||||||
@@ -29,7 +29,12 @@ export async function writeText(text: string, browser: Browser<'async'>, delay =
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function deleteTextWithBackspaces(element: Element<'async'>, browser: Browser<'async'>, delay = 0, count = 0) {
|
export async function deleteTextWithBackspaces(
|
||||||
|
element: Element<'async'>,
|
||||||
|
browser: Browser<'async'>,
|
||||||
|
delay = 0,
|
||||||
|
count = 0
|
||||||
|
) {
|
||||||
const length = count > 0 ? count : (await element.getValue()).length
|
const length = count > 0 ? count : (await element.getValue()).length
|
||||||
for (let i = 0; i < length; i += 1) {
|
for (let i = 0; i < length; i += 1) {
|
||||||
await browser.keys(['Backspace'])
|
await browser.keys(['Backspace'])
|
||||||
|
|||||||
261
yarn.lock
261
yarn.lock
@@ -14,6 +14,14 @@
|
|||||||
dependencies:
|
dependencies:
|
||||||
"@jridgewell/trace-mapping" "^0.3.0"
|
"@jridgewell/trace-mapping" "^0.3.0"
|
||||||
|
|
||||||
|
"@babel/code-frame@^7.0.0":
|
||||||
|
version "7.23.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.23.5.tgz#9009b69a8c602293476ad598ff53e4562e15c244"
|
||||||
|
integrity sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==
|
||||||
|
dependencies:
|
||||||
|
"@babel/highlight" "^7.23.4"
|
||||||
|
chalk "^2.4.2"
|
||||||
|
|
||||||
"@babel/code-frame@^7.16.7":
|
"@babel/code-frame@^7.16.7":
|
||||||
version "7.16.7"
|
version "7.16.7"
|
||||||
resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz"
|
resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz"
|
||||||
@@ -136,6 +144,11 @@
|
|||||||
resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz"
|
resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz"
|
||||||
integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==
|
integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==
|
||||||
|
|
||||||
|
"@babel/helper-validator-identifier@^7.22.20":
|
||||||
|
version "7.22.20"
|
||||||
|
resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0"
|
||||||
|
integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==
|
||||||
|
|
||||||
"@babel/helper-validator-option@^7.16.7":
|
"@babel/helper-validator-option@^7.16.7":
|
||||||
version "7.16.7"
|
version "7.16.7"
|
||||||
resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz"
|
resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz"
|
||||||
@@ -159,6 +172,15 @@
|
|||||||
chalk "^2.0.0"
|
chalk "^2.0.0"
|
||||||
js-tokens "^4.0.0"
|
js-tokens "^4.0.0"
|
||||||
|
|
||||||
|
"@babel/highlight@^7.23.4":
|
||||||
|
version "7.23.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.23.4.tgz#edaadf4d8232e1a961432db785091207ead0621b"
|
||||||
|
integrity sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==
|
||||||
|
dependencies:
|
||||||
|
"@babel/helper-validator-identifier" "^7.22.20"
|
||||||
|
chalk "^2.4.2"
|
||||||
|
js-tokens "^4.0.0"
|
||||||
|
|
||||||
"@babel/parser@^7.16.7", "@babel/parser@^7.17.3":
|
"@babel/parser@^7.16.7", "@babel/parser@^7.17.3":
|
||||||
version "7.17.3"
|
version "7.17.3"
|
||||||
resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.17.3.tgz"
|
resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.17.3.tgz"
|
||||||
@@ -421,6 +443,25 @@
|
|||||||
dir-compare "^2.4.0"
|
dir-compare "^2.4.0"
|
||||||
fs-extra "^9.0.1"
|
fs-extra "^9.0.1"
|
||||||
|
|
||||||
|
"@fimbul/bifrost@^0.21.0":
|
||||||
|
version "0.21.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@fimbul/bifrost/-/bifrost-0.21.0.tgz#d0fafa25938fda475657a6a1e407a21bbe02c74e"
|
||||||
|
integrity sha512-ou8VU+nTmOW1jeg+FT+sn+an/M0Xb9G16RucrfhjXGWv1Q97kCoM5CG9Qj7GYOSdu7km72k7nY83Eyr53Bkakg==
|
||||||
|
dependencies:
|
||||||
|
"@fimbul/ymir" "^0.21.0"
|
||||||
|
get-caller-file "^2.0.0"
|
||||||
|
tslib "^1.8.1"
|
||||||
|
tsutils "^3.5.0"
|
||||||
|
|
||||||
|
"@fimbul/ymir@^0.21.0":
|
||||||
|
version "0.21.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@fimbul/ymir/-/ymir-0.21.0.tgz#8525726787aceeafd4e199472c0d795160b5d4a1"
|
||||||
|
integrity sha512-T/y7WqPsm4n3zhT08EpB5sfdm2Kvw3gurAxr2Lr5dQeLi8ZsMlNT/Jby+ZmuuAAd1PnXYzKp+2SXgIkQIIMCUg==
|
||||||
|
dependencies:
|
||||||
|
inversify "^5.0.0"
|
||||||
|
reflect-metadata "^0.1.12"
|
||||||
|
tslib "^1.8.1"
|
||||||
|
|
||||||
"@istanbuljs/load-nyc-config@^1.0.0":
|
"@istanbuljs/load-nyc-config@^1.0.0":
|
||||||
version "1.1.0"
|
version "1.1.0"
|
||||||
resolved "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz"
|
resolved "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz"
|
||||||
@@ -1286,6 +1327,11 @@ builder-util@22.14.13:
|
|||||||
stat-mode "^1.0.0"
|
stat-mode "^1.0.0"
|
||||||
temp-file "^3.4.0"
|
temp-file "^3.4.0"
|
||||||
|
|
||||||
|
builtin-modules@^1.1.1:
|
||||||
|
version "1.1.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f"
|
||||||
|
integrity sha512-wxXCdllwGhI2kCC0MnvTGYTMvnVZTvqgypkiTI8Pa5tcz2i6VqsqwYGgqwXji+4RgCzms6EajE4IxiUH6HH8nQ==
|
||||||
|
|
||||||
cacheable-lookup@^5.0.3:
|
cacheable-lookup@^5.0.3:
|
||||||
version "5.0.4"
|
version "5.0.4"
|
||||||
resolved "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz"
|
resolved "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz"
|
||||||
@@ -1374,7 +1420,7 @@ chalk@^1.1.3:
|
|||||||
strip-ansi "^3.0.0"
|
strip-ansi "^3.0.0"
|
||||||
supports-color "^2.0.0"
|
supports-color "^2.0.0"
|
||||||
|
|
||||||
chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2:
|
chalk@^2.0.0, chalk@^2.3.0, chalk@^2.4.1, chalk@^2.4.2:
|
||||||
version "2.4.2"
|
version "2.4.2"
|
||||||
resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz"
|
resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz"
|
||||||
integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
|
integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
|
||||||
@@ -1546,6 +1592,11 @@ commander@2.9.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
graceful-readlink ">= 1.0.0"
|
graceful-readlink ">= 1.0.0"
|
||||||
|
|
||||||
|
commander@^2.12.1:
|
||||||
|
version "2.20.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
|
||||||
|
integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
|
||||||
|
|
||||||
commander@^5.0.0:
|
commander@^5.0.0:
|
||||||
version "5.1.0"
|
version "5.1.0"
|
||||||
resolved "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz"
|
resolved "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz"
|
||||||
@@ -2037,6 +2088,14 @@ dmg-license@^1.0.9:
|
|||||||
smart-buffer "^4.0.2"
|
smart-buffer "^4.0.2"
|
||||||
verror "^1.10.0"
|
verror "^1.10.0"
|
||||||
|
|
||||||
|
doctrine@0.7.2:
|
||||||
|
version "0.7.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-0.7.2.tgz#7cb860359ba3be90e040b26b729ce4bfa654c523"
|
||||||
|
integrity sha512-qiB/Rir6Un6Ad/TIgTRzsremsTGWzs8j7woXvp14jgq00676uBiBT5eUOi+FgRywZFVy5Us/c04ISRpZhRbS6w==
|
||||||
|
dependencies:
|
||||||
|
esutils "^1.1.6"
|
||||||
|
isarray "0.0.1"
|
||||||
|
|
||||||
dot-prop@^5.0.0, dot-prop@^5.2.0:
|
dot-prop@^5.0.0, dot-prop@^5.2.0:
|
||||||
version "5.3.0"
|
version "5.3.0"
|
||||||
resolved "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz"
|
resolved "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz"
|
||||||
@@ -2280,6 +2339,11 @@ esprima@^4.0.0, esprima@^4.0.1:
|
|||||||
resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz"
|
resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz"
|
||||||
integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
|
integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
|
||||||
|
|
||||||
|
esutils@^1.1.6:
|
||||||
|
version "1.1.6"
|
||||||
|
resolved "https://registry.yarnpkg.com/esutils/-/esutils-1.1.6.tgz#c01ccaa9ae4b897c6d0c3e210ae52f3c7a844375"
|
||||||
|
integrity sha512-RG1ZkUT7iFJG9LSHr7KDuuMSlujfeTtMNIcInURxKAxhMtwQhI3NrQhz26gZQYlsYZQKzsnwtpKrFKj9K9Qu1A==
|
||||||
|
|
||||||
event-stream@=3.3.4:
|
event-stream@=3.3.4:
|
||||||
version "3.3.4"
|
version "3.3.4"
|
||||||
resolved "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz"
|
resolved "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz"
|
||||||
@@ -2481,6 +2545,11 @@ function-bind@^1.1.1:
|
|||||||
resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz"
|
resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz"
|
||||||
integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
|
integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
|
||||||
|
|
||||||
|
function-bind@^1.1.2:
|
||||||
|
version "1.1.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c"
|
||||||
|
integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==
|
||||||
|
|
||||||
gensequence@^3.1.1:
|
gensequence@^3.1.1:
|
||||||
version "3.1.1"
|
version "3.1.1"
|
||||||
resolved "https://registry.npmjs.org/gensequence/-/gensequence-3.1.1.tgz"
|
resolved "https://registry.npmjs.org/gensequence/-/gensequence-3.1.1.tgz"
|
||||||
@@ -2491,7 +2560,7 @@ gensync@^1.0.0-beta.2:
|
|||||||
resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz"
|
resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz"
|
||||||
integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==
|
integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==
|
||||||
|
|
||||||
get-caller-file@^2.0.1, get-caller-file@^2.0.5:
|
get-caller-file@^2.0.0, get-caller-file@^2.0.1, get-caller-file@^2.0.5:
|
||||||
version "2.0.5"
|
version "2.0.5"
|
||||||
resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz"
|
resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz"
|
||||||
integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
|
integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
|
||||||
@@ -2566,6 +2635,18 @@ glob@7.1.3:
|
|||||||
once "^1.3.0"
|
once "^1.3.0"
|
||||||
path-is-absolute "^1.0.0"
|
path-is-absolute "^1.0.0"
|
||||||
|
|
||||||
|
glob@^7.1.1:
|
||||||
|
version "7.2.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b"
|
||||||
|
integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
|
||||||
|
dependencies:
|
||||||
|
fs.realpath "^1.0.0"
|
||||||
|
inflight "^1.0.4"
|
||||||
|
inherits "2"
|
||||||
|
minimatch "^3.1.1"
|
||||||
|
once "^1.3.0"
|
||||||
|
path-is-absolute "^1.0.0"
|
||||||
|
|
||||||
glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6:
|
glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6:
|
||||||
version "7.2.0"
|
version "7.2.0"
|
||||||
resolved "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz"
|
resolved "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz"
|
||||||
@@ -2739,6 +2820,13 @@ hasha@^5.0.0:
|
|||||||
is-stream "^2.0.0"
|
is-stream "^2.0.0"
|
||||||
type-fest "^0.8.0"
|
type-fest "^0.8.0"
|
||||||
|
|
||||||
|
hasown@^2.0.0:
|
||||||
|
version "2.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.1.tgz#26f48f039de2c0f8d3356c223fb8d50253519faa"
|
||||||
|
integrity sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==
|
||||||
|
dependencies:
|
||||||
|
function-bind "^1.1.2"
|
||||||
|
|
||||||
he@1.2.0:
|
he@1.2.0:
|
||||||
version "1.2.0"
|
version "1.2.0"
|
||||||
resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz"
|
resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz"
|
||||||
@@ -2866,6 +2954,11 @@ internal-slot@^1.0.3:
|
|||||||
has "^1.0.3"
|
has "^1.0.3"
|
||||||
side-channel "^1.0.4"
|
side-channel "^1.0.4"
|
||||||
|
|
||||||
|
inversify@^5.0.0:
|
||||||
|
version "5.1.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/inversify/-/inversify-5.1.1.tgz#6fbd668c591337404e005a1946bfe0d802c08730"
|
||||||
|
integrity sha512-j8grHGDzv1v+8T1sAQ+3boTCntFPfvxLCkNcxB1J8qA0lUN+fAlSyYd+RXKvaPRL4AGyPxViutBEJHNXOyUdFQ==
|
||||||
|
|
||||||
is-arrayish@^0.2.1:
|
is-arrayish@^0.2.1:
|
||||||
version "0.2.1"
|
version "0.2.1"
|
||||||
resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz"
|
resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz"
|
||||||
@@ -2917,6 +3010,13 @@ is-ci@^3.0.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
ci-info "^3.2.0"
|
ci-info "^3.2.0"
|
||||||
|
|
||||||
|
is-core-module@^2.13.0:
|
||||||
|
version "2.13.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384"
|
||||||
|
integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==
|
||||||
|
dependencies:
|
||||||
|
hasown "^2.0.0"
|
||||||
|
|
||||||
is-date-object@^1.0.1:
|
is-date-object@^1.0.1:
|
||||||
version "1.0.5"
|
version "1.0.5"
|
||||||
resolved "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz"
|
resolved "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz"
|
||||||
@@ -3062,6 +3162,11 @@ is-yarn-global@^0.3.0:
|
|||||||
resolved "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz"
|
resolved "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz"
|
||||||
integrity sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==
|
integrity sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==
|
||||||
|
|
||||||
|
isarray@0.0.1:
|
||||||
|
version "0.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
|
||||||
|
integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==
|
||||||
|
|
||||||
isarray@~1.0.0:
|
isarray@~1.0.0:
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz"
|
resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz"
|
||||||
@@ -3567,6 +3672,13 @@ minimatch@3.0.4, minimatch@^3.0.2, minimatch@^3.0.4:
|
|||||||
dependencies:
|
dependencies:
|
||||||
brace-expansion "^1.1.7"
|
brace-expansion "^1.1.7"
|
||||||
|
|
||||||
|
minimatch@^3.1.1:
|
||||||
|
version "3.1.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
|
||||||
|
integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
|
||||||
|
dependencies:
|
||||||
|
brace-expansion "^1.1.7"
|
||||||
|
|
||||||
minimatch@^5.0.0:
|
minimatch@^5.0.0:
|
||||||
version "5.0.1"
|
version "5.0.1"
|
||||||
resolved "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz"
|
resolved "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz"
|
||||||
@@ -3579,6 +3691,11 @@ minimist@^1.1.0, minimist@^1.2.0, minimist@^1.2.5:
|
|||||||
resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz"
|
resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz"
|
||||||
integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
|
integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
|
||||||
|
|
||||||
|
minimist@^1.2.6:
|
||||||
|
version "1.2.8"
|
||||||
|
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c"
|
||||||
|
integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==
|
||||||
|
|
||||||
mkdirp-classic@^0.5.2:
|
mkdirp-classic@^0.5.2:
|
||||||
version "0.5.3"
|
version "0.5.3"
|
||||||
resolved "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz"
|
resolved "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz"
|
||||||
@@ -3591,6 +3708,13 @@ mkdirp@0.5.3:
|
|||||||
dependencies:
|
dependencies:
|
||||||
minimist "^1.2.5"
|
minimist "^1.2.5"
|
||||||
|
|
||||||
|
mkdirp@^0.5.3:
|
||||||
|
version "0.5.6"
|
||||||
|
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6"
|
||||||
|
integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==
|
||||||
|
dependencies:
|
||||||
|
minimist "^1.2.6"
|
||||||
|
|
||||||
mkdirp@^0.5.4:
|
mkdirp@^0.5.4:
|
||||||
version "0.5.5"
|
version "0.5.5"
|
||||||
resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz"
|
resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz"
|
||||||
@@ -3975,6 +4099,11 @@ path-parse@^1.0.6:
|
|||||||
resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz"
|
resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz"
|
||||||
integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==
|
integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==
|
||||||
|
|
||||||
|
path-parse@^1.0.7:
|
||||||
|
version "1.0.7"
|
||||||
|
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
|
||||||
|
integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
|
||||||
|
|
||||||
path-type@^1.0.0:
|
path-type@^1.0.0:
|
||||||
version "1.1.0"
|
version "1.1.0"
|
||||||
resolved "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz"
|
resolved "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz"
|
||||||
@@ -4065,10 +4194,10 @@ prepend-http@^2.0.0:
|
|||||||
resolved "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz"
|
resolved "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz"
|
||||||
integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=
|
integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=
|
||||||
|
|
||||||
prettier@2:
|
prettier@^3.2.5:
|
||||||
version "2.0.4"
|
version "3.2.5"
|
||||||
resolved "https://registry.npmjs.org/prettier/-/prettier-2.0.4.tgz"
|
resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.2.5.tgz#e52bc3090586e824964a8813b09aba6233b28368"
|
||||||
integrity sha512-SVJIQ51spzFDvh4fIbCLvciiDMCrRhlN3mbZvv/+ycjvmF5E73bKdGfU8QDLNmjYJf+lsGnDBC4UUnvTe5OO0w==
|
integrity sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==
|
||||||
|
|
||||||
printj@~1.3.1:
|
printj@~1.3.1:
|
||||||
version "1.3.1"
|
version "1.3.1"
|
||||||
@@ -4269,6 +4398,11 @@ redux-thunk@^2.3.0:
|
|||||||
resolved "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.3.0.tgz"
|
resolved "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.3.0.tgz"
|
||||||
integrity sha512-km6dclyFnmcvxhAcrQV2AkZmPQjzPDjgVlQtR0EQjxZPyJ0BnMf3in1ryuR8A2qU0HldVRfxYXbFSKlI3N7Slw==
|
integrity sha512-km6dclyFnmcvxhAcrQV2AkZmPQjzPDjgVlQtR0EQjxZPyJ0BnMf3in1ryuR8A2qU0HldVRfxYXbFSKlI3N7Slw==
|
||||||
|
|
||||||
|
reflect-metadata@^0.1.12:
|
||||||
|
version "0.1.14"
|
||||||
|
resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.14.tgz#24cf721fe60677146bb77eeb0e1f9dece3d65859"
|
||||||
|
integrity sha512-ZhYeb6nRaXCfhnndflDK8qI6ZQ/YcWZCISRAWICW9XYqMUwjZM9Z0DveWX/ABN01oxSHwVxKQmxeYZSsm0jh5A==
|
||||||
|
|
||||||
regenerator-runtime@^0.13.4:
|
regenerator-runtime@^0.13.4:
|
||||||
version "0.13.9"
|
version "0.13.9"
|
||||||
resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz"
|
resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz"
|
||||||
@@ -4339,6 +4473,15 @@ resolve@^1.10.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
path-parse "^1.0.6"
|
path-parse "^1.0.6"
|
||||||
|
|
||||||
|
resolve@^1.3.2:
|
||||||
|
version "1.22.8"
|
||||||
|
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d"
|
||||||
|
integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==
|
||||||
|
dependencies:
|
||||||
|
is-core-module "^2.13.0"
|
||||||
|
path-parse "^1.0.7"
|
||||||
|
supports-preserve-symlinks-flag "^1.0.0"
|
||||||
|
|
||||||
responselike@^1.0.2:
|
responselike@^1.0.2:
|
||||||
version "1.0.2"
|
version "1.0.2"
|
||||||
resolved "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz"
|
resolved "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz"
|
||||||
@@ -4433,6 +4576,11 @@ semver-diff@^3.1.1:
|
|||||||
resolved "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz"
|
resolved "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz"
|
||||||
integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
|
integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
|
||||||
|
|
||||||
|
semver@^5.3.0:
|
||||||
|
version "5.7.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8"
|
||||||
|
integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==
|
||||||
|
|
||||||
semver@^6.0.0, semver@^6.2.0, semver@^6.3.0:
|
semver@^6.0.0, semver@^6.2.0, semver@^6.3.0:
|
||||||
version "6.3.0"
|
version "6.3.0"
|
||||||
resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz"
|
resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz"
|
||||||
@@ -4808,6 +4956,11 @@ supports-color@^7.1.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
has-flag "^4.0.0"
|
has-flag "^4.0.0"
|
||||||
|
|
||||||
|
supports-preserve-symlinks-flag@^1.0.0:
|
||||||
|
version "1.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
|
||||||
|
integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
|
||||||
|
|
||||||
tar-fs@2.1.1:
|
tar-fs@2.1.1:
|
||||||
version "2.1.1"
|
version "2.1.1"
|
||||||
resolved "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz"
|
resolved "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz"
|
||||||
@@ -4913,6 +5066,102 @@ ts-node@^10.5.0:
|
|||||||
v8-compile-cache-lib "^3.0.0"
|
v8-compile-cache-lib "^3.0.0"
|
||||||
yn "3.1.1"
|
yn "3.1.1"
|
||||||
|
|
||||||
|
tslib@1.9.0:
|
||||||
|
version "1.9.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.0.tgz#e37a86fda8cbbaf23a057f473c9f4dc64e5fc2e8"
|
||||||
|
integrity sha512-f/qGG2tUkrISBlQZEjEqoZ3B2+npJjIf04H1wuAv9iA8i04Icp+61KRXxFdha22670NJopsZCIjhC3SnjPRKrQ==
|
||||||
|
|
||||||
|
tslib@^1.13.0, tslib@^1.7.1, tslib@^1.8.1:
|
||||||
|
version "1.14.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
|
||||||
|
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
|
||||||
|
|
||||||
|
tslint-config-airbnb@^5.11.2:
|
||||||
|
version "5.11.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/tslint-config-airbnb/-/tslint-config-airbnb-5.11.2.tgz#2f3d239fa3923be8e7a4372217a7ed552671528f"
|
||||||
|
integrity sha512-mUpHPTeeCFx8XARGG/kzYP4dPSOgoCqNiYbGHh09qTH8q+Y1ghsOgaeZKYYQT7IyxMos523z/QBaiv2zKNBcow==
|
||||||
|
dependencies:
|
||||||
|
tslint-consistent-codestyle "^1.14.1"
|
||||||
|
tslint-eslint-rules "^5.4.0"
|
||||||
|
tslint-microsoft-contrib "~5.2.1"
|
||||||
|
|
||||||
|
tslint-consistent-codestyle@^1.14.1:
|
||||||
|
version "1.16.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/tslint-consistent-codestyle/-/tslint-consistent-codestyle-1.16.0.tgz#52348ea899a7e025b37cc6545751c6a566a19077"
|
||||||
|
integrity sha512-ebR/xHyMEuU36hGNOgCfjGBNYxBPixf0yU1Yoo6s3BrpBRFccjPOmIVaVvQsWAUAMdmfzHOCihVkcaMfimqvHw==
|
||||||
|
dependencies:
|
||||||
|
"@fimbul/bifrost" "^0.21.0"
|
||||||
|
tslib "^1.7.1"
|
||||||
|
tsutils "^2.29.0"
|
||||||
|
|
||||||
|
tslint-eslint-rules@^5.4.0:
|
||||||
|
version "5.4.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/tslint-eslint-rules/-/tslint-eslint-rules-5.4.0.tgz#e488cc9181bf193fe5cd7bfca213a7695f1737b5"
|
||||||
|
integrity sha512-WlSXE+J2vY/VPgIcqQuijMQiel+UtmXS+4nvK4ZzlDiqBfXse8FAvkNnTcYhnQyOTW5KFM+uRRGXxYhFpuBc6w==
|
||||||
|
dependencies:
|
||||||
|
doctrine "0.7.2"
|
||||||
|
tslib "1.9.0"
|
||||||
|
tsutils "^3.0.0"
|
||||||
|
|
||||||
|
tslint-microsoft-contrib@~5.2.1:
|
||||||
|
version "5.2.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/tslint-microsoft-contrib/-/tslint-microsoft-contrib-5.2.1.tgz#a6286839f800e2591d041ea2800c77487844ad81"
|
||||||
|
integrity sha512-PDYjvpo0gN9IfMULwKk0KpVOPMhU6cNoT9VwCOLeDl/QS8v8W2yspRpFFuUS7/c5EIH/n8ApMi8TxJAz1tfFUA==
|
||||||
|
dependencies:
|
||||||
|
tsutils "^2.27.2 <2.29.0"
|
||||||
|
|
||||||
|
tslint-react-recommended@^1.0.15:
|
||||||
|
version "1.0.15"
|
||||||
|
resolved "https://registry.yarnpkg.com/tslint-react-recommended/-/tslint-react-recommended-1.0.15.tgz#4166dc7d87b57280110673c99315a35ac5a76a7e"
|
||||||
|
integrity sha512-kEPJ+8D4Di30vqcU9ogFHXubyFvphM41EDb7ISnVuIhS0Zes8CntcgG9d9WDZvhPIjyd9pXvLOqc61RA450cpw==
|
||||||
|
|
||||||
|
tslint-react@^5.0.0:
|
||||||
|
version "5.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/tslint-react/-/tslint-react-5.0.0.tgz#d0ae644e8163bdd3e134012e9353094904e8dd44"
|
||||||
|
integrity sha512-/IbcSmoBPlFic8kQaRfQ4knTY4mivwo5LVzvozvX6Dyu2ynEnrh1dIcR2ujjyp/IodXqY/H5GbxFxSMo/Kf2Hg==
|
||||||
|
dependencies:
|
||||||
|
tsutils "^3.17.1"
|
||||||
|
|
||||||
|
tslint@^6.1.3:
|
||||||
|
version "6.1.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/tslint/-/tslint-6.1.3.tgz#5c23b2eccc32487d5523bd3a470e9aa31789d904"
|
||||||
|
integrity sha512-IbR4nkT96EQOvKE2PW/djGz8iGNeJ4rF2mBfiYaR/nvUWYKJhLwimoJKgjIFEIDibBtOevj7BqCRL4oHeWWUCg==
|
||||||
|
dependencies:
|
||||||
|
"@babel/code-frame" "^7.0.0"
|
||||||
|
builtin-modules "^1.1.1"
|
||||||
|
chalk "^2.3.0"
|
||||||
|
commander "^2.12.1"
|
||||||
|
diff "^4.0.1"
|
||||||
|
glob "^7.1.1"
|
||||||
|
js-yaml "^3.13.1"
|
||||||
|
minimatch "^3.0.4"
|
||||||
|
mkdirp "^0.5.3"
|
||||||
|
resolve "^1.3.2"
|
||||||
|
semver "^5.3.0"
|
||||||
|
tslib "^1.13.0"
|
||||||
|
tsutils "^2.29.0"
|
||||||
|
|
||||||
|
"tsutils@^2.27.2 <2.29.0":
|
||||||
|
version "2.28.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.28.0.tgz#6bd71e160828f9d019b6f4e844742228f85169a1"
|
||||||
|
integrity sha512-bh5nAtW0tuhvOJnx1GLRn5ScraRLICGyJV5wJhtRWOLsxW70Kk5tZtpK3O/hW6LDnqKS9mlUMPZj9fEMJ0gxqA==
|
||||||
|
dependencies:
|
||||||
|
tslib "^1.8.1"
|
||||||
|
|
||||||
|
tsutils@^2.29.0:
|
||||||
|
version "2.29.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.29.0.tgz#32b488501467acbedd4b85498673a0812aca0b99"
|
||||||
|
integrity sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==
|
||||||
|
dependencies:
|
||||||
|
tslib "^1.8.1"
|
||||||
|
|
||||||
|
tsutils@^3.0.0, tsutils@^3.17.1, tsutils@^3.5.0:
|
||||||
|
version "3.21.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623"
|
||||||
|
integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==
|
||||||
|
dependencies:
|
||||||
|
tslib "^1.8.1"
|
||||||
|
|
||||||
tunnel@^0.0.6:
|
tunnel@^0.0.6:
|
||||||
version "0.0.6"
|
version "0.0.6"
|
||||||
resolved "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz"
|
resolved "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz"
|
||||||
|
|||||||
Reference in New Issue
Block a user