diff options
-rw-r--r-- | package.json | 2 | ||||
-rw-r--r-- | packages/main/package.json | 6 | ||||
-rw-r--r-- | packages/main/src/devTools.ts | 49 | ||||
-rw-r--r-- | packages/main/src/index.ts | 66 | ||||
-rw-r--r-- | packages/main/src/stores/RootStore.ts | 12 | ||||
-rw-r--r-- | packages/preload/package.json | 4 | ||||
-rw-r--r-- | packages/preload/src/SophieRendererImpl.ts | 74 | ||||
-rw-r--r-- | packages/preload/src/index.ts | 11 | ||||
-rw-r--r-- | packages/renderer/package.json | 6 | ||||
-rw-r--r-- | packages/renderer/src/devTools.ts | 37 | ||||
-rw-r--r-- | packages/renderer/src/index.tsx | 23 | ||||
-rw-r--r-- | packages/renderer/tsconfig.json | 3 | ||||
-rw-r--r-- | packages/renderer/vite.config.js | 3 | ||||
-rw-r--r-- | packages/shared/package.json | 5 | ||||
-rw-r--r-- | packages/shared/src/contextBridge/SophieRenderer.ts | 6 | ||||
-rw-r--r-- | packages/shared/src/index.ts | 11 | ||||
-rw-r--r-- | packages/shared/src/ipc/MainToRendererIpcMessage.ts | 4 | ||||
-rw-r--r-- | packages/shared/src/ipc/RendererIpcMessage.ts | 3 | ||||
-rw-r--r-- | packages/shared/src/ipc/RendererToMainIpcMessage.ts | 4 | ||||
-rw-r--r-- | packages/shared/src/stores/SharedStore.ts | 23 | ||||
-rw-r--r-- | packages/shared/vite.config.js | 8 | ||||
-rw-r--r-- | yarn.lock | 285 |
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 @@ | |||
1 | import 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 | */ | ||
11 | export 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 | */ | ||
41 | export 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 @@ | |||
1 | import { app, BrowserWindow } from 'electron'; | 1 | import { app, BrowserWindow } from 'electron'; |
2 | import { getSnapshot, onPatch } from 'mobx-state-tree'; | ||
2 | import { join } from 'path'; | 3 | import { join } from 'path'; |
3 | import { RendererIpcMessage } from '@sophie/shared'; | 4 | import { |
5 | MainToRendererIpcMessage, | ||
6 | RendererToMainIpcMessage, | ||
7 | } from '@sophie/shared'; | ||
4 | import { URL } from 'url'; | 8 | import { URL } from 'url'; |
5 | 9 | ||
10 | import { | ||
11 | installDevToolsExtensions, | ||
12 | openDevToolsWhenReady, | ||
13 | } from './devTools'; | ||
14 | import { rootStore } from './stores/RootStore'; | ||
15 | |||
6 | const isSingleInstance = app.requestSingleInstanceLock(); | 16 | const isSingleInstance = app.requestSingleInstanceLock(); |
7 | const isDevelopment = import.meta.env.MODE === 'development'; | 17 | const isDevelopment = import.meta.env.MODE === 'development'; |
8 | 18 | ||
@@ -14,62 +24,46 @@ if (!isSingleInstance) { | |||
14 | app.enableSandbox(); | 24 | app.enableSandbox(); |
15 | 25 | ||
16 | if (isDevelopment) { | 26 | if (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 | ||
40 | let mainWindow: BrowserWindow | null = null; | 30 | let mainWindow: BrowserWindow | null = null; |
41 | 31 | ||
32 | const store = rootStore.create({ | ||
33 | shared: { | ||
34 | clickCount: 1, | ||
35 | }, | ||
36 | }); | ||
37 | |||
42 | function createWindow(): Promise<void> { | 38 | function 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 @@ | |||
1 | import { Instance, types } from 'mobx-state-tree'; | ||
2 | import { sharedStore } from '@sophie/shared'; | ||
3 | |||
4 | export const rootStore = types.model('RootStore', { | ||
5 | shared: sharedStore, | ||
6 | }).actions((self) => ({ | ||
7 | buttonClick() { | ||
8 | self.shared.clickCount += 1; | ||
9 | }, | ||
10 | })); | ||
11 | |||
12 | export 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 @@ | |||
1 | import { ipcRenderer } from 'electron'; | ||
2 | import type { IJsonPatch } from 'mobx-state-tree'; | ||
3 | import { | ||
4 | MainToRendererIpcMessage, | ||
5 | RendererToMainIpcMessage, | ||
6 | sharedStore, | ||
7 | SharedStoreListener, | ||
8 | SharedStoreSnapshotIn, | ||
9 | SophieRenderer | ||
10 | } from '@sophie/shared'; | ||
11 | |||
12 | export type MessageSender = (channel: RendererToMainIpcMessage, ...args: unknown[]) => void; | ||
13 | |||
14 | export 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 | |||
59 | export 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 @@ | |||
1 | import { contextBridge, ipcRenderer } from 'electron'; | 1 | import { contextBridge } from 'electron'; |
2 | import { RendererIpcMessage, SophieRenderer } from '@sophie/shared'; | ||
3 | 2 | ||
4 | const sophieRenderer: SophieRenderer = { | 3 | import { createSophieRenderer } from './SophieRendererImpl'; |
5 | buttonClicked() { | 4 | |
6 | ipcRenderer.send(RendererIpcMessage.ButtonClicked); | 5 | const sophieRenderer = createSophieRenderer(); |
7 | } | ||
8 | }; | ||
9 | 6 | ||
10 | contextBridge.exposeInMainWorld('sophieRenderer', sophieRenderer); | 7 | contextBridge.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 @@ | |||
1 | import 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 | */ | ||
17 | async 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 | */ | ||
33 | export 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'; | |||
2 | import '@fontsource/roboto/400.css'; | 2 | import '@fontsource/roboto/400.css'; |
3 | import '@fontsource/roboto/500.css'; | 3 | import '@fontsource/roboto/500.css'; |
4 | import '@fontsource/roboto/700.css'; | 4 | import '@fontsource/roboto/700.css'; |
5 | import { applyPatch, applySnapshot } from 'mobx-state-tree'; | ||
5 | import Button from "@mui/material/Button"; | 6 | import Button from "@mui/material/Button"; |
6 | import CssBaseline from "@mui/material/CssBaseline"; | 7 | import CssBaseline from "@mui/material/CssBaseline"; |
7 | import { | 8 | import { |
@@ -10,6 +11,26 @@ import { | |||
10 | } from '@mui/material/styles'; | 11 | } from '@mui/material/styles'; |
11 | import React from 'react'; | 12 | import React from 'react'; |
12 | import { render } from 'react-dom'; | 13 | import { render } from 'react-dom'; |
14 | import { sharedStore } from '@sophie/shared'; | ||
15 | |||
16 | import { exposeToReduxDevtools } from './devTools'; | ||
17 | |||
18 | const isDevelopment = import.meta.env.MODE === 'development'; | ||
19 | |||
20 | const store = sharedStore.create(); | ||
21 | |||
22 | if (isDevelopment) { | ||
23 | exposeToReduxDevtools(store); | ||
24 | } | ||
25 | |||
26 | window.sophieRenderer.setSharedStoreListener({ | ||
27 | onSnapshot(snapshot) { | ||
28 | applySnapshot(store, snapshot); | ||
29 | }, | ||
30 | onPatch(patch) { | ||
31 | applyPatch(store, patch); | ||
32 | }, | ||
33 | }); | ||
13 | 34 | ||
14 | const theme = createTheme({ | 35 | const 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 | ||
5 | import { builtinModules } from 'module'; | 5 | import { builtinModules } from 'module'; |
6 | import { join } from 'path'; | ||
7 | import react from '@vitejs/plugin-react'; | 6 | import 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 @@ | |||
1 | import { SharedStoreListener } from '../stores/SharedStore'; | ||
2 | |||
1 | export interface SophieRenderer { | 3 | export 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 @@ | |||
1 | export type { SophieRenderer } from './contextBridge/SophieRenderer'; | 1 | export type { SophieRenderer } from './contextBridge/SophieRenderer'; |
2 | 2 | ||
3 | export { RendererIpcMessage } from './ipc/RendererIpcMessage'; | 3 | export { MainToRendererIpcMessage } from './ipc/MainToRendererIpcMessage'; |
4 | export { RendererToMainIpcMessage } from './ipc/RendererToMainIpcMessage'; | ||
5 | |||
6 | export type { | ||
7 | SharedStore, | ||
8 | SharedStoreListener, | ||
9 | SharedStoreSnapshotIn, | ||
10 | SharedStoreSnapshotOut, | ||
11 | } from './stores/SharedStore'; | ||
12 | export { 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 @@ | |||
1 | export 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 @@ | |||
1 | export 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 @@ | |||
1 | export 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 @@ | |||
1 | import { | ||
2 | IJsonPatch, | ||
3 | Instance, | ||
4 | types, | ||
5 | SnapshotIn, | ||
6 | SnapshotOut, | ||
7 | } from 'mobx-state-tree'; | ||
8 | |||
9 | export const sharedStore = types.model("SharedStore", { | ||
10 | clickCount: 0 | ||
11 | }); | ||
12 | |||
13 | export interface SharedStore extends Instance<typeof sharedStore> {} | ||
14 | |||
15 | export interface SharedStoreSnapshotIn extends SnapshotIn<typeof sharedStore> {} | ||
16 | |||
17 | export interface SharedStoreSnapshotOut extends SnapshotOut<typeof sharedStore> {} | ||
18 | |||
19 | export 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, |
@@ -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" |