aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Vijay A <vraravam@users.noreply.github.com>2023-03-27 06:44:06 +0530
committerLibravatar Vijay A <vraravam@users.noreply.github.com>2023-03-27 06:44:06 +0530
commit3fbafed41f3f137493dde93e8962076421374825 (patch)
tree56aff6e15ec19e83b44e5978bade3c9582de6bb5
parentMerge branch 'develop' into release and bump version to '6.2.5-beta.2' (diff)
parent6.2.6-nightly.9 [skip ci] (diff)
downloadferdium-app-3fbafed41f3f137493dde93e8962076421374825.tar.gz
ferdium-app-3fbafed41f3f137493dde93e8962076421374825.tar.zst
ferdium-app-3fbafed41f3f137493dde93e8962076421374825.zip
Merge branch 'develop' into release and bump version to 6.2.6-beta.16.2.6-beta.1
-rw-r--r--.nvmrc2
-rw-r--r--CONTRIBUTING.md4
-rw-r--r--Dockerfile2
-rw-r--r--README.md2
-rw-r--r--docs/DBUS.md20
-rw-r--r--docs/INTERNAL_SERVER.md (renamed from INTERNAL_SERVER.md)2
-rw-r--r--docs/MIGRATION.md (renamed from MIGRATION.md)0
-rw-r--r--docs/dbus/ferdium_bar.py102
-rw-r--r--docs/dbus/org.ferdium.Ferdium.xml80
-rw-r--r--docs/dbus/requirements.txt1
-rw-r--r--package.json40
-rw-r--r--pnpm-lock.yaml487
m---------recipes0
-rwxr-xr-xscripts/migration/migrate-unix.sh2
-rw-r--r--scripts/migration/migrate-windows.ps12
-rw-r--r--src/i18n/locales/hi.json57
-rw-r--r--src/lib/DBus.ts69
-rw-r--r--src/lib/dbus/Ferdium.ts88
-rw-r--r--src/stores/ServicesStore.ts52
19 files changed, 729 insertions, 283 deletions
diff --git a/.nvmrc b/.nvmrc
index d939939b2..55bffd620 100644
--- a/.nvmrc
+++ b/.nvmrc
@@ -1 +1 @@
18.13.0 18.15.0
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 8898fe1f4..21c6b7db1 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -62,8 +62,8 @@ Currently, these are the combinations of system dependencies that work for MacOS
62# Note: 'jq' is not a required system dependency; its only here to show the combined output of versions needed 62# Note: 'jq' is not a required system dependency; its only here to show the combined output of versions needed
63$ jq --null-input '[inputs.engines] | add' < ./package.json < ./recipes/package.json 63$ jq --null-input '[inputs.engines] | add' < ./package.json < ./recipes/package.json
64{ 64{
65 "node": "18.13.0", 65 "node": "18.15.0",
66 "pnpm": "7.27.0" 66 "pnpm": "7.30.0"
67} 67}
68``` 68```
69 69
diff --git a/Dockerfile b/Dockerfile
index 29931aa64..2a245a4f7 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,6 +1,6 @@
1# Note: Before running this file, you should have already cloned the git repo + submodules on the host machine. This is used when actively developing on your local machine, but you want to build for a different architecture 1# Note: Before running this file, you should have already cloned the git repo + submodules on the host machine. This is used when actively developing on your local machine, but you want to build for a different architecture
2 2
3FROM docker.io/library/node:18.13.0-buster as builder 3FROM docker.io/library/node:18.15.0-buster as builder
4 4
5ENV PATH="/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:/usr/local/lib:/usr/include:/usr/share" 5ENV PATH="/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:/usr/local/lib:/usr/include:/usr/share"
6 6
diff --git a/README.md b/README.md
index 692f90943..57428c80d 100644
--- a/README.md
+++ b/README.md
@@ -62,7 +62,7 @@ _Find answers to frequently asked questions on [ferdium.org/faq](https://ferdium
62 62
63## Migrating from Ferdi 63## Migrating from Ferdi
64 64
65If you are a pre-existing user of Ferdi, and are thinking of switching to Ferdium, you might want to run [the following scripts](./scripts/migration) to migrate your existing Ferdi profile such that Ferdium can pick up the configurations. (.ps1 for PowerShell/Windows users and .sh for UNIX (Linux and MacOS users). For a more detailed explanation, please see [MIGRATION.md](MIGRATION.md) 65If you are a pre-existing user of Ferdi, and are thinking of switching to Ferdium, you might want to run [the following scripts](./scripts/migration) to migrate your existing Ferdi profile such that Ferdium can pick up the configurations. (.ps1 for PowerShell/Windows users and .sh for UNIX (Linux and MacOS users). For a more detailed explanation, please see [MIGRATION.md](docs/MIGRATION.md)
66 66
67## Styling 67## Styling
68 68
diff --git a/docs/DBUS.md b/docs/DBUS.md
new file mode 100644
index 000000000..ffbd61f4b
--- /dev/null
+++ b/docs/DBUS.md
@@ -0,0 +1,20 @@
1# D-Bus interface
2
3Ferdium exposes an inter-process communication on Linux systems via [D-Bus](https://www.freedesktop.org/wiki/Software/dbus/).
4This allows integrating Ferdium with your desktop environment by displaying the number of unread notifications in a status area and muting or unmuting notations.
5
6## Desktop integration
7
8As an example integration, the [`docs/dbus`](dbus) folder contains a module for status bars written in Python.
9To run the example, you'll need Python 3.11 and the [`dbus-next`](https://pypi.org/project/dbus-next/) PyPI package.
10
11The integration uses the [`FerdiumClient`](dbus/ferdium_client.py) client library, which is an asynchronous wrapper over the D-Bus interface.
12It illustrates multiple advanced concepts, such as asynchronous communication with Ferdium via `asyncio` and polling the session D-Bus to see if Ferdium is running.
13
14The [`ferdium_bar.py`](dbus/ferdium_bar.py) implements a bar module to use with status bars such as waybar or polybar. See `ferdium_bar.py --help` and `ferdium_bar.py unread --help` for further indications on how to use it.
15
16## Low-level API
17
18The low-level API exposed over D-Bus is documented in [`org.ferdium.Ferdium.xml](docs/org.ferdium.Ferdium.xml) with standard D-Bus introspection syntax.
19
20Ferdium will take ownership of the bus name `org.ferdium.Ferdium` and expose and object implementing the `org.ferdium.Ferdium` interface at the object path `/org/ferdium`.
diff --git a/INTERNAL_SERVER.md b/docs/INTERNAL_SERVER.md
index 1a1284f7e..9e94f9bdf 100644
--- a/INTERNAL_SERVER.md
+++ b/docs/INTERNAL_SERVER.md
@@ -1,5 +1,5 @@
1<p align="center"> 1<p align="center">
2 <img src="./src/internal-server/public/images/logo.png" alt="" width="300"/> 2 <img src="../src/internal-server/public/images/logo.png" alt="" width="300"/>
3</p> 3</p>
4 4
5# ferdium-internal-server 5# ferdium-internal-server
diff --git a/MIGRATION.md b/docs/MIGRATION.md
index bb1ca315d..bb1ca315d 100644
--- a/MIGRATION.md
+++ b/docs/MIGRATION.md
diff --git a/docs/dbus/ferdium_bar.py b/docs/dbus/ferdium_bar.py
new file mode 100644
index 000000000..6fd5d8c30
--- /dev/null
+++ b/docs/dbus/ferdium_bar.py
@@ -0,0 +1,102 @@
1import asyncio
2import argparse
3import html
4
5from ferdium_dbus import Client
6
7
8async def toggle_window(client, args):
9 """Toggle window visibility"""
10
11 await client.toggle_window()
12
13
14async def toggle_mute(client, args):
15 """Toggle mute status"""
16
17 await client.toggle_mute()
18
19
20async def unread(client, args):
21 """Get unread messages count"""
22
23 def callback():
24 """Print unread count(s)"""
25
26 # For each service
27 counts = {}
28 for service in client.unread_services:
29 name, direct, indirect = service
30 safe_name = html.escape(name)
31
32 # If it's exactly the service we're looking for, just return the count
33 if safe_name == args.services:
34 count = direct
35 if not args.direct:
36 count += indirect
37 print(count)
38 return
39
40 # If the service in included in the services we're looking for
41 if args.services in ("total", "all") or safe_name in args.services:
42 counts[safe_name] = direct
43 if not args.direct:
44 counts[safe_name] += indirect
45
46 # Get total notifications
47 if args.services == "total":
48 print(sum(counts.values()))
49 return
50
51 # Finally, print each service notifications on a different line
52 print(
53 "\n".join(
54 f"{name}: {count}"
55 for name, count in counts.items()
56 )
57 )
58
59 # Do print counts and keep running if tail mode enabled
60 callback()
61 if args.tail:
62 client.on_change(callback)
63 await asyncio.get_running_loop().create_future()
64
65
66async def main():
67 """Main cli interface"""
68
69 # Define commands
70 commands = {
71 "unread": unread,
72 "toggle-mute": toggle_mute,
73 "toggle-window": toggle_window,
74 }
75
76 # Arguments parser
77 argparser = argparse.ArgumentParser(description="Script to interact with Ferdium on your bar")
78 subparsers = argparser.add_subparsers(dest="command", required=True)
79 # Unread command
80 argparser_unread = subparsers.add_parser("unread", help=unread.__doc__)
81 argparser_unread.add_argument("-s", "--services", default="total", help="Which services to get notifications from {total, all, <name>} (the name can be a comma-separated list)")
82 argparser_unread.add_argument("-d", "--direct", action="store_true", default=False, help="Get only direct (mentions or DM) messages")
83 argparser_unread.add_argument("-t", "--tail", action="store_true", default=False, help="Keep running and print on change")
84 # Toggle mute and toggle window commands
85 argparser_toggle_mute = subparsers.add_parser("toggle-mute", help=toggle_mute.__doc__)
86 argparser_toggle_window = subparsers.add_parser("toggle-window", help=toggle_window.__doc__)
87 # Get args
88 args = argparser.parse_args()
89
90 # Initialise ferdium client
91 client = Client()
92 await client.connect()
93 if not client.running:
94 print("not running")
95 return
96
97 # Execute command
98 await commands[args.command](client, args)
99
100
101if __name__ == "__main__":
102 asyncio.run(main())
diff --git a/docs/dbus/org.ferdium.Ferdium.xml b/docs/dbus/org.ferdium.Ferdium.xml
new file mode 100644
index 000000000..8c66a9e21
--- /dev/null
+++ b/docs/dbus/org.ferdium.Ferdium.xml
@@ -0,0 +1,80 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN"
3"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
4<node>
5 <!--
6 org.ferdium.Ferdium:
7 @short_description: Control Ferdium from the desktop
8
9 Interface for accessing Ferdium notification state, allowing notification
10 counts to be displayed in the desktop (e.g., on a status bar) and updating
11 the muted state of notifications.
12
13 The #org.ferdium.UnreadDirectMessageCount,
14 #org.ferdium.UnreadIndirectMessageCount, and #org.ferdium.UnreadServices
15 are affected by notification muting and hiding settings of Ferdium.
16 In particular, they are not updated if #org.ferdium.Muted is #TRUE.
17 Moreover, services with muted notifications or hidden indirect message
18 counts will not appear in the respective counts.
19 This behavior is consistent with the behavior of the Ferdium tray icon.
20 -->
21 <interface name="org.ferdium.Ferdium">
22 <!--
23 ToggleMute:
24
25 Toggles the muted state of notifcations.
26
27 Use the #org.ferdium.Ferdium.Muted property to get or set the current
28 muted state.
29 -->
30 <method name="ToggleMute" />
31 <!--
32 ToggleWindow:
33
34 Brings the Ferdium window into the foreground if it is not currently
35 focused. Hides the Ferdium window if is is currently focused.
36
37 Calling this method is equivalent to clicking on the Ferdium tray icon.
38 -->
39 <method name="ToggleWindow" />
40 <!--
41 Muted:
42
43 Gets or sets the current muted state of notifications.
44
45 #TRUE if notifications are currently muted, #FALSE otherwise.
46 -->
47 <property name="Muted" type="b" access="readwrite" />
48 <!--
49 UnreadDirectMessageCount:
50
51 The number of unread direct messages.
52 -->
53 <property name="UnreadDirectMessageCount" type="u" access="read" />
54 <!--
55 UnreadIndirectMessageCount:
56
57 The number of unread indirect messages.
58 -->
59 <property name="UnreadIndirectMessageCount" type="u" access="read" />
60 <!--
61 UnreadServices:
62
63 The list of services with unread messages.
64
65 The value of this property is an array of structs corresponding to each
66 service with unread messages.
67 The elements of a struct are the following:
68
69 1. The name of the service.
70
71 2. The number of unread direct messages of the service.
72
73 3. The number of unread indirect messages of the service.
74
75 Services with no unread direct or indirect messages (i.e., structs with
76 the second and third element set to 0) are omitted from the array.
77 -->
78 <property name="UnreadServices" type="a(suu)" access="read" />
79 </interface>
80</node>
diff --git a/docs/dbus/requirements.txt b/docs/dbus/requirements.txt
new file mode 100644
index 000000000..d08a849d9
--- /dev/null
+++ b/docs/dbus/requirements.txt
@@ -0,0 +1 @@
git+https://github.com/victorbnl/ferdium-dbus-py
diff --git a/package.json b/package.json
index 9a62f70c2..8c78a1067 100644
--- a/package.json
+++ b/package.json
@@ -3,7 +3,7 @@
3 "productName": "Ferdium", 3 "productName": "Ferdium",
4 "desktopName": "ferdium.desktop", 4 "desktopName": "ferdium.desktop",
5 "appId": "org.ferdium.ferdium-app", 5 "appId": "org.ferdium.ferdium-app",
6 "version": "6.2.5-beta.2", 6 "version": "6.2.6-beta.1",
7 "description": "Messaging app for WhatsApp, Slack, Telegram, HipChat, Hangouts and many many more.", 7 "description": "Messaging app for WhatsApp, Slack, Telegram, HipChat, Hangouts and many many more.",
8 "author": "Ferdium Contributors <hello@ferdium.org> (https://ferdium.org/)", 8 "author": "Ferdium Contributors <hello@ferdium.org> (https://ferdium.org/)",
9 "license": "Apache-2.0", 9 "license": "Apache-2.0",
@@ -13,8 +13,8 @@
13 "repository": "https://github.com/ferdium/ferdium-app.git", 13 "repository": "https://github.com/ferdium/ferdium-app.git",
14 "private": true, 14 "private": true,
15 "engines": { 15 "engines": {
16 "node": "18.13.0", 16 "node": "18.15.0",
17 "pnpm": "7.27.0" 17 "pnpm": "7.30.0"
18 }, 18 },
19 "engine-strict": true, 19 "engine-strict": true,
20 "scripts": { 20 "scripts": {
@@ -76,16 +76,16 @@
76 "electron-updater": "5.3.0", 76 "electron-updater": "5.3.0",
77 "electron-window-state": "5.0.3", 77 "electron-window-state": "5.0.3",
78 "fast-folder-size": "1.7.1", 78 "fast-folder-size": "1.7.1",
79 "fs-extra": "11.1.0", 79 "fs-extra": "11.1.1",
80 "google-translate-api-x": "10.5.4", 80 "google-translate-api-x": "10.5.4",
81 "history": "5.3.0", 81 "history": "5.3.0",
82 "immutable": "4.2.4", 82 "immutable": "4.3.0",
83 "jsonwebtoken": "8.5.1", 83 "jsonwebtoken": "8.5.1",
84 "jss": "10.10.0", 84 "jss": "10.10.0",
85 "languagedetect": "2.0.0", 85 "languagedetect": "2.0.0",
86 "lodash": "4.17.21", 86 "lodash": "4.17.21",
87 "macos-version": "5.2.1", 87 "macos-version": "5.2.1",
88 "markdown-to-jsx": "7.1.9", 88 "markdown-to-jsx": "7.2.0",
89 "mime-types": "2.1.35", 89 "mime-types": "2.1.35",
90 "minimist": "1.2.8", 90 "minimist": "1.2.8",
91 "mobx": "6.8.0", 91 "mobx": "6.8.0",
@@ -105,7 +105,7 @@
105 "react-dom": "17.0.2", 105 "react-dom": "17.0.2",
106 "react-dropzone": "14.2.3", 106 "react-dropzone": "14.2.3",
107 "react-electron-web-view": "2.0.1", 107 "react-electron-web-view": "2.0.1",
108 "react-intl": "6.2.10", 108 "react-intl": "6.3.1",
109 "react-jss": "10.10.0", 109 "react-jss": "10.10.0",
110 "react-loader": "2.4.7", 110 "react-loader": "2.4.7",
111 "react-modal": "3.16.1", 111 "react-modal": "3.16.1",
@@ -117,13 +117,13 @@
117 "route-parser": "0.0.5", 117 "route-parser": "0.0.5",
118 "sanitize-filename": "1.6.3", 118 "sanitize-filename": "1.6.3",
119 "semver": "7.3.8", 119 "semver": "7.3.8",
120 "sqlite3": "5.1.4", 120 "sqlite3": "5.1.6",
121 "tar": "6.1.13", 121 "tar": "6.1.13",
122 "tslib": "2.5.0", 122 "tslib": "2.5.0",
123 "useragent-generator": "1.1.1-amkt-22079-finish.0", 123 "useragent-generator": "1.1.1-amkt-22079-finish.0",
124 "uuid": "9.0.0", 124 "uuid": "9.0.0",
125 "validator": "13.9.0", 125 "validator": "13.9.0",
126 "ws": "8.12.1" 126 "ws": "8.13.0"
127 }, 127 },
128 "devDependencies": { 128 "devDependencies": {
129 "@commitlint/cli": "17.4.4", 129 "@commitlint/cli": "17.4.4",
@@ -133,7 +133,7 @@
133 "@types/color": "3.0.3", 133 "@types/color": "3.0.3",
134 "@types/expect.js": "0.3.29", 134 "@types/expect.js": "0.3.29",
135 "@types/fs-extra": "11.0.1", 135 "@types/fs-extra": "11.0.1",
136 "@types/jest": "29.4.0", 136 "@types/jest": "29.5.0",
137 "@types/lodash": "4.14.191", 137 "@types/lodash": "4.14.191",
138 "@types/mime-types": "2.1.1", 138 "@types/mime-types": "2.1.1",
139 "@types/ms": "0.7.31", 139 "@types/ms": "0.7.31",
@@ -144,23 +144,23 @@
144 "@types/sass": "1.45.0", 144 "@types/sass": "1.45.0",
145 "@types/tar": "6.1.4", 145 "@types/tar": "6.1.4",
146 "@types/uuid": "9.0.1", 146 "@types/uuid": "9.0.1",
147 "@types/validator": "13.7.13", 147 "@types/validator": "13.7.14",
148 "@typescript-eslint/eslint-plugin": "5.54.0", 148 "@typescript-eslint/eslint-plugin": "5.56.0",
149 "@typescript-eslint/parser": "5.54.0", 149 "@typescript-eslint/parser": "5.56.0",
150 "all-contributors-cli": "6.24.0", 150 "all-contributors-cli": "6.24.0",
151 "chalk": "5.2.0", 151 "chalk": "5.2.0",
152 "concurrently": "7.6.0", 152 "concurrently": "7.6.0",
153 "cross-env": "7.0.3", 153 "cross-env": "7.0.3",
154 "electron": "23.1.2", 154 "electron": "23.2.0",
155 "electron-builder": "23.6.0", 155 "electron-builder": "23.6.0",
156 "esbuild": "0.16.17", 156 "esbuild": "0.16.17",
157 "esbuild-plugin-copy": "2.0.2", 157 "esbuild-plugin-copy": "2.1.0",
158 "esbuild-runner": "2.2.2", 158 "esbuild-runner": "2.2.2",
159 "esbuild-sass-plugin": "2.6.0", 159 "esbuild-sass-plugin": "2.7.0",
160 "eslint": "8.35.0", 160 "eslint": "8.36.0",
161 "eslint-config-airbnb": "19.0.4", 161 "eslint-config-airbnb": "19.0.4",
162 "eslint-config-airbnb-typescript": "17.0.0", 162 "eslint-config-airbnb-typescript": "17.0.0",
163 "eslint-config-prettier": "8.6.0", 163 "eslint-config-prettier": "8.8.0",
164 "eslint-plugin-import": "2.27.5", 164 "eslint-plugin-import": "2.27.5",
165 "eslint-plugin-jest": "27.2.1", 165 "eslint-plugin-jest": "27.2.1",
166 "eslint-plugin-jsx-a11y": "6.7.1", 166 "eslint-plugin-jsx-a11y": "6.7.1",
@@ -172,10 +172,10 @@
172 "husky": "8.0.3", 172 "husky": "8.0.3",
173 "is-ci": "3.0.1", 173 "is-ci": "3.0.1",
174 "jest": "28.1.2", 174 "jest": "28.1.2",
175 "prettier": "2.8.4", 175 "prettier": "2.8.5",
176 "preval-build-info": "1.0.3", 176 "preval-build-info": "1.0.3",
177 "rimraf": "3.0.2", 177 "rimraf": "3.0.2",
178 "simple-git": "3.16.1", 178 "simple-git": "3.17.0",
179 "tiny-glob": "0.2.9", 179 "tiny-glob": "0.2.9",
180 "typescript": "4.9.5", 180 "typescript": "4.9.5",
181 "wait-on": "6.0.1" 181 "wait-on": "6.0.1"
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 7e7b187d6..3499a452e 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -30,7 +30,7 @@ specifiers:
30 '@types/color': 3.0.3 30 '@types/color': 3.0.3
31 '@types/expect.js': 0.3.29 31 '@types/expect.js': 0.3.29
32 '@types/fs-extra': 11.0.1 32 '@types/fs-extra': 11.0.1
33 '@types/jest': 29.4.0 33 '@types/jest': 29.5.0
34 '@types/lodash': 4.14.191 34 '@types/lodash': 4.14.191
35 '@types/mime-types': 2.1.1 35 '@types/mime-types': 2.1.1
36 '@types/ms': 0.7.31 36 '@types/ms': 0.7.31
@@ -41,9 +41,9 @@ specifiers:
41 '@types/sass': 1.45.0 41 '@types/sass': 1.45.0
42 '@types/tar': 6.1.4 42 '@types/tar': 6.1.4
43 '@types/uuid': 9.0.1 43 '@types/uuid': 9.0.1
44 '@types/validator': 13.7.13 44 '@types/validator': 13.7.14
45 '@typescript-eslint/eslint-plugin': 5.54.0 45 '@typescript-eslint/eslint-plugin': 5.56.0
46 '@typescript-eslint/parser': 5.54.0 46 '@typescript-eslint/parser': 5.56.0
47 all-contributors-cli: 6.24.0 47 all-contributors-cli: 6.24.0
48 auto-launch: 5.0.5 48 auto-launch: 5.0.5
49 btoa: 1.2.1 49 btoa: 1.2.1
@@ -56,7 +56,7 @@ specifiers:
56 darkreader: 4.9.58 56 darkreader: 4.9.58
57 dbus-next: 0.10.2 57 dbus-next: 0.10.2
58 debug: 4.3.4 58 debug: 4.3.4
59 electron: 23.1.2 59 electron: 23.2.0
60 electron-builder: 23.6.0 60 electron-builder: 23.6.0
61 electron-dl: 3.5.0 61 electron-dl: 3.5.0
62 electron-find: 1.0.7 62 electron-find: 1.0.7
@@ -64,13 +64,13 @@ specifiers:
64 electron-updater: 5.3.0 64 electron-updater: 5.3.0
65 electron-window-state: 5.0.3 65 electron-window-state: 5.0.3
66 esbuild: 0.16.17 66 esbuild: 0.16.17
67 esbuild-plugin-copy: 2.0.2 67 esbuild-plugin-copy: 2.1.0
68 esbuild-runner: 2.2.2 68 esbuild-runner: 2.2.2
69 esbuild-sass-plugin: 2.6.0 69 esbuild-sass-plugin: 2.7.0
70 eslint: 8.35.0 70 eslint: 8.36.0
71 eslint-config-airbnb: 19.0.4 71 eslint-config-airbnb: 19.0.4
72 eslint-config-airbnb-typescript: 17.0.0 72 eslint-config-airbnb-typescript: 17.0.0
73 eslint-config-prettier: 8.6.0 73 eslint-config-prettier: 8.8.0
74 eslint-plugin-import: 2.27.5 74 eslint-plugin-import: 2.27.5
75 eslint-plugin-jest: 27.2.1 75 eslint-plugin-jest: 27.2.1
76 eslint-plugin-jsx-a11y: 6.7.1 76 eslint-plugin-jsx-a11y: 6.7.1
@@ -79,12 +79,12 @@ specifiers:
79 eslint-plugin-react-hooks: 4.6.0 79 eslint-plugin-react-hooks: 4.6.0
80 eslint-plugin-unicorn: 42.0.0 80 eslint-plugin-unicorn: 42.0.0
81 fast-folder-size: 1.7.1 81 fast-folder-size: 1.7.1
82 fs-extra: 11.1.0 82 fs-extra: 11.1.1
83 google-translate-api-x: 10.5.4 83 google-translate-api-x: 10.5.4
84 gulp-livereload: 4.0.2 84 gulp-livereload: 4.0.2
85 history: 5.3.0 85 history: 5.3.0
86 husky: 8.0.3 86 husky: 8.0.3
87 immutable: 4.2.4 87 immutable: 4.3.0
88 is-ci: 3.0.1 88 is-ci: 3.0.1
89 jest: 28.1.2 89 jest: 28.1.2
90 jsonwebtoken: 8.5.1 90 jsonwebtoken: 8.5.1
@@ -93,7 +93,7 @@ specifiers:
93 lodash: 4.17.21 93 lodash: 4.17.21
94 macos-notification-state: github:ferdium/macos-notification-state#130bb2602795b65ae2dea74d823027b185eaf0ae 94 macos-notification-state: github:ferdium/macos-notification-state#130bb2602795b65ae2dea74d823027b185eaf0ae
95 macos-version: 5.2.1 95 macos-version: 5.2.1
96 markdown-to-jsx: 7.1.9 96 markdown-to-jsx: 7.2.0
97 mime-types: 2.1.35 97 mime-types: 2.1.35
98 minimist: 1.2.8 98 minimist: 1.2.8
99 mobx: 6.8.0 99 mobx: 6.8.0
@@ -106,7 +106,7 @@ specifiers:
106 node-mac-permissions: 2.3.0 106 node-mac-permissions: 2.3.0
107 normalize-url: 6.1.0 107 normalize-url: 6.1.0
108 os-name: 4.0.1 108 os-name: 4.0.1
109 prettier: 2.8.4 109 prettier: 2.8.5
110 pretty-bytes: 5.6.0 110 pretty-bytes: 5.6.0
111 preval-build-info: 1.0.3 111 preval-build-info: 1.0.3
112 prop-types: 15.8.1 112 prop-types: 15.8.1
@@ -116,7 +116,7 @@ specifiers:
116 react-dom: 17.0.2 116 react-dom: 17.0.2
117 react-dropzone: 14.2.3 117 react-dropzone: 14.2.3
118 react-electron-web-view: 2.0.1 118 react-electron-web-view: 2.0.1
119 react-intl: 6.2.10 119 react-intl: 6.3.1
120 react-jss: 10.10.0 120 react-jss: 10.10.0
121 react-loader: 2.4.7 121 react-loader: 2.4.7
122 react-modal: 3.16.1 122 react-modal: 3.16.1
@@ -129,8 +129,8 @@ specifiers:
129 route-parser: 0.0.5 129 route-parser: 0.0.5
130 sanitize-filename: 1.6.3 130 sanitize-filename: 1.6.3
131 semver: 7.3.8 131 semver: 7.3.8
132 simple-git: 3.16.1 132 simple-git: 3.17.0
133 sqlite3: 5.1.4 133 sqlite3: 5.1.6
134 tar: 6.1.13 134 tar: 6.1.13
135 tiny-glob: 0.2.9 135 tiny-glob: 0.2.9
136 tslib: 2.5.0 136 tslib: 2.5.0
@@ -139,7 +139,7 @@ specifiers:
139 uuid: 9.0.0 139 uuid: 9.0.0
140 validator: 13.9.0 140 validator: 13.9.0
141 wait-on: 6.0.1 141 wait-on: 6.0.1
142 ws: 8.12.1 142 ws: 8.13.0
143 143
144dependencies: 144dependencies:
145 '@adonisjs/ace': 5.1.0 145 '@adonisjs/ace': 5.1.0
@@ -150,12 +150,12 @@ dependencies:
150 '@adonisjs/fold': 4.1.0 150 '@adonisjs/fold': 4.1.0
151 '@adonisjs/framework': 5.0.13 151 '@adonisjs/framework': 5.0.13
152 '@adonisjs/ignitor': 2.0.8 152 '@adonisjs/ignitor': 2.0.8
153 '@adonisjs/lucid': 6.3.0_sqlite3@5.1.4 153 '@adonisjs/lucid': 6.3.0_sqlite3@5.1.6
154 '@adonisjs/session': 1.1.0 154 '@adonisjs/session': 1.1.0
155 '@adonisjs/shield': 1.1.0 155 '@adonisjs/shield': 1.1.0
156 '@adonisjs/validator': 5.1.0 156 '@adonisjs/validator': 5.1.0
157 '@electron/remote': 2.0.9_electron@23.1.2 157 '@electron/remote': 2.0.9_electron@23.2.0
158 '@krisdages/electron-process-manager': 3.0.0_bmv3p7hjdgw4jx6yj2hxjhxtzi 158 '@krisdages/electron-process-manager': 3.0.0_vbc3caypxg2keb6tupqrmqbw7i
159 '@mdi/js': 6.9.96 159 '@mdi/js': 6.9.96
160 '@mdi/react': 1.6.1 160 '@mdi/react': 1.6.1
161 '@octokit/core': 4.2.0 161 '@octokit/core': 4.2.0
@@ -175,16 +175,16 @@ dependencies:
175 electron-updater: 5.3.0 175 electron-updater: 5.3.0
176 electron-window-state: 5.0.3 176 electron-window-state: 5.0.3
177 fast-folder-size: 1.7.1 177 fast-folder-size: 1.7.1
178 fs-extra: 11.1.0 178 fs-extra: 11.1.1
179 google-translate-api-x: 10.5.4 179 google-translate-api-x: 10.5.4
180 history: 5.3.0 180 history: 5.3.0
181 immutable: 4.2.4 181 immutable: 4.3.0
182 jsonwebtoken: 8.5.1 182 jsonwebtoken: 8.5.1
183 jss: 10.10.0 183 jss: 10.10.0
184 languagedetect: 2.0.0 184 languagedetect: 2.0.0
185 lodash: 4.17.21 185 lodash: 4.17.21
186 macos-version: 5.2.1 186 macos-version: 5.2.1
187 markdown-to-jsx: 7.1.9_react@17.0.2 187 markdown-to-jsx: 7.2.0_react@17.0.2
188 mime-types: 2.1.35 188 mime-types: 2.1.35
189 minimist: 1.2.8 189 minimist: 1.2.8
190 mobx: 6.8.0 190 mobx: 6.8.0
@@ -204,7 +204,7 @@ dependencies:
204 react-dom: 17.0.2_react@17.0.2 204 react-dom: 17.0.2_react@17.0.2
205 react-dropzone: 14.2.3_react@17.0.2 205 react-dropzone: 14.2.3_react@17.0.2
206 react-electron-web-view: 2.0.1_sfoxds7t5ydpegc3knd667wn6m 206 react-electron-web-view: 2.0.1_sfoxds7t5ydpegc3knd667wn6m
207 react-intl: 6.2.10_oatgdhaahtizs2uezdzbohxvne 207 react-intl: 6.3.1_oatgdhaahtizs2uezdzbohxvne
208 react-jss: 10.10.0_react@17.0.2 208 react-jss: 10.10.0_react@17.0.2
209 react-loader: 2.4.7_sfoxds7t5ydpegc3knd667wn6m 209 react-loader: 2.4.7_sfoxds7t5ydpegc3knd667wn6m
210 react-modal: 3.16.1_sfoxds7t5ydpegc3knd667wn6m 210 react-modal: 3.16.1_sfoxds7t5ydpegc3knd667wn6m
@@ -216,13 +216,13 @@ dependencies:
216 route-parser: 0.0.5 216 route-parser: 0.0.5
217 sanitize-filename: 1.6.3 217 sanitize-filename: 1.6.3
218 semver: 7.3.8 218 semver: 7.3.8
219 sqlite3: 5.1.4 219 sqlite3: 5.1.6
220 tar: 6.1.13 220 tar: 6.1.13
221 tslib: 2.5.0 221 tslib: 2.5.0
222 useragent-generator: 1.1.1-amkt-22079-finish.0 222 useragent-generator: 1.1.1-amkt-22079-finish.0
223 uuid: 9.0.0 223 uuid: 9.0.0
224 validator: 13.9.0 224 validator: 13.9.0
225 ws: 8.12.1 225 ws: 8.13.0
226 226
227optionalDependencies: 227optionalDependencies:
228 macos-notification-state: github.com/ferdium/macos-notification-state/130bb2602795b65ae2dea74d823027b185eaf0ae 228 macos-notification-state: github.com/ferdium/macos-notification-state/130bb2602795b65ae2dea74d823027b185eaf0ae
@@ -236,7 +236,7 @@ devDependencies:
236 '@types/color': 3.0.3 236 '@types/color': 3.0.3
237 '@types/expect.js': 0.3.29 237 '@types/expect.js': 0.3.29
238 '@types/fs-extra': 11.0.1 238 '@types/fs-extra': 11.0.1
239 '@types/jest': 29.4.0 239 '@types/jest': 29.5.0
240 '@types/lodash': 4.14.191 240 '@types/lodash': 4.14.191
241 '@types/mime-types': 2.1.1 241 '@types/mime-types': 2.1.1
242 '@types/ms': 0.7.31 242 '@types/ms': 0.7.31
@@ -247,38 +247,38 @@ devDependencies:
247 '@types/sass': 1.45.0 247 '@types/sass': 1.45.0
248 '@types/tar': 6.1.4 248 '@types/tar': 6.1.4
249 '@types/uuid': 9.0.1 249 '@types/uuid': 9.0.1
250 '@types/validator': 13.7.13 250 '@types/validator': 13.7.14
251 '@typescript-eslint/eslint-plugin': 5.54.0_6mj2wypvdnknez7kws2nfdgupi 251 '@typescript-eslint/eslint-plugin': 5.56.0_iskin7c6dxqunwflhstekcjqmq
252 '@typescript-eslint/parser': 5.54.0_ycpbpc6yetojsgtrx3mwntkhsu 252 '@typescript-eslint/parser': 5.56.0_vgl77cfdswitgr47lm5swmv43m
253 all-contributors-cli: 6.24.0 253 all-contributors-cli: 6.24.0
254 chalk: 5.2.0 254 chalk: 5.2.0
255 concurrently: 7.6.0 255 concurrently: 7.6.0
256 cross-env: 7.0.3 256 cross-env: 7.0.3
257 electron: 23.1.2 257 electron: 23.2.0
258 electron-builder: 23.6.0 258 electron-builder: 23.6.0
259 esbuild: 0.16.17 259 esbuild: 0.16.17
260 esbuild-plugin-copy: 2.0.2_esbuild@0.16.17 260 esbuild-plugin-copy: 2.1.0_esbuild@0.16.17
261 esbuild-runner: 2.2.2_esbuild@0.16.17 261 esbuild-runner: 2.2.2_esbuild@0.16.17
262 esbuild-sass-plugin: 2.6.0_esbuild@0.16.17 262 esbuild-sass-plugin: 2.7.0_esbuild@0.16.17
263 eslint: 8.35.0 263 eslint: 8.36.0
264 eslint-config-airbnb: 19.0.4_oy6wj56dgwy2h2u3ilgcukh654 264 eslint-config-airbnb: 19.0.4_guhfqc3yvckhutqwrddiy54d5i
265 eslint-config-airbnb-typescript: 17.0.0_ljtlaqjgwrmro7jha4unrm7hxu 265 eslint-config-airbnb-typescript: 17.0.0_oqmomuwexfikifhtpi5c5p6fmi
266 eslint-config-prettier: 8.6.0_eslint@8.35.0 266 eslint-config-prettier: 8.8.0_eslint@8.36.0
267 eslint-plugin-import: 2.27.5_ajyizmi44oc3hrc35l6ndh7p4e 267 eslint-plugin-import: 2.27.5_cnkxirszkzb4o6ts7gbclno24e
268 eslint-plugin-jest: 27.2.1_zrxpinbtsha3kscuby4fcodwti 268 eslint-plugin-jest: 27.2.1_5ditejweuglib6krkgkw4pwine
269 eslint-plugin-jsx-a11y: 6.7.1_eslint@8.35.0 269 eslint-plugin-jsx-a11y: 6.7.1_eslint@8.36.0
270 eslint-plugin-prettier: 4.2.1_u2zha4kiojzs42thzpgwygphmy 270 eslint-plugin-prettier: 4.2.1_i2qmqyy4fgpgq2h7f6vnil3crq
271 eslint-plugin-react: 7.32.2_eslint@8.35.0 271 eslint-plugin-react: 7.32.2_eslint@8.36.0
272 eslint-plugin-react-hooks: 4.6.0_eslint@8.35.0 272 eslint-plugin-react-hooks: 4.6.0_eslint@8.36.0
273 eslint-plugin-unicorn: 42.0.0_eslint@8.35.0 273 eslint-plugin-unicorn: 42.0.0_eslint@8.36.0
274 gulp-livereload: 4.0.2 274 gulp-livereload: 4.0.2
275 husky: 8.0.3 275 husky: 8.0.3
276 is-ci: 3.0.1 276 is-ci: 3.0.1
277 jest: 28.1.2_@types+node@16.11.33 277 jest: 28.1.2_@types+node@16.11.33
278 prettier: 2.8.4 278 prettier: 2.8.5
279 preval-build-info: 1.0.3 279 preval-build-info: 1.0.3
280 rimraf: 3.0.2 280 rimraf: 3.0.2
281 simple-git: 3.16.1 281 simple-git: 3.17.0
282 tiny-glob: 0.2.9 282 tiny-glob: 0.2.9
283 typescript: 4.9.5 283 typescript: 4.9.5
284 wait-on: 6.0.1_debug@4.3.4 284 wait-on: 6.0.1_debug@4.3.4
@@ -418,13 +418,13 @@ packages:
418 - supports-color 418 - supports-color
419 dev: false 419 dev: false
420 420
421 /@adonisjs/lucid/6.3.0_sqlite3@5.1.4: 421 /@adonisjs/lucid/6.3.0_sqlite3@5.1.6:
422 resolution: {integrity: sha512-4LNUAh/ruU2I0xIwwugrqbFPDB5xGZYPPWzODt3QAQhDhws76T/+HDuZmCdngzE0QC1Vi9Nd1Uqejgliq1N0Dg==} 422 resolution: {integrity: sha512-4LNUAh/ruU2I0xIwwugrqbFPDB5xGZYPPWzODt3QAQhDhws76T/+HDuZmCdngzE0QC1Vi9Nd1Uqejgliq1N0Dg==}
423 dependencies: 423 dependencies:
424 '@adonisjs/generic-exceptions': 2.0.1 424 '@adonisjs/generic-exceptions': 2.0.1
425 chance: 1.1.9 425 chance: 1.1.9
426 debug: 4.3.4 426 debug: 4.3.4
427 knex: 0.21.21_sqlite3@5.1.4 427 knex: 0.21.21_sqlite3@5.1.6
428 lodash: 4.17.21 428 lodash: 4.17.21
429 moment: 2.29.4 429 moment: 2.29.4
430 pluralize: 8.0.0 430 pluralize: 8.0.0
@@ -996,7 +996,7 @@ packages:
996 dependencies: 996 dependencies:
997 '@commitlint/top-level': 17.4.0 997 '@commitlint/top-level': 17.4.0
998 '@commitlint/types': 17.4.4 998 '@commitlint/types': 17.4.4
999 fs-extra: 11.1.0 999 fs-extra: 11.1.1
1000 git-raw-commits: 2.0.11 1000 git-raw-commits: 2.0.11
1001 minimist: 1.2.8 1001 minimist: 1.2.8
1002 dev: true 1002 dev: true
@@ -1092,12 +1092,12 @@ packages:
1092 - supports-color 1092 - supports-color
1093 dev: true 1093 dev: true
1094 1094
1095 /@electron/remote/2.0.9_electron@23.1.2: 1095 /@electron/remote/2.0.9_electron@23.2.0:
1096 resolution: {integrity: sha512-LR0W0ID6WAKHaSs0x5LX9aiG+5pFBNAJL6eQAJfGkCuZPUa6nZz+czZLdlTDETG45CgF/0raSvCtYOYUpr6c+A==} 1096 resolution: {integrity: sha512-LR0W0ID6WAKHaSs0x5LX9aiG+5pFBNAJL6eQAJfGkCuZPUa6nZz+czZLdlTDETG45CgF/0raSvCtYOYUpr6c+A==}
1097 peerDependencies: 1097 peerDependencies:
1098 electron: '>= 13.0.0' 1098 electron: '>= 13.0.0'
1099 dependencies: 1099 dependencies:
1100 electron: 23.1.2 1100 electron: 23.2.0
1101 dev: false 1101 dev: false
1102 1102
1103 /@electron/universal/1.2.1: 1103 /@electron/universal/1.2.1:
@@ -1323,13 +1323,28 @@ packages:
1323 dev: true 1323 dev: true
1324 optional: true 1324 optional: true
1325 1325
1326 /@eslint/eslintrc/2.0.0: 1326 /@eslint-community/eslint-utils/4.3.0_eslint@8.36.0:
1327 resolution: {integrity: sha512-fluIaaV+GyV24CCu/ggiHdV+j4RNh85yQnAYS/G2mZODZgGmmlrgCydjUcV3YvxCm9x8nMAfThsqTni4KiXT4A==} 1327 resolution: {integrity: sha512-v3oplH6FYCULtFuCeqyuTd9D2WKO937Dxdq+GmHOLL72TTRriLxz2VLlNfkZRsvj6PKnOPAtuT6dwrs/pA5DvA==}
1328 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1329 peerDependencies:
1330 eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
1331 dependencies:
1332 eslint: 8.36.0
1333 eslint-visitor-keys: 3.3.0
1334 dev: true
1335
1336 /@eslint-community/regexpp/4.4.0:
1337 resolution: {integrity: sha512-A9983Q0LnDGdLPjxyXQ00sbV+K+O+ko2Dr+CZigbHWtX9pNfxlaBkMR8X1CztI73zuEyEBXTVjx7CE+/VSwDiQ==}
1338 engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
1339 dev: true
1340
1341 /@eslint/eslintrc/2.0.1:
1342 resolution: {integrity: sha512-eFRmABvW2E5Ho6f5fHLqgena46rOj7r7OKHYfLElqcBfGFHHpjBhivyi5+jOEQuSpdc/1phIZJlbC2te+tZNIw==}
1328 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1343 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1329 dependencies: 1344 dependencies:
1330 ajv: 6.12.6 1345 ajv: 6.12.6
1331 debug: 4.3.4 1346 debug: 4.3.4
1332 espree: 9.4.1 1347 espree: 9.5.0
1333 globals: 13.19.0 1348 globals: 13.19.0
1334 ignore: 5.2.0 1349 ignore: 5.2.0
1335 import-fresh: 3.3.0 1350 import-fresh: 3.3.0
@@ -1340,8 +1355,8 @@ packages:
1340 - supports-color 1355 - supports-color
1341 dev: true 1356 dev: true
1342 1357
1343 /@eslint/js/8.35.0: 1358 /@eslint/js/8.36.0:
1344 resolution: {integrity: sha512-JXdzbRiWclLVoD8sNUjR443VVlYqiYmDVT6rGUEIEHU5YJW0gaVZwV2xgM7D4arkvASqD0IlLUVjHiFuxaftRw==} 1359 resolution: {integrity: sha512-lxJ9R5ygVm8ZWgYdUweoq5ownDlJ4upvoWmO4eLxBYHdMo+vZ/Rx0EN6MbKWDJOSUGrqJy2Gt+Dyv/VKml0fjg==}
1345 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1360 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1346 dev: true 1361 dev: true
1347 1362
@@ -1363,8 +1378,8 @@ packages:
1363 tslib: 2.5.0 1378 tslib: 2.5.0
1364 dev: false 1379 dev: false
1365 1380
1366 /@formatjs/fast-memoize/1.2.8: 1381 /@formatjs/fast-memoize/2.0.0:
1367 resolution: {integrity: sha512-PemNUObyoIZcqdQ1ixTPugzAzhEj7j6AHIyrq/qR6x5BFTvOQeXHYsVZUqBEFduAIscUaDfou+U+xTqOiunJ3Q==} 1382 resolution: {integrity: sha512-U88W/qhEs5ZuX+Inw/DZHjA6w2YCTWTNzTkprzNznyWoGl8h+XtlOCW3nM78+VX7lSbvpMdnaHmWLnDnjJjuwg==}
1368 dependencies: 1383 dependencies:
1369 tslib: 2.5.0 1384 tslib: 2.5.0
1370 dev: false 1385 dev: false
@@ -1406,8 +1421,8 @@ packages:
1406 tslib: 2.5.0 1421 tslib: 2.5.0
1407 dev: false 1422 dev: false
1408 1423
1409 /@formatjs/intl/2.6.7_typescript@4.9.5: 1424 /@formatjs/intl/2.6.8_typescript@4.9.5:
1410 resolution: {integrity: sha512-9FvEJfUMzlmP5ZBK3EE0928kVsZmD5aeWXg+faP8+mKIvG3c0hkLEXQ2MiUrXQt4rsEzOPbYVtBdthzSM0e2fw==} 1425 resolution: {integrity: sha512-lWfFUBGvYfeQoIaW5/6TW7WdyiqfWg5wPFVnsb1eKs4JPmAz2nYBUPuKbyvBiRV87QCSNZ+tZTViFBU+bIHeqQ==}
1411 peerDependencies: 1426 peerDependencies:
1412 typescript: ^4.7 1427 typescript: ^4.7
1413 peerDependenciesMeta: 1428 peerDependenciesMeta:
@@ -1415,11 +1430,11 @@ packages:
1415 optional: true 1430 optional: true
1416 dependencies: 1431 dependencies:
1417 '@formatjs/ecma402-abstract': 1.14.3 1432 '@formatjs/ecma402-abstract': 1.14.3
1418 '@formatjs/fast-memoize': 1.2.8 1433 '@formatjs/fast-memoize': 2.0.0
1419 '@formatjs/icu-messageformat-parser': 2.3.0 1434 '@formatjs/icu-messageformat-parser': 2.3.0
1420 '@formatjs/intl-displaynames': 6.2.6 1435 '@formatjs/intl-displaynames': 6.2.6
1421 '@formatjs/intl-listformat': 7.1.9 1436 '@formatjs/intl-listformat': 7.1.9
1422 intl-messageformat: 10.3.1 1437 intl-messageformat: 10.3.2
1423 tslib: 2.5.0 1438 tslib: 2.5.0
1424 typescript: 4.9.5 1439 typescript: 4.9.5
1425 dev: false 1440 dev: false
@@ -1615,7 +1630,7 @@ packages:
1615 collect-v8-coverage: 1.0.1 1630 collect-v8-coverage: 1.0.1
1616 exit: 0.1.2 1631 exit: 0.1.2
1617 glob: 7.2.3 1632 glob: 7.2.3
1618 graceful-fs: 4.2.10 1633 graceful-fs: 4.2.11
1619 istanbul-lib-coverage: 3.2.0 1634 istanbul-lib-coverage: 3.2.0
1620 istanbul-lib-instrument: 5.2.1 1635 istanbul-lib-instrument: 5.2.1
1621 istanbul-lib-report: 3.0.0 1636 istanbul-lib-report: 3.0.0
@@ -1653,7 +1668,7 @@ packages:
1653 dependencies: 1668 dependencies:
1654 '@jridgewell/trace-mapping': 0.3.17 1669 '@jridgewell/trace-mapping': 0.3.17
1655 callsites: 3.1.0 1670 callsites: 3.1.0
1656 graceful-fs: 4.2.10 1671 graceful-fs: 4.2.11
1657 dev: true 1672 dev: true
1658 1673
1659 /@jest/test-result/28.1.3: 1674 /@jest/test-result/28.1.3:
@@ -1671,7 +1686,7 @@ packages:
1671 engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} 1686 engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
1672 dependencies: 1687 dependencies:
1673 '@jest/test-result': 28.1.3 1688 '@jest/test-result': 28.1.3
1674 graceful-fs: 4.2.10 1689 graceful-fs: 4.2.11
1675 jest-haste-map: 28.1.3 1690 jest-haste-map: 28.1.3
1676 slash: 3.0.0 1691 slash: 3.0.0
1677 dev: true 1692 dev: true
@@ -1687,7 +1702,7 @@ packages:
1687 chalk: 4.1.2 1702 chalk: 4.1.2
1688 convert-source-map: 1.9.0 1703 convert-source-map: 1.9.0
1689 fast-json-stable-stringify: 2.1.0 1704 fast-json-stable-stringify: 2.1.0
1690 graceful-fs: 4.2.10 1705 graceful-fs: 4.2.11
1691 jest-haste-map: 28.1.3 1706 jest-haste-map: 28.1.3
1692 jest-regex-util: 28.0.2 1707 jest-regex-util: 28.0.2
1693 jest-util: 28.1.3 1708 jest-util: 28.1.3
@@ -1768,15 +1783,15 @@ packages:
1768 '@jridgewell/sourcemap-codec': 1.4.14 1783 '@jridgewell/sourcemap-codec': 1.4.14
1769 dev: true 1784 dev: true
1770 1785
1771 /@krisdages/electron-process-manager/3.0.0_bmv3p7hjdgw4jx6yj2hxjhxtzi: 1786 /@krisdages/electron-process-manager/3.0.0_vbc3caypxg2keb6tupqrmqbw7i:
1772 resolution: {integrity: sha512-Gs8McOVC6BVdfP4SeF+l5nx85eFooarm37K5mxs1PESI59a7oLwRf5Yd2tsZ6Ye14bCG0eTJGDv3yPuixBg3OQ==} 1787 resolution: {integrity: sha512-Gs8McOVC6BVdfP4SeF+l5nx85eFooarm37K5mxs1PESI59a7oLwRf5Yd2tsZ6Ye14bCG0eTJGDv3yPuixBg3OQ==}
1773 peerDependencies: 1788 peerDependencies:
1774 '@electron/remote': '>= 1.2.0' 1789 '@electron/remote': '>= 1.2.0'
1775 electron: '>= 10' 1790 electron: '>= 10'
1776 rxjs: '>= 7' 1791 rxjs: '>= 7'
1777 dependencies: 1792 dependencies:
1778 '@electron/remote': 2.0.9_electron@23.1.2 1793 '@electron/remote': 2.0.9_electron@23.2.0
1779 electron: 23.1.2 1794 electron: 23.2.0
1780 electron-process-reporter: /@krisdages/electron-process-reporter/2.0.0-rxjs7-1.4.0 1795 electron-process-reporter: /@krisdages/electron-process-reporter/2.0.0-rxjs7-1.4.0
1781 dev: false 1796 dev: false
1782 1797
@@ -2251,8 +2266,8 @@ packages:
2251 '@types/istanbul-lib-report': 3.0.0 2266 '@types/istanbul-lib-report': 3.0.0
2252 dev: true 2267 dev: true
2253 2268
2254 /@types/jest/29.4.0: 2269 /@types/jest/29.5.0:
2255 resolution: {integrity: sha512-VaywcGQ9tPorCX/Jkkni7RWGFfI11whqzs8dvxF41P17Z+z872thvEvlIbznjPJ02kl1HMX3LmLOonsj2n7HeQ==} 2270 resolution: {integrity: sha512-3Emr5VOl/aoBwnWcH/EFQvlSAmjV+XtV9GGu5mwdYew5vhQh0IUZx/60x0TzHDu09Bi7HMx10t/namdJw5QIcg==}
2256 dependencies: 2271 dependencies:
2257 expect: 29.4.2 2272 expect: 29.4.2
2258 pretty-format: 29.4.2 2273 pretty-format: 29.4.2
@@ -2375,8 +2390,8 @@ packages:
2375 resolution: {integrity: sha512-rFT3ak0/2trgvp4yYZo5iKFEPsET7vKydKF+VRCxlQ9bpheehyAJH89dAkaLEq/j/RZXJIqcgsmPJKUP1Z28HA==} 2390 resolution: {integrity: sha512-rFT3ak0/2trgvp4yYZo5iKFEPsET7vKydKF+VRCxlQ9bpheehyAJH89dAkaLEq/j/RZXJIqcgsmPJKUP1Z28HA==}
2376 dev: true 2391 dev: true
2377 2392
2378 /@types/validator/13.7.13: 2393 /@types/validator/13.7.14:
2379 resolution: {integrity: sha512-EMfHccxNKXaSxTK6DN0En9WsXa7uR4w3LQtx31f6Z2JjG5hJQeVX5zUYMZoatjZgnoQmRcT94WnNWwi0BzQW6Q==} 2394 resolution: {integrity: sha512-J6OAed6rhN6zyqL9Of6ZMamhlsOEU/poBVvbHr/dKOYKTeuYYMlDkMv+b6UUV0o2i0tw73cgyv/97WTWaUl0/g==}
2380 dev: true 2395 dev: true
2381 2396
2382 /@types/verror/1.10.6: 2397 /@types/verror/1.10.6:
@@ -2402,8 +2417,8 @@ packages:
2402 '@types/node': 16.11.33 2417 '@types/node': 16.11.33
2403 optional: true 2418 optional: true
2404 2419
2405 /@typescript-eslint/eslint-plugin/5.54.0_6mj2wypvdnknez7kws2nfdgupi: 2420 /@typescript-eslint/eslint-plugin/5.56.0_iskin7c6dxqunwflhstekcjqmq:
2406 resolution: {integrity: sha512-+hSN9BdSr629RF02d7mMtXhAJvDTyCbprNYJKrXETlul/Aml6YZwd90XioVbjejQeHbb3R8Dg0CkRgoJDxo8aw==} 2421 resolution: {integrity: sha512-ZNW37Ccl3oMZkzxrYDUX4o7cnuPgU+YrcaYXzsRtLB16I1FR5SHMqga3zGsaSliZADCWo2v8qHWqAYIj8nWCCg==}
2407 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 2422 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
2408 peerDependencies: 2423 peerDependencies:
2409 '@typescript-eslint/parser': ^5.0.0 2424 '@typescript-eslint/parser': ^5.0.0
@@ -2413,16 +2428,16 @@ packages:
2413 typescript: 2428 typescript:
2414 optional: true 2429 optional: true
2415 dependencies: 2430 dependencies:
2416 '@typescript-eslint/parser': 5.54.0_ycpbpc6yetojsgtrx3mwntkhsu 2431 '@eslint-community/regexpp': 4.4.0
2417 '@typescript-eslint/scope-manager': 5.54.0 2432 '@typescript-eslint/parser': 5.56.0_vgl77cfdswitgr47lm5swmv43m
2418 '@typescript-eslint/type-utils': 5.54.0_ycpbpc6yetojsgtrx3mwntkhsu 2433 '@typescript-eslint/scope-manager': 5.56.0
2419 '@typescript-eslint/utils': 5.54.0_ycpbpc6yetojsgtrx3mwntkhsu 2434 '@typescript-eslint/type-utils': 5.56.0_vgl77cfdswitgr47lm5swmv43m
2435 '@typescript-eslint/utils': 5.56.0_vgl77cfdswitgr47lm5swmv43m
2420 debug: 4.3.4 2436 debug: 4.3.4
2421 eslint: 8.35.0 2437 eslint: 8.36.0
2422 grapheme-splitter: 1.0.4 2438 grapheme-splitter: 1.0.4
2423 ignore: 5.2.0 2439 ignore: 5.2.0
2424 natural-compare-lite: 1.4.0 2440 natural-compare-lite: 1.4.0
2425 regexpp: 3.2.0
2426 semver: 7.3.8 2441 semver: 7.3.8
2427 tsutils: 3.21.0_typescript@4.9.5 2442 tsutils: 3.21.0_typescript@4.9.5
2428 typescript: 4.9.5 2443 typescript: 4.9.5
@@ -2430,8 +2445,8 @@ packages:
2430 - supports-color 2445 - supports-color
2431 dev: true 2446 dev: true
2432 2447
2433 /@typescript-eslint/parser/5.54.0_ycpbpc6yetojsgtrx3mwntkhsu: 2448 /@typescript-eslint/parser/5.56.0_vgl77cfdswitgr47lm5swmv43m:
2434 resolution: {integrity: sha512-aAVL3Mu2qTi+h/r04WI/5PfNWvO6pdhpeMRWk9R7rEV4mwJNzoWf5CCU5vDKBsPIFQFjEq1xg7XBI2rjiMXQbQ==} 2449 resolution: {integrity: sha512-sn1OZmBxUsgxMmR8a8U5QM/Wl+tyqlH//jTqCg8daTAmhAk26L2PFhcqPLlYBhYUJMZJK276qLXlHN3a83o2cg==}
2435 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 2450 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
2436 peerDependencies: 2451 peerDependencies:
2437 eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 2452 eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
@@ -2440,11 +2455,11 @@ packages:
2440 typescript: 2455 typescript:
2441 optional: true 2456 optional: true
2442 dependencies: 2457 dependencies:
2443 '@typescript-eslint/scope-manager': 5.54.0 2458 '@typescript-eslint/scope-manager': 5.56.0
2444 '@typescript-eslint/types': 5.54.0 2459 '@typescript-eslint/types': 5.56.0
2445 '@typescript-eslint/typescript-estree': 5.54.0_typescript@4.9.5 2460 '@typescript-eslint/typescript-estree': 5.56.0_typescript@4.9.5
2446 debug: 4.3.4 2461 debug: 4.3.4
2447 eslint: 8.35.0 2462 eslint: 8.36.0
2448 typescript: 4.9.5 2463 typescript: 4.9.5
2449 transitivePeerDependencies: 2464 transitivePeerDependencies:
2450 - supports-color 2465 - supports-color
@@ -2458,16 +2473,16 @@ packages:
2458 '@typescript-eslint/visitor-keys': 5.48.1 2473 '@typescript-eslint/visitor-keys': 5.48.1
2459 dev: true 2474 dev: true
2460 2475
2461 /@typescript-eslint/scope-manager/5.54.0: 2476 /@typescript-eslint/scope-manager/5.56.0:
2462 resolution: {integrity: sha512-VTPYNZ7vaWtYna9M4oD42zENOBrb+ZYyCNdFs949GcN8Miwn37b8b7eMj+EZaq7VK9fx0Jd+JhmkhjFhvnovhg==} 2477 resolution: {integrity: sha512-jGYKyt+iBakD0SA5Ww8vFqGpoV2asSjwt60Gl6YcO8ksQ8s2HlUEyHBMSa38bdLopYqGf7EYQMUIGdT/Luw+sw==}
2463 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 2478 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
2464 dependencies: 2479 dependencies:
2465 '@typescript-eslint/types': 5.54.0 2480 '@typescript-eslint/types': 5.56.0
2466 '@typescript-eslint/visitor-keys': 5.54.0 2481 '@typescript-eslint/visitor-keys': 5.56.0
2467 dev: true 2482 dev: true
2468 2483
2469 /@typescript-eslint/type-utils/5.54.0_ycpbpc6yetojsgtrx3mwntkhsu: 2484 /@typescript-eslint/type-utils/5.56.0_vgl77cfdswitgr47lm5swmv43m:
2470 resolution: {integrity: sha512-WI+WMJ8+oS+LyflqsD4nlXMsVdzTMYTxl16myXPaCXnSgc7LWwMsjxQFZCK/rVmTZ3FN71Ct78ehO9bRC7erYQ==} 2485 resolution: {integrity: sha512-8WxgOgJjWRy6m4xg9KoSHPzBNZeQbGlQOH7l2QEhQID/+YseaFxg5J/DLwWSsi9Axj4e/cCiKx7PVzOq38tY4A==}
2471 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 2486 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
2472 peerDependencies: 2487 peerDependencies:
2473 eslint: '*' 2488 eslint: '*'
@@ -2476,10 +2491,10 @@ packages:
2476 typescript: 2491 typescript:
2477 optional: true 2492 optional: true
2478 dependencies: 2493 dependencies:
2479 '@typescript-eslint/typescript-estree': 5.54.0_typescript@4.9.5 2494 '@typescript-eslint/typescript-estree': 5.56.0_typescript@4.9.5
2480 '@typescript-eslint/utils': 5.54.0_ycpbpc6yetojsgtrx3mwntkhsu 2495 '@typescript-eslint/utils': 5.56.0_vgl77cfdswitgr47lm5swmv43m
2481 debug: 4.3.4 2496 debug: 4.3.4
2482 eslint: 8.35.0 2497 eslint: 8.36.0
2483 tsutils: 3.21.0_typescript@4.9.5 2498 tsutils: 3.21.0_typescript@4.9.5
2484 typescript: 4.9.5 2499 typescript: 4.9.5
2485 transitivePeerDependencies: 2500 transitivePeerDependencies:
@@ -2491,8 +2506,8 @@ packages:
2491 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 2506 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
2492 dev: true 2507 dev: true
2493 2508
2494 /@typescript-eslint/types/5.54.0: 2509 /@typescript-eslint/types/5.56.0:
2495 resolution: {integrity: sha512-nExy+fDCBEgqblasfeE3aQ3NuafBUxZxgxXcYfzYRZFHdVvk5q60KhCSkG0noHgHRo/xQ/BOzURLZAafFpTkmQ==} 2510 resolution: {integrity: sha512-JyAzbTJcIyhuUhogmiu+t79AkdnqgPUEsxMTMc/dCZczGMJQh1MK2wgrju++yMN6AWroVAy2jxyPcPr3SWCq5w==}
2496 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 2511 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
2497 dev: true 2512 dev: true
2498 2513
@@ -2517,8 +2532,8 @@ packages:
2517 - supports-color 2532 - supports-color
2518 dev: true 2533 dev: true
2519 2534
2520 /@typescript-eslint/typescript-estree/5.54.0_typescript@4.9.5: 2535 /@typescript-eslint/typescript-estree/5.56.0_typescript@4.9.5:
2521 resolution: {integrity: sha512-X2rJG97Wj/VRo5YxJ8Qx26Zqf0RRKsVHd4sav8NElhbZzhpBI8jU54i6hfo9eheumj4oO4dcRN1B/zIVEqR/MQ==} 2536 resolution: {integrity: sha512-41CH/GncsLXOJi0jb74SnC7jVPWeVJ0pxQj8bOjH1h2O26jXN3YHKDT1ejkVz5YeTEQPeLCCRY0U2r68tfNOcg==}
2522 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 2537 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
2523 peerDependencies: 2538 peerDependencies:
2524 typescript: '*' 2539 typescript: '*'
@@ -2526,8 +2541,8 @@ packages:
2526 typescript: 2541 typescript:
2527 optional: true 2542 optional: true
2528 dependencies: 2543 dependencies:
2529 '@typescript-eslint/types': 5.54.0 2544 '@typescript-eslint/types': 5.56.0
2530 '@typescript-eslint/visitor-keys': 5.54.0 2545 '@typescript-eslint/visitor-keys': 5.56.0
2531 debug: 4.3.4 2546 debug: 4.3.4
2532 globby: 11.1.0 2547 globby: 11.1.0
2533 is-glob: 4.0.3 2548 is-glob: 4.0.3
@@ -2538,7 +2553,7 @@ packages:
2538 - supports-color 2553 - supports-color
2539 dev: true 2554 dev: true
2540 2555
2541 /@typescript-eslint/utils/5.48.1_ycpbpc6yetojsgtrx3mwntkhsu: 2556 /@typescript-eslint/utils/5.48.1_vgl77cfdswitgr47lm5swmv43m:
2542 resolution: {integrity: sha512-SmQuSrCGUOdmGMwivW14Z0Lj8dxG1mOFZ7soeJ0TQZEJcs3n5Ndgkg0A4bcMFzBELqLJ6GTHnEU+iIoaD6hFGA==} 2557 resolution: {integrity: sha512-SmQuSrCGUOdmGMwivW14Z0Lj8dxG1mOFZ7soeJ0TQZEJcs3n5Ndgkg0A4bcMFzBELqLJ6GTHnEU+iIoaD6hFGA==}
2543 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 2558 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
2544 peerDependencies: 2559 peerDependencies:
@@ -2549,29 +2564,29 @@ packages:
2549 '@typescript-eslint/scope-manager': 5.48.1 2564 '@typescript-eslint/scope-manager': 5.48.1
2550 '@typescript-eslint/types': 5.48.1 2565 '@typescript-eslint/types': 5.48.1
2551 '@typescript-eslint/typescript-estree': 5.48.1_typescript@4.9.5 2566 '@typescript-eslint/typescript-estree': 5.48.1_typescript@4.9.5
2552 eslint: 8.35.0 2567 eslint: 8.36.0
2553 eslint-scope: 5.1.1 2568 eslint-scope: 5.1.1
2554 eslint-utils: 3.0.0_eslint@8.35.0 2569 eslint-utils: 3.0.0_eslint@8.36.0
2555 semver: 7.3.8 2570 semver: 7.3.8
2556 transitivePeerDependencies: 2571 transitivePeerDependencies:
2557 - supports-color 2572 - supports-color
2558 - typescript 2573 - typescript
2559 dev: true 2574 dev: true
2560 2575
2561 /@typescript-eslint/utils/5.54.0_ycpbpc6yetojsgtrx3mwntkhsu: 2576 /@typescript-eslint/utils/5.56.0_vgl77cfdswitgr47lm5swmv43m:
2562 resolution: {integrity: sha512-cuwm8D/Z/7AuyAeJ+T0r4WZmlnlxQ8wt7C7fLpFlKMR+dY6QO79Cq1WpJhvZbMA4ZeZGHiRWnht7ZJ8qkdAunw==} 2577 resolution: {integrity: sha512-XhZDVdLnUJNtbzaJeDSCIYaM+Tgr59gZGbFuELgF7m0IY03PlciidS7UQNKLE0+WpUTn1GlycEr6Ivb/afjbhA==}
2563 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 2578 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
2564 peerDependencies: 2579 peerDependencies:
2565 eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 2580 eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
2566 dependencies: 2581 dependencies:
2582 '@eslint-community/eslint-utils': 4.3.0_eslint@8.36.0
2567 '@types/json-schema': 7.0.11 2583 '@types/json-schema': 7.0.11
2568 '@types/semver': 7.3.13 2584 '@types/semver': 7.3.13
2569 '@typescript-eslint/scope-manager': 5.54.0 2585 '@typescript-eslint/scope-manager': 5.56.0
2570 '@typescript-eslint/types': 5.54.0 2586 '@typescript-eslint/types': 5.56.0
2571 '@typescript-eslint/typescript-estree': 5.54.0_typescript@4.9.5 2587 '@typescript-eslint/typescript-estree': 5.56.0_typescript@4.9.5
2572 eslint: 8.35.0 2588 eslint: 8.36.0
2573 eslint-scope: 5.1.1 2589 eslint-scope: 5.1.1
2574 eslint-utils: 3.0.0_eslint@8.35.0
2575 semver: 7.3.8 2590 semver: 7.3.8
2576 transitivePeerDependencies: 2591 transitivePeerDependencies:
2577 - supports-color 2592 - supports-color
@@ -2586,11 +2601,11 @@ packages:
2586 eslint-visitor-keys: 3.3.0 2601 eslint-visitor-keys: 3.3.0
2587 dev: true 2602 dev: true
2588 2603
2589 /@typescript-eslint/visitor-keys/5.54.0: 2604 /@typescript-eslint/visitor-keys/5.56.0:
2590 resolution: {integrity: sha512-xu4wT7aRCakGINTLGeyGqDn+78BwFlggwBjnHa1ar/KaGagnmwLYmlrXIrgAaQ3AE1Vd6nLfKASm7LrFHNbKGA==} 2605 resolution: {integrity: sha512-1mFdED7u5bZpX6Xxf5N9U2c18sb+8EvU3tyOIj6LQZ5OOvnmj8BVeNNP603OFPm5KkS1a7IvCIcwrdHXaEMG/Q==}
2591 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 2606 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
2592 dependencies: 2607 dependencies:
2593 '@typescript-eslint/types': 5.54.0 2608 '@typescript-eslint/types': 5.56.0
2594 eslint-visitor-keys: 3.3.0 2609 eslint-visitor-keys: 3.3.0
2595 dev: true 2610 dev: true
2596 2611
@@ -3297,7 +3312,7 @@ packages:
3297 babel-plugin-istanbul: 6.1.1 3312 babel-plugin-istanbul: 6.1.1
3298 babel-preset-jest: 28.1.3_@babel+core@7.20.5 3313 babel-preset-jest: 28.1.3_@babel+core@7.20.5
3299 chalk: 4.1.2 3314 chalk: 4.1.2
3300 graceful-fs: 4.2.10 3315 graceful-fs: 4.2.11
3301 slash: 3.0.0 3316 slash: 3.0.0
3302 transitivePeerDependencies: 3317 transitivePeerDependencies:
3303 - supports-color 3318 - supports-color
@@ -3492,7 +3507,7 @@ packages:
3492 engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 3507 engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
3493 hasBin: true 3508 hasBin: true
3494 dependencies: 3509 dependencies:
3495 caniuse-lite: 1.0.30001460 3510 caniuse-lite: 1.0.30001469
3496 electron-to-chromium: 1.4.284 3511 electron-to-chromium: 1.4.284
3497 node-releases: 2.0.6 3512 node-releases: 2.0.6
3498 update-browserslist-db: 1.0.10_browserslist@4.21.4 3513 update-browserslist-db: 1.0.10_browserslist@4.21.4
@@ -3716,8 +3731,8 @@ packages:
3716 engines: {node: '>=10'} 3731 engines: {node: '>=10'}
3717 dev: true 3732 dev: true
3718 3733
3719 /caniuse-lite/1.0.30001460: 3734 /caniuse-lite/1.0.30001469:
3720 resolution: {integrity: sha512-Bud7abqjvEjipUkpLs4D7gR0l8hBYBHoa+tGtKJHvT2AYzLp1z7EmVkUT4ERpVUfca8S2HGIVs883D8pUH1ZzQ==} 3735 resolution: {integrity: sha512-Rcp7221ScNqQPP3W+lVOYDyjdR6dC+neEQCttoNr5bAyz54AboB4iwpnWgyi8P4YUsPybVzT4LgWiBbI3drL4g==}
3721 dev: true 3736 dev: true
3722 3737
3723 /caseless/0.12.0: 3738 /caseless/0.12.0:
@@ -4769,8 +4784,8 @@ packages:
4769 mkdirp: 0.5.6 4784 mkdirp: 0.5.6
4770 dev: false 4785 dev: false
4771 4786
4772 /electron/23.1.2: 4787 /electron/23.2.0:
4773 resolution: {integrity: sha512-ajE6xzIwH7swf8TlTU5WklDqpI3mPj4Am6690YrpCXzcp+E+dmMBXIajUUNt4joDrFhJC/lC6ZqDS2Q1BApKgQ==} 4788 resolution: {integrity: sha512-De9e21cri0QYct/w6tTNOnKyCt9RVKUw5F8PEN4FPzGR9tr6IT53uyt42uH754uJWrZeLMCAdoXy6/0GmMmYZA==}
4774 engines: {node: '>= 12.20.55'} 4789 engines: {node: '>= 12.20.55'}
4775 hasBin: true 4790 hasBin: true
4776 requiresBuild: true 4791 requiresBuild: true
@@ -4957,12 +4972,13 @@ packages:
4957 es6-symbol: 3.1.3 4972 es6-symbol: 3.1.3
4958 dev: false 4973 dev: false
4959 4974
4960 /esbuild-plugin-copy/2.0.2_esbuild@0.16.17: 4975 /esbuild-plugin-copy/2.1.0_esbuild@0.16.17:
4961 resolution: {integrity: sha512-HlDgkHXagBCwaoB8tlQFeH08/i5a2ey6Pc26annV1YcG5CkAHzzRzmCwp3wdi5KHI//HVUgipS+Zsy2tQmn9gQ==} 4976 resolution: {integrity: sha512-RHKhPV9ZYuWqYZ7ZjJ8qgJHzDOQ5K+z+7aaMQaHfiHntBTaFgiy554Gad6KrM2pBAC7ZiYervUYQET1jIWoOLg==}
4962 peerDependencies: 4977 peerDependencies:
4963 esbuild: '>= 0.14.0' 4978 esbuild: '>= 0.14.0'
4964 dependencies: 4979 dependencies:
4965 chalk: 4.1.2 4980 chalk: 4.1.2
4981 chokidar: 3.5.3
4966 esbuild: 0.16.17 4982 esbuild: 0.16.17
4967 fs-extra: 10.1.0 4983 fs-extra: 10.1.0
4968 globby: 11.1.0 4984 globby: 11.1.0
@@ -4979,14 +4995,14 @@ packages:
4979 tslib: 2.4.0 4995 tslib: 2.4.0
4980 dev: true 4996 dev: true
4981 4997
4982 /esbuild-sass-plugin/2.6.0_esbuild@0.16.17: 4998 /esbuild-sass-plugin/2.7.0_esbuild@0.16.17:
4983 resolution: {integrity: sha512-jukzNT8bqMEO/BJ7QG3mpndmtO9pJWTO4Mba5eyCLtXK6+sl9iCy4ReSE9fuoXX6W2QjjCEUaipbGWK+YfTwuQ==} 4999 resolution: {integrity: sha512-scvyHqeQ/fCfJljh5fKktN3CoQvq+PIUfDmJ/OQ6bNncSL/V5Y7NvzFiaQcGNOKYrfdLslYi4HwSRD8pIs5MYg==}
4984 peerDependencies: 5000 peerDependencies:
4985 esbuild: ^0.17.10 5001 esbuild: ^0.17.12
4986 resolve: ^1.22.1
4987 sass: ^1.58.3
4988 dependencies: 5002 dependencies:
4989 esbuild: 0.16.17 5003 esbuild: 0.16.17
5004 resolve: 1.22.1
5005 sass: 1.59.3
4990 dev: true 5006 dev: true
4991 5007
4992 /esbuild/0.16.17: 5008 /esbuild/0.16.17:
@@ -5047,7 +5063,7 @@ packages:
5047 resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 5063 resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
5048 engines: {node: '>=10'} 5064 engines: {node: '>=10'}
5049 5065
5050 /eslint-config-airbnb-base/15.0.0_yckic57kx266ph64dhq6ozvb54: 5066 /eslint-config-airbnb-base/15.0.0_eakrjjutlgqjxe5ydhtnd4qdmy:
5051 resolution: {integrity: sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==} 5067 resolution: {integrity: sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==}
5052 engines: {node: ^10.12.0 || >=12.0.0} 5068 engines: {node: ^10.12.0 || >=12.0.0}
5053 peerDependencies: 5069 peerDependencies:
@@ -5055,14 +5071,14 @@ packages:
5055 eslint-plugin-import: ^2.25.2 5071 eslint-plugin-import: ^2.25.2
5056 dependencies: 5072 dependencies:
5057 confusing-browser-globals: 1.0.11 5073 confusing-browser-globals: 1.0.11
5058 eslint: 8.35.0 5074 eslint: 8.36.0
5059 eslint-plugin-import: 2.27.5_ajyizmi44oc3hrc35l6ndh7p4e 5075 eslint-plugin-import: 2.27.5_cnkxirszkzb4o6ts7gbclno24e
5060 object.assign: 4.1.4 5076 object.assign: 4.1.4
5061 object.entries: 1.1.6 5077 object.entries: 1.1.6
5062 semver: 6.3.0 5078 semver: 6.3.0
5063 dev: true 5079 dev: true
5064 5080
5065 /eslint-config-airbnb-typescript/17.0.0_ljtlaqjgwrmro7jha4unrm7hxu: 5081 /eslint-config-airbnb-typescript/17.0.0_oqmomuwexfikifhtpi5c5p6fmi:
5066 resolution: {integrity: sha512-elNiuzD0kPAPTXjFWg+lE24nMdHMtuxgYoD30OyMD6yrW1AhFZPAg27VX7d3tzOErw+dgJTNWfRSDqEcXb4V0g==} 5082 resolution: {integrity: sha512-elNiuzD0kPAPTXjFWg+lE24nMdHMtuxgYoD30OyMD6yrW1AhFZPAg27VX7d3tzOErw+dgJTNWfRSDqEcXb4V0g==}
5067 peerDependencies: 5083 peerDependencies:
5068 '@typescript-eslint/eslint-plugin': ^5.13.0 5084 '@typescript-eslint/eslint-plugin': ^5.13.0
@@ -5070,14 +5086,14 @@ packages:
5070 eslint: ^7.32.0 || ^8.2.0 5086 eslint: ^7.32.0 || ^8.2.0
5071 eslint-plugin-import: ^2.25.3 5087 eslint-plugin-import: ^2.25.3
5072 dependencies: 5088 dependencies:
5073 '@typescript-eslint/eslint-plugin': 5.54.0_6mj2wypvdnknez7kws2nfdgupi 5089 '@typescript-eslint/eslint-plugin': 5.56.0_iskin7c6dxqunwflhstekcjqmq
5074 '@typescript-eslint/parser': 5.54.0_ycpbpc6yetojsgtrx3mwntkhsu 5090 '@typescript-eslint/parser': 5.56.0_vgl77cfdswitgr47lm5swmv43m
5075 eslint: 8.35.0 5091 eslint: 8.36.0
5076 eslint-config-airbnb-base: 15.0.0_yckic57kx266ph64dhq6ozvb54 5092 eslint-config-airbnb-base: 15.0.0_eakrjjutlgqjxe5ydhtnd4qdmy
5077 eslint-plugin-import: 2.27.5_ajyizmi44oc3hrc35l6ndh7p4e 5093 eslint-plugin-import: 2.27.5_cnkxirszkzb4o6ts7gbclno24e
5078 dev: true 5094 dev: true
5079 5095
5080 /eslint-config-airbnb/19.0.4_oy6wj56dgwy2h2u3ilgcukh654: 5096 /eslint-config-airbnb/19.0.4_guhfqc3yvckhutqwrddiy54d5i:
5081 resolution: {integrity: sha512-T75QYQVQX57jiNgpF9r1KegMICE94VYwoFQyMGhrvc+lB8YF2E/M/PYDaQe1AJcWaEgqLE+ErXV1Og/+6Vyzew==} 5097 resolution: {integrity: sha512-T75QYQVQX57jiNgpF9r1KegMICE94VYwoFQyMGhrvc+lB8YF2E/M/PYDaQe1AJcWaEgqLE+ErXV1Og/+6Vyzew==}
5082 engines: {node: ^10.12.0 || ^12.22.0 || ^14.17.0 || >=16.0.0} 5098 engines: {node: ^10.12.0 || ^12.22.0 || ^14.17.0 || >=16.0.0}
5083 peerDependencies: 5099 peerDependencies:
@@ -5087,23 +5103,23 @@ packages:
5087 eslint-plugin-react: ^7.28.0 5103 eslint-plugin-react: ^7.28.0
5088 eslint-plugin-react-hooks: ^4.3.0 5104 eslint-plugin-react-hooks: ^4.3.0
5089 dependencies: 5105 dependencies:
5090 eslint: 8.35.0 5106 eslint: 8.36.0
5091 eslint-config-airbnb-base: 15.0.0_yckic57kx266ph64dhq6ozvb54 5107 eslint-config-airbnb-base: 15.0.0_eakrjjutlgqjxe5ydhtnd4qdmy
5092 eslint-plugin-import: 2.27.5_ajyizmi44oc3hrc35l6ndh7p4e 5108 eslint-plugin-import: 2.27.5_cnkxirszkzb4o6ts7gbclno24e
5093 eslint-plugin-jsx-a11y: 6.7.1_eslint@8.35.0 5109 eslint-plugin-jsx-a11y: 6.7.1_eslint@8.36.0
5094 eslint-plugin-react: 7.32.2_eslint@8.35.0 5110 eslint-plugin-react: 7.32.2_eslint@8.36.0
5095 eslint-plugin-react-hooks: 4.6.0_eslint@8.35.0 5111 eslint-plugin-react-hooks: 4.6.0_eslint@8.36.0
5096 object.assign: 4.1.4 5112 object.assign: 4.1.4
5097 object.entries: 1.1.6 5113 object.entries: 1.1.6
5098 dev: true 5114 dev: true
5099 5115
5100 /eslint-config-prettier/8.6.0_eslint@8.35.0: 5116 /eslint-config-prettier/8.8.0_eslint@8.36.0:
5101 resolution: {integrity: sha512-bAF0eLpLVqP5oEVUFKpMA+NnRFICwn9X8B5jrR9FcqnYBuPbqWEjTEspPWMj5ye6czoSLDweCzSo3Ko7gGrZaA==} 5117 resolution: {integrity: sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==}
5102 hasBin: true 5118 hasBin: true
5103 peerDependencies: 5119 peerDependencies:
5104 eslint: '>=7.0.0' 5120 eslint: '>=7.0.0'
5105 dependencies: 5121 dependencies:
5106 eslint: 8.35.0 5122 eslint: 8.36.0
5107 dev: true 5123 dev: true
5108 5124
5109 /eslint-import-resolver-node/0.3.7: 5125 /eslint-import-resolver-node/0.3.7:
@@ -5116,7 +5132,7 @@ packages:
5116 - supports-color 5132 - supports-color
5117 dev: true 5133 dev: true
5118 5134
5119 /eslint-module-utils/2.7.4_qynxowrxvm2kj5rbowcxf5maga: 5135 /eslint-module-utils/2.7.4_tf7h2azriypc3gaglz256o6pea:
5120 resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==} 5136 resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==}
5121 engines: {node: '>=4'} 5137 engines: {node: '>=4'}
5122 peerDependencies: 5138 peerDependencies:
@@ -5137,15 +5153,15 @@ packages:
5137 eslint-import-resolver-webpack: 5153 eslint-import-resolver-webpack:
5138 optional: true 5154 optional: true
5139 dependencies: 5155 dependencies:
5140 '@typescript-eslint/parser': 5.54.0_ycpbpc6yetojsgtrx3mwntkhsu 5156 '@typescript-eslint/parser': 5.56.0_vgl77cfdswitgr47lm5swmv43m
5141 debug: 3.2.7 5157 debug: 3.2.7
5142 eslint: 8.35.0 5158 eslint: 8.36.0
5143 eslint-import-resolver-node: 0.3.7 5159 eslint-import-resolver-node: 0.3.7
5144 transitivePeerDependencies: 5160 transitivePeerDependencies:
5145 - supports-color 5161 - supports-color
5146 dev: true 5162 dev: true
5147 5163
5148 /eslint-plugin-import/2.27.5_ajyizmi44oc3hrc35l6ndh7p4e: 5164 /eslint-plugin-import/2.27.5_cnkxirszkzb4o6ts7gbclno24e:
5149 resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} 5165 resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==}
5150 engines: {node: '>=4'} 5166 engines: {node: '>=4'}
5151 peerDependencies: 5167 peerDependencies:
@@ -5155,15 +5171,15 @@ packages:
5155 '@typescript-eslint/parser': 5171 '@typescript-eslint/parser':
5156 optional: true 5172 optional: true
5157 dependencies: 5173 dependencies:
5158 '@typescript-eslint/parser': 5.54.0_ycpbpc6yetojsgtrx3mwntkhsu 5174 '@typescript-eslint/parser': 5.56.0_vgl77cfdswitgr47lm5swmv43m
5159 array-includes: 3.1.6 5175 array-includes: 3.1.6
5160 array.prototype.flat: 1.3.1 5176 array.prototype.flat: 1.3.1
5161 array.prototype.flatmap: 1.3.1 5177 array.prototype.flatmap: 1.3.1
5162 debug: 3.2.7 5178 debug: 3.2.7
5163 doctrine: 2.1.0 5179 doctrine: 2.1.0
5164 eslint: 8.35.0 5180 eslint: 8.36.0
5165 eslint-import-resolver-node: 0.3.7 5181 eslint-import-resolver-node: 0.3.7
5166 eslint-module-utils: 2.7.4_qynxowrxvm2kj5rbowcxf5maga 5182 eslint-module-utils: 2.7.4_tf7h2azriypc3gaglz256o6pea
5167 has: 1.0.3 5183 has: 1.0.3
5168 is-core-module: 2.11.0 5184 is-core-module: 2.11.0
5169 is-glob: 4.0.3 5185 is-glob: 4.0.3
@@ -5178,7 +5194,7 @@ packages:
5178 - supports-color 5194 - supports-color
5179 dev: true 5195 dev: true
5180 5196
5181 /eslint-plugin-jest/27.2.1_zrxpinbtsha3kscuby4fcodwti: 5197 /eslint-plugin-jest/27.2.1_5ditejweuglib6krkgkw4pwine:
5182 resolution: {integrity: sha512-l067Uxx7ZT8cO9NJuf+eJHvt6bqJyz2Z29wykyEdz/OtmcELQl2MQGQLX8J94O1cSJWAwUSEvCjwjA7KEK3Hmg==} 5198 resolution: {integrity: sha512-l067Uxx7ZT8cO9NJuf+eJHvt6bqJyz2Z29wykyEdz/OtmcELQl2MQGQLX8J94O1cSJWAwUSEvCjwjA7KEK3Hmg==}
5183 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 5199 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
5184 peerDependencies: 5200 peerDependencies:
@@ -5191,16 +5207,16 @@ packages:
5191 jest: 5207 jest:
5192 optional: true 5208 optional: true
5193 dependencies: 5209 dependencies:
5194 '@typescript-eslint/eslint-plugin': 5.54.0_6mj2wypvdnknez7kws2nfdgupi 5210 '@typescript-eslint/eslint-plugin': 5.56.0_iskin7c6dxqunwflhstekcjqmq
5195 '@typescript-eslint/utils': 5.48.1_ycpbpc6yetojsgtrx3mwntkhsu 5211 '@typescript-eslint/utils': 5.48.1_vgl77cfdswitgr47lm5swmv43m
5196 eslint: 8.35.0 5212 eslint: 8.36.0
5197 jest: 28.1.2_@types+node@16.11.33 5213 jest: 28.1.2_@types+node@16.11.33
5198 transitivePeerDependencies: 5214 transitivePeerDependencies:
5199 - supports-color 5215 - supports-color
5200 - typescript 5216 - typescript
5201 dev: true 5217 dev: true
5202 5218
5203 /eslint-plugin-jsx-a11y/6.7.1_eslint@8.35.0: 5219 /eslint-plugin-jsx-a11y/6.7.1_eslint@8.36.0:
5204 resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==} 5220 resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==}
5205 engines: {node: '>=4.0'} 5221 engines: {node: '>=4.0'}
5206 peerDependencies: 5222 peerDependencies:
@@ -5215,7 +5231,7 @@ packages:
5215 axobject-query: 3.1.1 5231 axobject-query: 3.1.1
5216 damerau-levenshtein: 1.0.8 5232 damerau-levenshtein: 1.0.8
5217 emoji-regex: 9.2.2 5233 emoji-regex: 9.2.2
5218 eslint: 8.35.0 5234 eslint: 8.36.0
5219 has: 1.0.3 5235 has: 1.0.3
5220 jsx-ast-utils: 3.3.3 5236 jsx-ast-utils: 3.3.3
5221 language-tags: 1.0.5 5237 language-tags: 1.0.5
@@ -5225,7 +5241,7 @@ packages:
5225 semver: 6.3.0 5241 semver: 6.3.0
5226 dev: true 5242 dev: true
5227 5243
5228 /eslint-plugin-prettier/4.2.1_u2zha4kiojzs42thzpgwygphmy: 5244 /eslint-plugin-prettier/4.2.1_i2qmqyy4fgpgq2h7f6vnil3crq:
5229 resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} 5245 resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==}
5230 engines: {node: '>=12.0.0'} 5246 engines: {node: '>=12.0.0'}
5231 peerDependencies: 5247 peerDependencies:
@@ -5236,22 +5252,22 @@ packages:
5236 eslint-config-prettier: 5252 eslint-config-prettier:
5237 optional: true 5253 optional: true
5238 dependencies: 5254 dependencies:
5239 eslint: 8.35.0 5255 eslint: 8.36.0
5240 eslint-config-prettier: 8.6.0_eslint@8.35.0 5256 eslint-config-prettier: 8.8.0_eslint@8.36.0
5241 prettier: 2.8.4 5257 prettier: 2.8.5
5242 prettier-linter-helpers: 1.0.0 5258 prettier-linter-helpers: 1.0.0
5243 dev: true 5259 dev: true
5244 5260
5245 /eslint-plugin-react-hooks/4.6.0_eslint@8.35.0: 5261 /eslint-plugin-react-hooks/4.6.0_eslint@8.36.0:
5246 resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} 5262 resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==}
5247 engines: {node: '>=10'} 5263 engines: {node: '>=10'}
5248 peerDependencies: 5264 peerDependencies:
5249 eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 5265 eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0
5250 dependencies: 5266 dependencies:
5251 eslint: 8.35.0 5267 eslint: 8.36.0
5252 dev: true 5268 dev: true
5253 5269
5254 /eslint-plugin-react/7.32.2_eslint@8.35.0: 5270 /eslint-plugin-react/7.32.2_eslint@8.36.0:
5255 resolution: {integrity: sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==} 5271 resolution: {integrity: sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==}
5256 engines: {node: '>=4'} 5272 engines: {node: '>=4'}
5257 peerDependencies: 5273 peerDependencies:
@@ -5261,7 +5277,7 @@ packages:
5261 array.prototype.flatmap: 1.3.1 5277 array.prototype.flatmap: 1.3.1
5262 array.prototype.tosorted: 1.1.1 5278 array.prototype.tosorted: 1.1.1
5263 doctrine: 2.1.0 5279 doctrine: 2.1.0
5264 eslint: 8.35.0 5280 eslint: 8.36.0
5265 estraverse: 5.3.0 5281 estraverse: 5.3.0
5266 jsx-ast-utils: 3.3.3 5282 jsx-ast-utils: 3.3.3
5267 minimatch: 3.1.2 5283 minimatch: 3.1.2
@@ -5275,7 +5291,7 @@ packages:
5275 string.prototype.matchall: 4.0.8 5291 string.prototype.matchall: 4.0.8
5276 dev: true 5292 dev: true
5277 5293
5278 /eslint-plugin-unicorn/42.0.0_eslint@8.35.0: 5294 /eslint-plugin-unicorn/42.0.0_eslint@8.36.0:
5279 resolution: {integrity: sha512-ixBsbhgWuxVaNlPTT8AyfJMlhyC5flCJFjyK3oKE8TRrwBnaHvUbuIkCM1lqg8ryYrFStL/T557zfKzX4GKSlg==} 5295 resolution: {integrity: sha512-ixBsbhgWuxVaNlPTT8AyfJMlhyC5flCJFjyK3oKE8TRrwBnaHvUbuIkCM1lqg8ryYrFStL/T557zfKzX4GKSlg==}
5280 engines: {node: '>=12'} 5296 engines: {node: '>=12'}
5281 peerDependencies: 5297 peerDependencies:
@@ -5284,8 +5300,8 @@ packages:
5284 '@babel/helper-validator-identifier': 7.19.1 5300 '@babel/helper-validator-identifier': 7.19.1
5285 ci-info: 3.7.0 5301 ci-info: 3.7.0
5286 clean-regexp: 1.0.0 5302 clean-regexp: 1.0.0
5287 eslint: 8.35.0 5303 eslint: 8.36.0
5288 eslint-utils: 3.0.0_eslint@8.35.0 5304 eslint-utils: 3.0.0_eslint@8.36.0
5289 esquery: 1.4.0 5305 esquery: 1.4.0
5290 indent-string: 4.0.0 5306 indent-string: 4.0.0
5291 is-builtin-module: 3.2.0 5307 is-builtin-module: 3.2.0
@@ -5314,13 +5330,13 @@ packages:
5314 estraverse: 5.3.0 5330 estraverse: 5.3.0
5315 dev: true 5331 dev: true
5316 5332
5317 /eslint-utils/3.0.0_eslint@8.35.0: 5333 /eslint-utils/3.0.0_eslint@8.36.0:
5318 resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} 5334 resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==}
5319 engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} 5335 engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0}
5320 peerDependencies: 5336 peerDependencies:
5321 eslint: '>=5' 5337 eslint: '>=5'
5322 dependencies: 5338 dependencies:
5323 eslint: 8.35.0 5339 eslint: 8.36.0
5324 eslint-visitor-keys: 2.1.0 5340 eslint-visitor-keys: 2.1.0
5325 dev: true 5341 dev: true
5326 5342
@@ -5334,13 +5350,15 @@ packages:
5334 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 5350 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
5335 dev: true 5351 dev: true
5336 5352
5337 /eslint/8.35.0: 5353 /eslint/8.36.0:
5338 resolution: {integrity: sha512-BxAf1fVL7w+JLRQhWl2pzGeSiGqbWumV4WNvc9Rhp6tiCtm4oHnyPBSEtMGZwrQgudFQ+otqzWoPB7x+hxoWsw==} 5354 resolution: {integrity: sha512-Y956lmS7vDqomxlaaQAHVmeb4tNMp2FWIvU/RnU5BD3IKMD/MJPr76xdyr68P8tV1iNMvN2mRK0yy3c+UjL+bw==}
5339 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 5355 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
5340 hasBin: true 5356 hasBin: true
5341 dependencies: 5357 dependencies:
5342 '@eslint/eslintrc': 2.0.0 5358 '@eslint-community/eslint-utils': 4.3.0_eslint@8.36.0
5343 '@eslint/js': 8.35.0 5359 '@eslint-community/regexpp': 4.4.0
5360 '@eslint/eslintrc': 2.0.1
5361 '@eslint/js': 8.36.0
5344 '@humanwhocodes/config-array': 0.11.8 5362 '@humanwhocodes/config-array': 0.11.8
5345 '@humanwhocodes/module-importer': 1.0.1 5363 '@humanwhocodes/module-importer': 1.0.1
5346 '@nodelib/fs.walk': 1.2.8 5364 '@nodelib/fs.walk': 1.2.8
@@ -5351,9 +5369,8 @@ packages:
5351 doctrine: 3.0.0 5369 doctrine: 3.0.0
5352 escape-string-regexp: 4.0.0 5370 escape-string-regexp: 4.0.0
5353 eslint-scope: 7.1.1 5371 eslint-scope: 7.1.1
5354 eslint-utils: 3.0.0_eslint@8.35.0
5355 eslint-visitor-keys: 3.3.0 5372 eslint-visitor-keys: 3.3.0
5356 espree: 9.4.1 5373 espree: 9.5.0
5357 esquery: 1.5.0 5374 esquery: 1.5.0
5358 esutils: 2.0.3 5375 esutils: 2.0.3
5359 fast-deep-equal: 3.1.3 5376 fast-deep-equal: 3.1.3
@@ -5375,7 +5392,6 @@ packages:
5375 minimatch: 3.1.2 5392 minimatch: 3.1.2
5376 natural-compare: 1.4.0 5393 natural-compare: 1.4.0
5377 optionator: 0.9.1 5394 optionator: 0.9.1
5378 regexpp: 3.2.0
5379 strip-ansi: 6.0.1 5395 strip-ansi: 6.0.1
5380 strip-json-comments: 3.1.1 5396 strip-json-comments: 3.1.1
5381 text-table: 0.2.0 5397 text-table: 0.2.0
@@ -5388,8 +5404,8 @@ packages:
5388 engines: {node: '>=6'} 5404 engines: {node: '>=6'}
5389 dev: false 5405 dev: false
5390 5406
5391 /espree/9.4.1: 5407 /espree/9.5.0:
5392 resolution: {integrity: sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==} 5408 resolution: {integrity: sha512-JPbJGhKc47++oo4JkEoTe2wjy4fmMwvFpgJT9cQzmfXKp22Dr6Hf1tdCteLz1h0P3t+mGvWZ+4Uankvh8+c6zw==}
5393 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 5409 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
5394 dependencies: 5410 dependencies:
5395 acorn: 8.8.1 5411 acorn: 8.8.1
@@ -5910,22 +5926,22 @@ packages:
5910 resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} 5926 resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==}
5911 engines: {node: '>=12'} 5927 engines: {node: '>=12'}
5912 dependencies: 5928 dependencies:
5913 graceful-fs: 4.2.10 5929 graceful-fs: 4.2.11
5914 jsonfile: 6.1.0 5930 jsonfile: 6.1.0
5915 universalify: 2.0.0 5931 universalify: 2.0.0
5916 5932
5917 /fs-extra/11.1.0: 5933 /fs-extra/11.1.1:
5918 resolution: {integrity: sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==} 5934 resolution: {integrity: sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==}
5919 engines: {node: '>=14.14'} 5935 engines: {node: '>=14.14'}
5920 dependencies: 5936 dependencies:
5921 graceful-fs: 4.2.10 5937 graceful-fs: 4.2.11
5922 jsonfile: 6.1.0 5938 jsonfile: 6.1.0
5923 universalify: 2.0.0 5939 universalify: 2.0.0
5924 5940
5925 /fs-extra/6.0.1: 5941 /fs-extra/6.0.1:
5926 resolution: {integrity: sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA==} 5942 resolution: {integrity: sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA==}
5927 dependencies: 5943 dependencies:
5928 graceful-fs: 4.2.10 5944 graceful-fs: 4.2.11
5929 jsonfile: 4.0.0 5945 jsonfile: 4.0.0
5930 universalify: 0.1.2 5946 universalify: 0.1.2
5931 dev: false 5947 dev: false
@@ -5934,7 +5950,7 @@ packages:
5934 resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} 5950 resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==}
5935 engines: {node: '>=6 <7 || >=8'} 5951 engines: {node: '>=6 <7 || >=8'}
5936 dependencies: 5952 dependencies:
5937 graceful-fs: 4.2.10 5953 graceful-fs: 4.2.11
5938 jsonfile: 4.0.0 5954 jsonfile: 4.0.0
5939 universalify: 0.1.2 5955 universalify: 0.1.2
5940 5956
@@ -5943,7 +5959,7 @@ packages:
5943 engines: {node: '>=10'} 5959 engines: {node: '>=10'}
5944 dependencies: 5960 dependencies:
5945 at-least-node: 1.0.0 5961 at-least-node: 1.0.0
5946 graceful-fs: 4.2.10 5962 graceful-fs: 4.2.11
5947 jsonfile: 6.1.0 5963 jsonfile: 6.1.0
5948 universalify: 2.0.0 5964 universalify: 2.0.0
5949 5965
@@ -5968,7 +5984,7 @@ packages:
5968 resolution: {integrity: sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==} 5984 resolution: {integrity: sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==}
5969 engines: {node: '>=0.6'} 5985 engines: {node: '>=0.6'}
5970 dependencies: 5986 dependencies:
5971 graceful-fs: 4.2.10 5987 graceful-fs: 4.2.11
5972 inherits: 2.0.4 5988 inherits: 2.0.4
5973 mkdirp: 0.5.6 5989 mkdirp: 0.5.6
5974 rimraf: 2.7.1 5990 rimraf: 2.7.1
@@ -6220,6 +6236,10 @@ packages:
6220 6236
6221 /graceful-fs/4.2.10: 6237 /graceful-fs/4.2.10:
6222 resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} 6238 resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==}
6239 dev: true
6240
6241 /graceful-fs/4.2.11:
6242 resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
6223 6243
6224 /graceful-readlink/1.0.1: 6244 /graceful-readlink/1.0.1:
6225 resolution: {integrity: sha512-8tLu60LgxF6XpdbK8OW3FA+IfTNBn1ZHGHKF4KQbEeSkajYw5PlYJcKluntgegDPTg8UkHjpet1T82vk6TQ68w==} 6245 resolution: {integrity: sha512-8tLu60LgxF6XpdbK8OW3FA+IfTNBn1ZHGHKF4KQbEeSkajYw5PlYJcKluntgegDPTg8UkHjpet1T82vk6TQ68w==}
@@ -6525,8 +6545,8 @@ packages:
6525 engines: {node: '>= 4'} 6545 engines: {node: '>= 4'}
6526 dev: true 6546 dev: true
6527 6547
6528 /immutable/4.2.4: 6548 /immutable/4.3.0:
6529 resolution: {integrity: sha512-WDxL3Hheb1JkRN3sQkyujNlL/xRjAo3rJtaU5xeufUauG66JdMr32bLj4gF+vWl84DIA3Zxw7tiAjneYzRRw+w==} 6549 resolution: {integrity: sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==}
6530 6550
6531 /import-fresh/3.3.0: 6551 /import-fresh/3.3.0:
6532 resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 6552 resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
@@ -6626,11 +6646,11 @@ packages:
6626 engines: {node: '>= 0.10'} 6646 engines: {node: '>= 0.10'}
6627 dev: false 6647 dev: false
6628 6648
6629 /intl-messageformat/10.3.1: 6649 /intl-messageformat/10.3.2:
6630 resolution: {integrity: sha512-mqHc6arhbogrdImIsEscdjWnJcg2bvg3MiyGXDsTSGmPbbM2KtRUe7oNgDUbkM3HMn4KbyOct2JyJScmwRgGSQ==} 6650 resolution: {integrity: sha512-kGY1KrpxPGbWX/yz6rpWQahBh5bJC6pIbq/cTzVYlmAYjRVzP+l2MulagbZf/5mABbcLT/0RJbZC46Iw6Mhmtw==}
6631 dependencies: 6651 dependencies:
6632 '@formatjs/ecma402-abstract': 1.14.3 6652 '@formatjs/ecma402-abstract': 1.14.3
6633 '@formatjs/fast-memoize': 1.2.8 6653 '@formatjs/fast-memoize': 2.0.0
6634 '@formatjs/icu-messageformat-parser': 2.3.0 6654 '@formatjs/icu-messageformat-parser': 2.3.0
6635 tslib: 2.5.0 6655 tslib: 2.5.0
6636 dev: false 6656 dev: false
@@ -7172,7 +7192,7 @@ packages:
7172 ci-info: 3.7.0 7192 ci-info: 3.7.0
7173 deepmerge: 4.2.2 7193 deepmerge: 4.2.2
7174 glob: 7.2.3 7194 glob: 7.2.3
7175 graceful-fs: 4.2.10 7195 graceful-fs: 4.2.11
7176 jest-circus: 28.1.3 7196 jest-circus: 28.1.3
7177 jest-environment-node: 28.1.3 7197 jest-environment-node: 28.1.3
7178 jest-get-type: 28.0.2 7198 jest-get-type: 28.0.2
@@ -7259,7 +7279,7 @@ packages:
7259 '@types/node': 16.11.33 7279 '@types/node': 16.11.33
7260 anymatch: 3.1.3 7280 anymatch: 3.1.3
7261 fb-watchman: 2.0.2 7281 fb-watchman: 2.0.2
7262 graceful-fs: 4.2.10 7282 graceful-fs: 4.2.11
7263 jest-regex-util: 28.0.2 7283 jest-regex-util: 28.0.2
7264 jest-util: 28.1.3 7284 jest-util: 28.1.3
7265 jest-worker: 28.1.3 7285 jest-worker: 28.1.3
@@ -7305,7 +7325,7 @@ packages:
7305 '@jest/types': 28.1.3 7325 '@jest/types': 28.1.3
7306 '@types/stack-utils': 2.0.1 7326 '@types/stack-utils': 2.0.1
7307 chalk: 4.1.2 7327 chalk: 4.1.2
7308 graceful-fs: 4.2.10 7328 graceful-fs: 4.2.11
7309 micromatch: 4.0.5 7329 micromatch: 4.0.5
7310 pretty-format: 28.1.3 7330 pretty-format: 28.1.3
7311 slash: 3.0.0 7331 slash: 3.0.0
@@ -7320,7 +7340,7 @@ packages:
7320 '@jest/types': 29.4.2 7340 '@jest/types': 29.4.2
7321 '@types/stack-utils': 2.0.1 7341 '@types/stack-utils': 2.0.1
7322 chalk: 4.1.2 7342 chalk: 4.1.2
7323 graceful-fs: 4.2.10 7343 graceful-fs: 4.2.11
7324 micromatch: 4.0.5 7344 micromatch: 4.0.5
7325 pretty-format: 29.4.2 7345 pretty-format: 29.4.2
7326 slash: 3.0.0 7346 slash: 3.0.0
@@ -7367,7 +7387,7 @@ packages:
7367 engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} 7387 engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
7368 dependencies: 7388 dependencies:
7369 chalk: 4.1.2 7389 chalk: 4.1.2
7370 graceful-fs: 4.2.10 7390 graceful-fs: 4.2.11
7371 jest-haste-map: 28.1.3 7391 jest-haste-map: 28.1.3
7372 jest-pnp-resolver: 1.2.3_jest-resolve@28.1.3 7392 jest-pnp-resolver: 1.2.3_jest-resolve@28.1.3
7373 jest-util: 28.1.3 7393 jest-util: 28.1.3
@@ -7389,7 +7409,7 @@ packages:
7389 '@types/node': 16.11.33 7409 '@types/node': 16.11.33
7390 chalk: 4.1.2 7410 chalk: 4.1.2
7391 emittery: 0.10.2 7411 emittery: 0.10.2
7392 graceful-fs: 4.2.10 7412 graceful-fs: 4.2.11
7393 jest-docblock: 28.1.1 7413 jest-docblock: 28.1.1
7394 jest-environment-node: 28.1.3 7414 jest-environment-node: 28.1.3
7395 jest-haste-map: 28.1.3 7415 jest-haste-map: 28.1.3
@@ -7422,7 +7442,7 @@ packages:
7422 collect-v8-coverage: 1.0.1 7442 collect-v8-coverage: 1.0.1
7423 execa: 5.1.1 7443 execa: 5.1.1
7424 glob: 7.2.3 7444 glob: 7.2.3
7425 graceful-fs: 4.2.10 7445 graceful-fs: 4.2.11
7426 jest-haste-map: 28.1.3 7446 jest-haste-map: 28.1.3
7427 jest-message-util: 28.1.3 7447 jest-message-util: 28.1.3
7428 jest-mock: 28.1.3 7448 jest-mock: 28.1.3
@@ -7453,7 +7473,7 @@ packages:
7453 babel-preset-current-node-syntax: 1.0.1_@babel+core@7.20.5 7473 babel-preset-current-node-syntax: 1.0.1_@babel+core@7.20.5
7454 chalk: 4.1.2 7474 chalk: 4.1.2
7455 expect: 28.1.3 7475 expect: 28.1.3
7456 graceful-fs: 4.2.10 7476 graceful-fs: 4.2.11
7457 jest-diff: 28.1.3 7477 jest-diff: 28.1.3
7458 jest-get-type: 28.0.2 7478 jest-get-type: 28.0.2
7459 jest-haste-map: 28.1.3 7479 jest-haste-map: 28.1.3
@@ -7475,7 +7495,7 @@ packages:
7475 '@types/node': 16.11.33 7495 '@types/node': 16.11.33
7476 chalk: 4.1.2 7496 chalk: 4.1.2
7477 ci-info: 3.7.0 7497 ci-info: 3.7.0
7478 graceful-fs: 4.2.10 7498 graceful-fs: 4.2.11
7479 picomatch: 2.3.1 7499 picomatch: 2.3.1
7480 dev: true 7500 dev: true
7481 7501
@@ -7487,7 +7507,7 @@ packages:
7487 '@types/node': 16.11.33 7507 '@types/node': 16.11.33
7488 chalk: 4.1.2 7508 chalk: 4.1.2
7489 ci-info: 3.7.0 7509 ci-info: 3.7.0
7490 graceful-fs: 4.2.10 7510 graceful-fs: 4.2.11
7491 picomatch: 2.3.1 7511 picomatch: 2.3.1
7492 dev: true 7512 dev: true
7493 7513
@@ -7641,14 +7661,14 @@ packages:
7641 /jsonfile/4.0.0: 7661 /jsonfile/4.0.0:
7642 resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} 7662 resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==}
7643 optionalDependencies: 7663 optionalDependencies:
7644 graceful-fs: 4.2.10 7664 graceful-fs: 4.2.11
7645 7665
7646 /jsonfile/6.1.0: 7666 /jsonfile/6.1.0:
7647 resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} 7667 resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==}
7648 dependencies: 7668 dependencies:
7649 universalify: 2.0.0 7669 universalify: 2.0.0
7650 optionalDependencies: 7670 optionalDependencies:
7651 graceful-fs: 4.2.10 7671 graceful-fs: 4.2.11
7652 7672
7653 /jsonparse/1.3.1: 7673 /jsonparse/1.3.1:
7654 resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} 7674 resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==}
@@ -7875,7 +7895,7 @@ packages:
7875 engines: {node: '>=6'} 7895 engines: {node: '>=6'}
7876 dev: false 7896 dev: false
7877 7897
7878 /knex/0.21.21_sqlite3@5.1.4: 7898 /knex/0.21.21_sqlite3@5.1.6:
7879 resolution: {integrity: sha512-cjw5qO1EzVKjbywcVa61IQJMLt7PfYBRI/2NwCA/B9beXgbw652wDNLz+JM+UKKNsfwprq0ugYqBYc9q4JN36A==} 7899 resolution: {integrity: sha512-cjw5qO1EzVKjbywcVa61IQJMLt7PfYBRI/2NwCA/B9beXgbw652wDNLz+JM+UKKNsfwprq0ugYqBYc9q4JN36A==}
7880 engines: {node: '>=10'} 7900 engines: {node: '>=10'}
7881 hasBin: true 7901 hasBin: true
@@ -7906,7 +7926,7 @@ packages:
7906 liftoff: 3.1.0 7926 liftoff: 3.1.0
7907 lodash: 4.17.21 7927 lodash: 4.17.21
7908 pg-connection-string: 2.4.0 7928 pg-connection-string: 2.4.0
7909 sqlite3: 5.1.4 7929 sqlite3: 5.1.6
7910 tarn: 3.0.2 7930 tarn: 3.0.2
7911 tildify: 2.0.0 7931 tildify: 2.0.0
7912 v8flags: 3.2.0 7932 v8flags: 3.2.0
@@ -8250,8 +8270,8 @@ packages:
8250 object-visit: 1.0.1 8270 object-visit: 1.0.1
8251 dev: false 8271 dev: false
8252 8272
8253 /markdown-to-jsx/7.1.9_react@17.0.2: 8273 /markdown-to-jsx/7.2.0_react@17.0.2:
8254 resolution: {integrity: sha512-x4STVIKIJR0mGgZIZ5RyAeQD7FEZd5tS8m/htbcVGlex32J+hlSLj+ExrHCxP6nRKF1EKbcO7i6WhC1GtOpBlA==} 8274 resolution: {integrity: sha512-3l4/Bigjm4bEqjCR6Xr+d4DtM1X6vvtGsMGSjJYyep8RjjIvcWtrXBS8Wbfe1/P+atKNMccpsraESIaWVplzVg==}
8255 engines: {node: '>= 10'} 8275 engines: {node: '>= 10'}
8256 peerDependencies: 8276 peerDependencies:
8257 react: '>= 0.14.0' 8277 react: '>= 0.14.0'
@@ -8717,7 +8737,7 @@ packages:
8717 dependencies: 8737 dependencies:
8718 env-paths: 2.2.1 8738 env-paths: 2.2.1
8719 glob: 7.2.3 8739 glob: 7.2.3
8720 graceful-fs: 4.2.10 8740 graceful-fs: 4.2.11
8721 make-fetch-happen: 9.1.0 8741 make-fetch-happen: 9.1.0
8722 nopt: 5.0.0 8742 nopt: 5.0.0
8723 npmlog: 6.0.2 8743 npmlog: 6.0.2
@@ -9238,8 +9258,8 @@ packages:
9238 fast-diff: 1.2.0 9258 fast-diff: 1.2.0
9239 dev: true 9259 dev: true
9240 9260
9241 /prettier/2.8.4: 9261 /prettier/2.8.5:
9242 resolution: {integrity: sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw==} 9262 resolution: {integrity: sha512-3gzuxrHbKUePRBB4ZeU08VNkUcqEHaUaouNt0m7LGP4Hti/NuB07C7PPTM/LkWqXoJYJn2McEo5+kxPNrtQkLQ==}
9243 engines: {node: '>=10.13.0'} 9263 engines: {node: '>=10.13.0'}
9244 hasBin: true 9264 hasBin: true
9245 dev: true 9265 dev: true
@@ -9693,8 +9713,8 @@ packages:
9693 react-dom: 17.0.2_react@17.0.2 9713 react-dom: 17.0.2_react@17.0.2
9694 dev: false 9714 dev: false
9695 9715
9696 /react-intl/6.2.10_oatgdhaahtizs2uezdzbohxvne: 9716 /react-intl/6.3.1_oatgdhaahtizs2uezdzbohxvne:
9697 resolution: {integrity: sha512-l2TpskkFR0OzQnq7ChiJ5ZX23USZSzpKOcaR9MYC4UOHE9bT4kQ5JXXolgkq3tiOlvseEOzUCerlzn886AX9Yg==} 9717 resolution: {integrity: sha512-wI7YSxS2xQRYrHPMFSHXSWNuOLrgt9L0Dg8G35xJNfDRpcyebE9H1k2/DDPxgbV4ImeG/qKJMN5SrZV7fuB/Ag==}
9698 peerDependencies: 9718 peerDependencies:
9699 react: ^16.6.0 || 17 || 18 9719 react: ^16.6.0 || 17 || 18
9700 typescript: ^4.7 9720 typescript: ^4.7
@@ -9704,13 +9724,13 @@ packages:
9704 dependencies: 9724 dependencies:
9705 '@formatjs/ecma402-abstract': 1.14.3 9725 '@formatjs/ecma402-abstract': 1.14.3
9706 '@formatjs/icu-messageformat-parser': 2.3.0 9726 '@formatjs/icu-messageformat-parser': 2.3.0
9707 '@formatjs/intl': 2.6.7_typescript@4.9.5 9727 '@formatjs/intl': 2.6.8_typescript@4.9.5
9708 '@formatjs/intl-displaynames': 6.2.6 9728 '@formatjs/intl-displaynames': 6.2.6
9709 '@formatjs/intl-listformat': 7.1.9 9729 '@formatjs/intl-listformat': 7.1.9
9710 '@types/hoist-non-react-statics': 3.3.1 9730 '@types/hoist-non-react-statics': 3.3.1
9711 '@types/react': 17.0.45 9731 '@types/react': 17.0.45
9712 hoist-non-react-statics: 3.3.2 9732 hoist-non-react-statics: 3.3.2
9713 intl-messageformat: 10.3.1 9733 intl-messageformat: 10.3.2
9714 react: 17.0.2 9734 react: 17.0.2
9715 tslib: 2.5.0 9735 tslib: 2.5.0
9716 typescript: 4.9.5 9736 typescript: 4.9.5
@@ -10005,11 +10025,6 @@ packages:
10005 functions-have-names: 1.2.3 10025 functions-have-names: 1.2.3
10006 dev: true 10026 dev: true
10007 10027
10008 /regexpp/3.2.0:
10009 resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==}
10010 engines: {node: '>=8'}
10011 dev: true
10012
10013 /remove-trailing-separator/1.1.0: 10028 /remove-trailing-separator/1.1.0:
10014 resolution: {integrity: sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==} 10029 resolution: {integrity: sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==}
10015 dev: true 10030 dev: true
@@ -10304,7 +10319,17 @@ packages:
10304 hasBin: true 10319 hasBin: true
10305 dependencies: 10320 dependencies:
10306 chokidar: 3.5.3 10321 chokidar: 3.5.3
10307 immutable: 4.2.4 10322 immutable: 4.3.0
10323 source-map-js: 1.0.2
10324 dev: true
10325
10326 /sass/1.59.3:
10327 resolution: {integrity: sha512-QCq98N3hX1jfTCoUAsF3eyGuXLsY7BCnCEg9qAact94Yc21npG2/mVOqoDvE0fCbWDqiM4WlcJQla0gWG2YlxQ==}
10328 engines: {node: '>=12.0.0'}
10329 hasBin: true
10330 dependencies:
10331 chokidar: 3.5.3
10332 immutable: 4.3.0
10308 source-map-js: 1.0.2 10333 source-map-js: 1.0.2
10309 dev: true 10334 dev: true
10310 10335
@@ -10547,8 +10572,8 @@ packages:
10547 scmp: 2.0.0 10572 scmp: 2.0.0
10548 dev: false 10573 dev: false
10549 10574
10550 /simple-git/3.16.1: 10575 /simple-git/3.17.0:
10551 resolution: {integrity: sha512-xzRxMKiy1zEYeHGXgAzvuXffDS0xgsq07Oi4LWEEcVH29vLpcZ2tyQRWyK0NLLlCVaKysZeem5tC1qHEOxsKwA==} 10576 resolution: {integrity: sha512-JozI/s8jr3nvLd9yn2jzPVHnhVzt7t7QWfcIoDcqRIGN+f1IINGv52xoZti2kkYfoRhhRvzMSNPfogHMp97rlw==}
10552 dependencies: 10577 dependencies:
10553 '@kwsites/file-exists': 1.1.1 10578 '@kwsites/file-exists': 1.1.1
10554 '@kwsites/promise-deferred': 1.1.1 10579 '@kwsites/promise-deferred': 1.1.1
@@ -10764,8 +10789,8 @@ packages:
10764 resolution: {integrity: sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==} 10789 resolution: {integrity: sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==}
10765 optional: true 10790 optional: true
10766 10791
10767 /sqlite3/5.1.4: 10792 /sqlite3/5.1.6:
10768 resolution: {integrity: sha512-i0UlWAzPlzX3B5XP2cYuhWQJsTtlMD6obOa1PgeEQ4DHEXUuyJkgv50I3isqZAP5oFc2T8OFvakmDh2W6I+YpA==} 10793 resolution: {integrity: sha512-olYkWoKFVNSSSQNvxVUfjiVbz3YtBwTJj+mfV5zpHmqW3sELx2Cf4QCdirMelhM5Zh+KDVaKgQHqCxrqiWHybw==}
10769 requiresBuild: true 10794 requiresBuild: true
10770 peerDependenciesMeta: 10795 peerDependenciesMeta:
10771 node-gyp: 10796 node-gyp:
@@ -11508,7 +11533,7 @@ packages:
11508 buffer-indexof-polyfill: 1.0.2 11533 buffer-indexof-polyfill: 1.0.2
11509 duplexer2: 0.1.4 11534 duplexer2: 0.1.4
11510 fstream: 1.0.12 11535 fstream: 1.0.12
11511 graceful-fs: 4.2.10 11536 graceful-fs: 4.2.11
11512 listenercount: 1.0.1 11537 listenercount: 1.0.1
11513 readable-stream: 2.3.7 11538 readable-stream: 2.3.7
11514 setimmediate: 1.0.5 11539 setimmediate: 1.0.5
@@ -11856,8 +11881,8 @@ packages:
11856 signal-exit: 3.0.7 11881 signal-exit: 3.0.7
11857 dev: true 11882 dev: true
11858 11883
11859 /ws/8.12.1: 11884 /ws/8.13.0:
11860 resolution: {integrity: sha512-1qo+M9Ba+xNhPB+YTWUlK6M17brTut5EXbcBaMRN5pH5dFrXz7lzz1ChFSUq3bOUl8yEvSenhHmYUNJxFzdJew==} 11885 resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==}
11861 engines: {node: '>=10.0.0'} 11886 engines: {node: '>=10.0.0'}
11862 peerDependencies: 11887 peerDependencies:
11863 bufferutil: ^4.0.1 11888 bufferutil: ^4.0.1
diff --git a/recipes b/recipes
Subproject 761da71a160dc6dc10e38cd2e0e05b0cd53ee1d Subproject 2dc578847f5fdd6c1788d58e8519a7b8410e604
diff --git a/scripts/migration/migrate-unix.sh b/scripts/migration/migrate-unix.sh
index 37f24a533..c51227f33 100755
--- a/scripts/migration/migrate-unix.sh
+++ b/scripts/migration/migrate-unix.sh
@@ -65,6 +65,6 @@ else
65 echo "WARNING: Your data was partially migrated!" 65 echo "WARNING: Your data was partially migrated!"
66 echo "It was detected that your account is using Ferdi servers to sync your data." 66 echo "It was detected that your account is using Ferdi servers to sync your data."
67 echo "Please, check this guide on how to export and import your data manually:" 67 echo "Please, check this guide on how to export and import your data manually:"
68 echo "https://github.com/ferdium/ferdi/blob/main/MIGRATION.md" 68 echo "https://github.com/ferdium/ferdi/blob/main/docs/MIGRATION.md"
69 echo "********************************************" 69 echo "********************************************"
70fi 70fi
diff --git a/scripts/migration/migrate-windows.ps1 b/scripts/migration/migrate-windows.ps1
index a7e67b94a..0a793077c 100644
--- a/scripts/migration/migrate-windows.ps1
+++ b/scripts/migration/migrate-windows.ps1
@@ -39,7 +39,7 @@ if (-not (Test-Path -Path $FERDIUM_PATH/server.sqlite)) {
39 Write-Host "" 39 Write-Host ""
40 Write-Host "It was detected that your account is using Ferdi servers to sync your data." 40 Write-Host "It was detected that your account is using Ferdi servers to sync your data."
41 Write-Host "Please, check this guide on how to export and import your data manually:" 41 Write-Host "Please, check this guide on how to export and import your data manually:"
42 Write-Host "https://github.com/ferdium/ferdi/blob/main/MIGRATION.md" 42 Write-Host "https://github.com/ferdium/ferdi/blob/main/docs/MIGRATION.md"
43 Write-Host "" 43 Write-Host ""
44 Write-Host "********************************************" 44 Write-Host "********************************************"
45 45
diff --git a/src/i18n/locales/hi.json b/src/i18n/locales/hi.json
index 38d96a27b..bd4c1f5ec 100644
--- a/src/i18n/locales/hi.json
+++ b/src/i18n/locales/hi.json
@@ -5,12 +5,67 @@
5 "changeserver.headline": "सर्वर बदलें", 5 "changeserver.headline": "सर्वर बदलें",
6 "changeserver.label": "सर्वर", 6 "changeserver.label": "सर्वर",
7 "changeserver.urlError": "एक मान्य URL दर्ज करें", 7 "changeserver.urlError": "एक मान्य URL दर्ज करें",
8 "changeserver.warning": "फ्रीडियम द्वारा दिए गए अतिरिक्त सेटिंग्स सेव नहीं किये जायेंगे", 8 "changeserver.warning": "फर्डियम द्वारा दिए गए अतिरिक्त सेटिंग्स सेव नहीं किये जायेंगे",
9 "connectionLostBanner.cta": "सर्विस रीलोड करे", 9 "connectionLostBanner.cta": "सर्विस रीलोड करे",
10 "connectionLostBanner.informationLink": "क्या हुआ ?", 10 "connectionLostBanner.informationLink": "क्या हुआ ?",
11 "connectionLostBanner.message": "ओह तेरी! फर्डियम का {name} से कनेक्शन टूट गया.",
12 "feature.basicAuth.signIn": "साइन इन करें",
13 "feature.publishDebugInfo.error": "डीबग जानकारी प्रकाशित करने का प्रयास करते समय एक त्रुटि हुई थी। कृपया बाद में पुन: प्रयास करें या अधिक जानकारी के लिए कंसोल देखें।",
14 "feature.publishDebugInfo.info": "आपकी डिबग जानकारी प्रकाशित करने से हमें फ़र्डियम में समस्याओं और त्रुटियों को खोजने में मदद मिलती है। अपनी डिबग जानकारी प्रकाशित करके आप फर्डियम डीबगर की गोपनीयता नीति और सेवा की शर्तों को स्वीकार करते हैं",
15 "feature.publishDebugInfo.privacy": "गोपनीयता नीति (प्राइवेसी पालिसी)",
16 "feature.publishDebugInfo.publish": "स्वीकृति दें और प्रकाशित करें",
17 "feature.publishDebugInfo.published": "आपका डिबग लॉग प्रकाशित किया गया था और अब पर उपलब्ध है",
11 "feature.publishDebugInfo.terms": "सेवा की शर्तें", 18 "feature.publishDebugInfo.terms": "सेवा की शर्तें",
12 "feature.publishDebugInfo.title": "जानकारी प्रकाशित करे", 19 "feature.publishDebugInfo.title": "जानकारी प्रकाशित करे",
20 "feature.quickSwitch.info": "TAB, ↑ और ↓ के साथ एक सेवा का चयन करें। ENTER के साथ एक सेवा खोलें।",
13 "feature.quickSwitch.search": "खोजे ...", 21 "feature.quickSwitch.search": "खोजे ...",
22 "feature.quickSwitch.title": "त्वरित स्विच",
23 "global.api.unhealthy": "{serverNameParse} की ऑनलाइन सेवाओं से कनेक्ट नहीं हो रहा",
24 "global.cancel": "रद्द करें",
25 "global.edit": "संशोधन करें",
26 "global.no": "नहीं",
27 "global.notConnectedToTheInternet": "ऐसा लगता है कि आप इंटरनेट से कनेक्ट नहीं हैं।",
28 "global.ok": "ठीक है",
29 "global.quit": "बाहर आए",
30 "global.quitConfirmation": "क्या आप वास्तव में बाहर निकलना चाहते हैं?",
31 "global.save": "सहेजें",
32 "global.settings": "सेटिंग्स",
33 "global.spellchecker.useDefault": "सिस्टम डिफ़ॉल्ट का प्रयोग करें ({default})",
34 "global.spellchecking.autodetect": "स्वचालित रूप से भाषा का पता लगाएं",
35 "global.spellchecking.autodetect.short": "स्वचालित",
36 "global.spellchecking.language": "वर्तनी जांचने की भाषा",
37 "global.submit": "प्रस्तुत करे",
38 "global.userAgentHelp": "अपने वांछित उपयोगकर्ता एजेंट को 'https://whatmyuseragent.com/' (खोजने के लिए) या 'https://developers.whatismybrowser.com/useragents/explore/' (चुनने के लिए) का उपयोग करें और इसे यहां कॉपी-पेस्ट करें।",
39 "global.userAgentPref": "यूज़र एजेंट",
40 "global.yes": "हां",
41 "infobar.authRequestFailed": "प्रमाणीकृत अनुरोध निष्पादित करने का प्रयास करते समय त्रुटियाँ थीं. \nयदि यह त्रुटि बनी रहती है तो कृपया लॉग आउट करने और वापस आने का प्रयास करें।",
42 "infobar.buttonChangelog": "नया क्या है?",
43 "infobar.buttonInstallUpdate": "पुनः आरंभ करें",
44 "infobar.buttonReloadServices": "सेवाओं को पुनः लोड करें",
45 "infobar.hide": "छिपाएं",
46 "infobar.requiredRequestsFailed": "सेवाओं और यूज़र्स की जानकारी को लोड नहीं किया जा सका",
47 "infobar.servicesUpdated": "आपकी सेवाएं अपडेट कर दी गई हैं।",
48 "infobar.updateAvailable": "फर्डियम का एक नया अपडेट उपलब्ध है।",
49 "infobox.dismiss": "खारिज करें",
50 "invite.email.label": "ई-मेल का पता",
51 "invite.headline.friends": "अपने 3 दोस्तों या सहकर्मियों को आमंत्रित करें",
52 "invite.name.label": "नाम",
53 "invite.skip.label": "मैं इसे बाद में करना चाहता हूं",
54 "invite.submit.label": "आमंत्रण भेजें",
55 "invite.successInfo": "आमंत्रण सफलतापूर्वक भेजा गया।",
56 "locked.headline": "अवरोधित",
57 "locked.invalidCredentials": "पासवर्ड अमान्य",
58 "locked.password.label": "पासवर्ड",
59 "locked.submit.label": "अनलॉक करें",
60 "locked.touchId": "एप्लीकेशन को टच आईडी के साथ अनलॉक करें",
61 "locked.unlockWithPassword": "पासवर्ड से अनलॉक करें",
62 "login.changeServer": "यहाँ बदलें!",
63 "login.changeServerMessage": "आप {serverNameParse} सर्वर का उपयोग कर रहे हैं, क्या आप बदलना चाहते हैं?",
64 "login.email.label": "ई-मेल",
65 "login.link.signup": "एक निः शुल्क खाता बनाएं।",
66 "menu.services.goHome": "मुखपृष्ठ",
67 "menu.services.setNextServiceActive": "अगला सेवा सक्रिय करें",
68 "menu.todos": "काम-सूची",
14 "settings.account.account.editButton": "अकाउंट संशोधन", 69 "settings.account.account.editButton": "अकाउंट संशोधन",
15 "settings.account.accountUnavailableInfo": "आप फेर्डियम बिना अकाउंट के इस्तेमाल कर रहे है। यदि आप फेर्डियम अकाउंट के सहित इस्तेमाल करते है, उसके विभिन्न प्रतिस्थापित प्रतियों के मध्य ताल-मेल बनाया जा सकता है। कृपया एक सर्वर का दिया गया विकल्प को सेटिंग्स टैब से चुन कर लॉगिन करिये", 70 "settings.account.accountUnavailableInfo": "आप फेर्डियम बिना अकाउंट के इस्तेमाल कर रहे है। यदि आप फेर्डियम अकाउंट के सहित इस्तेमाल करते है, उसके विभिन्न प्रतिस्थापित प्रतियों के मध्य ताल-मेल बनाया जा सकता है। कृपया एक सर्वर का दिया गया विकल्प को सेटिंग्स टैब से चुन कर लॉगिन करिये",
16 "settings.account.buttonSave": "प्रोफ़ाइल को नवीनतम बनाओ", 71 "settings.account.buttonSave": "प्रोफ़ाइल को नवीनतम बनाओ",
diff --git a/src/lib/DBus.ts b/src/lib/DBus.ts
index bbff405c4..530e30c85 100644
--- a/src/lib/DBus.ts
+++ b/src/lib/DBus.ts
@@ -1,28 +1,92 @@
1import { ipcMain } from 'electron';
2import { comparer } from 'mobx';
3
1import { MessageBus, sessionBus } from 'dbus-next'; 4import { MessageBus, sessionBus } from 'dbus-next';
2import { isLinux } from '../environment'; 5import { isLinux } from '../environment';
3import TrayIcon from './Tray'; 6import TrayIcon from './Tray';
7import Ferdium, { type UnreadServices } from './dbus/Ferdium';
4 8
5export default class DBus { 9export default class DBus {
6 bus: MessageBus | null = null; 10 private bus: MessageBus | null = null;
7 11
8 trayIcon: TrayIcon; 12 trayIcon: TrayIcon;
9 13
14 private ferdium: Ferdium | null = null;
15
16 muted = false;
17
18 unreadDirectMessageCount = 0;
19
20 unreadIndirectMessageCount = 0;
21
22 unreadServices: UnreadServices = [];
23
10 constructor(trayIcon: TrayIcon) { 24 constructor(trayIcon: TrayIcon) {
11 this.trayIcon = trayIcon; 25 this.trayIcon = trayIcon;
26 ipcMain.on('initialAppSettings', (_, appSettings) => {
27 this.updateSettings(appSettings);
28 });
29 ipcMain.on('updateAppSettings', (_, appSettings) => {
30 this.updateSettings(appSettings);
31 });
32 ipcMain.on(
33 'updateDBusUnread',
34 (
35 _,
36 unreadDirectMessageCount,
37 unreadIndirectMessageCount,
38 unreadServices,
39 ) => {
40 this.setUnread(
41 unreadDirectMessageCount,
42 unreadIndirectMessageCount,
43 unreadServices,
44 );
45 },
46 );
47 }
48
49 private updateSettings(appSettings): void {
50 const muted = !!appSettings.data.isAppMuted;
51 if (this.muted !== muted) {
52 this.muted = muted;
53 this.ferdium?.emitMutedChanged();
54 }
12 } 55 }
13 56
14 start() { 57 private setUnread(
58 unreadDirectMessageCount: number,
59 unreadIndirectMessageCount: number,
60 unreadServices: UnreadServices,
61 ): void {
62 if (
63 this.unreadDirectMessageCount !== unreadDirectMessageCount ||
64 this.unreadIndirectMessageCount !== unreadIndirectMessageCount ||
65 !comparer.structural(this.unreadServices, unreadServices)
66 ) {
67 this.unreadDirectMessageCount = unreadDirectMessageCount;
68 this.unreadIndirectMessageCount = unreadIndirectMessageCount;
69 this.unreadServices = unreadServices;
70 this.ferdium?.emitUnreadChanged();
71 }
72 }
73
74 async start() {
15 if (!isLinux || this.bus) { 75 if (!isLinux || this.bus) {
16 return; 76 return;
17 } 77 }
18 78
19 try { 79 try {
20 this.bus = sessionBus(); 80 this.bus = sessionBus();
81 await this.bus.requestName('org.ferdium.Ferdium', 0);
21 } catch { 82 } catch {
22 // Error connecting to the bus. 83 // Error connecting to the bus.
23 return; 84 return;
24 } 85 }
25 86
87 this.ferdium = new Ferdium(this);
88 this.bus.export('/org/ferdium', this.ferdium);
89
26 // HACK Hook onto the MessageBus to track StatusNotifierWatchers 90 // HACK Hook onto the MessageBus to track StatusNotifierWatchers
27 // @ts-expect-error Property '_addMatch' does not exist on type 'MessageBus'. 91 // @ts-expect-error Property '_addMatch' does not exist on type 'MessageBus'.
28 this.bus._addMatch( 92 this.bus._addMatch(
@@ -56,5 +120,6 @@ export default class DBus {
56 120
57 this.bus.disconnect(); 121 this.bus.disconnect();
58 this.bus = null; 122 this.bus = null;
123 this.ferdium = null;
59 } 124 }
60} 125}
diff --git a/src/lib/dbus/Ferdium.ts b/src/lib/dbus/Ferdium.ts
new file mode 100644
index 000000000..b2a9105f4
--- /dev/null
+++ b/src/lib/dbus/Ferdium.ts
@@ -0,0 +1,88 @@
1import * as dbus from 'dbus-next';
2
3import type DBus from '../DBus';
4
5export type UnreadServices = [string, number, number][];
6
7export default class Ferdium extends dbus.interface.Interface {
8 constructor(private readonly dbus: DBus) {
9 super('org.ferdium.Ferdium');
10 }
11
12 emitMutedChanged(): void {
13 Ferdium.emitPropertiesChanged(this, { Muted: this.dbus.muted }, []);
14 }
15
16 get Muted(): boolean {
17 return this.dbus.muted;
18 }
19
20 set Muted(muted: boolean) {
21 if (this.dbus.muted !== muted) {
22 this.ToggleMute();
23 }
24 }
25
26 ToggleMute(): void {
27 this.dbus.trayIcon.mainWindow?.webContents.send('muteApp');
28 }
29
30 ToggleWindow(): void {
31 this.dbus.trayIcon._toggleWindow();
32 }
33
34 emitUnreadChanged(): void {
35 Ferdium.emitPropertiesChanged(
36 this,
37 {
38 UnreadDirectMessageCount: this.dbus.unreadDirectMessageCount,
39 UnreadIndirectMessageCount: this.dbus.unreadIndirectMessageCount,
40 UnreadServices: this.dbus.unreadServices,
41 },
42 [],
43 );
44 }
45
46 get UnreadDirectMessageCount(): number {
47 return this.dbus.unreadDirectMessageCount;
48 }
49
50 get UnreadIndirectMessageCount(): number {
51 return this.dbus.unreadIndirectMessageCount;
52 }
53
54 get UnreadServices(): UnreadServices {
55 return this.dbus.unreadServices;
56 }
57}
58
59Ferdium.configureMembers({
60 methods: {
61 ToggleMute: {
62 inSignature: '',
63 outSignature: '',
64 },
65 ToggleWindow: {
66 inSignature: '',
67 outSignature: '',
68 },
69 },
70 properties: {
71 Muted: {
72 signature: 'b',
73 access: dbus.interface.ACCESS_READWRITE,
74 },
75 UnreadDirectMessageCount: {
76 signature: 'u',
77 access: dbus.interface.ACCESS_READ,
78 },
79 UnreadIndirectMessageCount: {
80 signature: 'u',
81 access: dbus.interface.ACCESS_READ,
82 },
83 UnreadServices: {
84 signature: 'a(suu)',
85 access: dbus.interface.ACCESS_READ,
86 },
87 },
88});
diff --git a/src/stores/ServicesStore.ts b/src/stores/ServicesStore.ts
index 0ab4dbc5b..829c64d76 100644
--- a/src/stores/ServicesStore.ts
+++ b/src/stores/ServicesStore.ts
@@ -1,4 +1,4 @@
1import { shell } from 'electron'; 1import { ipcRenderer, shell } from 'electron';
2import { action, reaction, computed, observable, makeObservable } from 'mobx'; 2import { action, reaction, computed, observable, makeObservable } from 'mobx';
3import { debounce, remove } from 'lodash'; 3import { debounce, remove } from 'lodash';
4import ms from 'ms'; 4import ms from 'ms';
@@ -23,6 +23,7 @@ import { cleanseJSObject } from '../jsUtils';
23import { SPELLCHECKER_LOCALES } from '../i18n/languages'; 23import { SPELLCHECKER_LOCALES } from '../i18n/languages';
24import { ferdiumVersion } from '../environment-remote'; 24import { ferdiumVersion } from '../environment-remote';
25import TypedStore from './lib/TypedStore'; 25import TypedStore from './lib/TypedStore';
26import type { UnreadServices } from '../lib/dbus/Ferdium';
26 27
27const debug = require('../preload-safe-debug')('Ferdium:ServiceStore'); 28const debug = require('../preload-safe-debug')('Ferdium:ServiceStore');
28 29
@@ -1230,26 +1231,29 @@ export default class ServicesStore extends TypedStore {
1230 const { showMessageBadgeWhenMuted } = this.stores.settings.all.app; 1231 const { showMessageBadgeWhenMuted } = this.stores.settings.all.app;
1231 const { showMessageBadgesEvenWhenMuted } = this.stores.ui; 1232 const { showMessageBadgesEvenWhenMuted } = this.stores.ui;
1232 1233
1233 const unreadDirectMessageCount = this.allDisplayed 1234 const unreadServices: UnreadServices = [];
1234 .filter( 1235 let unreadDirectMessageCount = 0;
1235 s => 1236 let unreadIndirectMessageCount = 0;
1236 (showMessageBadgeWhenMuted || s.isNotificationEnabled) && 1237
1237 showMessageBadgesEvenWhenMuted && 1238 if (showMessageBadgesEvenWhenMuted) {
1238 s.isBadgeEnabled, 1239 for (const s of this.allDisplayed) {
1239 ) 1240 if (s.isBadgeEnabled) {
1240 .map(s => s.unreadDirectMessageCount) 1241 const direct =
1241 .reduce((a, b) => a + b, 0); 1242 showMessageBadgeWhenMuted || s.isNotificationEnabled
1242 1243 ? s.unreadDirectMessageCount
1243 const unreadIndirectMessageCount = this.allDisplayed 1244 : 0;
1244 .filter( 1245 const indirect =
1245 s => 1246 showMessageBadgeWhenMuted && s.isIndirectMessageBadgeEnabled
1246 showMessageBadgeWhenMuted && 1247 ? s.unreadIndirectMessageCount
1247 showMessageBadgesEvenWhenMuted && 1248 : 0;
1248 s.isBadgeEnabled && 1249 unreadDirectMessageCount += direct;
1249 s.isIndirectMessageBadgeEnabled, 1250 unreadIndirectMessageCount += indirect;
1250 ) 1251 if (direct > 0 || indirect > 0) {
1251 .map(s => s.unreadIndirectMessageCount) 1252 unreadServices.push([s.name, direct, indirect]);
1252 .reduce((a, b) => a + b, 0); 1253 }
1254 }
1255 }
1256 }
1253 1257
1254 // We can't just block this earlier, otherwise the mobx reaction won't be aware of the vars to watch in some cases 1258 // We can't just block this earlier, otherwise the mobx reaction won't be aware of the vars to watch in some cases
1255 if (showMessageBadgesEvenWhenMuted) { 1259 if (showMessageBadgesEvenWhenMuted) {
@@ -1257,6 +1261,12 @@ export default class ServicesStore extends TypedStore {
1257 unreadDirectMessageCount, 1261 unreadDirectMessageCount,
1258 unreadIndirectMessageCount, 1262 unreadIndirectMessageCount,
1259 }); 1263 });
1264 ipcRenderer.send(
1265 'updateDBusUnread',
1266 unreadDirectMessageCount,
1267 unreadIndirectMessageCount,
1268 unreadServices,
1269 );
1260 } 1270 }
1261 } 1271 }
1262 1272