aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--package.json2
-rw-r--r--packages/main/package.json6
-rw-r--r--packages/main/src/devTools.ts49
-rw-r--r--packages/main/src/index.ts66
-rw-r--r--packages/main/src/stores/RootStore.ts12
-rw-r--r--packages/preload/package.json4
-rw-r--r--packages/preload/src/SophieRendererImpl.ts74
-rw-r--r--packages/preload/src/index.ts11
-rw-r--r--packages/renderer/package.json6
-rw-r--r--packages/renderer/src/devTools.ts37
-rw-r--r--packages/renderer/src/index.tsx23
-rw-r--r--packages/renderer/tsconfig.json3
-rw-r--r--packages/renderer/vite.config.js3
-rw-r--r--packages/shared/package.json5
-rw-r--r--packages/shared/src/contextBridge/SophieRenderer.ts6
-rw-r--r--packages/shared/src/index.ts11
-rw-r--r--packages/shared/src/ipc/MainToRendererIpcMessage.ts4
-rw-r--r--packages/shared/src/ipc/RendererIpcMessage.ts3
-rw-r--r--packages/shared/src/ipc/RendererToMainIpcMessage.ts4
-rw-r--r--packages/shared/src/stores/SharedStore.ts23
-rw-r--r--packages/shared/vite.config.js8
-rw-r--r--yarn.lock285
22 files changed, 520 insertions, 125 deletions
diff --git a/package.json b/package.json
index cf271bd..64508db 100644
--- a/package.json
+++ b/package.json
@@ -31,7 +31,7 @@
31 "@typescript-eslint/parser": "^5.8.0", 31 "@typescript-eslint/parser": "^5.8.0",
32 "cross-env": "7.0.3", 32 "cross-env": "7.0.3",
33 "electron": "16.0.5", 33 "electron": "16.0.5",
34 "electron-builder": "22.14.11", 34 "electron-builder": "22.14.5",
35 "eslint": "8.5.0", 35 "eslint": "8.5.0",
36 "rollup": "^2.61.1", 36 "rollup": "^2.61.1",
37 "typescript": "4.5.4", 37 "typescript": "4.5.4",
diff --git a/packages/main/package.json b/packages/main/package.json
index 63da432..22afafa 100644
--- a/packages/main/package.json
+++ b/packages/main/package.json
@@ -9,11 +9,13 @@
9 }, 9 },
10 "dependencies": { 10 "dependencies": {
11 "@sophie/shared": "workspace:*", 11 "@sophie/shared": "workspace:*",
12 "electron": "^16.0.5" 12 "electron": "^16.0.5",
13 "mobx": "^6.3.10",
14 "mobx-state-tree": "^5.1.0"
13 }, 15 },
14 "devDependencies": { 16 "devDependencies": {
15 "@types/electron-devtools-installer": "^2.2.0", 17 "@types/electron-devtools-installer": "^2.2.0",
16 "@types/node": "^16.11.15", 18 "@types/node": "^16.11.17",
17 "electron-devtools-installer": "^3.2.0", 19 "electron-devtools-installer": "^3.2.0",
18 "typescript": "^4.5.4", 20 "typescript": "^4.5.4",
19 "vite": "^2.7.6" 21 "vite": "^2.7.6"
diff --git a/packages/main/src/devTools.ts b/packages/main/src/devTools.ts
new file mode 100644
index 0000000..d02bfbf
--- /dev/null
+++ b/packages/main/src/devTools.ts
@@ -0,0 +1,49 @@
1import type { App, BrowserWindow } from 'electron';
2
3/**
4 * Installs the react and redux developer tools extensions.
5 *
6 * We use the redux devtools and connect the mobx store to it with `mst-middlewares`,
7 * because the mobx-state-tree devtools are currently unmaintained.
8 *
9 * @param app The electron application instance.
10 */
11export function installDevToolsExtensions(app: App): void {
12 app.whenReady().then(async () => {
13 const {
14 default: installExtension,
15 REACT_DEVELOPER_TOOLS,
16 REDUX_DEVTOOLS,
17 } = await import('electron-devtools-installer');
18 installExtension(
19 [
20 REACT_DEVELOPER_TOOLS,
21 REDUX_DEVTOOLS,
22 ],
23 {
24 forceDownload: false,
25 loadExtensionOptions: {
26 allowFileAccess: true,
27 },
28 },
29 );
30 }).catch((err) => {
31 console.error('Failed to install devtools extension', err);
32 });
33}
34
35/**
36 * Opens the developer tools while applying a workaround to enable the redux devtools.
37 *
38 * @param browserWindow The browser window to open the devtools in.
39 * @see https://github.com/MarshallOfSound/electron-devtools-installer/issues/195#issuecomment-998872878
40 */
41export function openDevToolsWhenReady(browserWindow: BrowserWindow): void {
42 const { webContents } = browserWindow;
43 webContents.once('dom-ready', () => {
44 webContents.once('devtools-opened', () => {
45 browserWindow?.focus();
46 });
47 webContents.openDevTools();
48 });
49}
diff --git a/packages/main/src/index.ts b/packages/main/src/index.ts
index cd04276..dbe6890 100644
--- a/packages/main/src/index.ts
+++ b/packages/main/src/index.ts
@@ -1,8 +1,18 @@
1import { app, BrowserWindow } from 'electron'; 1import { app, BrowserWindow } from 'electron';
2import { getSnapshot, onPatch } from 'mobx-state-tree';
2import { join } from 'path'; 3import { join } from 'path';
3import { RendererIpcMessage } from '@sophie/shared'; 4import {
5 MainToRendererIpcMessage,
6 RendererToMainIpcMessage,
7} from '@sophie/shared';
4import { URL } from 'url'; 8import { URL } from 'url';
5 9
10import {
11 installDevToolsExtensions,
12 openDevToolsWhenReady,
13} from './devTools';
14import { rootStore } from './stores/RootStore';
15
6const isSingleInstance = app.requestSingleInstanceLock(); 16const isSingleInstance = app.requestSingleInstanceLock();
7const isDevelopment = import.meta.env.MODE === 'development'; 17const isDevelopment = import.meta.env.MODE === 'development';
8 18
@@ -14,62 +24,46 @@ if (!isSingleInstance) {
14app.enableSandbox(); 24app.enableSandbox();
15 25
16if (isDevelopment) { 26if (isDevelopment) {
17 app.whenReady().then(async () => { 27 installDevToolsExtensions(app);
18 const {
19 default: installExtension,
20 MOBX_DEVTOOLS,
21 REACT_DEVELOPER_TOOLS,
22 } = await import('electron-devtools-installer');
23 installExtension(
24 [
25 MOBX_DEVTOOLS,
26 REACT_DEVELOPER_TOOLS,
27 ],
28 {
29 forceDownload: false,
30 loadExtensionOptions: {
31 allowFileAccess: true,
32 },
33 },
34 );
35 }).catch((err) => {
36 console.error('Failed to install devtools extension', err);
37 });
38} 28}
39 29
40let mainWindow: BrowserWindow | null = null; 30let mainWindow: BrowserWindow | null = null;
41 31
32const store = rootStore.create({
33 shared: {
34 clickCount: 1,
35 },
36});
37
42function createWindow(): Promise<void> { 38function createWindow(): Promise<void> {
43 mainWindow = new BrowserWindow({ 39 mainWindow = new BrowserWindow({
44 show: false, 40 show: false,
41 autoHideMenuBar: true,
45 webPreferences: { 42 webPreferences: {
46 nativeWindowOpen: true, 43 nativeWindowOpen: true,
47 webviewTag: false, 44 webviewTag: false,
48 sandbox: true, 45 sandbox: true,
49 preload: join(__dirname, '../../preload/dist/index.cjs'), 46 preload: join(__dirname, '../../preload/dist/index.cjs'),
50 } 47 },
51 }); 48 });
52 49
53 const { webContents } = mainWindow;
54
55 // See https://github.com/MarshallOfSound/electron-devtools-installer/issues/195#issuecomment-998872878
56 if (isDevelopment) { 50 if (isDevelopment) {
57 webContents.once('dom-ready', () => { 51 openDevToolsWhenReady(mainWindow);
58 webContents.once('devtools-opened', () => {
59 mainWindow?.focus();
60 });
61 webContents.openDevTools();
62 });
63 } 52 }
64 53
65 mainWindow.on('ready-to-show', () => { 54 mainWindow.on('ready-to-show', () => {
66 mainWindow?.show(); 55 mainWindow?.show();
67 }); 56 });
68 57
58 const { webContents } = mainWindow;
59
69 webContents.on('ipc-message', (_event, channel, ...args) => { 60 webContents.on('ipc-message', (_event, channel, ...args) => {
70 switch (channel) { 61 switch (channel) {
71 case RendererIpcMessage.ButtonClicked: 62 case RendererToMainIpcMessage.SharedStoreSnapshotRequest:
72 console.log('Button clicked'); 63 webContents.send(MainToRendererIpcMessage.SharedStoreSnapshot, getSnapshot(store.shared));
64 break;
65 case RendererToMainIpcMessage.ButtonClick:
66 store.buttonClick();
73 break; 67 break;
74 default: 68 default:
75 console.warn('Unknown IPC message:', channel, args); 69 console.warn('Unknown IPC message:', channel, args);
@@ -77,6 +71,10 @@ function createWindow(): Promise<void> {
77 } 71 }
78 }); 72 });
79 73
74 onPatch(store.shared, (patch) => {
75 webContents.send(MainToRendererIpcMessage.SharedStorePatch, patch);
76 });
77
80 const pageUrl = (isDevelopment && import.meta.env.VITE_DEV_SERVER_URL !== undefined) 78 const pageUrl = (isDevelopment && import.meta.env.VITE_DEV_SERVER_URL !== undefined)
81 ? import.meta.env.VITE_DEV_SERVER_URL 79 ? import.meta.env.VITE_DEV_SERVER_URL
82 : new URL('../renderer/dist/index.html', `file://${__dirname}`).toString(); 80 : new URL('../renderer/dist/index.html', `file://${__dirname}`).toString();
diff --git a/packages/main/src/stores/RootStore.ts b/packages/main/src/stores/RootStore.ts
new file mode 100644
index 0000000..a9c1290
--- /dev/null
+++ b/packages/main/src/stores/RootStore.ts
@@ -0,0 +1,12 @@
1import { Instance, types } from 'mobx-state-tree';
2import { sharedStore } from '@sophie/shared';
3
4export const rootStore = types.model('RootStore', {
5 shared: sharedStore,
6}).actions((self) => ({
7 buttonClick() {
8 self.shared.clickCount += 1;
9 },
10}));
11
12export interface RootStore extends Instance<typeof rootStore> {}
diff --git a/packages/preload/package.json b/packages/preload/package.json
index 5556c10..2ad215c 100644
--- a/packages/preload/package.json
+++ b/packages/preload/package.json
@@ -10,7 +10,9 @@
10 }, 10 },
11 "dependencies": { 11 "dependencies": {
12 "@sophie/shared": "workspace:*", 12 "@sophie/shared": "workspace:*",
13 "electron": "^16.0.5" 13 "electron": "^16.0.5",
14 "mobx": "^6.3.10",
15 "mobx-state-tree": "^5.1.0"
14 }, 16 },
15 "devDependencies": { 17 "devDependencies": {
16 "typescript": "^4.5.4", 18 "typescript": "^4.5.4",
diff --git a/packages/preload/src/SophieRendererImpl.ts b/packages/preload/src/SophieRendererImpl.ts
new file mode 100644
index 0000000..e03c89e
--- /dev/null
+++ b/packages/preload/src/SophieRendererImpl.ts
@@ -0,0 +1,74 @@
1import { ipcRenderer } from 'electron';
2import type { IJsonPatch } from 'mobx-state-tree';
3import {
4 MainToRendererIpcMessage,
5 RendererToMainIpcMessage,
6 sharedStore,
7 SharedStoreListener,
8 SharedStoreSnapshotIn,
9 SophieRenderer
10} from '@sophie/shared';
11
12export type MessageSender = (channel: RendererToMainIpcMessage, ...args: unknown[]) => void;
13
14export class SophieRendererImpl implements SophieRenderer {
15 readonly #send: MessageSender;
16
17 #listener: SharedStoreListener | null = null;
18
19 #snapshot: SharedStoreSnapshotIn | null = null;
20
21 constructor(send: MessageSender) {
22 this.#send = send;
23 }
24
25 sharedStoreSnapshotReceived(snapshot: unknown): void {
26 if (sharedStore.is(snapshot)) {
27 if (this.#listener === null) {
28 this.#snapshot = snapshot;
29 } else {
30 this.#listener.onSnapshot(snapshot);
31 }
32 } else {
33 console.error('Received invalid snapshot', snapshot);
34 this.#snapshot = null;
35 }
36 }
37
38 sharedStorePatchReceived(patch: unknown): void {
39 if (this.#listener !== null) {
40 // `mobx-state-tree` will validate the patch, so we can safely cast here.
41 this.#listener.onPatch(patch as IJsonPatch);
42 }
43 }
44
45 setSharedStoreListener(listener: SharedStoreListener): void {
46 this.#listener = listener;
47 if (this.#snapshot !== null) {
48 listener.onSnapshot(this.#snapshot);
49 this.#snapshot = null;
50 }
51 this.#send(RendererToMainIpcMessage.SharedStoreSnapshotRequest);
52 }
53
54 buttonClick(): void {
55 this.#send(RendererToMainIpcMessage.ButtonClick);
56 }
57}
58
59export function createSophieRenderer(): SophieRenderer {
60 const impl = new SophieRendererImpl(ipcRenderer.send);
61
62 ipcRenderer.on(MainToRendererIpcMessage.SharedStoreSnapshot, (_event, snapshot) => {
63 impl.sharedStoreSnapshotReceived(snapshot);
64 });
65
66 ipcRenderer.on(MainToRendererIpcMessage.SharedStorePatch, (_event, patch) => {
67 impl.sharedStorePatchReceived(patch);
68 });
69
70 return {
71 setSharedStoreListener: impl.setSharedStoreListener.bind(impl),
72 buttonClick: impl.buttonClick.bind(impl),
73 };
74}
diff --git a/packages/preload/src/index.ts b/packages/preload/src/index.ts
index 830901a..19d1285 100644
--- a/packages/preload/src/index.ts
+++ b/packages/preload/src/index.ts
@@ -1,10 +1,7 @@
1import { contextBridge, ipcRenderer } from 'electron'; 1import { contextBridge } from 'electron';
2import { RendererIpcMessage, SophieRenderer } from '@sophie/shared';
3 2
4const sophieRenderer: SophieRenderer = { 3import { createSophieRenderer } from './SophieRendererImpl';
5 buttonClicked() { 4
6 ipcRenderer.send(RendererIpcMessage.ButtonClicked); 5const sophieRenderer = createSophieRenderer();
7 }
8};
9 6
10contextBridge.exposeInMainWorld('sophieRenderer', sophieRenderer); 7contextBridge.exposeInMainWorld('sophieRenderer', sophieRenderer);
diff --git a/packages/renderer/package.json b/packages/renderer/package.json
index 559e668..ee627b4 100644
--- a/packages/renderer/package.json
+++ b/packages/renderer/package.json
@@ -14,13 +14,17 @@
14 "@mui/icons-material": "^5.2.5", 14 "@mui/icons-material": "^5.2.5",
15 "@mui/material": "^5.2.5", 15 "@mui/material": "^5.2.5",
16 "@sophie/shared": "workspace:*", 16 "@sophie/shared": "workspace:*",
17 "mobx": "^6.3.10",
18 "mobx-state-tree": "^5.1.0",
17 "react": "^17.0.2", 19 "react": "^17.0.2",
18 "react-dom": "^17.0.2" 20 "react-dom": "^17.0.2"
19 }, 21 },
20 "devDependencies": { 22 "devDependencies": {
21 "@types/react": "^17.0.37", 23 "@types/react": "^17.0.38",
22 "@types/react-dom": "^17.0.11", 24 "@types/react-dom": "^17.0.11",
23 "@vitejs/plugin-react": "^1.1.3", 25 "@vitejs/plugin-react": "^1.1.3",
26 "mst-middlewares": "^5.1.0",
27 "remotedev": "^0.2.9",
24 "typescript": "^4.5.4", 28 "typescript": "^4.5.4",
25 "vite": "^2.7.6" 29 "vite": "^2.7.6"
26 } 30 }
diff --git a/packages/renderer/src/devTools.ts b/packages/renderer/src/devTools.ts
new file mode 100644
index 0000000..5930c48
--- /dev/null
+++ b/packages/renderer/src/devTools.ts
@@ -0,0 +1,37 @@
1import type { IAnyStateTreeNode } from 'mobx-state-tree';
2
3/**
4 * Connects the `model` to the redux devtools extension after loading the required
5 * dependencies asynchronously.
6 *
7 * We have to apply a workaround to load `remotedev` by shimming the `global` object,
8 * because `remotedev` uses an old version of `socketcluster-client` that refers to
9 * `global` instead of `globalThis`.
10 *
11 * Due to the old dependencies, this function is not safe to call in production.
12 * However, we don't bundle `remotedev` in production, so the call would fail anyways.
13 *
14 * @param model The store to connect to the redux devtools.
15 * @see https://github.com/SocketCluster/socketcluster-client/issues/118#issuecomment-469064682
16 */
17async function exposeToReduxDevtoolsAsync(model: IAnyStateTreeNode): Promise<void> {
18 (window as { global?: unknown }).global = window;
19
20 const [remotedev, { connectReduxDevtools }] = await Promise.all([
21 // @ts-ignore
22 import('remotedev'),
23 import('mst-middlewares'),
24 ]);
25 connectReduxDevtools(remotedev, model);
26}
27
28/**
29 * Connects the `model` to the redux devtools extension.
30 *
31 * @param model The store to connect to the redux devtools.
32 */
33export function exposeToReduxDevtools(model: IAnyStateTreeNode): void {
34 exposeToReduxDevtoolsAsync(model).catch((err) => {
35 console.error('Could not connect to Redux devtools', err);
36 });
37}
diff --git a/packages/renderer/src/index.tsx b/packages/renderer/src/index.tsx
index 452448c..37daaa6 100644
--- a/packages/renderer/src/index.tsx
+++ b/packages/renderer/src/index.tsx
@@ -2,6 +2,7 @@ import '@fontsource/roboto/300.css';
2import '@fontsource/roboto/400.css'; 2import '@fontsource/roboto/400.css';
3import '@fontsource/roboto/500.css'; 3import '@fontsource/roboto/500.css';
4import '@fontsource/roboto/700.css'; 4import '@fontsource/roboto/700.css';
5import { applyPatch, applySnapshot } from 'mobx-state-tree';
5import Button from "@mui/material/Button"; 6import Button from "@mui/material/Button";
6import CssBaseline from "@mui/material/CssBaseline"; 7import CssBaseline from "@mui/material/CssBaseline";
7import { 8import {
@@ -10,6 +11,26 @@ import {
10} from '@mui/material/styles'; 11} from '@mui/material/styles';
11import React from 'react'; 12import React from 'react';
12import { render } from 'react-dom'; 13import { render } from 'react-dom';
14import { sharedStore } from '@sophie/shared';
15
16import { exposeToReduxDevtools } from './devTools';
17
18const isDevelopment = import.meta.env.MODE === 'development';
19
20const store = sharedStore.create();
21
22if (isDevelopment) {
23 exposeToReduxDevtools(store);
24}
25
26window.sophieRenderer.setSharedStoreListener({
27 onSnapshot(snapshot) {
28 applySnapshot(store, snapshot);
29 },
30 onPatch(patch) {
31 applyPatch(store, patch);
32 },
33});
13 34
14const theme = createTheme({ 35const theme = createTheme({
15 palette: { 36 palette: {
@@ -24,7 +45,7 @@ function App() {
24 <CssBaseline enableColorScheme /> 45 <CssBaseline enableColorScheme />
25 <Button 46 <Button
26 variant="contained" 47 variant="contained"
27 onClick={window.sophieRenderer.buttonClicked} 48 onClick={window.sophieRenderer.buttonClick}
28 > 49 >
29 Hello Sophie! 50 Hello Sophie!
30 </Button> 51 </Button>
diff --git a/packages/renderer/tsconfig.json b/packages/renderer/tsconfig.json
index 668356c..8746462 100644
--- a/packages/renderer/tsconfig.json
+++ b/packages/renderer/tsconfig.json
@@ -7,6 +7,9 @@
7 "dom", 7 "dom",
8 "dom.iterable", 8 "dom.iterable",
9 "esnext" 9 "esnext"
10 ],
11 "types": [
12 "vite/client"
10 ] 13 ]
11 }, 14 },
12 "references": [ 15 "references": [
diff --git a/packages/renderer/vite.config.js b/packages/renderer/vite.config.js
index ff34b6d..87c2d0c 100644
--- a/packages/renderer/vite.config.js
+++ b/packages/renderer/vite.config.js
@@ -3,7 +3,6 @@
3/* eslint-env node */ 3/* eslint-env node */
4 4
5import { builtinModules } from 'module'; 5import { builtinModules } from 'module';
6import { join } from 'path';
7import react from '@vitejs/plugin-react'; 6import react from '@vitejs/plugin-react';
8 7
9// `resolveJsonModule` is disabled for this package, but vite will load the json nevertheless. 8// `resolveJsonModule` is disabled for this package, but vite will load the json nevertheless.
@@ -36,6 +35,8 @@ const config = {
36 assetsDir: '.', 35 assetsDir: '.',
37 rollupOptions: { 36 rollupOptions: {
38 external: [ 37 external: [
38 'mst-middlewares',
39 'remotedev',
39 ...builtinModules, 40 ...builtinModules,
40 ], 41 ],
41 }, 42 },
diff --git a/packages/shared/package.json b/packages/shared/package.json
index ccde705..f49be47 100644
--- a/packages/shared/package.json
+++ b/packages/shared/package.json
@@ -3,6 +3,7 @@
3 "version": "0.1.0", 3 "version": "0.1.0",
4 "private": true, 4 "private": true,
5 "main": "dist/index.cjs", 5 "main": "dist/index.cjs",
6 "module": "dist/index.es.js",
6 "types": "dist/index.d.ts", 7 "types": "dist/index.d.ts",
7 "scripts": { 8 "scripts": {
8 "build": "vite build", 9 "build": "vite build",
@@ -11,5 +12,9 @@
11 "devDependencies": { 12 "devDependencies": {
12 "typescript": "^4.5.4", 13 "typescript": "^4.5.4",
13 "vite": "^2.7.6" 14 "vite": "^2.7.6"
15 },
16 "dependencies": {
17 "mobx": "^6.3.10",
18 "mobx-state-tree": "^5.1.0"
14 } 19 }
15} 20}
diff --git a/packages/shared/src/contextBridge/SophieRenderer.ts b/packages/shared/src/contextBridge/SophieRenderer.ts
index 91a0a3c..c878595 100644
--- a/packages/shared/src/contextBridge/SophieRenderer.ts
+++ b/packages/shared/src/contextBridge/SophieRenderer.ts
@@ -1,3 +1,7 @@
1import { SharedStoreListener } from '../stores/SharedStore';
2
1export interface SophieRenderer { 3export interface SophieRenderer {
2 buttonClicked(): void; 4 setSharedStoreListener(listener: SharedStoreListener): void;
5
6 buttonClick(): void;
3} 7}
diff --git a/packages/shared/src/index.ts b/packages/shared/src/index.ts
index f95675d..7f192bd 100644
--- a/packages/shared/src/index.ts
+++ b/packages/shared/src/index.ts
@@ -1,3 +1,12 @@
1export type { SophieRenderer } from './contextBridge/SophieRenderer'; 1export type { SophieRenderer } from './contextBridge/SophieRenderer';
2 2
3export { RendererIpcMessage } from './ipc/RendererIpcMessage'; 3export { MainToRendererIpcMessage } from './ipc/MainToRendererIpcMessage';
4export { RendererToMainIpcMessage } from './ipc/RendererToMainIpcMessage';
5
6export type {
7 SharedStore,
8 SharedStoreListener,
9 SharedStoreSnapshotIn,
10 SharedStoreSnapshotOut,
11} from './stores/SharedStore';
12export { sharedStore } from './stores/SharedStore';
diff --git a/packages/shared/src/ipc/MainToRendererIpcMessage.ts b/packages/shared/src/ipc/MainToRendererIpcMessage.ts
new file mode 100644
index 0000000..2ddca80
--- /dev/null
+++ b/packages/shared/src/ipc/MainToRendererIpcMessage.ts
@@ -0,0 +1,4 @@
1export enum MainToRendererIpcMessage {
2 SharedStoreSnapshot = "sophie-shared-store-snapshot",
3 SharedStorePatch = "sophie-shared-store-patch",
4}
diff --git a/packages/shared/src/ipc/RendererIpcMessage.ts b/packages/shared/src/ipc/RendererIpcMessage.ts
deleted file mode 100644
index cfb87ae..0000000
--- a/packages/shared/src/ipc/RendererIpcMessage.ts
+++ /dev/null
@@ -1,3 +0,0 @@
1export enum RendererIpcMessage {
2 ButtonClicked = "button-clicked"
3}
diff --git a/packages/shared/src/ipc/RendererToMainIpcMessage.ts b/packages/shared/src/ipc/RendererToMainIpcMessage.ts
new file mode 100644
index 0000000..c4c682d
--- /dev/null
+++ b/packages/shared/src/ipc/RendererToMainIpcMessage.ts
@@ -0,0 +1,4 @@
1export enum RendererToMainIpcMessage {
2 SharedStoreSnapshotRequest = "sophie-shared-store-snapshot-request",
3 ButtonClick = "sophie-button-click"
4}
diff --git a/packages/shared/src/stores/SharedStore.ts b/packages/shared/src/stores/SharedStore.ts
new file mode 100644
index 0000000..8933bca
--- /dev/null
+++ b/packages/shared/src/stores/SharedStore.ts
@@ -0,0 +1,23 @@
1import {
2 IJsonPatch,
3 Instance,
4 types,
5 SnapshotIn,
6 SnapshotOut,
7} from 'mobx-state-tree';
8
9export const sharedStore = types.model("SharedStore", {
10 clickCount: 0
11});
12
13export interface SharedStore extends Instance<typeof sharedStore> {}
14
15export interface SharedStoreSnapshotIn extends SnapshotIn<typeof sharedStore> {}
16
17export interface SharedStoreSnapshotOut extends SnapshotOut<typeof sharedStore> {}
18
19export interface SharedStoreListener {
20 onSnapshot(snapshot: SharedStoreSnapshotIn): void;
21
22 onPatch(patch: IJsonPatch): void;
23}
diff --git a/packages/shared/vite.config.js b/packages/shared/vite.config.js
index cbebb8a..05ec118 100644
--- a/packages/shared/vite.config.js
+++ b/packages/shared/vite.config.js
@@ -26,15 +26,15 @@ const config = {
26 outDir: 'dist', 26 outDir: 'dist',
27 lib: { 27 lib: {
28 entry: 'src/index.ts', 28 entry: 'src/index.ts',
29 formats: ['cjs'], 29 formats: ['cjs', 'es'],
30 fileName: (format) => format === 'cjs' ? 'index.cjs' : `index.${format}.js`,
30 }, 31 },
31 rollupOptions: { 32 rollupOptions: {
32 external: [ 33 external: [
34 'mobx',
35 'mobx-state-tree',
33 ...builtinModules, 36 ...builtinModules,
34 ], 37 ],
35 output: {
36 entryFileNames: '[name].cjs',
37 },
38 }, 38 },
39 emptyOutDir: false, // Do not remove `.d.ts` files. 39 emptyOutDir: false, // Do not remove `.d.ts` files.
40 brotliSize: false, 40 brotliSize: false,
diff --git a/yarn.lock b/yarn.lock
index 5a61262..d05bdbc 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -824,9 +824,11 @@ __metadata:
824 dependencies: 824 dependencies:
825 "@sophie/shared": "workspace:*" 825 "@sophie/shared": "workspace:*"
826 "@types/electron-devtools-installer": ^2.2.0 826 "@types/electron-devtools-installer": ^2.2.0
827 "@types/node": ^16.11.15 827 "@types/node": ^16.11.17
828 electron: ^16.0.5 828 electron: ^16.0.5
829 electron-devtools-installer: ^3.2.0 829 electron-devtools-installer: ^3.2.0
830 mobx: ^6.3.10
831 mobx-state-tree: ^5.1.0
830 typescript: ^4.5.4 832 typescript: ^4.5.4
831 vite: ^2.7.6 833 vite: ^2.7.6
832 languageName: unknown 834 languageName: unknown
@@ -838,6 +840,8 @@ __metadata:
838 dependencies: 840 dependencies:
839 "@sophie/shared": "workspace:*" 841 "@sophie/shared": "workspace:*"
840 electron: ^16.0.5 842 electron: ^16.0.5
843 mobx: ^6.3.10
844 mobx-state-tree: ^5.1.0
841 typescript: ^4.5.4 845 typescript: ^4.5.4
842 vite: ^2.7.6 846 vite: ^2.7.6
843 languageName: unknown 847 languageName: unknown
@@ -853,11 +857,15 @@ __metadata:
853 "@mui/icons-material": ^5.2.5 857 "@mui/icons-material": ^5.2.5
854 "@mui/material": ^5.2.5 858 "@mui/material": ^5.2.5
855 "@sophie/shared": "workspace:*" 859 "@sophie/shared": "workspace:*"
856 "@types/react": ^17.0.37 860 "@types/react": ^17.0.38
857 "@types/react-dom": ^17.0.11 861 "@types/react-dom": ^17.0.11
858 "@vitejs/plugin-react": ^1.1.3 862 "@vitejs/plugin-react": ^1.1.3
863 mobx: ^6.3.10
864 mobx-state-tree: ^5.1.0
865 mst-middlewares: ^5.1.0
859 react: ^17.0.2 866 react: ^17.0.2
860 react-dom: ^17.0.2 867 react-dom: ^17.0.2
868 remotedev: ^0.2.9
861 typescript: ^4.5.4 869 typescript: ^4.5.4
862 vite: ^2.7.6 870 vite: ^2.7.6
863 languageName: unknown 871 languageName: unknown
@@ -867,6 +875,8 @@ __metadata:
867 version: 0.0.0-use.local 875 version: 0.0.0-use.local
868 resolution: "@sophie/shared@workspace:packages/shared" 876 resolution: "@sophie/shared@workspace:packages/shared"
869 dependencies: 877 dependencies:
878 mobx: ^6.3.10
879 mobx-state-tree: ^5.1.0
870 typescript: ^4.5.4 880 typescript: ^4.5.4
871 vite: ^2.7.6 881 vite: ^2.7.6
872 languageName: unknown 882 languageName: unknown
@@ -888,13 +898,6 @@ __metadata:
888 languageName: node 898 languageName: node
889 linkType: hard 899 linkType: hard
890 900
891"@tootallnate/once@npm:2":
892 version: 2.0.0
893 resolution: "@tootallnate/once@npm:2.0.0"
894 checksum: ad87447820dd3f24825d2d947ebc03072b20a42bfc96cbafec16bff8bbda6c1a81fcb0be56d5b21968560c5359a0af4038a68ba150c3e1694fe4c109a063bed8
895 languageName: node
896 linkType: hard
897
898"@types/debug@npm:^4.1.6": 901"@types/debug@npm:^4.1.6":
899 version: 4.1.7 902 version: 4.1.7
900 resolution: "@types/debug@npm:4.1.7" 903 resolution: "@types/debug@npm:4.1.7"
@@ -974,10 +977,10 @@ __metadata:
974 languageName: node 977 languageName: node
975 linkType: hard 978 linkType: hard
976 979
977"@types/node@npm:^16.11.15": 980"@types/node@npm:^16.11.17":
978 version: 16.11.15 981 version: 16.11.17
979 resolution: "@types/node@npm:16.11.15" 982 resolution: "@types/node@npm:16.11.17"
980 checksum: 30969f1c43d85ee645f1ff28640d25b8b7748bbd3cb31aeebc2799fa9f7aa580782430309496c82983a92009afe52e46b50b9b996cea697f62e93f27eb8f5eb5 983 checksum: 86ed84f79450f6aba1a6ef09f8407c10076966c3cc7cc4eb3d35b8ae4f47817e525641396ef0a667fa0a88fcdf484f6182812c074601403083bdf3b5e1ac0313
981 languageName: node 984 languageName: node
982 linkType: hard 985 linkType: hard
983 986
@@ -1032,14 +1035,14 @@ __metadata:
1032 languageName: node 1035 languageName: node
1033 linkType: hard 1036 linkType: hard
1034 1037
1035"@types/react@npm:*, @types/react@npm:^17.0.37": 1038"@types/react@npm:*, @types/react@npm:^17.0.38":
1036 version: 17.0.37 1039 version: 17.0.38
1037 resolution: "@types/react@npm:17.0.37" 1040 resolution: "@types/react@npm:17.0.38"
1038 dependencies: 1041 dependencies:
1039 "@types/prop-types": "*" 1042 "@types/prop-types": "*"
1040 "@types/scheduler": "*" 1043 "@types/scheduler": "*"
1041 csstype: ^3.0.2 1044 csstype: ^3.0.2
1042 checksum: e68b0d59aa69577fc6a6d654b25d5d8408625498f4c483f160b557fac21e840f6e8807cbde93e9f039949b6d624a019b1990d18499c1d65aecf3605c25e30242 1045 checksum: 4079f4f959cd4a4bfaeda8b89fe8a1b1f8bdc9d87acfdc5f74a0b39cec9ec6a470724357c62778c0f063180b360c250e920c5a142f1dbcda67d9cc25a6d43a85
1043 languageName: node 1046 languageName: node
1044 linkType: hard 1047 linkType: hard
1045 1048
@@ -1322,9 +1325,9 @@ __metadata:
1322 languageName: node 1325 languageName: node
1323 linkType: hard 1326 linkType: hard
1324 1327
1325"app-builder-lib@npm:22.14.11": 1328"app-builder-lib@npm:22.14.5":
1326 version: 22.14.11 1329 version: 22.14.5
1327 resolution: "app-builder-lib@npm:22.14.11" 1330 resolution: "app-builder-lib@npm:22.14.5"
1328 dependencies: 1331 dependencies:
1329 7zip-bin: ~5.1.1 1332 7zip-bin: ~5.1.1
1330 "@develar/schema-utils": ~2.6.5 1333 "@develar/schema-utils": ~2.6.5
@@ -1332,13 +1335,13 @@ __metadata:
1332 "@malept/flatpak-bundler": ^0.4.0 1335 "@malept/flatpak-bundler": ^0.4.0
1333 async-exit-hook: ^2.0.1 1336 async-exit-hook: ^2.0.1
1334 bluebird-lst: ^1.0.9 1337 bluebird-lst: ^1.0.9
1335 builder-util: 22.14.7 1338 builder-util: 22.14.5
1336 builder-util-runtime: 8.9.2 1339 builder-util-runtime: 8.9.1
1337 chromium-pickle-js: ^0.2.0 1340 chromium-pickle-js: ^0.2.0
1338 debug: ^4.3.2 1341 debug: ^4.3.2
1339 ejs: ^3.1.6 1342 ejs: ^3.1.6
1340 electron-osx-sign: ^0.5.0 1343 electron-osx-sign: ^0.5.0
1341 electron-publish: 22.14.7 1344 electron-publish: 22.14.5
1342 form-data: ^4.0.0 1345 form-data: ^4.0.0
1343 fs-extra: ^10.0.0 1346 fs-extra: ^10.0.0
1344 hosted-git-info: ^4.0.2 1347 hosted-git-info: ^4.0.2
@@ -1351,7 +1354,7 @@ __metadata:
1351 sanitize-filename: ^1.6.3 1354 sanitize-filename: ^1.6.3
1352 semver: ^7.3.5 1355 semver: ^7.3.5
1353 temp-file: ^3.4.0 1356 temp-file: ^3.4.0
1354 checksum: 4afcf8107368e2e4268076ba2944f12018dc50c61fd7c8da71ccee5bb000db8fa8195bd8e44ed420f3aebefa177ebd0bc91edd6d3a4c296d0d3c2ba6b8162962 1357 checksum: 50aaea3979970d59137e50d1a6da650801e5d4d6119a57a94355697fd90c4fc956b37758dbd6ba284aa2a829cf4c6c19a46514e4b0046cf9b644847866875714
1355 languageName: node 1358 languageName: node
1356 linkType: hard 1359 linkType: hard
1357 1360
@@ -1425,6 +1428,13 @@ __metadata:
1425 languageName: node 1428 languageName: node
1426 linkType: hard 1429 linkType: hard
1427 1430
1431"async-limiter@npm:~1.0.0":
1432 version: 1.0.1
1433 resolution: "async-limiter@npm:1.0.1"
1434 checksum: 2b849695b465d93ad44c116220dee29a5aeb63adac16c1088983c339b0de57d76e82533e8e364a93a9f997f28bbfc6a92948cefc120652bd07f3b59f8d75cf2b
1435 languageName: node
1436 linkType: hard
1437
1428"async@npm:0.9.x": 1438"async@npm:0.9.x":
1429 version: 0.9.2 1439 version: 0.9.2
1430 resolution: "async@npm:0.9.2" 1440 resolution: "async@npm:0.9.2"
@@ -1464,6 +1474,13 @@ __metadata:
1464 languageName: node 1474 languageName: node
1465 linkType: hard 1475 linkType: hard
1466 1476
1477"base-64@npm:0.1.0":
1478 version: 0.1.0
1479 resolution: "base-64@npm:0.1.0"
1480 checksum: 5a42938f82372ab5392cbacc85a5a78115cbbd9dbef9f7540fa47d78763a3a8bd7d598475f0d92341f66285afd377509851a9bb5c67bbecb89686e9255d5b3eb
1481 languageName: node
1482 linkType: hard
1483
1467"base64-js@npm:^1.3.1, base64-js@npm:^1.5.1": 1484"base64-js@npm:^1.3.1, base64-js@npm:^1.5.1":
1468 version: 1.5.1 1485 version: 1.5.1
1469 resolution: "base64-js@npm:1.5.1" 1486 resolution: "base64-js@npm:1.5.1"
@@ -1599,38 +1616,36 @@ __metadata:
1599 languageName: node 1616 languageName: node
1600 linkType: hard 1617 linkType: hard
1601 1618
1602"builder-util-runtime@npm:8.9.2": 1619"builder-util-runtime@npm:8.9.1":
1603 version: 8.9.2 1620 version: 8.9.1
1604 resolution: "builder-util-runtime@npm:8.9.2" 1621 resolution: "builder-util-runtime@npm:8.9.1"
1605 dependencies: 1622 dependencies:
1606 debug: ^4.3.2 1623 debug: ^4.3.2
1607 sax: ^1.2.4 1624 sax: ^1.2.4
1608 checksum: 35adcd6162e2ed16635ff7b7ecc353e400dcbbb3e7cd01823bfefc7256cefca8c820f62d15a0f7dbee1c7495a5f1fba4e0e238857a79b48d5f6bd35064f27208 1625 checksum: c319a9bce54b08ac93ad34d5d6ac4c4d0400435f9bddee247a67f54e637a4fc1b262b9709c58fed861c7b05243f0c232b6a8c7c3b92863530d544e6e3c15e5ec
1609 languageName: node 1626 languageName: node
1610 linkType: hard 1627 linkType: hard
1611 1628
1612"builder-util@npm:22.14.7": 1629"builder-util@npm:22.14.5":
1613 version: 22.14.7 1630 version: 22.14.5
1614 resolution: "builder-util@npm:22.14.7" 1631 resolution: "builder-util@npm:22.14.5"
1615 dependencies: 1632 dependencies:
1616 7zip-bin: ~5.1.1 1633 7zip-bin: ~5.1.1
1617 "@types/debug": ^4.1.6 1634 "@types/debug": ^4.1.6
1618 "@types/fs-extra": ^9.0.11 1635 "@types/fs-extra": ^9.0.11
1619 app-builder-bin: 3.7.1 1636 app-builder-bin: 3.7.1
1620 bluebird-lst: ^1.0.9 1637 bluebird-lst: ^1.0.9
1621 builder-util-runtime: 8.9.2 1638 builder-util-runtime: 8.9.1
1622 chalk: ^4.1.1 1639 chalk: ^4.1.1
1623 cross-spawn: ^7.0.3 1640 cross-spawn: ^7.0.3
1624 debug: ^4.3.2 1641 debug: ^4.3.2
1625 fs-extra: ^10.0.0 1642 fs-extra: ^10.0.0
1626 http-proxy-agent: ^5.0.0
1627 https-proxy-agent: ^5.0.0
1628 is-ci: ^3.0.0 1643 is-ci: ^3.0.0
1629 js-yaml: ^4.1.0 1644 js-yaml: ^4.1.0
1630 source-map-support: ^0.5.19 1645 source-map-support: ^0.5.19
1631 stat-mode: ^1.0.0 1646 stat-mode: ^1.0.0
1632 temp-file: ^3.4.0 1647 temp-file: ^3.4.0
1633 checksum: 4f850a8d1bbf12823b6ca712aeaf99474a4799107b92f3aad64910935fe5b01ca1c6cc29e0c2344a03249ba88f654be3bd6775c2ef634977de44510dd36bb37d 1648 checksum: ead70484827ad8ccb67fc5be728759a8dee7bf14c120f4d4a8aa126b3850fa2de9301e00ec8310de2e918b8574650f2c261d7fc32a1b098378a99b08dfcbb738
1634 languageName: node 1649 languageName: node
1635 linkType: hard 1650 linkType: hard
1636 1651
@@ -1789,6 +1804,13 @@ __metadata:
1789 languageName: node 1804 languageName: node
1790 linkType: hard 1805 linkType: hard
1791 1806
1807"clone@npm:2.1.1":
1808 version: 2.1.1
1809 resolution: "clone@npm:2.1.1"
1810 checksum: 70686162e82096fb515f1506c21d6f07b5a033829360a0849984134fe1f28576e8864c14c1cabe941bc122838ca026af6e966edbcea70976ddaae054841a378d
1811 languageName: node
1812 linkType: hard
1813
1792"clsx@npm:^1.1.1": 1814"clsx@npm:^1.1.1":
1793 version: 1.1.1 1815 version: 1.1.1
1794 resolution: "clsx@npm:1.1.1" 1816 resolution: "clsx@npm:1.1.1"
@@ -1876,6 +1898,13 @@ __metadata:
1876 languageName: node 1898 languageName: node
1877 linkType: hard 1899 linkType: hard
1878 1900
1901"component-emitter@npm:1.2.1":
1902 version: 1.2.1
1903 resolution: "component-emitter@npm:1.2.1"
1904 checksum: 00599b827635cab65bb20e5e3e2db4cea120b76b6626ce3ac6c85d7f5f39bbadd9fec530da444380035dd1c8ff08f9badca54d40b68feaf74bc64f75d537ef61
1905 languageName: node
1906 linkType: hard
1907
1879"concat-map@npm:0.0.1": 1908"concat-map@npm:0.0.1":
1880 version: 0.0.1 1909 version: 0.0.1
1881 resolution: "concat-map@npm:0.0.1" 1910 resolution: "concat-map@npm:0.0.1"
@@ -2119,13 +2148,13 @@ __metadata:
2119 languageName: node 2148 languageName: node
2120 linkType: hard 2149 linkType: hard
2121 2150
2122"dmg-builder@npm:22.14.11": 2151"dmg-builder@npm:22.14.5":
2123 version: 22.14.11 2152 version: 22.14.5
2124 resolution: "dmg-builder@npm:22.14.11" 2153 resolution: "dmg-builder@npm:22.14.5"
2125 dependencies: 2154 dependencies:
2126 app-builder-lib: 22.14.11 2155 app-builder-lib: 22.14.5
2127 builder-util: 22.14.7 2156 builder-util: 22.14.5
2128 builder-util-runtime: 8.9.2 2157 builder-util-runtime: 8.9.1
2129 dmg-license: ^1.0.9 2158 dmg-license: ^1.0.9
2130 fs-extra: ^10.0.0 2159 fs-extra: ^10.0.0
2131 iconv-lite: ^0.6.2 2160 iconv-lite: ^0.6.2
@@ -2133,7 +2162,7 @@ __metadata:
2133 dependenciesMeta: 2162 dependenciesMeta:
2134 dmg-license: 2163 dmg-license:
2135 optional: true 2164 optional: true
2136 checksum: f00391010971d965b415d41a7e25865a573c2bf9f967ee5dd5c0053fe27f8c627ae6755751c6d8d0eeff1f1c9de0735976ba91a4b5ddc67f60663f7da21cb3eb 2165 checksum: 8b707da83a59c800b45391c5e8097dc702c162a30e1a5a46b59a4f19b8080ec2901f99a789d76fd448fa859e746731de1136e8b297355673112a93fa2a367380
2137 languageName: node 2166 languageName: node
2138 linkType: hard 2167 linkType: hard
2139 2168
@@ -2215,16 +2244,16 @@ __metadata:
2215 languageName: node 2244 languageName: node
2216 linkType: hard 2245 linkType: hard
2217 2246
2218"electron-builder@npm:22.14.11": 2247"electron-builder@npm:22.14.5":
2219 version: 22.14.11 2248 version: 22.14.5
2220 resolution: "electron-builder@npm:22.14.11" 2249 resolution: "electron-builder@npm:22.14.5"
2221 dependencies: 2250 dependencies:
2222 "@types/yargs": ^17.0.1 2251 "@types/yargs": ^17.0.1
2223 app-builder-lib: 22.14.11 2252 app-builder-lib: 22.14.5
2224 builder-util: 22.14.7 2253 builder-util: 22.14.5
2225 builder-util-runtime: 8.9.2 2254 builder-util-runtime: 8.9.1
2226 chalk: ^4.1.1 2255 chalk: ^4.1.1
2227 dmg-builder: 22.14.11 2256 dmg-builder: 22.14.5
2228 fs-extra: ^10.0.0 2257 fs-extra: ^10.0.0
2229 is-ci: ^3.0.0 2258 is-ci: ^3.0.0
2230 lazy-val: ^1.0.5 2259 lazy-val: ^1.0.5
@@ -2234,7 +2263,7 @@ __metadata:
2234 bin: 2263 bin:
2235 electron-builder: cli.js 2264 electron-builder: cli.js
2236 install-app-deps: install-app-deps.js 2265 install-app-deps: install-app-deps.js
2237 checksum: 8a5e3cf2a286186ca1703f7458c7253b3716d1e5f82edf404ba5b0479b2d1dc3845b48ab6d7733add879cb4a692ef48b9d8a0f67e0702711d3be7952f3281288 2266 checksum: b33929c9676c34192012cd056cfb06950ee785adeb2c2f8f749e241bae9534c1c7461a4e8b594c764dbdc7cc381568d9812d936a2475684745e8cbb1300c4713
2238 languageName: node 2267 languageName: node
2239 linkType: hard 2268 linkType: hard
2240 2269
@@ -2267,18 +2296,18 @@ __metadata:
2267 languageName: node 2296 languageName: node
2268 linkType: hard 2297 linkType: hard
2269 2298
2270"electron-publish@npm:22.14.7": 2299"electron-publish@npm:22.14.5":
2271 version: 22.14.7 2300 version: 22.14.5
2272 resolution: "electron-publish@npm:22.14.7" 2301 resolution: "electron-publish@npm:22.14.5"
2273 dependencies: 2302 dependencies:
2274 "@types/fs-extra": ^9.0.11 2303 "@types/fs-extra": ^9.0.11
2275 builder-util: 22.14.7 2304 builder-util: 22.14.5
2276 builder-util-runtime: 8.9.2 2305 builder-util-runtime: 8.9.1
2277 chalk: ^4.1.1 2306 chalk: ^4.1.1
2278 fs-extra: ^10.0.0 2307 fs-extra: ^10.0.0
2279 lazy-val: ^1.0.5 2308 lazy-val: ^1.0.5
2280 mime: ^2.5.2 2309 mime: ^2.5.2
2281 checksum: a1584c23dc34e4c19f0a7418706715b0e39caf6516195cd6426bdbf432164a4af5993851b7c0a4eda72883ba0b24ab711483772fa85fc97b88de93d817c90f0c 2310 checksum: 8b7b47879d0f870eff4eb78085d24a9813e0b52783717299149d31d2d5cef77ff376604e536b0bea8c37acdf0ccc929fed3d78ad2837f4746d89e0d5484f5f33
2282 languageName: node 2311 languageName: node
2283 linkType: hard 2312 linkType: hard
2284 2313
@@ -3211,17 +3240,6 @@ __metadata:
3211 languageName: node 3240 languageName: node
3212 linkType: hard 3241 linkType: hard
3213 3242
3214"http-proxy-agent@npm:^5.0.0":
3215 version: 5.0.0
3216 resolution: "http-proxy-agent@npm:5.0.0"
3217 dependencies:
3218 "@tootallnate/once": 2
3219 agent-base: 6
3220 debug: 4
3221 checksum: e2ee1ff1656a131953839b2a19cd1f3a52d97c25ba87bd2559af6ae87114abf60971e498021f9b73f9fd78aea8876d1fb0d4656aac8a03c6caa9fc175f22b786
3222 languageName: node
3223 linkType: hard
3224
3225"https-proxy-agent@npm:^5.0.0": 3243"https-proxy-agent@npm:^5.0.0":
3226 version: 5.0.0 3244 version: 5.0.0
3227 resolution: "https-proxy-agent@npm:5.0.0" 3245 resolution: "https-proxy-agent@npm:5.0.0"
@@ -3546,6 +3564,13 @@ __metadata:
3546 languageName: node 3564 languageName: node
3547 linkType: hard 3565 linkType: hard
3548 3566
3567"jsan@npm:^3.1.3":
3568 version: 3.1.14
3569 resolution: "jsan@npm:3.1.14"
3570 checksum: e0ee10807d74d9f1425eb9f395386ff8b1ea3393b4354d32908eb1d4550150e3e10310778d5cc1b73b3e7e7d551fa5d91ef8b49238e8b607478ae5e7506ec103
3571 languageName: node
3572 linkType: hard
3573
3549"jsesc@npm:^2.5.1": 3574"jsesc@npm:^2.5.1":
3550 version: 2.5.2 3575 version: 2.5.2
3551 resolution: "jsesc@npm:2.5.2" 3576 resolution: "jsesc@npm:2.5.2"
@@ -3689,6 +3714,13 @@ __metadata:
3689 languageName: node 3714 languageName: node
3690 linkType: hard 3715 linkType: hard
3691 3716
3717"linked-list@npm:0.1.0":
3718 version: 0.1.0
3719 resolution: "linked-list@npm:0.1.0"
3720 checksum: 4fb4b174796c8f4e8aec6ef55982bb48010284809bc44ade922c88360af8278121cc9426f9e506b1d93504179d0cf94c1fd49f867009522f8862e15977d4aca8
3721 languageName: node
3722 linkType: hard
3723
3692"lodash.merge@npm:^4.6.2": 3724"lodash.merge@npm:^4.6.2":
3693 version: 4.6.2 3725 version: 4.6.2
3694 resolution: "lodash.merge@npm:4.6.2" 3726 resolution: "lodash.merge@npm:4.6.2"
@@ -3934,6 +3966,22 @@ __metadata:
3934 languageName: node 3966 languageName: node
3935 linkType: hard 3967 linkType: hard
3936 3968
3969"mobx-state-tree@npm:^5.1.0":
3970 version: 5.1.0
3971 resolution: "mobx-state-tree@npm:5.1.0"
3972 peerDependencies:
3973 mobx: ^6.3.0
3974 checksum: 6f4d17e40108ace6d6660c64fd272e6fed96468b41f992e8cffcac7e772be49f7adc9457aeef011ebf594cd544860e3fb71b4729c59b78bed72d16c277d56abd
3975 languageName: node
3976 linkType: hard
3977
3978"mobx@npm:^6.3.10":
3979 version: 6.3.10
3980 resolution: "mobx@npm:6.3.10"
3981 checksum: d632c656f740ce67eef00c4c73be15acfc8fc057ab08492cba58ef904d617a1df465e059edaf4b2c02659c8d286be88a57eef4544b879ed6092faabf08b7e4ac
3982 languageName: node
3983 linkType: hard
3984
3937"ms@npm:2.0.0": 3985"ms@npm:2.0.0":
3938 version: 2.0.0 3986 version: 2.0.0
3939 resolution: "ms@npm:2.0.0" 3987 resolution: "ms@npm:2.0.0"
@@ -3955,6 +4003,15 @@ __metadata:
3955 languageName: node 4003 languageName: node
3956 linkType: hard 4004 linkType: hard
3957 4005
4006"mst-middlewares@npm:^5.1.0":
4007 version: 5.1.0
4008 resolution: "mst-middlewares@npm:5.1.0"
4009 peerDependencies:
4010 mobx-state-tree: ^5.0.0
4011 checksum: f82664ba09782fdd65c5db5109099295db1769ac61abb25cd891b21a4029fee5e4de8a013568b8ee480e977db2a10617dcc67cabdb5a4efea132f11ed57b12c0
4012 languageName: node
4013 linkType: hard
4014
3958"nanoid@npm:^3.1.30": 4015"nanoid@npm:^3.1.30":
3959 version: 3.1.30 4016 version: 3.1.30
3960 resolution: "nanoid@npm:3.1.30" 4017 resolution: "nanoid@npm:3.1.30"
@@ -4313,6 +4370,20 @@ __metadata:
4313 languageName: node 4370 languageName: node
4314 linkType: hard 4371 linkType: hard
4315 4372
4373"querystring@npm:0.2.0":
4374 version: 0.2.0
4375 resolution: "querystring@npm:0.2.0"
4376 checksum: 8258d6734f19be27e93f601758858c299bdebe71147909e367101ba459b95446fbe5b975bf9beb76390156a592b6f4ac3a68b6087cea165c259705b8b4e56a69
4377 languageName: node
4378 linkType: hard
4379
4380"querystring@npm:^0.2.0":
4381 version: 0.2.1
4382 resolution: "querystring@npm:0.2.1"
4383 checksum: 7b83b45d641e75fd39cd6625ddfd44e7618e741c61e95281b57bbae8fde0afcc12cf851924559e5cc1ef9baa3b1e06e22b164ea1397d65dd94b801f678d9c8ce
4384 languageName: node
4385 linkType: hard
4386
4316"queue-microtask@npm:^1.2.2": 4387"queue-microtask@npm:^1.2.2":
4317 version: 1.2.3 4388 version: 1.2.3
4318 resolution: "queue-microtask@npm:1.2.3" 4389 resolution: "queue-microtask@npm:1.2.3"
@@ -4464,6 +4535,18 @@ __metadata:
4464 languageName: node 4535 languageName: node
4465 linkType: hard 4536 linkType: hard
4466 4537
4538"remotedev@npm:^0.2.9":
4539 version: 0.2.9
4540 resolution: "remotedev@npm:0.2.9"
4541 dependencies:
4542 jsan: ^3.1.3
4543 querystring: ^0.2.0
4544 rn-host-detect: ^1.0.1
4545 socketcluster-client: ^13.0.0
4546 checksum: 2a3c45499dc89759d157f79efda11fdc5259d058512771a8d9204d0de23a56734ce9ff6d58e26f91eebcf83dae6bbde4c7536535f41fdad389b603d11053ada8
4547 languageName: node
4548 linkType: hard
4549
4467"require-directory@npm:^2.1.1": 4550"require-directory@npm:^2.1.1":
4468 version: 2.1.1 4551 version: 2.1.1
4469 resolution: "require-directory@npm:2.1.1" 4552 resolution: "require-directory@npm:2.1.1"
@@ -4532,6 +4615,13 @@ __metadata:
4532 languageName: node 4615 languageName: node
4533 linkType: hard 4616 linkType: hard
4534 4617
4618"rn-host-detect@npm:^1.0.1":
4619 version: 1.2.0
4620 resolution: "rn-host-detect@npm:1.2.0"
4621 checksum: 447b06d6726b665d9d7933b5da96232aad6ee01d1c8287e7b67e9ed1d07cde437127aaa4cf2f51ee2dfb4bb0f0cb398d2676220a392d990e99f6f2aefcc5f5b0
4622 languageName: node
4623 linkType: hard
4624
4535"roarr@npm:^2.15.3": 4625"roarr@npm:^2.15.3":
4536 version: 2.15.4 4626 version: 2.15.4
4537 resolution: "roarr@npm:2.15.4" 4627 resolution: "roarr@npm:2.15.4"
@@ -4606,6 +4696,29 @@ __metadata:
4606 languageName: node 4696 languageName: node
4607 linkType: hard 4697 linkType: hard
4608 4698
4699"sc-channel@npm:^1.2.0":
4700 version: 1.2.0
4701 resolution: "sc-channel@npm:1.2.0"
4702 dependencies:
4703 component-emitter: 1.2.1
4704 checksum: e0dadea85ac3406a6b34a69a3da0806506d02a5c7c2111b785119a336f5d8ca1b3130f5c2c1e2812f31153d847fbe03aee4d82e8a326f78e17701ddb6ef58484
4705 languageName: node
4706 linkType: hard
4707
4708"sc-errors@npm:^1.4.0":
4709 version: 1.4.1
4710 resolution: "sc-errors@npm:1.4.1"
4711 checksum: 3c4833f8ec73eecb52967934436a0504d809c03c1956165d750bc948be8ee6fc32c0161089792ef27ee0b0ecb045e5933a76766ec71e5d19c01919d79bc6eeeb
4712 languageName: node
4713 linkType: hard
4714
4715"sc-formatter@npm:^3.0.1":
4716 version: 3.0.2
4717 resolution: "sc-formatter@npm:3.0.2"
4718 checksum: d589706dbf0df42fa64a37d94c2bf415385dd5bcc279480a4aa663cc4b983fc3ce1e9ef4d0771f802de22dfc1d0212710aa858fd39c0b1deb568819463dfab19
4719 languageName: node
4720 linkType: hard
4721
4609"scheduler@npm:^0.20.2": 4722"scheduler@npm:^0.20.2":
4610 version: 0.20.2 4723 version: 0.20.2
4611 resolution: "scheduler@npm:0.20.2" 4724 resolution: "scheduler@npm:0.20.2"
@@ -4723,6 +4836,24 @@ __metadata:
4723 languageName: node 4836 languageName: node
4724 linkType: hard 4837 linkType: hard
4725 4838
4839"socketcluster-client@npm:^13.0.0":
4840 version: 13.0.1
4841 resolution: "socketcluster-client@npm:13.0.1"
4842 dependencies:
4843 base-64: 0.1.0
4844 clone: 2.1.1
4845 component-emitter: 1.2.1
4846 linked-list: 0.1.0
4847 querystring: 0.2.0
4848 sc-channel: ^1.2.0
4849 sc-errors: ^1.4.0
4850 sc-formatter: ^3.0.1
4851 uuid: 3.2.1
4852 ws: 5.1.1
4853 checksum: 08cb55fc304da788b060c303f378f4fc22b015e81f8ba33fb5ac16499d2476fda1df602d40a11e6cab186a4611b2ad12f83411e7c434461a2931e90faed2bb7d
4854 languageName: node
4855 linkType: hard
4856
4726"socks-proxy-agent@npm:^6.0.0": 4857"socks-proxy-agent@npm:^6.0.0":
4727 version: 6.1.1 4858 version: 6.1.1
4728 resolution: "socks-proxy-agent@npm:6.1.1" 4859 resolution: "socks-proxy-agent@npm:6.1.1"
@@ -4752,7 +4883,7 @@ __metadata:
4752 "@typescript-eslint/parser": ^5.8.0 4883 "@typescript-eslint/parser": ^5.8.0
4753 cross-env: 7.0.3 4884 cross-env: 7.0.3
4754 electron: 16.0.5 4885 electron: 16.0.5
4755 electron-builder: 22.14.11 4886 electron-builder: 22.14.5
4756 eslint: 8.5.0 4887 eslint: 8.5.0
4757 rollup: ^2.61.1 4888 rollup: ^2.61.1
4758 typescript: 4.5.4 4889 typescript: 4.5.4
@@ -5178,6 +5309,15 @@ __metadata:
5178 languageName: node 5309 languageName: node
5179 linkType: hard 5310 linkType: hard
5180 5311
5312"uuid@npm:3.2.1":
5313 version: 3.2.1
5314 resolution: "uuid@npm:3.2.1"
5315 bin:
5316 uuid: ./bin/uuid
5317 checksum: f42e6890be9e79af243867e9942c8b4e211cd178e229085189531d4d1c4a3fae321c5fce391d76afec7dcaaad5442c6ac5ac1efb4801057702e455a530f2839a
5318 languageName: node
5319 linkType: hard
5320
5181"v8-compile-cache@npm:^2.0.3": 5321"v8-compile-cache@npm:^2.0.3":
5182 version: 2.3.0 5322 version: 2.3.0
5183 resolution: "v8-compile-cache@npm:2.3.0" 5323 resolution: "v8-compile-cache@npm:2.3.0"
@@ -5291,6 +5431,15 @@ __metadata:
5291 languageName: node 5431 languageName: node
5292 linkType: hard 5432 linkType: hard
5293 5433
5434"ws@npm:5.1.1":
5435 version: 5.1.1
5436 resolution: "ws@npm:5.1.1"
5437 dependencies:
5438 async-limiter: ~1.0.0
5439 checksum: f00493f1e848125b8b6fcbe09f157d58c2e4e008c3ea70965f26eb8dbc83af4f1e2dac7a27f346baa97469b1116e7ea23cb02c792a4681570214249ebb541454
5440 languageName: node
5441 linkType: hard
5442
5294"xdg-basedir@npm:^4.0.0": 5443"xdg-basedir@npm:^4.0.0":
5295 version: 4.0.0 5444 version: 4.0.0
5296 resolution: "xdg-basedir@npm:4.0.0" 5445 resolution: "xdg-basedir@npm:4.0.0"